diff options
-rw-r--r-- | arch/arm/mach-at91/board-dt-sama5.c | 17 | ||||
-rw-r--r-- | arch/arm/mach-imx/mach-imx6q.c | 13 | ||||
-rw-r--r-- | include/linux/micrel_phy.h | 6 |
3 files changed, 20 insertions, 16 deletions
diff --git a/arch/arm/mach-at91/board-dt-sama5.c b/arch/arm/mach-at91/board-dt-sama5.c index ad95f6a23a28..bf00d15d954d 100644 --- a/arch/arm/mach-at91/board-dt-sama5.c +++ b/arch/arm/mach-at91/board-dt-sama5.c | |||
@@ -42,20 +42,15 @@ static int ksz9021rn_phy_fixup(struct phy_device *phy) | |||
42 | { | 42 | { |
43 | int value; | 43 | int value; |
44 | 44 | ||
45 | #define GMII_RCCPSR 260 | ||
46 | #define GMII_RRDPSR 261 | ||
47 | #define GMII_ERCR 11 | ||
48 | #define GMII_ERDWR 12 | ||
49 | |||
50 | /* Set delay values */ | 45 | /* Set delay values */ |
51 | value = GMII_RCCPSR | 0x8000; | 46 | value = MICREL_KSZ9021_RGMII_CLK_CTRL_PAD_SCEW | 0x8000; |
52 | phy_write(phy, GMII_ERCR, value); | 47 | phy_write(phy, MICREL_KSZ9021_EXTREG_CTRL, value); |
53 | value = 0xF2F4; | 48 | value = 0xF2F4; |
54 | phy_write(phy, GMII_ERDWR, value); | 49 | phy_write(phy, MICREL_KSZ9021_EXTREG_DATA_WRITE, value); |
55 | value = GMII_RRDPSR | 0x8000; | 50 | value = MICREL_KSZ9021_RGMII_RX_DATA_PAD_SCEW | 0x8000; |
56 | phy_write(phy, GMII_ERCR, value); | 51 | phy_write(phy, MICREL_KSZ9021_EXTREG_CTRL, value); |
57 | value = 0x2222; | 52 | value = 0x2222; |
58 | phy_write(phy, GMII_ERDWR, value); | 53 | phy_write(phy, MICREL_KSZ9021_EXTREG_DATA_WRITE, value); |
59 | 54 | ||
60 | return 0; | 55 | return 0; |
61 | } | 56 | } |
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c index c730af673085..1e093abe7b95 100644 --- a/arch/arm/mach-imx/mach-imx6q.c +++ b/arch/arm/mach-imx/mach-imx6q.c | |||
@@ -103,13 +103,16 @@ static int ksz9021rn_phy_fixup(struct phy_device *phydev) | |||
103 | { | 103 | { |
104 | if (IS_BUILTIN(CONFIG_PHYLIB)) { | 104 | if (IS_BUILTIN(CONFIG_PHYLIB)) { |
105 | /* min rx data delay */ | 105 | /* min rx data delay */ |
106 | phy_write(phydev, 0x0b, 0x8105); | 106 | phy_write(phydev, MICREL_KSZ9021_EXTREG_CTRL, |
107 | phy_write(phydev, 0x0c, 0x0000); | 107 | 0x8000 | MICREL_KSZ9021_RGMII_RX_DATA_PAD_SCEW); |
108 | phy_write(phydev, MICREL_KSZ9021_EXTREG_DATA_WRITE, 0x0000); | ||
108 | 109 | ||
109 | /* max rx/tx clock delay, min rx/tx control delay */ | 110 | /* max rx/tx clock delay, min rx/tx control delay */ |
110 | phy_write(phydev, 0x0b, 0x8104); | 111 | phy_write(phydev, MICREL_KSZ9021_EXTREG_CTRL, |
111 | phy_write(phydev, 0x0c, 0xf0f0); | 112 | 0x8000 | MICREL_KSZ9021_RGMII_CLK_CTRL_PAD_SCEW); |
112 | phy_write(phydev, 0x0b, 0x104); | 113 | phy_write(phydev, MICREL_KSZ9021_EXTREG_DATA_WRITE, 0xf0f0); |
114 | phy_write(phydev, MICREL_KSZ9021_EXTREG_CTRL, | ||
115 | MICREL_KSZ9021_RGMII_CLK_CTRL_PAD_SCEW); | ||
113 | } | 116 | } |
114 | 117 | ||
115 | return 0; | 118 | return 0; |
diff --git a/include/linux/micrel_phy.h b/include/linux/micrel_phy.h index 8752dbbc6135..ad05ce60c1c9 100644 --- a/include/linux/micrel_phy.h +++ b/include/linux/micrel_phy.h | |||
@@ -17,6 +17,7 @@ | |||
17 | 17 | ||
18 | #define PHY_ID_KSZ8873MLL 0x000e7237 | 18 | #define PHY_ID_KSZ8873MLL 0x000e7237 |
19 | #define PHY_ID_KSZ9021 0x00221610 | 19 | #define PHY_ID_KSZ9021 0x00221610 |
20 | #define PHY_ID_KSZ9021RLRN 0x00221611 | ||
20 | #define PHY_ID_KS8737 0x00221720 | 21 | #define PHY_ID_KS8737 0x00221720 |
21 | #define PHY_ID_KSZ8021 0x00221555 | 22 | #define PHY_ID_KSZ8021 0x00221555 |
22 | #define PHY_ID_KSZ8031 0x00221556 | 23 | #define PHY_ID_KSZ8031 0x00221556 |
@@ -35,4 +36,9 @@ | |||
35 | /* struct phy_device dev_flags definitions */ | 36 | /* struct phy_device dev_flags definitions */ |
36 | #define MICREL_PHY_50MHZ_CLK 0x00000001 | 37 | #define MICREL_PHY_50MHZ_CLK 0x00000001 |
37 | 38 | ||
39 | #define MICREL_KSZ9021_EXTREG_CTRL 0xB | ||
40 | #define MICREL_KSZ9021_EXTREG_DATA_WRITE 0xC | ||
41 | #define MICREL_KSZ9021_RGMII_CLK_CTRL_PAD_SCEW 0x104 | ||
42 | #define MICREL_KSZ9021_RGMII_RX_DATA_PAD_SCEW 0x105 | ||
43 | |||
38 | #endif /* _MICREL_PHY_H */ | 44 | #endif /* _MICREL_PHY_H */ |