Changeset 33751


Ignore:
Timestamp:
2012-10-13T19:47:14+02:00 (5 years ago)
Author:
florian
Message:

[ar7] reinstate the fixed PHY fallback for devices with undetectable switches

At least devices without a switch present on the MDIO bus still get a valid
link and work as expected (such as the Linksys WAG54Gv2).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar7/patches-3.3/972-cpmac_fixup.patch

    r33750 r33751  
    1 Index: linux-3.3.8/arch/mips/ar7/platform.c 
    2 =================================================================== 
    3 --- linux-3.3.8.orig/arch/mips/ar7/platform.c   2012-10-06 21:15:51.930451885 -0700 
    4 +++ linux-3.3.8/arch/mips/ar7/platform.c        2012-10-06 21:15:51.962452050 -0700 
    5 @@ -33,7 +33,6 @@ 
    6  #include <linux/string.h> 
    7  #include <linux/etherdevice.h> 
    8  #include <linux/phy.h> 
    9 -#include <linux/phy_fixed.h> 
    10  #include <linux/gpio.h> 
    11  #include <linux/clk.h> 
    12   
    13 @@ -248,12 +247,6 @@ 
    14         }, 
    15  }; 
    16   
    17 -static struct fixed_phy_status fixed_phy_status __initdata = { 
    18 -       .link           = 1, 
    19 -       .speed          = 100, 
    20 -       .duplex         = 1, 
    21 -}; 
    22 - 
    23  static struct plat_cpmac_data cpmac_low_data = { 
    24         .reset_bit      = 17, 
    25         .power_bit      = 20, 
    26 @@ -709,26 +702,19 @@ 
     1--- a/arch/mips/ar7/platform.c 
     2+++ b/arch/mips/ar7/platform.c 
     3@@ -709,26 +709,23 @@ static int __init ar7_register_devices(v 
    274        } 
    285  
    296        if (ar7_has_high_cpmac()) { 
    30 -               res = fixed_phy_add(PHY_POLL, cpmac_high.id, &fixed_phy_status); 
     7+               cpmac_get_mac(0, cpmac_high_data.dev_addr); 
     8+ 
     9                res = fixed_phy_add(PHY_POLL, cpmac_high.id, &fixed_phy_status); 
    3110-               if (!res) { 
    3211-                       cpmac_get_mac(1, cpmac_high_data.dev_addr); 
    33 - 
     12+               if (!res) 
     13+                       pr_warning("unable to register fixed phy for cpmac-high: %d\n", res); 
     14  
    3415-                       res = platform_device_register(&cpmac_high); 
    3516-                       if (res) 
     
    3819-                       pr_warning("unable to add cpmac-high phy: %d\n", res); 
    3920-       } else 
    40 -               cpmac_low_data.phy_mask = 0xffffffff; 
    41 +               cpmac_get_mac(0, cpmac_high_data.dev_addr); 
    42   
     21+               res = platform_device_register(&cpmac_high); 
     22+               if (res) 
     23+                       pr_warning("unable to register cpmac-high: %d\n", res); 
     24+               cpmac_get_mac(1, cpmac_low_data.dev_addr); 
     25+       } else { 
     26                cpmac_low_data.phy_mask = 0xffffffff; 
     27- 
    4328-       res = fixed_phy_add(PHY_POLL, cpmac_low.id, &fixed_phy_status); 
    4429-       if (!res) { 
    45 -               cpmac_get_mac(0, cpmac_low_data.dev_addr); 
     30                cpmac_get_mac(0, cpmac_low_data.dev_addr); 
    4631-               res = platform_device_register(&cpmac_low); 
    47 +               res = platform_device_register(&cpmac_high); 
    48                 if (res) 
     32-               if (res) 
    4933-                       pr_warning("unable to register cpmac-low: %d\n", res); 
    5034-       } else 
    5135-               pr_warning("unable to add cpmac-low phy: %d\n", res); 
    52 +                       pr_warning("unable to register cpmac-high: %d\n", res); 
    53 +               cpmac_get_mac(1, cpmac_low_data.dev_addr); 
    54 +       } else { 
    55 +               cpmac_low_data.phy_mask = 0xffffffff; 
    56 +               cpmac_get_mac(0, cpmac_low_data.dev_addr); 
    5736+       } 
    5837+       res = platform_device_register(&cpmac_low); 
     
    6241        detect_leds(); 
    6342        res = platform_device_register(&ar7_gpio_leds); 
    64 @@ -741,8 +727,10 @@ 
     43@@ -741,8 +738,10 @@ static int __init ar7_register_devices(v 
    6544  
    6645        /* Register watchdog only if enabled in hardware */ 
     
    7554                if (ar7_has_high_vlynq()) 
    7655                        ar7_wdt_res.start = UR8_REGS_WDT; 
    77 Index: linux-3.3.8/arch/mips/include/asm/mach-ar7/ar7.h 
    78 =================================================================== 
    79 --- linux-3.3.8.orig/arch/mips/include/asm/mach-ar7/ar7.h       2012-06-01 00:16:13.000000000 -0700 
    80 +++ linux-3.3.8/arch/mips/include/asm/mach-ar7/ar7.h    2012-10-06 21:15:51.966452059 -0700 
     56--- a/arch/mips/include/asm/mach-ar7/ar7.h 
     57+++ b/arch/mips/include/asm/mach-ar7/ar7.h 
    8158@@ -42,6 +42,7 @@ 
    8259 #define AR7_REGS_PINSEL (AR7_REGS_BASE + 0x160C) 
     
    8764 #define AR7_REGS_MDIO  (AR7_REGS_BASE + 0x1e00) 
    8865 #define AR7_REGS_IRQ   (AR7_REGS_BASE + 0x2400) 
    89 Index: linux-3.3.8/drivers/net/ethernet/ti/cpmac.c 
    90 =================================================================== 
    91 --- linux-3.3.8.orig/drivers/net/ethernet/ti/cpmac.c    2012-10-06 21:15:51.946451965 -0700 
    92 +++ linux-3.3.8/drivers/net/ethernet/ti/cpmac.c 2012-10-11 11:23:17.459719956 -0700 
     66--- a/drivers/net/ethernet/ti/cpmac.c 
     67+++ b/drivers/net/ethernet/ti/cpmac.c 
    9368@@ -35,7 +35,6 @@ 
    9469 #include <linux/skbuff.h> 
     
    9974 #include <linux/dma-mapping.h> 
    10075 #include <linux/clk.h> 
    101 @@ -48,14 +47,11 @@ 
     76@@ -48,14 +47,11 @@ MODULE_LICENSE("GPL"); 
    10277 MODULE_ALIAS("platform:cpmac"); 
    10378  
     
    11590 #define CPMAC_VERSION "0.5.2" 
    11691 /* frame size + 802.1q tag + FCS size */ 
    117 @@ -674,9 +670,8 @@ 
     92@@ -674,9 +670,8 @@ static void cpmac_hw_start(struct net_de 
    11893        for (i = 0; i < 8; i++) 
    11994                cpmac_write(priv->regs, CPMAC_MAC_ADDR_LO(i), dev->dev_addr[5]); 
     
    127102        cpmac_write(priv->regs, CPMAC_UNICAST_CLEAR, 0xff); 
    128103        cpmac_write(priv->regs, CPMAC_RX_INT_CLEAR, 0xff); 
    129 @@ -1121,25 +1116,18 @@ 
     104@@ -1121,25 +1116,19 @@ static int __devinit cpmac_probe(struct 
    130105  
    131106        pdata = pdev->dev.platform_data; 
     
    152127        } 
    153128  
    154         if (phy_id == PHY_MAX_ADDR) { 
     129-       if (phy_id == PHY_MAX_ADDR) { 
    155130-               dev_err(&pdev->dev, "no PHY present, falling back " 
    156131-                                       "to switch on MDIO bus 0\n"); 
    157132-               strncpy(mdio_bus_id, "fixed-0", MII_BUS_ID_SIZE); /* fixed phys bus */ 
    158 -               phy_id = pdev->id; 
    159 +               printk(KERN_ERR "cpmac: No PHY present\n"); 
    160 +               return -ENXIO; 
     133+       if (phy_id == PHY_MAX_ADDR && pdev->id == 1) { 
     134+               printk(KERN_ERR "cpmac: No PHY present, using fixed PHY\n"); 
     135                phy_id = pdev->id; 
     136+               strncpy(mdio_bus_id, "fixed-0", MII_BUS_ID_SIZE); 
    161137        } 
    162138  
    163139        dev = alloc_etherdev_mq(sizeof(*priv), CPMAC_QUEUES); 
    164 @@ -1178,6 +1166,13 @@ 
     140@@ -1178,6 +1167,13 @@ static int __devinit cpmac_probe(struct 
    165141        snprintf(priv->phy_name, MII_BUS_ID_SIZE, PHY_ID_FMT, 
    166142                                                mdio_bus_id, phy_id); 
     
    176152                                                PHY_INTERFACE_MODE_MII); 
    177153  
    178 @@ -1189,13 +1184,6 @@ 
     154@@ -1189,13 +1185,6 @@ static int __devinit cpmac_probe(struct 
    179155                goto fail; 
    180156        } 
     
    190166                printk(KERN_INFO 
    191167                       "cpmac: device %s (regs: %p, irq: %d, phy: %s, " 
    192 @@ -1228,6 +1216,7 @@ 
     168@@ -1228,6 +1217,7 @@ int __devinit cpmac_init(void) 
    193169 { 
    194170        u32 mask; 
     
    198174        cpmac_mii = mdiobus_alloc(); 
    199175        if (cpmac_mii == NULL) 
    200 @@ -1251,31 +1240,51 @@ 
     176@@ -1251,31 +1241,51 @@ int __devinit cpmac_init(void) 
    201177        ar7_gpio_disable(26); 
    202178        ar7_gpio_disable(27); 
Note: See TracChangeset for help on using the changeset viewer.