mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
Merge branch 'phy-mscc-fix-ptp-for-vsc8574-and-vsc8572'
Horatiu Vultur says: ==================== phy: mscc: Fix PTP for VSC8574 and VSC8572 The first patch will update the PHYs VSC8584, VSC8582, VSC8575 and VSC856X to use PHY_ID_MATCH_EXACT because only rev B exists for these PHYs. But for the PHYs VSC8574 and VSC8572 exists rev A, B, C, D and E. This is just a preparation for the second patch to allow the VSC8574 and VSC8572 to use the function vsc8584_probe(). We want to use vsc8584_probe() for VSC8574 and VSC8572 because this function does the correct PTP initialization. This change is in the second patch. ==================== Link: https://patch.msgid.link/20251023191350.190940-1-horatiu.vultur@microchip.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -289,12 +289,12 @@ enum rgmii_clock_delay {
|
||||
#define PHY_ID_VSC8540 0x00070760
|
||||
#define PHY_ID_VSC8541 0x00070770
|
||||
#define PHY_ID_VSC8552 0x000704e0
|
||||
#define PHY_ID_VSC856X 0x000707e0
|
||||
#define PHY_ID_VSC856X 0x000707e1
|
||||
#define PHY_ID_VSC8572 0x000704d0
|
||||
#define PHY_ID_VSC8574 0x000704a0
|
||||
#define PHY_ID_VSC8575 0x000707d0
|
||||
#define PHY_ID_VSC8582 0x000707b0
|
||||
#define PHY_ID_VSC8584 0x000707c0
|
||||
#define PHY_ID_VSC8575 0x000707d1
|
||||
#define PHY_ID_VSC8582 0x000707b1
|
||||
#define PHY_ID_VSC8584 0x000707c1
|
||||
#define PHY_VENDOR_MSCC 0x00070400
|
||||
|
||||
#define MSCC_VDDMAC_1500 1500
|
||||
|
||||
@@ -1724,12 +1724,6 @@ static int vsc8584_config_init(struct phy_device *phydev)
|
||||
* in this pre-init function.
|
||||
*/
|
||||
if (phy_package_init_once(phydev)) {
|
||||
/* The following switch statement assumes that the lowest
|
||||
* nibble of the phy_id_mask is always 0. This works because
|
||||
* the lowest nibble of the PHY_ID's below are also 0.
|
||||
*/
|
||||
WARN_ON(phydev->drv->phy_id_mask & 0xf);
|
||||
|
||||
switch (phydev->phy_id & phydev->drv->phy_id_mask) {
|
||||
case PHY_ID_VSC8504:
|
||||
case PHY_ID_VSC8552:
|
||||
@@ -2290,11 +2284,6 @@ static int vsc8584_probe(struct phy_device *phydev)
|
||||
VSC8531_DUPLEX_COLLISION};
|
||||
int ret;
|
||||
|
||||
if ((phydev->phy_id & MSCC_DEV_REV_MASK) != VSC8584_REVB) {
|
||||
dev_err(&phydev->mdio.dev, "Only VSC8584 revB is supported.\n");
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
|
||||
vsc8531 = devm_kzalloc(&phydev->mdio.dev, sizeof(*vsc8531), GFP_KERNEL);
|
||||
if (!vsc8531)
|
||||
return -ENOMEM;
|
||||
@@ -2587,9 +2576,8 @@ static struct phy_driver vsc85xx_driver[] = {
|
||||
.config_inband = vsc85xx_config_inband,
|
||||
},
|
||||
{
|
||||
.phy_id = PHY_ID_VSC856X,
|
||||
PHY_ID_MATCH_EXACT(PHY_ID_VSC856X),
|
||||
.name = "Microsemi GE VSC856X SyncE",
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
/* PHY_GBIT_FEATURES */
|
||||
.soft_reset = &genphy_soft_reset,
|
||||
.config_init = &vsc8584_config_init,
|
||||
@@ -2625,7 +2613,7 @@ static struct phy_driver vsc85xx_driver[] = {
|
||||
.suspend = &genphy_suspend,
|
||||
.resume = &genphy_resume,
|
||||
.remove = &vsc85xx_remove,
|
||||
.probe = &vsc8574_probe,
|
||||
.probe = &vsc8584_probe,
|
||||
.set_wol = &vsc85xx_wol_set,
|
||||
.get_wol = &vsc85xx_wol_get,
|
||||
.get_tunable = &vsc85xx_get_tunable,
|
||||
@@ -2648,12 +2636,12 @@ static struct phy_driver vsc85xx_driver[] = {
|
||||
.config_aneg = &vsc85xx_config_aneg,
|
||||
.aneg_done = &genphy_aneg_done,
|
||||
.read_status = &vsc85xx_read_status,
|
||||
.handle_interrupt = vsc85xx_handle_interrupt,
|
||||
.handle_interrupt = vsc8584_handle_interrupt,
|
||||
.config_intr = &vsc85xx_config_intr,
|
||||
.suspend = &genphy_suspend,
|
||||
.resume = &genphy_resume,
|
||||
.remove = &vsc85xx_remove,
|
||||
.probe = &vsc8574_probe,
|
||||
.probe = &vsc8584_probe,
|
||||
.set_wol = &vsc85xx_wol_set,
|
||||
.get_wol = &vsc85xx_wol_get,
|
||||
.get_tunable = &vsc85xx_get_tunable,
|
||||
@@ -2667,9 +2655,8 @@ static struct phy_driver vsc85xx_driver[] = {
|
||||
.config_inband = vsc85xx_config_inband,
|
||||
},
|
||||
{
|
||||
.phy_id = PHY_ID_VSC8575,
|
||||
PHY_ID_MATCH_EXACT(PHY_ID_VSC8575),
|
||||
.name = "Microsemi GE VSC8575 SyncE",
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
/* PHY_GBIT_FEATURES */
|
||||
.soft_reset = &genphy_soft_reset,
|
||||
.config_init = &vsc8584_config_init,
|
||||
@@ -2693,9 +2680,8 @@ static struct phy_driver vsc85xx_driver[] = {
|
||||
.config_inband = vsc85xx_config_inband,
|
||||
},
|
||||
{
|
||||
.phy_id = PHY_ID_VSC8582,
|
||||
PHY_ID_MATCH_EXACT(PHY_ID_VSC8582),
|
||||
.name = "Microsemi GE VSC8582 SyncE",
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
/* PHY_GBIT_FEATURES */
|
||||
.soft_reset = &genphy_soft_reset,
|
||||
.config_init = &vsc8584_config_init,
|
||||
@@ -2719,9 +2705,8 @@ static struct phy_driver vsc85xx_driver[] = {
|
||||
.config_inband = vsc85xx_config_inband,
|
||||
},
|
||||
{
|
||||
.phy_id = PHY_ID_VSC8584,
|
||||
PHY_ID_MATCH_EXACT(PHY_ID_VSC8584),
|
||||
.name = "Microsemi GE VSC8584 SyncE",
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
/* PHY_GBIT_FEATURES */
|
||||
.soft_reset = &genphy_soft_reset,
|
||||
.config_init = &vsc8584_config_init,
|
||||
|
||||
Reference in New Issue
Block a user