[U-Boot] [PATCH] net: davinci_emac: don't teardown inactive rx channel

Tearing down an unitialized rx channel causes a pending address hole event to be queued. When booting linux it will report this pending as something like "Address Hole seen by USB_OTG at address 57fff584", since u-boot did not handled this interrupt. Prevent that by not tearing down the rx channel, when not receiving.
Signed-off-by: Jeroen Hofstee jeroen@myspectrum.nl --- To replicate this: - ROMcode must not use the emac - U-Boot must use the emac - only on cold start --- drivers/net/davinci_emac.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c index 427ad3e..0444795 100644 --- a/drivers/net/davinci_emac.c +++ b/drivers/net/davinci_emac.c @@ -598,7 +598,8 @@ static void davinci_eth_close(struct eth_device *dev) debug_emac("+ emac_close\n");
davinci_eth_ch_teardown(EMAC_CH_TX); /* TX Channel teardown */ - davinci_eth_ch_teardown(EMAC_CH_RX); /* RX Channel teardown */ + if (readl(&adap_emac->RXCONTROL) & 1) + davinci_eth_ch_teardown(EMAC_CH_RX); /* RX Channel teardown */
/* Reset EMAC module and disable interrupts in wrapper */ writel(1, &adap_emac->SOFTRESET);

+cc (forget them somehow)
On 07-06-15 17:30, Jeroen Hofstee wrote:
Tearing down an unitialized rx channel causes a pending address hole event to be queued. When booting linux it will report this pending as something like "Address Hole seen by USB_OTG at address 57fff584", since u-boot did not handled this interrupt. Prevent that by not tearing down the rx channel, when not receiving.
Signed-off-by: Jeroen Hofstee jeroen@myspectrum.nl
To replicate this:
- ROMcode must not use the emac
- U-Boot must use the emac
- only on cold start
drivers/net/davinci_emac.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c index 427ad3e..0444795 100644 --- a/drivers/net/davinci_emac.c +++ b/drivers/net/davinci_emac.c @@ -598,7 +598,8 @@ static void davinci_eth_close(struct eth_device *dev) debug_emac("+ emac_close\n");
davinci_eth_ch_teardown(EMAC_CH_TX); /* TX Channel teardown */
- davinci_eth_ch_teardown(EMAC_CH_RX); /* RX Channel teardown */
if (readl(&adap_emac->RXCONTROL) & 1)
davinci_eth_ch_teardown(EMAC_CH_RX); /* RX Channel teardown */
/* Reset EMAC module and disable interrupts in wrapper */ writel(1, &adap_emac->SOFTRESET);

Hi Jeroen,
On Sun, Jun 7, 2015 at 10:30 AM, Jeroen Hofstee jeroen@myspectrum.nl wrote:
Tearing down an unitialized rx channel causes a pending address hole event to be queued. When booting linux it will report this pending as something like "Address Hole seen by USB_OTG at address 57fff584", since u-boot did not handled this interrupt. Prevent that by not tearing down the rx channel, when not receiving.
Signed-off-by: Jeroen Hofstee jeroen@myspectrum.nl
To replicate this:
- ROMcode must not use the emac
- U-Boot must use the emac
- only on cold start
I don't know the hardware, but it sounds like a reasonable explanation. Look good to you, Tony?
Thanks, -Joe

* Joe Hershberger joe.hershberger@gmail.com [150610 07:26]:
Hi Jeroen,
On Sun, Jun 7, 2015 at 10:30 AM, Jeroen Hofstee jeroen@myspectrum.nl wrote:
Tearing down an unitialized rx channel causes a pending address hole event to be queued. When booting linux it will report this pending as something like "Address Hole seen by USB_OTG at address 57fff584", since u-boot did not handled this interrupt. Prevent that by not tearing down the rx channel, when not receiving.
Signed-off-by: Jeroen Hofstee jeroen@myspectrum.nl
To replicate this:
- ROMcode must not use the emac
- U-Boot must use the emac
- only on cold start
I don't know the hardware, but it sounds like a reasonable explanation. Look good to you, Tony?
Sure.
Tony

Hi Jeroen,
On Thu, Jun 11, 2015 at 12:51 AM, Tony Lindgren tony@atomide.com wrote:
- Joe Hershberger joe.hershberger@gmail.com [150610 07:26]:
Hi Jeroen,
On Sun, Jun 7, 2015 at 10:30 AM, Jeroen Hofstee jeroen@myspectrum.nl wrote:
Tearing down an unitialized rx channel causes a pending address hole event to be queued. When booting linux it will report this pending as something like "Address Hole seen by USB_OTG at address 57fff584", since u-boot did not handled this interrupt. Prevent that by not tearing down the rx channel, when not receiving.
Signed-off-by: Jeroen Hofstee jeroen@myspectrum.nl
To replicate this:
- ROMcode must not use the emac
- U-Boot must use the emac
- only on cold start
I don't know the hardware, but it sounds like a reasonable explanation. Look good to you, Tony?
Sure.
Tony
OK, I'll pull this into u-boot-net.
Cheers, -Joe

Hi Jeroen,
On Sun, Jun 7, 2015 at 10:30 AM, Jeroen Hofstee jeroen@myspectrum.nl wrote:
Tearing down an unitialized rx channel causes a pending address hole event to be queued. When booting linux it will report this pending as something like "Address Hole seen by USB_OTG at address 57fff584", since u-boot did not handled this interrupt. Prevent that by not tearing down the rx channel, when not receiving.
Signed-off-by: Jeroen Hofstee jeroen@myspectrum.nl
Applied to u-boot-net, thanks! -Joe
participants (3)
-
Jeroen Hofstee
-
Joe Hershberger
-
Tony Lindgren