ar71xx: implement SoC specific phy interface setup
authorGabor Juhos <juhosg@openwrt.org>
Sat, 12 Nov 2011 12:50:18 +0000 (12:50 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Sat, 12 Nov 2011 12:50:18 +0000 (12:50 +0000)
SVN-Revision: 28988

target/linux/ar71xx/files/arch/mips/ar71xx/devices.c

index 0091ac276cd9965024c89becdd0e24d6f7f650a5..e62d1123d65403ec80075cfa1cf97919617ea209 100644 (file)
@@ -590,33 +590,101 @@ static int __init ar71xx_setup_phy_if_mode(unsigned int id,
 {
        switch (id) {
        case 0:
-               switch (pdata->phy_if_mode) {
-               case PHY_INTERFACE_MODE_MII:
-                       pdata->mii_if = MII0_CTRL_IF_MII;
-                       break;
-               case PHY_INTERFACE_MODE_GMII:
-                       pdata->mii_if = MII0_CTRL_IF_GMII;
+               switch (ar71xx_soc) {
+               case AR71XX_SOC_AR7130:
+               case AR71XX_SOC_AR7141:
+               case AR71XX_SOC_AR7161:
+               case AR71XX_SOC_AR9130:
+               case AR71XX_SOC_AR9132:
+                       switch (pdata->phy_if_mode) {
+                       case PHY_INTERFACE_MODE_MII:
+                               pdata->mii_if = MII0_CTRL_IF_MII;
+                               break;
+                       case PHY_INTERFACE_MODE_GMII:
+                               pdata->mii_if = MII0_CTRL_IF_GMII;
+                               break;
+                       case PHY_INTERFACE_MODE_RGMII:
+                               pdata->mii_if = MII0_CTRL_IF_RGMII;
+                               break;
+                       case PHY_INTERFACE_MODE_RMII:
+                               pdata->mii_if = MII0_CTRL_IF_RMII;
+                               break;
+                       default:
+                               return -EINVAL;
+                       }
                        break;
-               case PHY_INTERFACE_MODE_RGMII:
-                       pdata->mii_if = MII0_CTRL_IF_RGMII;
+
+               case AR71XX_SOC_AR7240:
+               case AR71XX_SOC_AR7241:
+               case AR71XX_SOC_AR9330:
+               case AR71XX_SOC_AR9331:
+                       pdata->phy_if_mode = PHY_INTERFACE_MODE_MII;
                        break;
-               case PHY_INTERFACE_MODE_RMII:
-                       pdata->mii_if = MII0_CTRL_IF_RMII;
+
+               case AR71XX_SOC_AR7242:
+                       /* FIXME */
+
+               case AR71XX_SOC_AR9341:
+               case AR71XX_SOC_AR9342:
+               case AR71XX_SOC_AR9344:
+                       switch (pdata->phy_if_mode) {
+                       case PHY_INTERFACE_MODE_MII:
+                       case PHY_INTERFACE_MODE_GMII:
+                       case PHY_INTERFACE_MODE_RGMII:
+                       case PHY_INTERFACE_MODE_RMII:
+                               break;
+                       default:
+                               return -EINVAL;
+                       }
                        break;
+
                default:
-                       return -EINVAL;
+                       BUG();
                }
                break;
        case 1:
-               switch (pdata->phy_if_mode) {
-               case PHY_INTERFACE_MODE_RMII:
-                       pdata->mii_if = MII1_CTRL_IF_RMII;
+               switch (ar71xx_soc) {
+               case AR71XX_SOC_AR7130:
+               case AR71XX_SOC_AR7141:
+               case AR71XX_SOC_AR7161:
+               case AR71XX_SOC_AR9130:
+               case AR71XX_SOC_AR9132:
+                       switch (pdata->phy_if_mode) {
+                       case PHY_INTERFACE_MODE_RMII:
+                               pdata->mii_if = MII1_CTRL_IF_RMII;
+                               break;
+                       case PHY_INTERFACE_MODE_RGMII:
+                               pdata->mii_if = MII1_CTRL_IF_RGMII;
+                               break;
+                       default:
+                               return -EINVAL;
+                       }
+                       break;
+
+               case AR71XX_SOC_AR7240:
+               case AR71XX_SOC_AR7241:
+               case AR71XX_SOC_AR9330:
+               case AR71XX_SOC_AR9331:
+                       pdata->phy_if_mode = PHY_INTERFACE_MODE_GMII;
                        break;
-               case PHY_INTERFACE_MODE_RGMII:
-                       pdata->mii_if = MII1_CTRL_IF_RGMII;
+
+               case AR71XX_SOC_AR7242:
+                       /* FIXME */
+
+               case AR71XX_SOC_AR9341:
+               case AR71XX_SOC_AR9342:
+               case AR71XX_SOC_AR9344:
+                       switch (pdata->phy_if_mode) {
+                       case PHY_INTERFACE_MODE_MII:
+                       case PHY_INTERFACE_MODE_GMII:
+                               break;
+                       default:
+                               return -EINVAL;
+                       }
                        break;
+
                default:
-                       return -EINVAL;
+                       BUG();
                }
                break;
        }