net: dsa: microchip: lan9371/2: update MAC capabilities for port 4

Set proper MAC capabilities for port 4 on LAN9371 and LAN9372 switches with
integrated 100BaseTX PHY. And introduce the is_lan937x_tx_phy() function to
reuse it where applicable.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Acked-by: Arun Ramadoss <arun.ramadoss@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Oleksij Rempel 2024-07-05 10:47:15 +02:00 committed by David S. Miller
parent 3abbd7ed8b
commit 5483cbfd86
2 changed files with 10 additions and 2 deletions

View File

@ -638,6 +638,12 @@ static inline int is_lan937x(struct ksz_device *dev)
dev->chip_id == LAN9374_CHIP_ID;
}
static inline bool is_lan937x_tx_phy(struct ksz_device *dev, int port)
{
return (dev->chip_id == LAN9371_CHIP_ID ||
dev->chip_id == LAN9372_CHIP_ID) && port == KSZ_PORT_4;
}
/* STP State Defines */
#define PORT_TX_ENABLE BIT(2)
#define PORT_RX_ENABLE BIT(1)

View File

@ -55,8 +55,7 @@ static int lan937x_vphy_ind_addr_wr(struct ksz_device *dev, int addr, int reg)
u16 addr_base = REG_PORT_T1_PHY_CTRL_BASE;
u16 temp;
if ((dev->info->chip_id == LAN9371_CHIP_ID ||
dev->info->chip_id == LAN9372_CHIP_ID) && addr == KSZ_PORT_4)
if (is_lan937x_tx_phy(dev, addr))
addr_base = REG_PORT_TX_PHY_CTRL_BASE;
/* get register address based on the logical port */
@ -324,6 +323,9 @@ void lan937x_phylink_get_caps(struct ksz_device *dev, int port,
/* MII/RMII/RGMII ports */
config->mac_capabilities |= MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
MAC_100HD | MAC_10 | MAC_1000FD;
} else if (is_lan937x_tx_phy(dev, port)) {
config->mac_capabilities |= MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
MAC_100HD | MAC_10;
}
}