summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cleopatre/u-boot-1.1.6/cpu/spc300/mseeth.S30
-rw-r--r--common/include/asm/arch/ips/hardware/iomux.h1
2 files changed, 31 insertions, 0 deletions
diff --git a/cleopatre/u-boot-1.1.6/cpu/spc300/mseeth.S b/cleopatre/u-boot-1.1.6/cpu/spc300/mseeth.S
index ba282a959c..9aa081ff51 100644
--- a/cleopatre/u-boot-1.1.6/cpu/spc300/mseeth.S
+++ b/cleopatre/u-boot-1.1.6/cpu/spc300/mseeth.S
@@ -181,6 +181,12 @@ ethernet_config:
setreg RB_CLK_DIV_ETH1_TX_PLL_OFFSET, CLK_ETH_DIV_TX_PLL_10, r0, r2
setreg RB_CLK_DIV_ETH1_RX_PLL_OFFSET, CLK_ETH_DIV_RX_PLL_10, r0, r2
+ /* Check clock source. */
+ ldr r3, =IOMUX_BASE
+ ldr r2, [r3, #IOMUX_GLOBAL_ETH_OFFSET]
+ eors r2, #IOMUX_RMII_PHY_CLOCK_ENABLE
+ beq 1f
+
/* Enable TX clock */
setreg RB_CLK_SEL_ETH1_TX_OFFSET, CLK_SEL_ETH_TX_RX_PLL_CLK, r0, r2
checkreg RB_CLK_SEL_STAT_ETH1_TX_OFFSET, CLK_SEL_ETH_TX_RX_PLL_CLK, r0, r2
@@ -203,6 +209,30 @@ ethernet_config:
checkreg RB_CLK_STAT_ETH1_RMII_OFFSET, CLK_ETH_RMII_PLL_IS_ON, r0, r2
endconfig r1, r2
+1:
+ /* Use RMII clock from PHY. */
+ /* Enable TX clock */
+ setreg RB_CLK_SEL_ETH1_TX_OFFSET, CLK_SEL_ETH_TX_RX_RMII_CLK, r0, r2
+ checkreg RB_CLK_SEL_STAT_ETH1_TX_OFFSET, CLK_SEL_ETH_TX_RX_RMII_CLK, r0, r2
+
+ setreg RB_CLK_CMD_ETH1_TX_OFFSET, CLK_CMD_RMII_ON, r0, r2
+ checkreg RB_CLK_STAT_ETH1_TX_OFFSET, CLK_ETH_TX_RX_RMII_IS_ON, r0, r2
+
+ /* Enable RX clock */
+ setreg RB_CLK_SEL_ETH1_RX_OFFSET, CLK_SEL_ETH_TX_RX_RMII_CLK, r0, r2
+ checkreg RB_CLK_SEL_STAT_ETH1_RX_OFFSET, CLK_SEL_ETH_TX_RX_RMII_CLK, r0, r2
+
+ setreg RB_CLK_CMD_ETH1_RX_OFFSET, CLK_CMD_RMII_ON, r0, r2
+ checkreg RB_CLK_STAT_ETH1_RX_OFFSET, CLK_ETH_TX_RX_RMII_IS_ON, r0, r2
+
+ /* Enable RMII clock */
+ setreg RB_CLK_SEL_ETH1_RMII_OFFSET, CLK_SEL_ETH_RMII_RMII_CLK, r0, r2
+ checkreg RB_CLK_SEL_STAT_ETH1_RMII_OFFSET, CLK_SEL_ETH_RMII_RMII_CLK, r0, r2
+
+ setreg RB_CLK_CMD_ETH1_RMII_OFFSET, CLK_CMD_RMII_PLL_ON, r0, r2
+ checkreg RB_CLK_STAT_ETH1_RMII_OFFSET, CLK_ETH_RMII_PLL_IS_ON, r0, r2
+
+ endconfig r1, r2
.Lgmii:
/*
diff --git a/common/include/asm/arch/ips/hardware/iomux.h b/common/include/asm/arch/ips/hardware/iomux.h
index 969308d585..da66fb80be 100644
--- a/common/include/asm/arch/ips/hardware/iomux.h
+++ b/common/include/asm/arch/ips/hardware/iomux.h
@@ -75,5 +75,6 @@
#define IOMUX_PAD_TOP_DUMMY0_2_OFFSET (0x1F4)
#define IOMUX_PAD_TOP_DUMMY1_1_OFFSET (0x1F8)
#define IOMUX_PAD_TOP_DUMMY1_2_OFFSET (0x1FC)
+#define IOMUX_RMII_PHY_CLOCK_ENABLE (0x200)
#endif /* __ASM_ARCH_IPS_HW_IOMUX_H */