diff options
| author | Heiko Schocher <hs@denx.de> | 2013-06-04 10:58:09 +0200 | 
|---|---|---|
| committer | Joe Hershberger <joe.hershberger@ni.com> | 2013-06-24 19:11:17 -0500 | 
| commit | 96d0b9e100cbe724d70e0aba18ad566542cc3e2e (patch) | |
| tree | 0e145b3bd134955de001161f079815f76a9266fc /drivers/net/phy/natsemi.c | |
| parent | a8f9cd1893bef05b92f63242228607b45821c4a7 (diff) | |
| download | olio-uboot-2014.01-96d0b9e100cbe724d70e0aba18ad566542cc3e2e.tar.xz olio-uboot-2014.01-96d0b9e100cbe724d70e0aba18ad566542cc3e2e.zip | |
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>
Diffstat (limited to 'drivers/net/phy/natsemi.c')
| -rw-r--r-- | drivers/net/phy/natsemi.c | 37 | 
1 files changed, 37 insertions, 0 deletions
| diff --git a/drivers/net/phy/natsemi.c b/drivers/net/phy/natsemi.c index ea60ac1b0..6dc7ed505 100644 --- a/drivers/net/phy/natsemi.c +++ b/drivers/net/phy/natsemi.c @@ -22,6 +22,42 @@   */  #include <phy.h> +/* NatSemi DP83630 */ + +#define DP83630_PHY_PAGESEL_REG		0x13 +#define DP83630_PHY_PTP_COC_REG		0x14 +#define DP83630_PHY_PTP_CLKOUT_EN	(1<<15) +#define DP83630_PHY_RBR_REG		0x17 + +static int dp83630_config(struct phy_device *phydev) +{ +	int ptp_coc_reg; + +	phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET); +	phy_write(phydev, MDIO_DEVAD_NONE, DP83630_PHY_PAGESEL_REG, 0x6); +	ptp_coc_reg = phy_read(phydev, MDIO_DEVAD_NONE, +			       DP83630_PHY_PTP_COC_REG); +	ptp_coc_reg &= ~DP83630_PHY_PTP_CLKOUT_EN; +	phy_write(phydev, MDIO_DEVAD_NONE, DP83630_PHY_PTP_COC_REG, +		  ptp_coc_reg); +	phy_write(phydev, MDIO_DEVAD_NONE, DP83630_PHY_PAGESEL_REG, 0); + +	genphy_config_aneg(phydev); + +	return 0; +} + +static struct phy_driver DP83630_driver = { +	.name = "NatSemi DP83630", +	.uid = 0x20005ce1, +	.mask = 0xfffffff0, +	.features = PHY_BASIC_FEATURES, +	.config = &dp83630_config, +	.startup = &genphy_startup, +	.shutdown = &genphy_shutdown, +}; + +  /* DP83865 Link and Auto-Neg Status Register */  #define MIIM_DP83865_LANR      0x11  #define MIIM_DP83865_SPD_MASK  0x0018 @@ -90,6 +126,7 @@ static struct phy_driver DP83865_driver = {  int phy_natsemi_init(void)  { +	phy_register(&DP83630_driver);  	phy_register(&DP83865_driver);  	return 0; |