Changeset b06d0552 in rtems
- Timestamp:
- Sep 8, 2008, 9:52:49 AM (11 years ago)
- Branches:
- 4.10, 4.11, 4.9, master
- Children:
- 95c274e
- Parents:
- 4a260f0
- Location:
- c/src/lib/libbsp/m68k/mcf5206elite
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/lib/libbsp/m68k/mcf5206elite/ChangeLog
r4a260f0 rb06d0552 1 2008-09-08 Thomas Doerfler <Thomas.Doerfler@embedded-brains.de> 2 3 * i2c/i2c.c, i2c/i2cdrv.c, include/i2c.h: 4 converted done_arg to a void pointer 5 1 6 2008-09-06 Ralf Corsépius <ralf.corsepius@rtems.org> 2 7 -
c/src/lib/libbsp/m68k/mcf5206elite/i2c/i2c.c
r4a260f0 rb06d0552 24 24 */ 25 25 static void 26 i2c_transfer_sema_done_func( uint32_targ)27 { 28 rtems_id sema = (rtems_id)arg;26 i2c_transfer_sema_done_func(void * arg) 27 { 28 rtems_id sema = *(rtems_id *)arg; 29 29 rtems_semaphore_release(sema); 30 30 } … … 39 39 */ 40 40 static void 41 i2c_transfer_poll_done_func( uint32_targ)41 i2c_transfer_poll_done_func(void *arg) 42 42 { 43 43 bool *poll_done_flag = (bool *)arg; … … 73 73 if (sc != RTEMS_SUCCESSFUL) 74 74 return I2C_RESOURCE_NOT_AVAILABLE; 75 sc = i2c_transfer(bus, nmsg, msg, i2c_transfer_sema_done_func, sema); 75 sc = i2c_transfer(bus, nmsg, msg, 76 i2c_transfer_sema_done_func, &sema); 76 77 if (sc != RTEMS_SUCCESSFUL) 77 78 { … … 99 100 i2c_transfer_wait_poll(i2c_bus_number bus, i2c_message *msg, int nmsg) 100 101 { 102 /* 103 * this looks nasty, but is correct: 104 * we wait in this function, until the poll_done_flag is 105 * set deep inside the i2c_poll() function 106 */ 101 107 volatile bool poll_done_flag; 102 108 rtems_status_code sc; 103 109 poll_done_flag = false; 104 sc = i2c_transfer(bus, nmsg, msg, i2c_transfer_poll_done_func,105 (uint32_t)&poll_done_flag);110 sc = i2c_transfer(bus, nmsg, msg, 111 i2c_transfer_poll_done_func,(void *)&poll_done_flag); 106 112 if (sc != RTEMS_SUCCESSFUL) 107 113 return sc; -
c/src/lib/libbsp/m68k/mcf5206elite/i2c/i2cdrv.c
r4a260f0 rb06d0552 50 50 int nmsg; /* number of messages in transfer */ 51 51 i2c_transfer_done done; /* transfer done callback function */ 52 uint32_t done_arg; /* arbitrary argumentto done callback */52 void * done_arg_ptr; /* arbitrary arg pointer to done callback */ 53 53 } i2c_qel; 54 54 … … 85 85 */ 86 86 static void 87 i2cdrv_done( uint32_t arg)87 i2cdrv_done(void * arg_ptr) 88 88 { 89 89 rtems_interrupt_level level; 90 90 i2c_qel *qel = tqueue + tqueue_tail; 91 qel->done(qel->done_arg );91 qel->done(qel->done_arg_ptr); 92 92 rtems_interrupt_disable(level); 93 93 tqueue_tail = (tqueue_tail + 1) % tqueue_size; … … 120 120 mcfmbus_select_clock_divider(&mbus, i2cdrv_bus_clock_div_current); 121 121 } 122 sc = mcfmbus_i2c_transfer(&mbus, qel->nmsg, qel->msg, i2cdrv_done,123 (uint32_t)qel);122 sc = mcfmbus_i2c_transfer(&mbus, qel->nmsg, qel->msg, 123 i2cdrv_done,qel); 124 124 if (sc != RTEMS_SUCCESSFUL) 125 125 { … … 129 129 qel->msg[i].status = I2C_RESOURCE_NOT_AVAILABLE; 130 130 } 131 i2cdrv_done( (uint32_t)qel);131 i2cdrv_done(qel); 132 132 } 133 133 } … … 148 148 * msg - pointer to messages array 149 149 * done - function which is called when transfer is finished 150 * done_arg - arbitrary argumentpassed to done funciton150 * done_arg_ptr - arbitrary argument pointer passed to done funciton 151 151 * 152 152 * RETURNS: … … 156 156 rtems_status_code 157 157 i2c_transfer(i2c_bus_number bus, int nmsg, i2c_message *msg, 158 i2c_transfer_done done, uint32_t done_arg)158 i2c_transfer_done done, void * done_arg_ptr) 159 159 { 160 160 i2c_qel qel; … … 175 175 qel.nmsg = nmsg; 176 176 qel.done = done; 177 qel.done_arg = done_arg;177 qel.done_arg_ptr = done_arg_ptr; 178 178 rtems_interrupt_disable(level); 179 179 if ((tqueue_head + 1) % tqueue_size == tqueue_tail) -
c/src/lib/libbsp/m68k/mcf5206elite/include/i2c.h
r4a260f0 rb06d0552 117 117 * msg - pointer to messages array 118 118 * done - function which is called when transfer is finished 119 * done_arg - arbitrary argumentpassed to done funciton119 * done_arg_ptr - arbitrary argument ptr passed to done funciton 120 120 * 121 121 * RETURNS: … … 125 125 rtems_status_code 126 126 i2c_transfer(i2c_bus_number bus, int nmsg, i2c_message *msg, 127 i2c_transfer_done done, uint32_t done_arg);127 i2c_transfer_done done, void * done_arg_ptr); 128 128 129 129 /* i2c_transfer_wait --
Note: See TracChangeset
for help on using the changeset viewer.