Mercurial > ecos
comparison packages/devs/eth/cl/cs8900a/current/src/if_cs8900a.c @ 2838:6960dfdbb4ff
* src/if_cs8900a.c: Fixed interrupt hooking block in cs8900a_init() to
prevent assertion fail on cyg_interrupt_attach() when interrupt is not
used.
| author | asl |
|---|---|
| date | Mon, 02 Mar 2009 21:16:52 +0000 |
| parents | 74dbf4c3f2e1 |
| children |
comparison
equal
deleted
inserted
replaced
| 2837:221027e214f7 | 2838:6960dfdbb4ff |
|---|---|
| 166 cpd->tab = tab; | 166 cpd->tab = tab; |
| 167 | 167 |
| 168 CYGHWR_CL_CS8900A_PLF_INIT(cpd); | 168 CYGHWR_CL_CS8900A_PLF_INIT(cpd); |
| 169 | 169 |
| 170 #ifdef CYGINT_IO_ETH_INT_SUPPORT_REQUIRED | 170 #ifdef CYGINT_IO_ETH_INT_SUPPORT_REQUIRED |
| 171 # ifdef CYGSEM_DEVS_ETH_CL_CS8900A_NOINTS | |
| 172 // The olpce2994 target uses 8-bit, non-interrupt driven mode for CS8900A. | |
| 173 cyg_thread_create(1, // Priority | |
| 174 cs8900a_fake_int, // entry | |
| 175 (cyg_addrword_t)sc,// entry parameter | |
| 176 "CS8900 int", // Name | |
| 177 &cs8900a_fake_int_stack[0], // Stack | |
| 178 STACK_SIZE, // Size | |
| 179 &cs8900a_fake_int_thread_handle, // Handle | |
| 180 &cs8900a_fake_int_thread_data // Thread data structure | |
| 181 ); | |
| 182 cyg_thread_resume(cs8900a_fake_int_thread_handle); // Start it | |
| 183 # else | |
| 171 // Initialize environment, setup interrupt handler | 184 // Initialize environment, setup interrupt handler |
| 172 cyg_drv_interrupt_create(cpd->interrupt, | 185 cyg_drv_interrupt_create(cpd->interrupt, |
| 173 cpd->priority, | 186 cpd->priority, |
| 174 (cyg_addrword_t)cpd, // Data item passed to interrupt handler | 187 (cyg_addrword_t)cpd, // Data item passed to interrupt handler |
| 175 (cyg_ISR_t *)cs8900a_isr, | 188 (cyg_ISR_t *)cs8900a_isr, |
| 177 &cpd->interrupt_handle, | 190 &cpd->interrupt_handle, |
| 178 &cpd->interrupt_object); | 191 &cpd->interrupt_object); |
| 179 cyg_drv_interrupt_attach(cpd->interrupt_handle); | 192 cyg_drv_interrupt_attach(cpd->interrupt_handle); |
| 180 cyg_drv_interrupt_acknowledge(cpd->interrupt); | 193 cyg_drv_interrupt_acknowledge(cpd->interrupt); |
| 181 cyg_drv_interrupt_unmask(cpd->interrupt); | 194 cyg_drv_interrupt_unmask(cpd->interrupt); |
| 182 | 195 # endif // CYGSEM_DEVS_ETH_CL_CS8900A_NOINTS |
| 183 #ifdef CYGSEM_DEVS_ETH_CL_CS8900A_NOINTS | 196 #endif // CYGINT_IO_ETH_INT_SUPPORT_REQUIRED |
| 184 cyg_thread_create(1, // Priority | |
| 185 cs8900a_fake_int, // entry | |
| 186 (cyg_addrword_t)sc, // entry parameter | |
| 187 "CS8900 int", // Name | |
| 188 &cs8900a_fake_int_stack[0], // Stack | |
| 189 STACK_SIZE, // Size | |
| 190 &cs8900a_fake_int_thread_handle, // Handle | |
| 191 &cs8900a_fake_int_thread_data // Thread data structure | |
| 192 ); | |
| 193 cyg_thread_resume(cs8900a_fake_int_thread_handle); // Start it | |
| 194 #endif | |
| 195 #endif | |
| 196 | 197 |
| 197 // Read controller ID - the first is a dummy read, since (on some | 198 // Read controller ID - the first is a dummy read, since (on some |
| 198 // platforms) the first access to the controller seems to skip the | 199 // platforms) the first access to the controller seems to skip the |
| 199 // MSB 8 bits. | 200 // MSB 8 bits. |
| 200 get_reg(base, PP_ChipID); | 201 get_reg(base, PP_ChipID); |
