I've noticed an occasional boot failure with my ts7200, requiring use of
the reset button. I _think_ it never happens when the ts7200 has no
ethernet connection. Then I saw this post on the linux-cirrus list.
Anyone know if this could be a problem?
It's not a big deal, but was just curious.
Jim
---------- Forwarded message ----------
Date: Fri, 3 Mar 2006 01:16:39 +0100
From: Lennert Buytenhek <>
To:
Subject: [linux-cirrus] Re: Redboot kernel CRC error --- Ethernet to
blame???
Reply-To:
On Fri, Mar 03, 2006 at 10:28:25AM +1030, wrote:
> I can't locate the particular email, but someone had ethernet packets
> overwriting the in memory kernel image during boot (from RedBoot on an
> EP93xx)....
Heh, I diagnosed this a few days ago too -- it was causing my kernel
to fail to boot sporadically due to kernel text being overwritten
while uncompressing.
I 'solved' it by putting this in uncompress.h and calling it from
arch_decomp_setup():
+/*
+ * Some bootloaders don't turn off DMA from the ethernet MAC before
+ * jumping to linux, which means that we might end up with bits of RX
+ * status and packet data scribbled over the uncompressed kernel image.
+ * Work around this by resetting the ethernet MAC before we uncompress.
+ */
+#define PHYS_ETH_SELF_CTL 0x80010020
+#define ETH_SELF_CTL_RESET 0x00000001
+
+static void ethernet_reset(void)
+{
+ unsigned int v;
+
+ /* Reset the ethernet MAC. */
+ v = __raw_readl(PHYS_ETH_SELF_CTL);
+ __raw_writel(v | ETH_SELF_CTL_RESET, PHYS_ETH_SELF_CTL);
+
+ /* Wait for reset to finish. */
+ while (__raw_readl(PHYS_ETH_SELF_CTL) & ETH_SELF_CTL_RESET)
+ ;
+}
--L
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/ts-7000/
<*> To unsubscribe from this group, send an email to:
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|