From f42393b3c61487ce0ac9c6571c46ffa0d728f543 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 12 Nov 2011 12:50:18 +0000 Subject: [PATCH] ar71xx: implement SoC specific phy interface setup git-svn-id: svn://svn.openwrt.org/openwrt/trunk@28988 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../ar71xx/files/arch/mips/ar71xx/devices.c | 102 +++++++++++++++--- 1 file changed, 85 insertions(+), 17 deletions(-) diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/devices.c b/target/linux/ar71xx/files/arch/mips/ar71xx/devices.c index 0091ac276..e62d1123d 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/devices.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/devices.c @@ -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; } -- 2.20.1