[1042] | 1 | ///////////////////////////////////////////////////////////////-*-C-*- |
---|
| 2 | // |
---|
| 3 | // Copyright (c) 2007 Xilinx, Inc. All rights reserved. |
---|
| 4 | // |
---|
| 5 | // Xilinx, Inc. XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION |
---|
| 6 | // "AS IS" AS A COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR |
---|
| 7 | // INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, |
---|
| 8 | // APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT |
---|
| 9 | // THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, AND |
---|
| 10 | // YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE FOR |
---|
| 11 | // YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY WARRANTY |
---|
| 12 | // WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE IMPLEMENTATION, |
---|
| 13 | // INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR REPRESENTATIONS THAT |
---|
| 14 | // THIS IMPLEMENTATION IS FREE FROM CLAIMS OF INFRINGEMENT, IMPLIED |
---|
| 15 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
---|
| 16 | // |
---|
| 17 | ////////////////////////////////////////////////////////////////////// |
---|
| 18 | |
---|
| 19 | #include "warp_timer_plbw.h" |
---|
| 20 | #include "xparameters.h" |
---|
| 21 | #include "xcope.h" |
---|
| 22 | |
---|
| 23 | inline xc_status_t xc_warp_timer_plbw_create(xc_iface_t **iface, void *config_table) |
---|
| 24 | { |
---|
| 25 | // set up iface |
---|
| 26 | *iface = (xc_iface_t *) config_table; |
---|
| 27 | |
---|
| 28 | #ifdef XC_DEBUG |
---|
| 29 | WARP_TIMER_PLBW_Config *_config_table = config_table; |
---|
| 30 | |
---|
| 31 | if (_config_table->xc_create == NULL) { |
---|
| 32 | print("config_table.xc_create == NULL\r\n"); |
---|
| 33 | exit(1); |
---|
| 34 | } |
---|
| 35 | #endif |
---|
| 36 | |
---|
| 37 | // does nothing |
---|
| 38 | return XC_SUCCESS; |
---|
| 39 | } |
---|
| 40 | |
---|
| 41 | inline xc_status_t xc_warp_timer_plbw_release(xc_iface_t **iface) |
---|
| 42 | { |
---|
| 43 | // does nothing |
---|
| 44 | return XC_SUCCESS; |
---|
| 45 | } |
---|
| 46 | |
---|
| 47 | inline xc_status_t xc_warp_timer_plbw_open(xc_iface_t *iface) |
---|
| 48 | { |
---|
| 49 | // does nothing |
---|
| 50 | return XC_SUCCESS; |
---|
| 51 | } |
---|
| 52 | |
---|
| 53 | inline xc_status_t xc_warp_timer_plbw_close(xc_iface_t *iface) |
---|
| 54 | { |
---|
| 55 | // does nothing |
---|
| 56 | return XC_SUCCESS; |
---|
| 57 | } |
---|
| 58 | |
---|
| 59 | inline xc_status_t xc_warp_timer_plbw_read(xc_iface_t *iface, xc_r_addr_t addr, uint32_t *value) |
---|
| 60 | { |
---|
| 61 | *value = *((uint32_t *) addr); |
---|
| 62 | return XC_SUCCESS; |
---|
| 63 | } |
---|
| 64 | |
---|
| 65 | inline xc_status_t xc_warp_timer_plbw_write(xc_iface_t *iface, xc_w_addr_t addr, const uint32_t value) |
---|
| 66 | { |
---|
| 67 | *((uint32_t *) addr) = value; |
---|
| 68 | return XC_SUCCESS; |
---|
| 69 | } |
---|
| 70 | |
---|
| 71 | xc_status_t xc_warp_timer_plbw_getshmem(xc_iface_t *iface, const char *name, void **shmem) |
---|
| 72 | { |
---|
| 73 | WARP_TIMER_PLBW_Config *_config_table = (WARP_TIMER_PLBW_Config *) iface; |
---|
| 74 | |
---|
| 75 | if (strcmp("timer0_timeLeft", name) == 0) { |
---|
| 76 | *shmem = (void *) & _config_table->timer0_timeLeft; |
---|
| 77 | } |
---|
| 78 | else if (strcmp("timer1_timeLeft", name) == 0) { |
---|
| 79 | *shmem = (void *) & _config_table->timer1_timeLeft; |
---|
| 80 | } |
---|
| 81 | else if (strcmp("timer2_timeLeft", name) == 0) { |
---|
| 82 | *shmem = (void *) & _config_table->timer2_timeLeft; |
---|
| 83 | } |
---|
| 84 | else if (strcmp("timer3_timeLeft", name) == 0) { |
---|
| 85 | *shmem = (void *) & _config_table->timer3_timeLeft; |
---|
| 86 | } |
---|
| 87 | else if (strcmp("timer_control_r", name) == 0) { |
---|
| 88 | *shmem = (void *) & _config_table->timer_control_r; |
---|
| 89 | } |
---|
| 90 | else if (strcmp("timer_status", name) == 0) { |
---|
| 91 | *shmem = (void *) & _config_table->timer_status; |
---|
| 92 | } |
---|
| 93 | else if (strcmp("timer0_countTo", name) == 0) { |
---|
| 94 | *shmem = (void *) & _config_table->timer0_countTo; |
---|
| 95 | } |
---|
| 96 | else if (strcmp("timer1_countTo", name) == 0) { |
---|
| 97 | *shmem = (void *) & _config_table->timer1_countTo; |
---|
| 98 | } |
---|
| 99 | else if (strcmp("timer2_countTo", name) == 0) { |
---|
| 100 | *shmem = (void *) & _config_table->timer2_countTo; |
---|
| 101 | } |
---|
| 102 | else if (strcmp("timer3_countTo", name) == 0) { |
---|
| 103 | *shmem = (void *) & _config_table->timer3_countTo; |
---|
| 104 | } |
---|
| 105 | else if (strcmp("timer_control_w", name) == 0) { |
---|
| 106 | *shmem = (void *) & _config_table->timer_control_w; |
---|
| 107 | } else { shmem = NULL; return XC_FAILURE; } |
---|
| 108 | |
---|
| 109 | return XC_SUCCESS; |
---|
| 110 | } |
---|