Mercurial > ecos-v3_0-branch
changeset 2839:e5408a8adcb7
* 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:18:07 +0000 |
| parents | 16018605bc97 |
| children | ae70bb12da5b |
| files | packages/devs/eth/cl/cs8900a/current/ChangeLog packages/devs/eth/cl/cs8900a/current/src/if_cs8900a.c |
| diffstat | 2 files changed, 21 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/devs/eth/cl/cs8900a/current/ChangeLog +++ b/packages/devs/eth/cl/cs8900a/current/ChangeLog @@ -1,3 +1,9 @@ + 2009-02-28 Sergei Gavrikov <sergei.gavrikov@gmail.com> + + * src/if_cs8900a.c: Fixed interrupt hooking block in cs8900a_init() to + prevent assertion fail on cyg_interrupt_attach() when interrupt is not + used. + 2008-11-07 Sergei Gavrikov <sergei.gavrikov@gmail.com> * cdl/cl_cs8900a_eth_drivers.cdl: Added
--- a/packages/devs/eth/cl/cs8900a/current/src/if_cs8900a.c +++ b/packages/devs/eth/cl/cs8900a/current/src/if_cs8900a.c @@ -168,6 +168,19 @@ cs8900a_init(struct cyg_netdevtab_entry CYGHWR_CL_CS8900A_PLF_INIT(cpd); #ifdef CYGINT_IO_ETH_INT_SUPPORT_REQUIRED +# ifdef CYGSEM_DEVS_ETH_CL_CS8900A_NOINTS + // The olpce2994 target uses 8-bit, non-interrupt driven mode for CS8900A. + cyg_thread_create(1, // Priority + cs8900a_fake_int, // entry + (cyg_addrword_t)sc,// entry parameter + "CS8900 int", // Name + &cs8900a_fake_int_stack[0], // Stack + STACK_SIZE, // Size + &cs8900a_fake_int_thread_handle, // Handle + &cs8900a_fake_int_thread_data // Thread data structure + ); + cyg_thread_resume(cs8900a_fake_int_thread_handle); // Start it +# else // Initialize environment, setup interrupt handler cyg_drv_interrupt_create(cpd->interrupt, cpd->priority, @@ -179,20 +192,8 @@ cs8900a_init(struct cyg_netdevtab_entry cyg_drv_interrupt_attach(cpd->interrupt_handle); cyg_drv_interrupt_acknowledge(cpd->interrupt); cyg_drv_interrupt_unmask(cpd->interrupt); - -#ifdef CYGSEM_DEVS_ETH_CL_CS8900A_NOINTS - cyg_thread_create(1, // Priority - cs8900a_fake_int, // entry - (cyg_addrword_t)sc, // entry parameter - "CS8900 int", // Name - &cs8900a_fake_int_stack[0], // Stack - STACK_SIZE, // Size - &cs8900a_fake_int_thread_handle, // Handle - &cs8900a_fake_int_thread_data // Thread data structure - ); - cyg_thread_resume(cs8900a_fake_int_thread_handle); // Start it -#endif -#endif +# endif // CYGSEM_DEVS_ETH_CL_CS8900A_NOINTS +#endif // CYGINT_IO_ETH_INT_SUPPORT_REQUIRED // Read controller ID - the first is a dummy read, since (on some // platforms) the first access to the controller seems to skip the
