]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
net: ag71xx: populate supported_interfaces member
authorRussell King <rmk+kernel@armlinux.org.uk>
Wed, 17 Nov 2021 16:46:20 +0000 (16:46 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 18 Nov 2021 11:36:48 +0000 (11:36 +0000)
Populate the phy_interface_t bitmap for the Atheros ag71xx driver with
interfaces modes supported by the MAC.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/atheros/ag71xx.c

index e4f30bb7498fec02742376a37a22495cba38a9ea..d21293ecdb9ae0fe3c329f79f36d08776e351ec5 100644 (file)
@@ -1178,6 +1178,32 @@ static int ag71xx_phylink_setup(struct ag71xx *ag)
        ag->phylink_config.dev = &ag->ndev->dev;
        ag->phylink_config.type = PHYLINK_NETDEV;
 
+       if ((ag71xx_is(ag, AR9330) && ag->mac_idx == 0) ||
+           ag71xx_is(ag, AR9340) ||
+           ag71xx_is(ag, QCA9530) ||
+           (ag71xx_is(ag, QCA9550) && ag->mac_idx == 1))
+               __set_bit(PHY_INTERFACE_MODE_MII,
+                         ag->phylink_config.supported_interfaces);
+
+       if ((ag71xx_is(ag, AR9330) && ag->mac_idx == 1) ||
+           (ag71xx_is(ag, AR9340) && ag->mac_idx == 1) ||
+           (ag71xx_is(ag, QCA9530) && ag->mac_idx == 1))
+               __set_bit(PHY_INTERFACE_MODE_GMII,
+                         ag->phylink_config.supported_interfaces);
+
+       if (ag71xx_is(ag, QCA9550) && ag->mac_idx == 0)
+               __set_bit(PHY_INTERFACE_MODE_SGMII,
+                         ag->phylink_config.supported_interfaces);
+
+       if (ag71xx_is(ag, AR9340) && ag->mac_idx == 0)
+               __set_bit(PHY_INTERFACE_MODE_RMII,
+                         ag->phylink_config.supported_interfaces);
+
+       if ((ag71xx_is(ag, AR9340) && ag->mac_idx == 0) ||
+           (ag71xx_is(ag, QCA9550) && ag->mac_idx == 1))
+               __set_bit(PHY_INTERFACE_MODE_RGMII,
+                         ag->phylink_config.supported_interfaces);
+
        phylink = phylink_create(&ag->phylink_config, ag->pdev->dev.fwnode,
                                 ag->phy_if_mode, &ag71xx_phylink_mac_ops);
        if (IS_ERR(phylink))