[U-Boot-Users] unhandled ethernet wakeup interrupt in 405 ethernet driver

Hi,
I noticed a networks problem with some of our 405EP platforms (u-boot config: PLU405). When doing tftp u-boot runs into an endless interrupt loop of the ethernet wakeup interrupt (VECNUM_EWU0).
So why is the wakeup interrupt enabled in 405gp_enet.c in general? The interrupt handler enetInt() does not care about this interrupt source at all. So when it occurs we end up in an interrupt loop. I found no hint about how to reset this interrupt in the 405EP manual.
When I do not install a handler on the wakeup interrupt source (EWU0) everything is fine. This is my current workaround.
The current 405 linux ethernet driver also does not attach to this interrupt.
I am astonished about two things:
1) The installation of the enetInt() handler for the wakeup interrupt is only done for 405EP platforms in ppc_4xx_eth_initialize():
#if defined(CONFIG_405EP) /* 405EP has one EWU interrupt */ irq_install_handler (VECNUM_EWU0, (interrupt_handler_t *) enetInt, dev); #endif
But it is not done for 405EP platforms in ppc_4xx_eth_init():
#if !defined(CONFIG_405EP) /* 405EP has one EWU interrupt */ irq_install_handler (VECNUM_EWU0 + (hw_p->devnum * 2), (interrupt_handler_t *) enetInt, dev); #endif
This seems to be strange at all.
I suppose that no one is using the wakeup mechanism and so I propose to completely remove the wakeup stuff!
2) Why the hell do we get ethernet wakeup interrupts on some of our 405EP boards :-(
So can we get rid of installing a wakeup interrupt that even does not handle the interrupt? If yes I will submit a patch.
Matthias

Hi,
I came to the conslusion that the ethernet wakeup interupt should not be touched by u-boot and the code can be removed.
Here is my patch that fixes cpu/ppc4xx/405gp_enet.c.
Here is the changelog entry:
* Patch by Matthias Fuchs, 10 May 2005: Do not attach to ethernet wakeup interrupt in 405gp_enet.c
Does anything speak against this patch? I do not think so :-)
Matthias
diff --exclude=CVS -Nru u-boot_original/cpu/ppc4xx/405gp_enet.c u-boot_fixed/cpu/ppc4xx/405gp_enet.c --- u-boot_original/cpu/ppc4xx/405gp_enet.c 2004-07-02 16:36:35.000000000 +0200 +++ u-boot_fixed/cpu/ppc4xx/405gp_enet.c 2005-05-10 09:06:15.000000000 +0200 @@ -498,11 +498,6 @@ /* * Connect interrupt service routines */ -#if !defined(CONFIG_405EP) - /* 405EP has one EWU interrupt */ - irq_install_handler (VECNUM_EWU0 + (hw_p->devnum * 2), - (interrupt_handler_t *) enetInt, dev); -#endif irq_install_handler (VECNUM_ETH0 + (hw_p->devnum * 2), (interrupt_handler_t *) enetInt, dev); } @@ -993,12 +988,6 @@ mtdcr (malrxdeir, 0xffffffff); /* clear pending interrupts */ mtdcr (malier, mal_ier);
-#if defined(CONFIG_405EP) - /* 405EP has one EWU interrupt */ - irq_install_handler (VECNUM_EWU0, - (interrupt_handler_t *) enetInt, - dev); -#endif /* install MAL interrupt handler */ irq_install_handler (VECNUM_MS, (interrupt_handler_t *) enetInt,
participants (1)
-
Matthias Fuchs