Commit 96d0b9e100cbe724d70e0aba18ad566542cc3e2e
Committed by
Joe Hershberger
1 parent
a8f9cd1893
Exists in
master
and in
53 other branches
phylib: add natsemi dp83630 phy
add natsemi dp83630 phy, used on the upcoming siemens boards. Signed-off-by: Heiko Schocher <hs@denx.de> Cc: Andy Fleming <afleming@freescale.com> Cc: Joe Hershberger <joe.hershberger@gmail.com>
Showing 1 changed file with 37 additions and 0 deletions Side-by-side Diff
drivers/net/phy/natsemi.c
... | ... | @@ -22,6 +22,42 @@ |
22 | 22 | */ |
23 | 23 | #include <phy.h> |
24 | 24 | |
25 | +/* NatSemi DP83630 */ | |
26 | + | |
27 | +#define DP83630_PHY_PAGESEL_REG 0x13 | |
28 | +#define DP83630_PHY_PTP_COC_REG 0x14 | |
29 | +#define DP83630_PHY_PTP_CLKOUT_EN (1<<15) | |
30 | +#define DP83630_PHY_RBR_REG 0x17 | |
31 | + | |
32 | +static int dp83630_config(struct phy_device *phydev) | |
33 | +{ | |
34 | + int ptp_coc_reg; | |
35 | + | |
36 | + phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET); | |
37 | + phy_write(phydev, MDIO_DEVAD_NONE, DP83630_PHY_PAGESEL_REG, 0x6); | |
38 | + ptp_coc_reg = phy_read(phydev, MDIO_DEVAD_NONE, | |
39 | + DP83630_PHY_PTP_COC_REG); | |
40 | + ptp_coc_reg &= ~DP83630_PHY_PTP_CLKOUT_EN; | |
41 | + phy_write(phydev, MDIO_DEVAD_NONE, DP83630_PHY_PTP_COC_REG, | |
42 | + ptp_coc_reg); | |
43 | + phy_write(phydev, MDIO_DEVAD_NONE, DP83630_PHY_PAGESEL_REG, 0); | |
44 | + | |
45 | + genphy_config_aneg(phydev); | |
46 | + | |
47 | + return 0; | |
48 | +} | |
49 | + | |
50 | +static struct phy_driver DP83630_driver = { | |
51 | + .name = "NatSemi DP83630", | |
52 | + .uid = 0x20005ce1, | |
53 | + .mask = 0xfffffff0, | |
54 | + .features = PHY_BASIC_FEATURES, | |
55 | + .config = &dp83630_config, | |
56 | + .startup = &genphy_startup, | |
57 | + .shutdown = &genphy_shutdown, | |
58 | +}; | |
59 | + | |
60 | + | |
25 | 61 | /* DP83865 Link and Auto-Neg Status Register */ |
26 | 62 | #define MIIM_DP83865_LANR 0x11 |
27 | 63 | #define MIIM_DP83865_SPD_MASK 0x0018 |
... | ... | @@ -90,6 +126,7 @@ |
90 | 126 | |
91 | 127 | int phy_natsemi_init(void) |
92 | 128 | { |
129 | + phy_register(&DP83630_driver); | |
93 | 130 | phy_register(&DP83865_driver); |
94 | 131 | |
95 | 132 | return 0; |