net: phy: add support for TI DP83561-SP phy
Add support for the TI DP83561-SP Gigabit ethernet phy device. The dp83561-sp is a radiation hardened space grade gigabit ethernet PHY. It has been tested for single event latch upto 121 MeV, the critical reliability parameter for space designs. It interfaces directly to twisted pair media through an external transformer. And the device also interfaces directly to the MAC layer through Reduced GMII (RGMII) and MII. DP83867, DP83869 and DP83561-SP, all these parts support 1000Base-T/ 100Base-TX/ and 10Base-Te standards and have similar register map for the core functionality. The data sheet for this part is at https://www.ti.com/product/DP83561-SP Signed-off-by: Hari Nagalla <hnagalla@ti.com> Signed-off-by: Geet Modi <geet.modi@ti.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://lore.kernel.org/r/20211118102532.9835-1-hnagalla@ti.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
d9f31aeaa1
commit
1388d4ad9d
|
@ -16,6 +16,7 @@
|
|||
#include <dt-bindings/net/ti-dp83869.h>
|
||||
|
||||
#define DP83869_PHY_ID 0x2000a0f1
|
||||
#define DP83561_PHY_ID 0x2000a1a4
|
||||
#define DP83869_DEVADDR 0x1f
|
||||
|
||||
#define MII_DP83869_PHYCTRL 0x10
|
||||
|
@ -878,34 +879,35 @@ static int dp83869_phy_reset(struct phy_device *phydev)
|
|||
return dp83869_config_init(phydev);
|
||||
}
|
||||
|
||||
|
||||
#define DP83869_PHY_DRIVER(_id, _name) \
|
||||
{ \
|
||||
PHY_ID_MATCH_MODEL(_id), \
|
||||
.name = (_name), \
|
||||
.probe = dp83869_probe, \
|
||||
.config_init = dp83869_config_init, \
|
||||
.soft_reset = dp83869_phy_reset, \
|
||||
.config_intr = dp83869_config_intr, \
|
||||
.handle_interrupt = dp83869_handle_interrupt, \
|
||||
.read_status = dp83869_read_status, \
|
||||
.get_tunable = dp83869_get_tunable, \
|
||||
.set_tunable = dp83869_set_tunable, \
|
||||
.get_wol = dp83869_get_wol, \
|
||||
.set_wol = dp83869_set_wol, \
|
||||
.suspend = genphy_suspend, \
|
||||
.resume = genphy_resume, \
|
||||
}
|
||||
|
||||
static struct phy_driver dp83869_driver[] = {
|
||||
{
|
||||
PHY_ID_MATCH_MODEL(DP83869_PHY_ID),
|
||||
.name = "TI DP83869",
|
||||
DP83869_PHY_DRIVER(DP83869_PHY_ID, "TI DP83869"),
|
||||
DP83869_PHY_DRIVER(DP83561_PHY_ID, "TI DP83561-SP"),
|
||||
|
||||
.probe = dp83869_probe,
|
||||
.config_init = dp83869_config_init,
|
||||
.soft_reset = dp83869_phy_reset,
|
||||
|
||||
/* IRQ related */
|
||||
.config_intr = dp83869_config_intr,
|
||||
.handle_interrupt = dp83869_handle_interrupt,
|
||||
.read_status = dp83869_read_status,
|
||||
|
||||
.get_tunable = dp83869_get_tunable,
|
||||
.set_tunable = dp83869_set_tunable,
|
||||
|
||||
.get_wol = dp83869_get_wol,
|
||||
.set_wol = dp83869_set_wol,
|
||||
|
||||
.suspend = genphy_suspend,
|
||||
.resume = genphy_resume,
|
||||
},
|
||||
};
|
||||
module_phy_driver(dp83869_driver);
|
||||
|
||||
static struct mdio_device_id __maybe_unused dp83869_tbl[] = {
|
||||
{ PHY_ID_MATCH_MODEL(DP83869_PHY_ID) },
|
||||
{ PHY_ID_MATCH_MODEL(DP83561_PHY_ID) },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(mdio, dp83869_tbl);
|
||||
|
|
Loading…
Reference in New Issue