diff options
author | Stefan Roese <sr@denx.de> | 2007-12-05 01:14:26 +0100 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-12-07 21:09:05 +0100 |
commit | 8df4538e21f7313a29fa6c5af78c08a135d44738 (patch) | |
tree | fd0df48f20071c345027bc7ea7d28eb84617df8d /drivers/net | |
parent | ibm_newemac: Add BCM5248 and Marvell 88E1111 PHY support (diff) | |
download | linux-8df4538e21f7313a29fa6c5af78c08a135d44738.tar.xz linux-8df4538e21f7313a29fa6c5af78c08a135d44738.zip |
ibm_newemac: Add ET1011c PHY support
This adds support for the Agere ET1011c PHY as found on the AMCC Taishan
board.
Signed-off-by: Stefan Roese <sr@denx.de>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ibm_newemac/phy.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/drivers/net/ibm_newemac/phy.c b/drivers/net/ibm_newemac/phy.c index a5e89c55abd5..9308fad76d57 100644 --- a/drivers/net/ibm_newemac/phy.c +++ b/drivers/net/ibm_newemac/phy.c @@ -327,6 +327,42 @@ static int m88e1111_init(struct mii_phy *phy) return 0; } +static int et1011c_init(struct mii_phy *phy) +{ + u16 reg_short; + + reg_short = (u16)(phy_read(phy, 0x16)); + reg_short &= ~(0x7); + reg_short |= 0x6; /* RGMII Trace Delay*/ + phy_write(phy, 0x16, reg_short); + + reg_short = (u16)(phy_read(phy, 0x17)); + reg_short &= ~(0x40); + phy_write(phy, 0x17, reg_short); + + phy_write(phy, 0x1c, 0x74f0); + return 0; +} + +static struct mii_phy_ops et1011c_phy_ops = { + .init = et1011c_init, + .setup_aneg = genmii_setup_aneg, + .setup_forced = genmii_setup_forced, + .poll_link = genmii_poll_link, + .read_link = genmii_read_link +}; + +static struct mii_phy_def et1011c_phy_def = { + .phy_id = 0x0282f000, + .phy_id_mask = 0x0fffff00, + .name = "ET1011C Gigabit Ethernet", + .ops = &et1011c_phy_ops +}; + + + + + static struct mii_phy_ops m88e1111_phy_ops = { .init = m88e1111_init, .setup_aneg = genmii_setup_aneg, @@ -344,6 +380,7 @@ static struct mii_phy_def m88e1111_phy_def = { }; static struct mii_phy_def *mii_phy_table[] = { + &et1011c_phy_def, &cis8201_phy_def, &bcm5248_phy_def, &m88e1111_phy_def, |