Skip to content

Commit

Permalink
net: phy: add support for TI DP83561-SP phy
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Hari Nagalla authored and Jakub Kicinski committed Nov 20, 2021
1 parent d9f31ae commit 1388d4a
Showing 1 changed file with 22 additions and 20 deletions.
42 changes: 22 additions & 20 deletions drivers/net/phy/dp83869.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -878,34 +879,35 @@ static int dp83869_phy_reset(struct phy_device *phydev)
return dp83869_config_init(phydev);
}

static struct phy_driver dp83869_driver[] = {
{
PHY_ID_MATCH_MODEL(DP83869_PHY_ID),
.name = "TI DP83869",

.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,
#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, \
}

.get_wol = dp83869_get_wol,
.set_wol = dp83869_set_wol,
static struct phy_driver dp83869_driver[] = {
DP83869_PHY_DRIVER(DP83869_PHY_ID, "TI DP83869"),
DP83869_PHY_DRIVER(DP83561_PHY_ID, "TI DP83561-SP"),

.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);
Expand Down

0 comments on commit 1388d4a

Please sign in to comment.