Changeset 28987


Ignore:
Timestamp:
2011-11-12T13:50:16+01:00 (6 years ago)
Author:
juhosg
Message:

ar71xx: move phy interface setup into a separate function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/devices.c

    r28985 r28987  
    586586} 
    587587 
     588static int __init ar71xx_setup_phy_if_mode(unsigned int id, 
     589                                           struct ag71xx_platform_data *pdata) 
     590{ 
     591        switch (id) { 
     592        case 0: 
     593                switch (pdata->phy_if_mode) { 
     594                case PHY_INTERFACE_MODE_MII: 
     595                        pdata->mii_if = MII0_CTRL_IF_MII; 
     596                        break; 
     597                case PHY_INTERFACE_MODE_GMII: 
     598                        pdata->mii_if = MII0_CTRL_IF_GMII; 
     599                        break; 
     600                case PHY_INTERFACE_MODE_RGMII: 
     601                        pdata->mii_if = MII0_CTRL_IF_RGMII; 
     602                        break; 
     603                case PHY_INTERFACE_MODE_RMII: 
     604                        pdata->mii_if = MII0_CTRL_IF_RMII; 
     605                        break; 
     606                default: 
     607                        return -EINVAL; 
     608                } 
     609                break; 
     610        case 1: 
     611                switch (pdata->phy_if_mode) { 
     612                case PHY_INTERFACE_MODE_RMII: 
     613                        pdata->mii_if = MII1_CTRL_IF_RMII; 
     614                        break; 
     615                case PHY_INTERFACE_MODE_RGMII: 
     616                        pdata->mii_if = MII1_CTRL_IF_RGMII; 
     617                        break; 
     618                default: 
     619                        return -EINVAL; 
     620                } 
     621                break; 
     622        } 
     623 
     624        return 0; 
     625} 
     626 
    588627static int ar71xx_eth_instance __initdata; 
    589628void __init ar71xx_add_device_eth(unsigned int id) 
     
    591630        struct platform_device *pdev; 
    592631        struct ag71xx_platform_data *pdata; 
    593  
    594         ar71xx_init_eth_pll_data(id); 
    595  
    596         switch (id) { 
    597         case 0: 
    598                 switch (ar71xx_eth0_data.phy_if_mode) { 
    599                 case PHY_INTERFACE_MODE_MII: 
    600                         ar71xx_eth0_data.mii_if = MII0_CTRL_IF_MII; 
    601                         break; 
    602                 case PHY_INTERFACE_MODE_GMII: 
    603                         ar71xx_eth0_data.mii_if = MII0_CTRL_IF_GMII; 
    604                         break; 
    605                 case PHY_INTERFACE_MODE_RGMII: 
    606                         ar71xx_eth0_data.mii_if = MII0_CTRL_IF_RGMII; 
    607                         break; 
    608                 case PHY_INTERFACE_MODE_RMII: 
    609                         ar71xx_eth0_data.mii_if = MII0_CTRL_IF_RMII; 
    610                         break; 
    611                 default: 
    612                         printk(KERN_ERR "ar71xx: invalid PHY interface mode " 
    613                                         "for eth0\n"); 
    614                         return; 
    615                 } 
    616                 pdev = &ar71xx_eth0_device; 
    617                 break; 
    618         case 1: 
    619                 switch (ar71xx_eth1_data.phy_if_mode) { 
    620                 case PHY_INTERFACE_MODE_RMII: 
    621                         ar71xx_eth1_data.mii_if = MII1_CTRL_IF_RMII; 
    622                         break; 
    623                 case PHY_INTERFACE_MODE_RGMII: 
    624                         ar71xx_eth1_data.mii_if = MII1_CTRL_IF_RGMII; 
    625                         break; 
    626                 default: 
    627                         printk(KERN_ERR "ar71xx: invalid PHY interface mode " 
    628                                         "for eth1\n"); 
    629                         return; 
    630                 } 
    631                 pdev = &ar71xx_eth1_device; 
    632                 break; 
    633         default: 
     632        int err; 
     633 
     634        if (id > 1) { 
    634635                printk(KERN_ERR "ar71xx: invalid ethernet id %d\n", id); 
    635636                return; 
    636637        } 
    637638 
     639        ar71xx_init_eth_pll_data(id); 
     640 
     641        if (id == 0) 
     642                pdev = &ar71xx_eth0_device; 
     643        else 
     644                pdev = &ar71xx_eth1_device; 
     645 
    638646        pdata = pdev->dev.platform_data; 
     647 
     648        err = ar71xx_setup_phy_if_mode(id, pdata); 
     649        if (err) { 
     650                printk(KERN_ERR 
     651                       "ar71xx: invalid PHY interface mode for GE%u\n", id); 
     652                return; 
     653        } 
    639654 
    640655        switch (ar71xx_soc) { 
Note: See TracChangeset for help on using the changeset viewer.