net: phy: Add support for Microsemi VSC 8530/40 Fast Ethernet PHY
Signed-off-by: Raju Lakkaraju <Raju.Lakkaraju@microsemi.com> Signed-off-by: Allan W. Nielsen <allan.nielsen@microsemi.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
32ab0a38f0
Коммит
af1fee9821
|
@ -290,7 +290,7 @@ config MICROCHIP_PHY
|
|||
config MICROSEMI_PHY
|
||||
tristate "Microsemi PHYs"
|
||||
---help---
|
||||
Currently supports the VSC8531 and VSC8541 PHYs
|
||||
Currently supports VSC8530, VSC8531, VSC8540 and VSC8541 PHYs
|
||||
|
||||
config NATIONAL_PHY
|
||||
tristate "National Semiconductor PHYs"
|
||||
|
|
|
@ -65,7 +65,9 @@ enum rgmii_rx_clock_delay {
|
|||
#define SECURE_ON_PASSWD_LEN_4 0x4000
|
||||
|
||||
/* Microsemi PHY ID's */
|
||||
#define PHY_ID_VSC8530 0x00070560
|
||||
#define PHY_ID_VSC8531 0x00070570
|
||||
#define PHY_ID_VSC8540 0x00070760
|
||||
#define PHY_ID_VSC8541 0x00070770
|
||||
|
||||
#define MSCC_VDDMAC_1500 1500
|
||||
|
@ -398,6 +400,25 @@ static int vsc85xx_probe(struct phy_device *phydev)
|
|||
|
||||
/* Microsemi VSC85xx PHYs */
|
||||
static struct phy_driver vsc85xx_driver[] = {
|
||||
{
|
||||
.phy_id = PHY_ID_VSC8530,
|
||||
.name = "Microsemi FE VSC8530",
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
.features = PHY_BASIC_FEATURES,
|
||||
.flags = PHY_HAS_INTERRUPT,
|
||||
.soft_reset = &genphy_soft_reset,
|
||||
.config_init = &vsc85xx_config_init,
|
||||
.config_aneg = &genphy_config_aneg,
|
||||
.aneg_done = &genphy_aneg_done,
|
||||
.read_status = &genphy_read_status,
|
||||
.ack_interrupt = &vsc85xx_ack_interrupt,
|
||||
.config_intr = &vsc85xx_config_intr,
|
||||
.suspend = &genphy_suspend,
|
||||
.resume = &genphy_resume,
|
||||
.probe = &vsc85xx_probe,
|
||||
.set_wol = &vsc85xx_wol_set,
|
||||
.get_wol = &vsc85xx_wol_get,
|
||||
},
|
||||
{
|
||||
.phy_id = PHY_ID_VSC8531,
|
||||
.name = "Microsemi VSC8531",
|
||||
|
@ -417,6 +438,25 @@ static struct phy_driver vsc85xx_driver[] = {
|
|||
.set_wol = &vsc85xx_wol_set,
|
||||
.get_wol = &vsc85xx_wol_get,
|
||||
},
|
||||
{
|
||||
.phy_id = PHY_ID_VSC8540,
|
||||
.name = "Microsemi FE VSC8540 SyncE",
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
.features = PHY_BASIC_FEATURES,
|
||||
.flags = PHY_HAS_INTERRUPT,
|
||||
.soft_reset = &genphy_soft_reset,
|
||||
.config_init = &vsc85xx_config_init,
|
||||
.config_aneg = &genphy_config_aneg,
|
||||
.aneg_done = &genphy_aneg_done,
|
||||
.read_status = &genphy_read_status,
|
||||
.ack_interrupt = &vsc85xx_ack_interrupt,
|
||||
.config_intr = &vsc85xx_config_intr,
|
||||
.suspend = &genphy_suspend,
|
||||
.resume = &genphy_resume,
|
||||
.probe = &vsc85xx_probe,
|
||||
.set_wol = &vsc85xx_wol_set,
|
||||
.get_wol = &vsc85xx_wol_get,
|
||||
},
|
||||
{
|
||||
.phy_id = PHY_ID_VSC8541,
|
||||
.name = "Microsemi VSC8541 SyncE",
|
||||
|
@ -442,7 +482,9 @@ static struct phy_driver vsc85xx_driver[] = {
|
|||
module_phy_driver(vsc85xx_driver);
|
||||
|
||||
static struct mdio_device_id __maybe_unused vsc85xx_tbl[] = {
|
||||
{ PHY_ID_VSC8530, 0xfffffff0, },
|
||||
{ PHY_ID_VSC8531, 0xfffffff0, },
|
||||
{ PHY_ID_VSC8540, 0xfffffff0, },
|
||||
{ PHY_ID_VSC8541, 0xfffffff0, },
|
||||
{ }
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче