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);