1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-07-08 21:18:54 +03:00

ar71xx: implement SoC specific phy interface setup

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@28988 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
juhosg 2011-11-12 12:50:18 +00:00
parent 428566d3de
commit f42393b3c6

View 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;
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_GMII:
pdata->mii_if = MII0_CTRL_IF_GMII;
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_RGMII:
pdata->mii_if = MII0_CTRL_IF_RGMII;
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 PHY_INTERFACE_MODE_RGMII:
pdata->mii_if = MII1_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_GMII;
break;
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;
}