.. | .. |
---|
47 | 47 | void (*set_to_qsgmii)(struct rk_priv_data *bsp_priv); |
---|
48 | 48 | void (*set_rgmii_speed)(struct rk_priv_data *bsp_priv, int speed); |
---|
49 | 49 | void (*set_rmii_speed)(struct rk_priv_data *bsp_priv, int speed); |
---|
50 | | - void (*set_sgmii_speed)(struct rk_priv_data *bsp_priv, int speed); |
---|
51 | | - void (*set_clock_selection)(struct rk_priv_data *bsp_priv, bool input, |
---|
52 | | - bool enable); |
---|
53 | | - void (*integrated_phy_power)(struct rk_priv_data *bsp_priv, bool up); |
---|
| 50 | + void (*integrated_phy_powerup)(struct rk_priv_data *bsp_priv); |
---|
54 | 51 | }; |
---|
55 | 52 | |
---|
56 | 53 | struct rk_priv_data { |
---|
.. | .. |
---|
64 | 61 | bool clk_enabled; |
---|
65 | 62 | bool clock_input; |
---|
66 | 63 | bool integrated_phy; |
---|
67 | | - struct phy *comphy; |
---|
68 | 64 | |
---|
69 | 65 | struct clk *clk_mac; |
---|
70 | 66 | struct clk *gmac_clkin; |
---|
.. | .. |
---|
169 | 165 | int ret, i, id = bsp_priv->bus_id; |
---|
170 | 166 | u32 val; |
---|
171 | 167 | |
---|
172 | | - if (mode == PHY_INTERFACE_MODE_QSGMII && !id) |
---|
| 168 | + if (mode == PHY_INTERFACE_MODE_QSGMII && id > 0) |
---|
173 | 169 | return 0; |
---|
174 | 170 | |
---|
175 | | - ret = xpcs_soft_reset(bsp_priv, 0); |
---|
| 171 | + ret = xpcs_soft_reset(bsp_priv, id); |
---|
176 | 172 | if (ret) { |
---|
177 | 173 | dev_err(&bsp_priv->pdev->dev, "xpcs_soft_reset fail %d\n", ret); |
---|
178 | 174 | return ret; |
---|
.. | .. |
---|
199 | 195 | SR_MII_CTRL_AN_ENABLE); |
---|
200 | 196 | } |
---|
201 | 197 | } else { |
---|
202 | | - val = xpcs_read(bsp_priv, SR_MII_OFFSET(0) + VR_MII_DIG_CTRL1); |
---|
203 | | - xpcs_write(bsp_priv, SR_MII_OFFSET(0) + VR_MII_DIG_CTRL1, |
---|
| 198 | + val = xpcs_read(bsp_priv, SR_MII_OFFSET(id) + VR_MII_DIG_CTRL1); |
---|
| 199 | + xpcs_write(bsp_priv, SR_MII_OFFSET(id) + VR_MII_DIG_CTRL1, |
---|
204 | 200 | val | MII_MAC_AUTO_SW); |
---|
205 | | - xpcs_write(bsp_priv, SR_MII_OFFSET(0) + MII_BMCR, |
---|
| 201 | + xpcs_write(bsp_priv, SR_MII_OFFSET(id) + MII_BMCR, |
---|
206 | 202 | SR_MII_CTRL_AN_ENABLE); |
---|
207 | 203 | } |
---|
208 | 204 | |
---|
.. | .. |
---|
216 | 212 | #define GRF_CLR_BIT(nr) (BIT(nr+16)) |
---|
217 | 213 | |
---|
218 | 214 | #define DELAY_ENABLE(soc, tx, rx) \ |
---|
219 | | - ((((tx) >= 0) ? soc##_GMAC_TXCLK_DLY_ENABLE : soc##_GMAC_TXCLK_DLY_DISABLE) | \ |
---|
220 | | - (((rx) >= 0) ? soc##_GMAC_RXCLK_DLY_ENABLE : soc##_GMAC_RXCLK_DLY_DISABLE)) |
---|
221 | | - |
---|
222 | | -#define DELAY_VALUE(soc, tx, rx) \ |
---|
223 | | - ((((tx) >= 0) ? soc##_GMAC_CLK_TX_DL_CFG(tx) : 0) | \ |
---|
224 | | - (((rx) >= 0) ? soc##_GMAC_CLK_RX_DL_CFG(rx) : 0)) |
---|
225 | | - |
---|
226 | | -/* Integrated EPHY */ |
---|
227 | | - |
---|
228 | | -#define RK_GRF_MACPHY_CON0 0xb00 |
---|
229 | | -#define RK_GRF_MACPHY_CON1 0xb04 |
---|
230 | | -#define RK_GRF_MACPHY_CON2 0xb08 |
---|
231 | | -#define RK_GRF_MACPHY_CON3 0xb0c |
---|
232 | | - |
---|
233 | | -#define RK_MACPHY_ENABLE GRF_BIT(0) |
---|
234 | | -#define RK_MACPHY_DISABLE GRF_CLR_BIT(0) |
---|
235 | | -#define RK_MACPHY_CFG_CLK_50M GRF_BIT(14) |
---|
236 | | -#define RK_GMAC2PHY_RMII_MODE (GRF_BIT(6) | GRF_CLR_BIT(7)) |
---|
237 | | -#define RK_GRF_CON2_MACPHY_ID HIWORD_UPDATE(0x1234, 0xffff, 0) |
---|
238 | | -#define RK_GRF_CON3_MACPHY_ID HIWORD_UPDATE(0x35, 0x3f, 0) |
---|
239 | | - |
---|
240 | | -static void rk_gmac_integrated_ephy_powerup(struct rk_priv_data *priv) |
---|
241 | | -{ |
---|
242 | | - regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_CFG_CLK_50M); |
---|
243 | | - regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_GMAC2PHY_RMII_MODE); |
---|
244 | | - |
---|
245 | | - regmap_write(priv->grf, RK_GRF_MACPHY_CON2, RK_GRF_CON2_MACPHY_ID); |
---|
246 | | - regmap_write(priv->grf, RK_GRF_MACPHY_CON3, RK_GRF_CON3_MACPHY_ID); |
---|
247 | | - |
---|
248 | | - if (priv->phy_reset) { |
---|
249 | | - /* PHY needs to be disabled before trying to reset it */ |
---|
250 | | - regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_DISABLE); |
---|
251 | | - if (priv->phy_reset) |
---|
252 | | - reset_control_assert(priv->phy_reset); |
---|
253 | | - usleep_range(10, 20); |
---|
254 | | - if (priv->phy_reset) |
---|
255 | | - reset_control_deassert(priv->phy_reset); |
---|
256 | | - usleep_range(10, 20); |
---|
257 | | - regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_ENABLE); |
---|
258 | | - msleep(30); |
---|
259 | | - } |
---|
260 | | -} |
---|
261 | | - |
---|
262 | | -static void rk_gmac_integrated_ephy_powerdown(struct rk_priv_data *priv) |
---|
263 | | -{ |
---|
264 | | - regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_DISABLE); |
---|
265 | | - if (priv->phy_reset) |
---|
266 | | - reset_control_assert(priv->phy_reset); |
---|
267 | | -} |
---|
| 215 | + (((tx) ? soc##_GMAC_TXCLK_DLY_ENABLE : soc##_GMAC_TXCLK_DLY_DISABLE) | \ |
---|
| 216 | + ((rx) ? soc##_GMAC_RXCLK_DLY_ENABLE : soc##_GMAC_RXCLK_DLY_DISABLE)) |
---|
268 | 217 | |
---|
269 | 218 | #define PX30_GRF_GMAC_CON1 0x0904 |
---|
270 | 219 | |
---|
.. | .. |
---|
357 | 306 | |
---|
358 | 307 | regmap_write(bsp_priv->grf, RK1808_GRF_GMAC_CON1, |
---|
359 | 308 | RK1808_GMAC_PHY_INTF_SEL_RGMII | |
---|
360 | | - DELAY_ENABLE(RK1808, tx_delay, rx_delay)); |
---|
| 309 | + RK1808_GMAC_RXCLK_DLY_ENABLE | |
---|
| 310 | + RK1808_GMAC_TXCLK_DLY_ENABLE); |
---|
361 | 311 | |
---|
362 | 312 | regmap_write(bsp_priv->grf, RK1808_GRF_GMAC_CON0, |
---|
363 | | - DELAY_VALUE(RK1808, tx_delay, rx_delay)); |
---|
| 313 | + RK1808_GMAC_CLK_RX_DL_CFG(rx_delay) | |
---|
| 314 | + RK1808_GMAC_CLK_TX_DL_CFG(tx_delay)); |
---|
364 | 315 | } |
---|
365 | 316 | |
---|
366 | 317 | static void rk1808_set_to_rmii(struct rk_priv_data *bsp_priv) |
---|
.. | .. |
---|
488 | 439 | RK3128_GMAC_RMII_MODE_CLR); |
---|
489 | 440 | regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON0, |
---|
490 | 441 | DELAY_ENABLE(RK3128, tx_delay, rx_delay) | |
---|
491 | | - DELAY_VALUE(RK3128, tx_delay, rx_delay)); |
---|
| 442 | + RK3128_GMAC_CLK_RX_DL_CFG(rx_delay) | |
---|
| 443 | + RK3128_GMAC_CLK_TX_DL_CFG(tx_delay)); |
---|
492 | 444 | } |
---|
493 | 445 | |
---|
494 | 446 | static void rk3128_set_to_rmii(struct rk_priv_data *bsp_priv) |
---|
.. | .. |
---|
604 | 556 | DELAY_ENABLE(RK3228, tx_delay, rx_delay)); |
---|
605 | 557 | |
---|
606 | 558 | regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON0, |
---|
607 | | - DELAY_VALUE(RK3128, tx_delay, rx_delay)); |
---|
| 559 | + RK3228_GMAC_CLK_RX_DL_CFG(rx_delay) | |
---|
| 560 | + RK3228_GMAC_CLK_TX_DL_CFG(tx_delay)); |
---|
608 | 561 | } |
---|
609 | 562 | |
---|
610 | 563 | static void rk3228_set_to_rmii(struct rk_priv_data *bsp_priv) |
---|
.. | .. |
---|
667 | 620 | dev_err(dev, "unknown speed value for RMII! speed=%d", speed); |
---|
668 | 621 | } |
---|
669 | 622 | |
---|
670 | | -static void rk3228_integrated_phy_power(struct rk_priv_data *priv, bool up) |
---|
| 623 | +static void rk3228_integrated_phy_powerup(struct rk_priv_data *priv) |
---|
671 | 624 | { |
---|
672 | | - if (up) { |
---|
673 | | - regmap_write(priv->grf, RK3228_GRF_CON_MUX, |
---|
674 | | - RK3228_GRF_CON_MUX_GMAC_INTEGRATED_PHY); |
---|
675 | | - |
---|
676 | | - rk_gmac_integrated_ephy_powerup(priv); |
---|
677 | | - } else { |
---|
678 | | - rk_gmac_integrated_ephy_powerdown(priv); |
---|
679 | | - } |
---|
| 625 | + regmap_write(priv->grf, RK3228_GRF_CON_MUX, |
---|
| 626 | + RK3228_GRF_CON_MUX_GMAC_INTEGRATED_PHY); |
---|
680 | 627 | } |
---|
681 | 628 | |
---|
682 | 629 | static const struct rk_gmac_ops rk3228_ops = { |
---|
.. | .. |
---|
684 | 631 | .set_to_rmii = rk3228_set_to_rmii, |
---|
685 | 632 | .set_rgmii_speed = rk3228_set_rgmii_speed, |
---|
686 | 633 | .set_rmii_speed = rk3228_set_rmii_speed, |
---|
687 | | - .integrated_phy_power = rk3228_integrated_phy_power, |
---|
| 634 | + .integrated_phy_powerup = rk3228_integrated_phy_powerup, |
---|
688 | 635 | }; |
---|
689 | 636 | |
---|
690 | 637 | #define RK3288_GRF_SOC_CON1 0x0248 |
---|
.. | .. |
---|
730 | 677 | RK3288_GMAC_RMII_MODE_CLR); |
---|
731 | 678 | regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON3, |
---|
732 | 679 | DELAY_ENABLE(RK3288, tx_delay, rx_delay) | |
---|
733 | | - DELAY_VALUE(RK3288, tx_delay, rx_delay)); |
---|
| 680 | + RK3288_GMAC_CLK_RX_DL_CFG(rx_delay) | |
---|
| 681 | + RK3288_GMAC_CLK_TX_DL_CFG(tx_delay)); |
---|
734 | 682 | } |
---|
735 | 683 | |
---|
736 | 684 | static void rk3288_set_to_rmii(struct rk_priv_data *bsp_priv) |
---|
.. | .. |
---|
901 | 849 | regmap_write(bsp_priv->grf, RK3328_GRF_MAC_CON1, |
---|
902 | 850 | RK3328_GMAC_PHY_INTF_SEL_RGMII | |
---|
903 | 851 | RK3328_GMAC_RMII_MODE_CLR | |
---|
904 | | - DELAY_ENABLE(RK3328, tx_delay, rx_delay)); |
---|
| 852 | + RK3328_GMAC_RXCLK_DLY_ENABLE | |
---|
| 853 | + RK3328_GMAC_TXCLK_DLY_ENABLE); |
---|
905 | 854 | |
---|
906 | 855 | regmap_write(bsp_priv->grf, RK3328_GRF_MAC_CON0, |
---|
907 | | - DELAY_VALUE(RK3328, tx_delay, rx_delay)); |
---|
| 856 | + RK3328_GMAC_CLK_RX_DL_CFG(rx_delay) | |
---|
| 857 | + RK3328_GMAC_CLK_TX_DL_CFG(tx_delay)); |
---|
908 | 858 | } |
---|
909 | 859 | |
---|
910 | 860 | static void rk3328_set_to_rmii(struct rk_priv_data *bsp_priv) |
---|
.. | .. |
---|
972 | 922 | dev_err(dev, "unknown speed value for RMII! speed=%d", speed); |
---|
973 | 923 | } |
---|
974 | 924 | |
---|
975 | | -static void rk3328_integrated_phy_power(struct rk_priv_data *priv, bool up) |
---|
| 925 | +static void rk3328_integrated_phy_powerup(struct rk_priv_data *priv) |
---|
976 | 926 | { |
---|
977 | | - if (up) { |
---|
978 | | - regmap_write(priv->grf, RK3328_GRF_MACPHY_CON1, |
---|
979 | | - RK3328_MACPHY_RMII_MODE); |
---|
980 | | - |
---|
981 | | - rk_gmac_integrated_ephy_powerup(priv); |
---|
982 | | - } else { |
---|
983 | | - rk_gmac_integrated_ephy_powerdown(priv); |
---|
984 | | - } |
---|
| 927 | + regmap_write(priv->grf, RK3328_GRF_MACPHY_CON1, |
---|
| 928 | + RK3328_MACPHY_RMII_MODE); |
---|
985 | 929 | } |
---|
986 | 930 | |
---|
987 | 931 | static const struct rk_gmac_ops rk3328_ops = { |
---|
.. | .. |
---|
989 | 933 | .set_to_rmii = rk3328_set_to_rmii, |
---|
990 | 934 | .set_rgmii_speed = rk3328_set_rgmii_speed, |
---|
991 | 935 | .set_rmii_speed = rk3328_set_rmii_speed, |
---|
992 | | - .integrated_phy_power = rk3328_integrated_phy_power, |
---|
| 936 | + .integrated_phy_powerup = rk3328_integrated_phy_powerup, |
---|
993 | 937 | }; |
---|
994 | 938 | |
---|
995 | 939 | #define RK3366_GRF_SOC_CON6 0x0418 |
---|
.. | .. |
---|
1035 | 979 | RK3366_GMAC_RMII_MODE_CLR); |
---|
1036 | 980 | regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON7, |
---|
1037 | 981 | DELAY_ENABLE(RK3366, tx_delay, rx_delay) | |
---|
1038 | | - DELAY_VALUE(RK3366, tx_delay, rx_delay)); |
---|
| 982 | + RK3366_GMAC_CLK_RX_DL_CFG(rx_delay) | |
---|
| 983 | + RK3366_GMAC_CLK_TX_DL_CFG(tx_delay)); |
---|
1039 | 984 | } |
---|
1040 | 985 | |
---|
1041 | 986 | static void rk3366_set_to_rmii(struct rk_priv_data *bsp_priv) |
---|
.. | .. |
---|
1145 | 1090 | RK3368_GMAC_RMII_MODE_CLR); |
---|
1146 | 1091 | regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON16, |
---|
1147 | 1092 | DELAY_ENABLE(RK3368, tx_delay, rx_delay) | |
---|
1148 | | - DELAY_VALUE(RK3368, tx_delay, rx_delay)); |
---|
| 1093 | + RK3368_GMAC_CLK_RX_DL_CFG(rx_delay) | |
---|
| 1094 | + RK3368_GMAC_CLK_TX_DL_CFG(tx_delay)); |
---|
1149 | 1095 | } |
---|
1150 | 1096 | |
---|
1151 | 1097 | static void rk3368_set_to_rmii(struct rk_priv_data *bsp_priv) |
---|
.. | .. |
---|
1255 | 1201 | RK3399_GMAC_RMII_MODE_CLR); |
---|
1256 | 1202 | regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON6, |
---|
1257 | 1203 | DELAY_ENABLE(RK3399, tx_delay, rx_delay) | |
---|
1258 | | - DELAY_VALUE(RK3399, tx_delay, rx_delay)); |
---|
| 1204 | + RK3399_GMAC_CLK_RX_DL_CFG(rx_delay) | |
---|
| 1205 | + RK3399_GMAC_CLK_TX_DL_CFG(tx_delay)); |
---|
1259 | 1206 | } |
---|
1260 | 1207 | |
---|
1261 | 1208 | static void rk3399_set_to_rmii(struct rk_priv_data *bsp_priv) |
---|
.. | .. |
---|
1402 | 1349 | |
---|
1403 | 1350 | regmap_write(bsp_priv->grf, offset_con1, |
---|
1404 | 1351 | RK3568_GMAC_PHY_INTF_SEL_RGMII | |
---|
1405 | | - DELAY_ENABLE(RK3568, tx_delay, rx_delay)); |
---|
| 1352 | + RK3568_GMAC_RXCLK_DLY_ENABLE | |
---|
| 1353 | + RK3568_GMAC_TXCLK_DLY_ENABLE); |
---|
1406 | 1354 | |
---|
1407 | 1355 | regmap_write(bsp_priv->grf, offset_con0, |
---|
1408 | | - DELAY_VALUE(RK3568, tx_delay, rx_delay)); |
---|
| 1356 | + RK3568_GMAC_CLK_RX_DL_CFG(rx_delay) | |
---|
| 1357 | + RK3568_GMAC_CLK_TX_DL_CFG(tx_delay)); |
---|
1409 | 1358 | } |
---|
1410 | 1359 | |
---|
1411 | 1360 | static void rk3568_set_to_rmii(struct rk_priv_data *bsp_priv) |
---|
.. | .. |
---|
1451 | 1400 | __func__, rate, ret); |
---|
1452 | 1401 | } |
---|
1453 | 1402 | |
---|
1454 | | -static void rk3568_set_gmac_sgmii_speed(struct rk_priv_data *bsp_priv, int speed) |
---|
1455 | | -{ |
---|
1456 | | - struct device *dev = &bsp_priv->pdev->dev; |
---|
1457 | | - unsigned int ctrl; |
---|
1458 | | - |
---|
1459 | | - /* Only gmac1 set the speed for port1 */ |
---|
1460 | | - if (!bsp_priv->bus_id) |
---|
1461 | | - return; |
---|
1462 | | - |
---|
1463 | | - switch (speed) { |
---|
1464 | | - case 10: |
---|
1465 | | - ctrl = BMCR_SPEED10; |
---|
1466 | | - break; |
---|
1467 | | - case 100: |
---|
1468 | | - ctrl = BMCR_SPEED100; |
---|
1469 | | - break; |
---|
1470 | | - case 1000: |
---|
1471 | | - ctrl = BMCR_SPEED1000; |
---|
1472 | | - break; |
---|
1473 | | - default: |
---|
1474 | | - dev_err(dev, "unknown speed value for GMAC speed=%d", speed); |
---|
1475 | | - return; |
---|
1476 | | - } |
---|
1477 | | - |
---|
1478 | | - xpcs_write(bsp_priv, SR_MII_OFFSET(bsp_priv->bus_id) + MII_BMCR, |
---|
1479 | | - ctrl | BMCR_FULLDPLX); |
---|
1480 | | -} |
---|
1481 | | - |
---|
1482 | 1403 | static const struct rk_gmac_ops rk3568_ops = { |
---|
1483 | 1404 | .set_to_rgmii = rk3568_set_to_rgmii, |
---|
1484 | 1405 | .set_to_rmii = rk3568_set_to_rmii, |
---|
.. | .. |
---|
1486 | 1407 | .set_to_qsgmii = rk3568_set_to_qsgmii, |
---|
1487 | 1408 | .set_rgmii_speed = rk3568_set_gmac_speed, |
---|
1488 | 1409 | .set_rmii_speed = rk3568_set_gmac_speed, |
---|
1489 | | - .set_sgmii_speed = rk3568_set_gmac_sgmii_speed, |
---|
1490 | 1410 | }; |
---|
1491 | 1411 | |
---|
1492 | 1412 | #define RV1108_GRF_GMAC_CON0 0X0900 |
---|
.. | .. |
---|
1552 | 1472 | (GRF_CLR_BIT(4) | GRF_CLR_BIT(5) | GRF_BIT(6)) |
---|
1553 | 1473 | #define RV1126_GMAC_FLOW_CTRL GRF_BIT(7) |
---|
1554 | 1474 | #define RV1126_GMAC_FLOW_CTRL_CLR GRF_CLR_BIT(7) |
---|
1555 | | -#define RV1126_M0_GMAC_RXCLK_DLY_ENABLE GRF_BIT(1) |
---|
1556 | | -#define RV1126_M0_GMAC_RXCLK_DLY_DISABLE GRF_CLR_BIT(1) |
---|
1557 | | -#define RV1126_M0_GMAC_TXCLK_DLY_ENABLE GRF_BIT(0) |
---|
1558 | | -#define RV1126_M0_GMAC_TXCLK_DLY_DISABLE GRF_CLR_BIT(0) |
---|
1559 | | -#define RV1126_M1_GMAC_RXCLK_DLY_ENABLE GRF_BIT(3) |
---|
1560 | | -#define RV1126_M1_GMAC_RXCLK_DLY_DISABLE GRF_CLR_BIT(3) |
---|
1561 | | -#define RV1126_M1_GMAC_TXCLK_DLY_ENABLE GRF_BIT(2) |
---|
1562 | | -#define RV1126_M1_GMAC_TXCLK_DLY_DISABLE GRF_CLR_BIT(2) |
---|
| 1475 | +#define RV1126_GMAC_M0_RXCLK_DLY_ENABLE GRF_BIT(1) |
---|
| 1476 | +#define RV1126_GMAC_M0_RXCLK_DLY_DISABLE GRF_CLR_BIT(1) |
---|
| 1477 | +#define RV1126_GMAC_M0_TXCLK_DLY_ENABLE GRF_BIT(0) |
---|
| 1478 | +#define RV1126_GMAC_M0_TXCLK_DLY_DISABLE GRF_CLR_BIT(0) |
---|
| 1479 | +#define RV1126_GMAC_M1_RXCLK_DLY_ENABLE GRF_BIT(3) |
---|
| 1480 | +#define RV1126_GMAC_M1_RXCLK_DLY_DISABLE GRF_CLR_BIT(3) |
---|
| 1481 | +#define RV1126_GMAC_M1_TXCLK_DLY_ENABLE GRF_BIT(2) |
---|
| 1482 | +#define RV1126_GMAC_M1_TXCLK_DLY_DISABLE GRF_CLR_BIT(2) |
---|
1563 | 1483 | |
---|
1564 | | -/* RV1126_GRF_GMAC_CON1 && RV1126_GRF_GMAC_CON2 */ |
---|
1565 | | -#define RV1126_GMAC_CLK_RX_DL_CFG(val) HIWORD_UPDATE(val, 0x7F, 8) |
---|
1566 | | -#define RV1126_GMAC_CLK_TX_DL_CFG(val) HIWORD_UPDATE(val, 0x7F, 0) |
---|
| 1484 | +/* RV1126_GRF_GMAC_CON1 */ |
---|
| 1485 | +#define RV1126_GMAC_M0_CLK_RX_DL_CFG(val) HIWORD_UPDATE(val, 0x7F, 8) |
---|
| 1486 | +#define RV1126_GMAC_M0_CLK_TX_DL_CFG(val) HIWORD_UPDATE(val, 0x7F, 0) |
---|
| 1487 | +/* RV1126_GRF_GMAC_CON2 */ |
---|
| 1488 | +#define RV1126_GMAC_M1_CLK_RX_DL_CFG(val) HIWORD_UPDATE(val, 0x7F, 8) |
---|
| 1489 | +#define RV1126_GMAC_M1_CLK_TX_DL_CFG(val) HIWORD_UPDATE(val, 0x7F, 0) |
---|
1567 | 1490 | |
---|
1568 | 1491 | static void rv1126_set_to_rgmii(struct rk_priv_data *bsp_priv, |
---|
1569 | 1492 | int tx_delay, int rx_delay) |
---|
.. | .. |
---|
1577 | 1500 | |
---|
1578 | 1501 | regmap_write(bsp_priv->grf, RV1126_GRF_GMAC_CON0, |
---|
1579 | 1502 | RV1126_GMAC_PHY_INTF_SEL_RGMII | |
---|
1580 | | - DELAY_ENABLE(RV1126_M0, tx_delay, rx_delay) | |
---|
1581 | | - DELAY_ENABLE(RV1126_M1, tx_delay, rx_delay)); |
---|
| 1503 | + RV1126_GMAC_M0_RXCLK_DLY_ENABLE | |
---|
| 1504 | + RV1126_GMAC_M0_TXCLK_DLY_ENABLE | |
---|
| 1505 | + RV1126_GMAC_M1_RXCLK_DLY_ENABLE | |
---|
| 1506 | + RV1126_GMAC_M1_TXCLK_DLY_ENABLE); |
---|
1582 | 1507 | |
---|
1583 | 1508 | regmap_write(bsp_priv->grf, RV1126_GRF_GMAC_CON1, |
---|
1584 | | - DELAY_VALUE(RV1126, tx_delay, rx_delay)); |
---|
| 1509 | + RV1126_GMAC_M0_CLK_RX_DL_CFG(rx_delay) | |
---|
| 1510 | + RV1126_GMAC_M0_CLK_TX_DL_CFG(tx_delay)); |
---|
1585 | 1511 | |
---|
1586 | 1512 | regmap_write(bsp_priv->grf, RV1126_GRF_GMAC_CON2, |
---|
1587 | | - DELAY_VALUE(RV1126, tx_delay, rx_delay)); |
---|
| 1513 | + RV1126_GMAC_M1_CLK_RX_DL_CFG(rx_delay) | |
---|
| 1514 | + RV1126_GMAC_M1_CLK_TX_DL_CFG(tx_delay)); |
---|
1588 | 1515 | } |
---|
1589 | 1516 | |
---|
1590 | 1517 | static void rv1126_set_to_rmii(struct rk_priv_data *bsp_priv) |
---|
.. | .. |
---|
1657 | 1584 | .set_rgmii_speed = rv1126_set_rgmii_speed, |
---|
1658 | 1585 | .set_rmii_speed = rv1126_set_rmii_speed, |
---|
1659 | 1586 | }; |
---|
| 1587 | + |
---|
| 1588 | +#define RK_GRF_MACPHY_CON0 0xb00 |
---|
| 1589 | +#define RK_GRF_MACPHY_CON1 0xb04 |
---|
| 1590 | +#define RK_GRF_MACPHY_CON2 0xb08 |
---|
| 1591 | +#define RK_GRF_MACPHY_CON3 0xb0c |
---|
| 1592 | + |
---|
| 1593 | +#define RK_MACPHY_ENABLE GRF_BIT(0) |
---|
| 1594 | +#define RK_MACPHY_DISABLE GRF_CLR_BIT(0) |
---|
| 1595 | +#define RK_MACPHY_CFG_CLK_50M GRF_BIT(14) |
---|
| 1596 | +#define RK_GMAC2PHY_RMII_MODE (GRF_BIT(6) | GRF_CLR_BIT(7)) |
---|
| 1597 | +#define RK_GRF_CON2_MACPHY_ID HIWORD_UPDATE(0x1234, 0xffff, 0) |
---|
| 1598 | +#define RK_GRF_CON3_MACPHY_ID HIWORD_UPDATE(0x35, 0x3f, 0) |
---|
| 1599 | + |
---|
| 1600 | +static void rk_gmac_integrated_phy_powerup(struct rk_priv_data *priv) |
---|
| 1601 | +{ |
---|
| 1602 | + if (priv->ops->integrated_phy_powerup) |
---|
| 1603 | + priv->ops->integrated_phy_powerup(priv); |
---|
| 1604 | + |
---|
| 1605 | + regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_CFG_CLK_50M); |
---|
| 1606 | + regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_GMAC2PHY_RMII_MODE); |
---|
| 1607 | + |
---|
| 1608 | + regmap_write(priv->grf, RK_GRF_MACPHY_CON2, RK_GRF_CON2_MACPHY_ID); |
---|
| 1609 | + regmap_write(priv->grf, RK_GRF_MACPHY_CON3, RK_GRF_CON3_MACPHY_ID); |
---|
| 1610 | + |
---|
| 1611 | + if (priv->phy_reset) { |
---|
| 1612 | + /* PHY needs to be disabled before trying to reset it */ |
---|
| 1613 | + regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_DISABLE); |
---|
| 1614 | + if (priv->phy_reset) |
---|
| 1615 | + reset_control_assert(priv->phy_reset); |
---|
| 1616 | + usleep_range(10, 20); |
---|
| 1617 | + if (priv->phy_reset) |
---|
| 1618 | + reset_control_deassert(priv->phy_reset); |
---|
| 1619 | + usleep_range(10, 20); |
---|
| 1620 | + regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_ENABLE); |
---|
| 1621 | + msleep(30); |
---|
| 1622 | + } |
---|
| 1623 | +} |
---|
| 1624 | + |
---|
| 1625 | +static void rk_gmac_integrated_phy_powerdown(struct rk_priv_data *priv) |
---|
| 1626 | +{ |
---|
| 1627 | + regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_DISABLE); |
---|
| 1628 | + if (priv->phy_reset) |
---|
| 1629 | + reset_control_assert(priv->phy_reset); |
---|
| 1630 | +} |
---|
1660 | 1631 | |
---|
1661 | 1632 | static int rk_gmac_clk_init(struct plat_stmmacenet_data *plat) |
---|
1662 | 1633 | { |
---|
.. | .. |
---|
1777 | 1748 | if (!IS_ERR(bsp_priv->pclk_xpcs)) |
---|
1778 | 1749 | clk_prepare_enable(bsp_priv->pclk_xpcs); |
---|
1779 | 1750 | |
---|
1780 | | - if (bsp_priv->ops && bsp_priv->ops->set_clock_selection) |
---|
1781 | | - bsp_priv->ops->set_clock_selection(bsp_priv, bsp_priv->clock_input, |
---|
1782 | | - true); |
---|
1783 | | - |
---|
1784 | 1751 | /** |
---|
1785 | 1752 | * if (!IS_ERR(bsp_priv->clk_mac)) |
---|
1786 | 1753 | * clk_prepare_enable(bsp_priv->clk_mac); |
---|
1787 | 1754 | */ |
---|
1788 | | - usleep_range(100, 200); |
---|
| 1755 | + mdelay(5); |
---|
1789 | 1756 | bsp_priv->clk_enabled = true; |
---|
1790 | 1757 | } |
---|
1791 | 1758 | } else { |
---|
1792 | 1759 | if (bsp_priv->clk_enabled) { |
---|
1793 | | - if (bsp_priv->ops && bsp_priv->ops->set_clock_selection) |
---|
1794 | | - bsp_priv->ops->set_clock_selection(bsp_priv, bsp_priv->clock_input, |
---|
1795 | | - false); |
---|
1796 | | - |
---|
1797 | 1760 | if (phy_iface == PHY_INTERFACE_MODE_RMII) { |
---|
1798 | 1761 | clk_disable_unprepare(bsp_priv->mac_clk_rx); |
---|
1799 | 1762 | |
---|
.. | .. |
---|
1890 | 1853 | |
---|
1891 | 1854 | ret = of_property_read_u32(dev->of_node, "tx_delay", &value); |
---|
1892 | 1855 | if (ret) { |
---|
1893 | | - bsp_priv->tx_delay = -1; |
---|
| 1856 | + bsp_priv->tx_delay = 0x30; |
---|
1894 | 1857 | dev_err(dev, "Can not read property: tx_delay."); |
---|
1895 | 1858 | dev_err(dev, "set tx_delay to 0x%x\n", |
---|
1896 | 1859 | bsp_priv->tx_delay); |
---|
.. | .. |
---|
1901 | 1864 | |
---|
1902 | 1865 | ret = of_property_read_u32(dev->of_node, "rx_delay", &value); |
---|
1903 | 1866 | if (ret) { |
---|
1904 | | - bsp_priv->rx_delay = -1; |
---|
| 1867 | + bsp_priv->rx_delay = 0x10; |
---|
1905 | 1868 | dev_err(dev, "Can not read property: rx_delay."); |
---|
1906 | 1869 | dev_err(dev, "set rx_delay to 0x%x\n", |
---|
1907 | 1870 | bsp_priv->rx_delay); |
---|
.. | .. |
---|
1915 | 1878 | bsp_priv->xpcs = syscon_regmap_lookup_by_phandle(dev->of_node, |
---|
1916 | 1879 | "rockchip,xpcs"); |
---|
1917 | 1880 | if (!IS_ERR(bsp_priv->xpcs)) { |
---|
1918 | | - bsp_priv->comphy = devm_of_phy_get(&pdev->dev, dev->of_node, NULL); |
---|
1919 | | - if (IS_ERR(bsp_priv->comphy)) { |
---|
1920 | | - bsp_priv->comphy = NULL; |
---|
| 1881 | + struct phy *comphy; |
---|
| 1882 | + |
---|
| 1883 | + comphy = devm_of_phy_get(&pdev->dev, dev->of_node, NULL); |
---|
| 1884 | + if (IS_ERR(comphy)) |
---|
1921 | 1885 | dev_err(dev, "devm_of_phy_get error\n"); |
---|
1922 | | - } |
---|
| 1886 | + ret = phy_init(comphy); |
---|
| 1887 | + if (ret) |
---|
| 1888 | + dev_err(dev, "phy_init error\n"); |
---|
1923 | 1889 | } |
---|
1924 | 1890 | |
---|
1925 | 1891 | if (plat->phy_node) { |
---|
.. | .. |
---|
1961 | 1927 | case PHY_INTERFACE_MODE_RGMII_ID: |
---|
1962 | 1928 | dev_info(dev, "init for RGMII_ID\n"); |
---|
1963 | 1929 | if (bsp_priv->ops && bsp_priv->ops->set_to_rgmii) |
---|
1964 | | - bsp_priv->ops->set_to_rgmii(bsp_priv, -1, -1); |
---|
| 1930 | + bsp_priv->ops->set_to_rgmii(bsp_priv, 0, 0); |
---|
1965 | 1931 | break; |
---|
1966 | 1932 | case PHY_INTERFACE_MODE_RGMII_RXID: |
---|
1967 | 1933 | dev_info(dev, "init for RGMII_RXID\n"); |
---|
1968 | 1934 | if (bsp_priv->ops && bsp_priv->ops->set_to_rgmii) |
---|
1969 | | - bsp_priv->ops->set_to_rgmii(bsp_priv, bsp_priv->tx_delay, -1); |
---|
| 1935 | + bsp_priv->ops->set_to_rgmii(bsp_priv, bsp_priv->tx_delay, 0); |
---|
1970 | 1936 | break; |
---|
1971 | 1937 | case PHY_INTERFACE_MODE_RGMII_TXID: |
---|
1972 | 1938 | dev_info(dev, "init for RGMII_TXID\n"); |
---|
1973 | 1939 | if (bsp_priv->ops && bsp_priv->ops->set_to_rgmii) |
---|
1974 | | - bsp_priv->ops->set_to_rgmii(bsp_priv, -1, bsp_priv->rx_delay); |
---|
| 1940 | + bsp_priv->ops->set_to_rgmii(bsp_priv, 0, bsp_priv->rx_delay); |
---|
1975 | 1941 | break; |
---|
1976 | 1942 | case PHY_INTERFACE_MODE_RMII: |
---|
1977 | 1943 | dev_info(dev, "init for RMII\n"); |
---|
.. | .. |
---|
1980 | 1946 | break; |
---|
1981 | 1947 | case PHY_INTERFACE_MODE_SGMII: |
---|
1982 | 1948 | dev_info(dev, "init for SGMII\n"); |
---|
1983 | | - ret = phy_init(bsp_priv->comphy); |
---|
1984 | | - if (ret) { |
---|
1985 | | - dev_err(dev, "phy_init error: %d\n", ret); |
---|
1986 | | - return ret; |
---|
1987 | | - } |
---|
1988 | | - |
---|
1989 | 1949 | if (bsp_priv->ops && bsp_priv->ops->set_to_sgmii) |
---|
1990 | 1950 | bsp_priv->ops->set_to_sgmii(bsp_priv); |
---|
1991 | 1951 | break; |
---|
1992 | 1952 | case PHY_INTERFACE_MODE_QSGMII: |
---|
1993 | 1953 | dev_info(dev, "init for QSGMII\n"); |
---|
1994 | | - ret = phy_init(bsp_priv->comphy); |
---|
1995 | | - if (ret) { |
---|
1996 | | - dev_err(dev, "phy_init error: %d\n", ret); |
---|
1997 | | - return ret; |
---|
1998 | | - } |
---|
1999 | | - |
---|
2000 | 1954 | if (bsp_priv->ops && bsp_priv->ops->set_to_qsgmii) |
---|
2001 | 1955 | bsp_priv->ops->set_to_qsgmii(bsp_priv); |
---|
2002 | 1956 | break; |
---|
.. | .. |
---|
2013 | 1967 | pm_runtime_enable(dev); |
---|
2014 | 1968 | pm_runtime_get_sync(dev); |
---|
2015 | 1969 | |
---|
| 1970 | + if (bsp_priv->integrated_phy) |
---|
| 1971 | + rk_gmac_integrated_phy_powerup(bsp_priv); |
---|
| 1972 | + |
---|
2016 | 1973 | return 0; |
---|
2017 | 1974 | } |
---|
2018 | 1975 | |
---|
.. | .. |
---|
2020 | 1977 | { |
---|
2021 | 1978 | struct device *dev = &gmac->pdev->dev; |
---|
2022 | 1979 | |
---|
2023 | | - if (gmac->phy_iface == PHY_INTERFACE_MODE_SGMII || |
---|
2024 | | - gmac->phy_iface == PHY_INTERFACE_MODE_QSGMII) |
---|
2025 | | - phy_exit(gmac->comphy); |
---|
| 1980 | + if (gmac->integrated_phy) |
---|
| 1981 | + rk_gmac_integrated_phy_powerdown(gmac); |
---|
2026 | 1982 | |
---|
2027 | 1983 | pm_runtime_put_sync(dev); |
---|
2028 | 1984 | pm_runtime_disable(dev); |
---|
.. | .. |
---|
2049 | 2005 | bsp_priv->ops->set_rmii_speed(bsp_priv, speed); |
---|
2050 | 2006 | break; |
---|
2051 | 2007 | case PHY_INTERFACE_MODE_SGMII: |
---|
2052 | | - if (bsp_priv->ops && bsp_priv->ops->set_sgmii_speed) |
---|
2053 | | - bsp_priv->ops->set_sgmii_speed(bsp_priv, speed); |
---|
2054 | 2008 | case PHY_INTERFACE_MODE_QSGMII: |
---|
2055 | 2009 | break; |
---|
2056 | 2010 | default: |
---|
2057 | 2011 | dev_err(dev, "unsupported interface %d", bsp_priv->phy_iface); |
---|
2058 | 2012 | } |
---|
2059 | | -} |
---|
2060 | | - |
---|
2061 | | -static int rk_integrated_phy_power(void *priv, bool up) |
---|
2062 | | -{ |
---|
2063 | | - struct rk_priv_data *bsp_priv = priv; |
---|
2064 | | - |
---|
2065 | | - if (!bsp_priv->integrated_phy || !bsp_priv->ops || |
---|
2066 | | - !bsp_priv->ops->integrated_phy_power) |
---|
2067 | | - return 0; |
---|
2068 | | - |
---|
2069 | | - bsp_priv->ops->integrated_phy_power(bsp_priv, up); |
---|
2070 | | - |
---|
2071 | | - return 0; |
---|
2072 | 2013 | } |
---|
2073 | 2014 | |
---|
2074 | 2015 | void dwmac_rk_set_rgmii_delayline(struct stmmac_priv *priv, |
---|
.. | .. |
---|
2109 | 2050 | { |
---|
2110 | 2051 | } |
---|
2111 | 2052 | |
---|
| 2053 | +static unsigned char macaddr[6]; |
---|
| 2054 | +extern ssize_t at24_mac_read(unsigned char* addr); |
---|
2112 | 2055 | void rk_get_eth_addr(void *priv, unsigned char *addr) |
---|
2113 | 2056 | { |
---|
2114 | 2057 | struct rk_priv_data *bsp_priv = priv; |
---|
2115 | 2058 | struct device *dev = &bsp_priv->pdev->dev; |
---|
2116 | | - unsigned char ethaddr[ETH_ALEN * MAX_ETH] = {0}; |
---|
2117 | | - int ret, id = bsp_priv->bus_id; |
---|
| 2059 | + int i; |
---|
| 2060 | + //unsigned char ethaddr[ETH_ALEN * MAX_ETH] = {0}; |
---|
| 2061 | + //int ret, id = bsp_priv->bus_id; |
---|
2118 | 2062 | |
---|
| 2063 | + //ben |
---|
| 2064 | + printk("nk-debug:enter rk_get_eth_addr.. \n"); |
---|
| 2065 | + |
---|
| 2066 | + #if 0 |
---|
2119 | 2067 | rk_devinfo_get_eth_mac(addr); |
---|
2120 | 2068 | if (is_valid_ether_addr(addr)) |
---|
2121 | 2069 | goto out; |
---|
2122 | | - |
---|
| 2070 | + |
---|
2123 | 2071 | if (id < 0 || id >= MAX_ETH) { |
---|
2124 | 2072 | dev_err(dev, "%s: Invalid ethernet bus id %d\n", __func__, id); |
---|
2125 | 2073 | return; |
---|
.. | .. |
---|
2146 | 2094 | } else { |
---|
2147 | 2095 | memcpy(addr, ðaddr[id * ETH_ALEN], ETH_ALEN); |
---|
2148 | 2096 | } |
---|
| 2097 | + #endif |
---|
| 2098 | + |
---|
| 2099 | + #if 0 |
---|
| 2100 | + macaddr[0] = 0xee; |
---|
| 2101 | + macaddr[1] = 0x31; |
---|
| 2102 | + macaddr[2] = 0x32; |
---|
| 2103 | + macaddr[3] = 0x33; |
---|
| 2104 | + macaddr[4] = 0x34; |
---|
| 2105 | + macaddr[5] = 0x35; |
---|
| 2106 | + |
---|
| 2107 | + memcpy(addr, macaddr, 6); |
---|
| 2108 | + #endif |
---|
| 2109 | + |
---|
| 2110 | + #if 1 |
---|
| 2111 | + if (at24_mac_read(macaddr) > 0) { |
---|
| 2112 | + printk("ben %s: at24_mac_read Success!! \n", __func__); |
---|
| 2113 | + memcpy(addr, macaddr, 6); |
---|
2149 | 2114 | |
---|
| 2115 | + printk("Read the Ethernet MAC address from :"); |
---|
| 2116 | + for (i = 0; i < 5; i++) |
---|
| 2117 | + printk("%2.2x:", addr[i]); |
---|
| 2118 | + |
---|
| 2119 | + printk("%2.2x\n", addr[i]); |
---|
| 2120 | + } else { |
---|
| 2121 | + printk("ben %s: at24_mac_read Failed!! \n", __func__); |
---|
| 2122 | + goto out; |
---|
| 2123 | + } |
---|
| 2124 | + #endif |
---|
| 2125 | + |
---|
2150 | 2126 | out: |
---|
2151 | 2127 | dev_err(dev, "%s: mac address: %pM\n", __func__, addr); |
---|
2152 | 2128 | } |
---|
.. | .. |
---|
2158 | 2134 | const struct rk_gmac_ops *data; |
---|
2159 | 2135 | int ret; |
---|
2160 | 2136 | |
---|
| 2137 | + printk("nk-debug:enter rk_gmac_probe 1.. \n"); |
---|
2161 | 2138 | data = of_device_get_match_data(&pdev->dev); |
---|
2162 | 2139 | if (!data) { |
---|
2163 | 2140 | dev_err(&pdev->dev, "no of match data provided\n"); |
---|
.. | .. |
---|
2177 | 2154 | |
---|
2178 | 2155 | plat_dat->fix_mac_speed = rk_fix_speed; |
---|
2179 | 2156 | plat_dat->get_eth_addr = rk_get_eth_addr; |
---|
2180 | | - plat_dat->integrated_phy_power = rk_integrated_phy_power; |
---|
2181 | 2157 | |
---|
2182 | 2158 | plat_dat->bsp_priv = rk_gmac_setup(pdev, plat_dat, data); |
---|
2183 | 2159 | if (IS_ERR(plat_dat->bsp_priv)) { |
---|
.. | .. |
---|
2185 | 2161 | goto err_remove_config_dt; |
---|
2186 | 2162 | } |
---|
2187 | 2163 | |
---|
| 2164 | + printk("nk-debug:enter rk_gmac_probe 2.. \n"); |
---|
2188 | 2165 | ret = rk_gmac_clk_init(plat_dat); |
---|
2189 | 2166 | if (ret) |
---|
2190 | 2167 | goto err_remove_config_dt; |
---|
.. | .. |
---|
2254 | 2231 | static SIMPLE_DEV_PM_OPS(rk_gmac_pm_ops, rk_gmac_suspend, rk_gmac_resume); |
---|
2255 | 2232 | |
---|
2256 | 2233 | static const struct of_device_id rk_gmac_dwmac_match[] = { |
---|
2257 | | -#ifdef CONFIG_CPU_PX30 |
---|
2258 | 2234 | { .compatible = "rockchip,px30-gmac", .data = &px30_ops }, |
---|
2259 | | -#endif |
---|
2260 | | -#ifdef CONFIG_CPU_RK1808 |
---|
2261 | 2235 | { .compatible = "rockchip,rk1808-gmac", .data = &rk1808_ops }, |
---|
2262 | | -#endif |
---|
2263 | | -#ifdef CONFIG_CPU_RK312X |
---|
2264 | 2236 | { .compatible = "rockchip,rk3128-gmac", .data = &rk3128_ops }, |
---|
2265 | | -#endif |
---|
2266 | | -#ifdef CONFIG_CPU_RK322X |
---|
2267 | 2237 | { .compatible = "rockchip,rk3228-gmac", .data = &rk3228_ops }, |
---|
2268 | | -#endif |
---|
2269 | | -#ifdef CONFIG_CPU_RK3288 |
---|
2270 | 2238 | { .compatible = "rockchip,rk3288-gmac", .data = &rk3288_ops }, |
---|
2271 | | -#endif |
---|
2272 | | -#ifdef CONFIG_CPU_RK3308 |
---|
2273 | 2239 | { .compatible = "rockchip,rk3308-mac", .data = &rk3308_ops }, |
---|
2274 | | -#endif |
---|
2275 | | -#ifdef CONFIG_CPU_RK3328 |
---|
2276 | 2240 | { .compatible = "rockchip,rk3328-gmac", .data = &rk3328_ops }, |
---|
2277 | | -#endif |
---|
2278 | | -#ifdef CONFIG_CPU_RK3366 |
---|
2279 | 2241 | { .compatible = "rockchip,rk3366-gmac", .data = &rk3366_ops }, |
---|
2280 | | -#endif |
---|
2281 | | -#ifdef CONFIG_CPU_RK3368 |
---|
2282 | 2242 | { .compatible = "rockchip,rk3368-gmac", .data = &rk3368_ops }, |
---|
2283 | | -#endif |
---|
2284 | | -#ifdef CONFIG_CPU_RK3399 |
---|
2285 | 2243 | { .compatible = "rockchip,rk3399-gmac", .data = &rk3399_ops }, |
---|
2286 | | -#endif |
---|
2287 | | -#ifdef CONFIG_CPU_RK3568 |
---|
2288 | 2244 | { .compatible = "rockchip,rk3568-gmac", .data = &rk3568_ops }, |
---|
2289 | | -#endif |
---|
2290 | | -#ifdef CONFIG_CPU_RV110X |
---|
2291 | 2245 | { .compatible = "rockchip,rv1108-gmac", .data = &rv1108_ops }, |
---|
2292 | | -#endif |
---|
2293 | | -#ifdef CONFIG_CPU_RV1126 |
---|
2294 | 2246 | { .compatible = "rockchip,rv1126-gmac", .data = &rv1126_ops }, |
---|
2295 | | -#endif |
---|
2296 | 2247 | { } |
---|
2297 | 2248 | }; |
---|
2298 | 2249 | MODULE_DEVICE_TABLE(of, rk_gmac_dwmac_match); |
---|
.. | .. |
---|
2306 | 2257 | .of_match_table = rk_gmac_dwmac_match, |
---|
2307 | 2258 | }, |
---|
2308 | 2259 | }; |
---|
2309 | | -module_platform_driver(rk_gmac_dwmac_driver); |
---|
| 2260 | +//module_platform_driver(rk_gmac_dwmac_driver); |
---|
| 2261 | + module_platform_driver1(rk_gmac_dwmac_driver); |
---|
2310 | 2262 | |
---|
2311 | 2263 | MODULE_AUTHOR("Chen-Zhi (Roger Chen) <roger.chen@rock-chips.com>"); |
---|
2312 | 2264 | MODULE_DESCRIPTION("Rockchip RK3288 DWMAC specific glue layer"); |
---|