# HG changeset patch # User asl # Date 1236028687 0 # Node ID e5408a8adcb73f339db96e105cc2d666403d0cbc # Parent 16018605bc97a2fdb5ef66d9efe23141124ffb07 * src/if_cs8900a.c: Fixed interrupt hooking block in cs8900a_init() to prevent assertion fail on cyg_interrupt_attach() when interrupt is not used. diff --git a/packages/devs/eth/cl/cs8900a/current/ChangeLog b/packages/devs/eth/cl/cs8900a/current/ChangeLog --- 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 + + * 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 * cdl/cl_cs8900a_eth_drivers.cdl: Added diff --git a/packages/devs/eth/cl/cs8900a/current/src/if_cs8900a.c b/packages/devs/eth/cl/cs8900a/current/src/if_cs8900a.c --- 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