net: phy: supplement support for Micrel's KSZ9031
Add function ksz9031_phy_extended_write and ksz9031_phy_extended_read Signed-off-by: Leo Sartre <lsartre@adeneo-embedded.com>
This commit is contained in:
parent
d256be29f8
commit
42a7cb50a9
@ -148,9 +148,43 @@ static struct phy_driver ksz9021_driver = {
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
/**
|
||||
* KSZ9031
|
||||
*/
|
||||
/* PHY Registers */
|
||||
#define MII_KSZ9031_MMD_ACCES_CTRL 0x0d
|
||||
#define MII_KSZ9031_MMD_REG_DATA 0x0e
|
||||
|
||||
/* Accessors to extended registers*/
|
||||
int ksz9031_phy_extended_write(struct phy_device *phydev,
|
||||
int devaddr, int regnum, u16 mode, u16 val)
|
||||
{
|
||||
/*select register addr for mmd*/
|
||||
phy_write(phydev, MDIO_DEVAD_NONE,
|
||||
MII_KSZ9031_MMD_ACCES_CTRL, devaddr);
|
||||
/*select register for mmd*/
|
||||
phy_write(phydev, MDIO_DEVAD_NONE,
|
||||
MII_KSZ9031_MMD_REG_DATA, regnum);
|
||||
/*setup mode*/
|
||||
phy_write(phydev, MDIO_DEVAD_NONE,
|
||||
MII_KSZ9031_MMD_ACCES_CTRL, (mode | devaddr));
|
||||
/*write the value*/
|
||||
return phy_write(phydev, MDIO_DEVAD_NONE,
|
||||
MII_KSZ9031_MMD_REG_DATA, val);
|
||||
}
|
||||
|
||||
int ksz9031_phy_extended_read(struct phy_device *phydev, int devaddr,
|
||||
int regnum, u16 mode)
|
||||
{
|
||||
phy_write(phydev, MDIO_DEVAD_NONE,
|
||||
MII_KSZ9031_MMD_ACCES_CTRL, devaddr);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE,
|
||||
MII_KSZ9031_MMD_REG_DATA, regnum);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE,
|
||||
MII_KSZ9031_MMD_ACCES_CTRL, (devaddr | mode));
|
||||
return phy_read(phydev, MDIO_DEVAD_NONE, MII_KSZ9031_MMD_REG_DATA);
|
||||
}
|
||||
|
||||
static struct phy_driver ksz9031_driver = {
|
||||
.name = "Micrel ksz9031",
|
||||
.uid = 0x221620,
|
||||
|
@ -8,9 +8,20 @@
|
||||
#define MII_KSZ9021_EXT_RGMII_RX_DATA_SKEW 0x105
|
||||
#define MII_KSZ9021_EXT_RGMII_TX_DATA_SKEW 0x106
|
||||
#define MII_KSZ9021_EXT_ANALOG_TEST 0x107
|
||||
/* Register operations */
|
||||
#define MII_KSZ9031_MOD_REG 0x0000
|
||||
/* Data operations */
|
||||
#define MII_KSZ9031_MOD_DATA_NO_POST_INC 0x4000
|
||||
#define MII_KSZ9031_MOD_DATA_POST_INC_RW 0x8000
|
||||
#define MII_KSZ9031_MOD_DATA_POST_INC_W 0xC000
|
||||
|
||||
struct phy_device;
|
||||
int ksz9021_phy_extended_write(struct phy_device *phydev, int regnum, u16 val);
|
||||
int ksz9021_phy_extended_read(struct phy_device *phydev, int regnum);
|
||||
|
||||
int ksz9031_phy_extended_write(struct phy_device *phydev, int devaddr,
|
||||
int regnum, u16 mode, u16 val);
|
||||
int ksz9031_phy_extended_read(struct phy_device *phydev, int devaddr,
|
||||
int regnum, u16 mode);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user