mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-29 08:00:26 +09:00
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
|
#endif
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* KSZ9031
|
* 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 = {
|
static struct phy_driver ksz9031_driver = {
|
||||||
.name = "Micrel ksz9031",
|
.name = "Micrel ksz9031",
|
||||||
.uid = 0x221620,
|
.uid = 0x221620,
|
||||||
|
@ -8,9 +8,20 @@
|
|||||||
#define MII_KSZ9021_EXT_RGMII_RX_DATA_SKEW 0x105
|
#define MII_KSZ9021_EXT_RGMII_RX_DATA_SKEW 0x105
|
||||||
#define MII_KSZ9021_EXT_RGMII_TX_DATA_SKEW 0x106
|
#define MII_KSZ9021_EXT_RGMII_TX_DATA_SKEW 0x106
|
||||||
#define MII_KSZ9021_EXT_ANALOG_TEST 0x107
|
#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;
|
struct phy_device;
|
||||||
int ksz9021_phy_extended_write(struct phy_device *phydev, int regnum, u16 val);
|
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 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
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user