From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeroen Hofstee Date: Mon, 08 Jun 2015 11:05:15 +0200 Subject: [U-Boot] [PATCH] net: davinci_emac: don't teardown inactive rx channel In-Reply-To: <1433691038-21078-1-git-send-email-jeroen@myspectrum.nl> References: <1433691038-21078-1-git-send-email-jeroen@myspectrum.nl> Message-ID: <55755ACB.20503@myspectrum.nl> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de +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 > --- > 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);