mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 16:10:58 +00:00
NET: phy: add 88E1310 PHY initialization
This adds PHY initialization for Marvell Alaska 88E1310 PHY. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
This commit is contained in:
parent
98f646764d
commit
aeceec0d0e
1 changed files with 48 additions and 0 deletions
|
@ -89,6 +89,12 @@
|
|||
|
||||
#define MIIM_88E1149_PHY_PAGE 29
|
||||
|
||||
/* 88E1310 PHY defines */
|
||||
#define MIIM_88E1310_PHY_LED_CTRL 16
|
||||
#define MIIM_88E1310_PHY_IRQ_EN 18
|
||||
#define MIIM_88E1310_PHY_RGMII_CTRL 21
|
||||
#define MIIM_88E1310_PHY_PAGE 22
|
||||
|
||||
/* Marvell 88E1011S */
|
||||
static int m88e1011s_config(struct phy_device *phydev)
|
||||
{
|
||||
|
@ -394,6 +400,37 @@ static int m88e1149_config(struct phy_device *phydev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Marvell 88E1310 */
|
||||
static int m88e1310_config(struct phy_device *phydev)
|
||||
{
|
||||
u16 reg;
|
||||
|
||||
/* LED link and activity */
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1310_PHY_PAGE, 0x0003);
|
||||
reg = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_88E1310_PHY_LED_CTRL);
|
||||
reg = (reg & ~0xf) | 0x1;
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1310_PHY_LED_CTRL, reg);
|
||||
|
||||
/* Set LED2/INT to INT mode, low active */
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1310_PHY_PAGE, 0x0003);
|
||||
reg = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_88E1310_PHY_IRQ_EN);
|
||||
reg = (reg & 0x77ff) | 0x0880;
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1310_PHY_IRQ_EN, reg);
|
||||
|
||||
/* Set RGMII delay */
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1310_PHY_PAGE, 0x0002);
|
||||
reg = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_88E1310_PHY_RGMII_CTRL);
|
||||
reg |= 0x0030;
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1310_PHY_RGMII_CTRL, reg);
|
||||
|
||||
/* Ensure to return to page 0 */
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1310_PHY_PAGE, 0x0000);
|
||||
|
||||
genphy_config_aneg(phydev);
|
||||
phy_reset(phydev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct phy_driver M88E1011S_driver = {
|
||||
.name = "Marvell 88E1011S",
|
||||
|
@ -475,8 +512,19 @@ static struct phy_driver M88E1518_driver = {
|
|||
.shutdown = &genphy_shutdown,
|
||||
};
|
||||
|
||||
static struct phy_driver M88E1310_driver = {
|
||||
.name = "Marvell 88E1310",
|
||||
.uid = 0x01410e90,
|
||||
.mask = 0xffffff0,
|
||||
.features = PHY_GBIT_FEATURES,
|
||||
.config = &m88e1310_config,
|
||||
.startup = &m88e1011s_startup,
|
||||
.shutdown = &genphy_shutdown,
|
||||
};
|
||||
|
||||
int phy_marvell_init(void)
|
||||
{
|
||||
phy_register(&M88E1310_driver);
|
||||
phy_register(&M88E1149S_driver);
|
||||
phy_register(&M88E1145_driver);
|
||||
phy_register(&M88E1121R_driver);
|
||||
|
|
Loading…
Reference in a new issue