* [U-Boot] [PATCH 4/5] mpc83xx: mpc8360emds: Use RGMII mode, add workarounds for rev. 2.1 CPUs
@ 2009-09-16 19:21 Anton Vorontsov
2009-09-18 22:40 ` Kim Phillips
0 siblings, 1 reply; 6+ messages in thread
From: Anton Vorontsov @ 2009-09-16 19:21 UTC (permalink / raw)
To: u-boot
This patch fixes various ethernet issues with gigabit links handling
in U-Boot. The workarounds originally implemented by Kim Phillips for
Linux kernel.
Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
---
board/freescale/mpc8360emds/mpc8360emds.c | 56 +++++++++++++++++++++++++---
include/configs/MPC8360EMDS.h | 4 +-
2 files changed, 52 insertions(+), 8 deletions(-)
diff --git a/board/freescale/mpc8360emds/mpc8360emds.c b/board/freescale/mpc8360emds/mpc8360emds.c
index 769eb2f..54f2989 100644
--- a/board/freescale/mpc8360emds/mpc8360emds.c
+++ b/board/freescale/mpc8360emds/mpc8360emds.c
@@ -21,12 +21,14 @@
#endif
#include <spd_sdram.h>
#include <asm/mmu.h>
+#include <asm/io.h>
#if defined(CONFIG_OF_LIBFDT)
#include <libfdt.h>
#endif
#if defined(CONFIG_PQ_MDS_PIB)
#include "../common/pq-mds-pib.h"
#endif
+#include "../../../drivers/qe/uec.h"
const qe_iop_conf_t qe_iop_conf_tab[] = {
/* GETH1 */
@@ -89,11 +91,19 @@ const qe_iop_conf_t qe_iop_conf_tab[] = {
{0, 0, 0, 0, QE_IOP_TAB_END}, /* END of table */
};
-int board_early_init_f(void)
+/* Handle "mpc8360ea rev.2.1 erratum 2: RGMII Timing"? */
+static int board_handle_erratum2(void)
{
+ const immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
- u8 *bcsr = (u8 *)CONFIG_SYS_BCSR;
+ return REVID_MAJOR(immr->sysconf.spridr) == 2 &&
+ REVID_MINOR(immr->sysconf.spridr) == 1;
+}
+
+int board_early_init_f(void)
+{
const immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
+ u8 *bcsr = (u8 *)CONFIG_SYS_BCSR;
/* Enable flash write */
bcsr[0xa] &= ~0x04;
@@ -105,6 +115,21 @@ int board_early_init_f(void)
/* Enable second UART */
bcsr[0x9] &= ~0x01;
+ if (board_handle_erratum2()) {
+ void *immap = (immap_t *)(CONFIG_SYS_IMMR + 0x14a8);
+
+ /*
+ * IMMR + 0x14A8[4:5] = 11 (clk delay for UCC 2)
+ * IMMR + 0x14A8[18:19] = 11 (clk delay for UCC 1)
+ */
+ setbits_be32(immap, 0x0c003000);
+
+ /*
+ * IMMR + 0x14AC[20:27] = 10101010
+ * (data delay for both UCC's)
+ */
+ clrsetbits_be32(immap + 4, 0xff0, 0xaa0);
+ }
return 0;
}
@@ -116,6 +141,28 @@ int board_early_init_r(void)
return 0;
}
+#ifdef CONFIG_UEC_ETH
+static uec_info_t uec_info[] = {
+#ifdef CONFIG_UEC_ETH1
+ STD_UEC_INFO(1),
+#endif
+#ifdef CONFIG_UEC_ETH2
+ STD_UEC_INFO(2),
+#endif
+};
+
+int board_eth_init(bd_t *bd)
+{
+ if (board_handle_erratum2()) {
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(uec_info); i++)
+ uec_info[i].enet_interface = ENET_1000_RGMII_RXID;
+ }
+ return uec_eth_init(bd, uec_info, ARRAY_SIZE(uec_info));
+}
+#endif /* CONFIG_UEC_ETH */
+
#if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER)
extern void ddr_enable_ecc(unsigned int dram_size);
#endif
@@ -312,8 +359,6 @@ static int sdram_init(unsigned int base) { return 0; }
#if defined(CONFIG_OF_BOARD_SETUP)
void ft_board_setup(void *blob, bd_t *bd)
{
- const immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-
ft_cpu_setup(blob, bd);
#ifdef CONFIG_PCI
ft_pci_setup(blob, bd);
@@ -323,8 +368,7 @@ void ft_board_setup(void *blob, bd_t *bd)
* if on mpc8360ea rev. 2.1,
* change both ucc phy-connection-types from rgmii-id to rgmii-rxid
*/
- if ((REVID_MAJOR(immr->sysconf.spridr) == 2) &&
- (REVID_MINOR(immr->sysconf.spridr) == 1)) {
+ if (board_handle_erratum2()) {
int nodeoffset;
const char *prop;
int path;
diff --git a/include/configs/MPC8360EMDS.h b/include/configs/MPC8360EMDS.h
index b072e84..30a8d45 100644
--- a/include/configs/MPC8360EMDS.h
+++ b/include/configs/MPC8360EMDS.h
@@ -397,7 +397,7 @@
#define CONFIG_SYS_UEC1_TX_CLK QE_CLK9
#define CONFIG_SYS_UEC1_ETH_TYPE GIGA_ETH
#define CONFIG_SYS_UEC1_PHY_ADDR 0
-#define CONFIG_SYS_UEC1_INTERFACE_MODE ENET_1000_GMII
+#define CONFIG_SYS_UEC1_INTERFACE_MODE ENET_1000_RGMII
#endif
#define CONFIG_UEC_ETH2 /* GETH2 */
@@ -408,7 +408,7 @@
#define CONFIG_SYS_UEC2_TX_CLK QE_CLK4
#define CONFIG_SYS_UEC2_ETH_TYPE GIGA_ETH
#define CONFIG_SYS_UEC2_PHY_ADDR 1
-#define CONFIG_SYS_UEC2_INTERFACE_MODE ENET_1000_GMII
+#define CONFIG_SYS_UEC2_INTERFACE_MODE ENET_1000_RGMII
#endif
/*
--
1.6.3.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* [U-Boot] [PATCH 4/5] mpc83xx: mpc8360emds: Use RGMII mode, add workarounds for rev. 2.1 CPUs
2009-09-16 19:21 [U-Boot] [PATCH 4/5] mpc83xx: mpc8360emds: Use RGMII mode, add workarounds for rev. 2.1 CPUs Anton Vorontsov
@ 2009-09-18 22:40 ` Kim Phillips
2009-09-18 23:29 ` Anton Vorontsov
0 siblings, 1 reply; 6+ messages in thread
From: Kim Phillips @ 2009-09-18 22:40 UTC (permalink / raw)
To: u-boot
On Wed, 16 Sep 2009 23:21:59 +0400
Anton Vorontsov <avorontsov@ru.mvista.com> wrote:
> This patch fixes various ethernet issues with gigabit links handling
> in U-Boot. The workarounds originally implemented by Kim Phillips for
> Linux kernel.
>
> Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
> ---
sorry, can't accept - this breaks r1.1 based boards:
U-Boot 2009.08-00210-g089732e (Sep 18 2009 - 17:25:22) MPC83XX
Reset Status: Software Hard, External/Internal Soft, External/Internal Hard
CPU: e300c1, MPC8360E, Rev: 1.1 at 528 MHz, CSB: 264 MHz
Board: Freescale MPC8360EMDS
I2C: ready
DRAM: 256 MB (DDR1, 64-bit, ECC off, 264 MHz)
SDRAM: 64 MB (local bus)
FLASH: 16 MB
In: serial
Out: serial
Err: serial
Net: FSL UEC0, FSL UEC1
Hit any key to stop autoboot: 0
=> tftp $loadaddr $uboot
UEC: PHY is Marvell 88E11x1 (1410cc2)
FSL UEC0: Full Duplex
FSL UEC0: Speed 1000BT
FSL UEC0: Link is up
Using FSL UEC0 device
TFTP from server 192.168.1.1; our IP address is 192.168.1.118
Filename 'kimphill/u-boot.MPC8360EMDS'.
Load address: 0x800000
Loading: T T T T T T T T T T
Retry count exceeded; starting again
UEC: PHY is Marvell 88E11x1 (1410cc2)
warning: FSL UEC1: timeout on PHY link
FSL UEC0: Link is down
Kim
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 4/5] mpc83xx: mpc8360emds: Use RGMII mode, add workarounds for rev. 2.1 CPUs
2009-09-18 22:40 ` Kim Phillips
@ 2009-09-18 23:29 ` Anton Vorontsov
2009-09-25 23:32 ` Kim Phillips
0 siblings, 1 reply; 6+ messages in thread
From: Anton Vorontsov @ 2009-09-18 23:29 UTC (permalink / raw)
To: u-boot
On Fri, Sep 18, 2009 at 05:40:45PM -0500, Kim Phillips wrote:
> On Wed, 16 Sep 2009 23:21:59 +0400
> Anton Vorontsov <avorontsov@ru.mvista.com> wrote:
>
> > This patch fixes various ethernet issues with gigabit links handling
> > in U-Boot. The workarounds originally implemented by Kim Phillips for
> > Linux kernel.
> >
> > Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
> > ---
>
> sorry, can't accept - this breaks r1.1 based boards:
Oops. Thanks a lot for testing.
I think I know why it breaks, we should use RGMII_ID for < 2.1
revs (at least that's what we have in Linux by default). I don't
have r1.1 CPUs, can you please try this patch on top of the
current patch set?
If it'll work, I'll repost a fixed version of this patch.
diff --git a/include/configs/MPC8360EMDS.h b/include/configs/MPC8360EMDS.h
index dab0173..62cf13b 100644
--- a/include/configs/MPC8360EMDS.h
+++ b/include/configs/MPC8360EMDS.h
@@ -399,7 +399,7 @@
#define CONFIG_SYS_UEC1_TX_CLK QE_CLK9
#define CONFIG_SYS_UEC1_ETH_TYPE GIGA_ETH
#define CONFIG_SYS_UEC1_PHY_ADDR 0
-#define CONFIG_SYS_UEC1_INTERFACE_MODE ENET_1000_RGMII
+#define CONFIG_SYS_UEC1_INTERFACE_MODE ENET_1000_RGMII_ID
#endif
#define CONFIG_UEC_ETH2 /* GETH2 */
@@ -410,7 +410,7 @@
#define CONFIG_SYS_UEC2_TX_CLK QE_CLK4
#define CONFIG_SYS_UEC2_ETH_TYPE GIGA_ETH
#define CONFIG_SYS_UEC2_PHY_ADDR 1
-#define CONFIG_SYS_UEC2_INTERFACE_MODE ENET_1000_RGMII
+#define CONFIG_SYS_UEC2_INTERFACE_MODE ENET_1000_RGMII_ID
#endif
/*
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 4/5] mpc83xx: mpc8360emds: Use RGMII mode, add workarounds for rev. 2.1 CPUs
2009-09-18 23:29 ` Anton Vorontsov
@ 2009-09-25 23:32 ` Kim Phillips
2009-09-26 0:33 ` Ben Warren
2009-09-26 0:47 ` Anton Vorontsov
0 siblings, 2 replies; 6+ messages in thread
From: Kim Phillips @ 2009-09-25 23:32 UTC (permalink / raw)
To: u-boot
On Sat, 19 Sep 2009 03:29:17 +0400
Anton Vorontsov <avorontsov@ru.mvista.com> wrote:
> On Fri, Sep 18, 2009 at 05:40:45PM -0500, Kim Phillips wrote:
> > sorry, can't accept - this breaks r1.1 based boards:
>
> If it'll work, I'll repost a fixed version of this patch.
that worked, thanks.
I fixed up the original commit; I'll push shortly.
Ben, I'm picking up 1-2/5 (unless you have already; I'm behind on the
list) - hope you don't mind.
Kim
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 4/5] mpc83xx: mpc8360emds: Use RGMII mode, add workarounds for rev. 2.1 CPUs
2009-09-25 23:32 ` Kim Phillips
@ 2009-09-26 0:33 ` Ben Warren
2009-09-26 0:47 ` Anton Vorontsov
1 sibling, 0 replies; 6+ messages in thread
From: Ben Warren @ 2009-09-26 0:33 UTC (permalink / raw)
To: u-boot
Kim Phillips wrote:
> On Sat, 19 Sep 2009 03:29:17 +0400
> Anton Vorontsov <avorontsov@ru.mvista.com> wrote:
>
>
>> On Fri, Sep 18, 2009 at 05:40:45PM -0500, Kim Phillips wrote:
>>
>>> sorry, can't accept - this breaks r1.1 based boards:
>>>
>> If it'll work, I'll repost a fixed version of this patch.
>>
>
> that worked, thanks.
>
> I fixed up the original commit; I'll push shortly.
>
> Ben, I'm picking up 1-2/5 (unless you have already; I'm behind on the
> list) - hope you don't mind.
>
> Kim
>
Fine by me. I have some catching up to do too.
Ben
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 4/5] mpc83xx: mpc8360emds: Use RGMII mode, add workarounds for rev. 2.1 CPUs
2009-09-25 23:32 ` Kim Phillips
2009-09-26 0:33 ` Ben Warren
@ 2009-09-26 0:47 ` Anton Vorontsov
1 sibling, 0 replies; 6+ messages in thread
From: Anton Vorontsov @ 2009-09-26 0:47 UTC (permalink / raw)
To: u-boot
On Fri, Sep 25, 2009 at 06:32:15PM -0500, Kim Phillips wrote:
> On Sat, 19 Sep 2009 03:29:17 +0400
> Anton Vorontsov <avorontsov@ru.mvista.com> wrote:
>
> > On Fri, Sep 18, 2009 at 05:40:45PM -0500, Kim Phillips wrote:
> > > sorry, can't accept - this breaks r1.1 based boards:
> >
> > If it'll work, I'll repost a fixed version of this patch.
>
> that worked, thanks.
>
> I fixed up the original commit; I'll push shortly.
Great, thanks a lot Kim.
--
Anton Vorontsov
email: cbouatmailru at gmail.com
irc://irc.freenode.net/bd2
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-09-26 0:47 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-16 19:21 [U-Boot] [PATCH 4/5] mpc83xx: mpc8360emds: Use RGMII mode, add workarounds for rev. 2.1 CPUs Anton Vorontsov
2009-09-18 22:40 ` Kim Phillips
2009-09-18 23:29 ` Anton Vorontsov
2009-09-25 23:32 ` Kim Phillips
2009-09-26 0:33 ` Ben Warren
2009-09-26 0:47 ` Anton Vorontsov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox