Changeset 33750


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

[ar7] enable mvswitch driver

And fix the default network configuration to create the required VLANs.

Patch from Daniel Gimpelevich.

Location:
trunk/target/linux/ar7
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar7/base-files/etc/config/network

    r21307 r33750  
    99config interface lan 
    1010        option type     bridge 
    11         option ifname   "eth0 eth1" 
     11        option ifname   "eth0 eth1 eth0.1 eth0.2" 
    1212        option proto    static 
    1313        option ipaddr   192.168.1.1 
  • trunk/target/linux/ar7/config-3.3

    r33749 r33750  
    2727CONFIG_DMA_NONCOHERENT=y 
    2828CONFIG_EARLY_PRINTK=y 
     29CONFIG_ETHERNET_PACKET_MANGLE=y 
    2930CONFIG_FIXED_PHY=y 
    3031CONFIG_GENERIC_ATOMIC64=y 
     
    7879CONFIG_MTD_CFI_STAA=y 
    7980CONFIG_MTD_PHYSMAP=y 
     81CONFIG_MVSWITCH_PHY=y 
    8082CONFIG_NEED_DMA_MAP_STATE=y 
    8183CONFIG_NEED_PER_CPU_KM=y 
  • trunk/target/linux/ar7/patches-3.3/972-cpmac_fixup.patch

    r31615 r33750  
    1 --- a/arch/mips/ar7/platform.c 
    2 +++ b/arch/mips/ar7/platform.c 
     1Index: 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 
    35@@ -33,7 +33,6 @@ 
    46 #include <linux/string.h> 
     
    911 #include <linux/clk.h> 
    1012  
    11 @@ -248,12 +247,6 @@ static struct resource cpmac_high_res[] 
     13@@ -248,12 +247,6 @@ 
    1214        }, 
    1315 }; 
     
    2224        .reset_bit      = 17, 
    2325        .power_bit      = 20, 
    24 @@ -680,26 +673,18 @@ static int __init ar7_register_devices(v 
     26@@ -709,26 +702,19 @@ 
    2527        } 
    2628  
     
    3739-       } else 
    3840-               cpmac_low_data.phy_mask = 0xffffffff; 
    39 +               cpmac_get_mac(1, cpmac_high_data.dev_addr); 
     41+               cpmac_get_mac(0, cpmac_high_data.dev_addr); 
    4042  
    4143-       res = fixed_phy_add(PHY_POLL, cpmac_low.id, &fixed_phy_status); 
     
    4648                if (res) 
    4749-                       pr_warning("unable to register cpmac-low: %d\n", res); 
     50-       } else 
     51-               pr_warning("unable to add cpmac-low phy: %d\n", res); 
    4852+                       pr_warning("unable to register cpmac-high: %d\n", res); 
    49         } else 
    50 -               pr_warning("unable to add cpmac-low phy: %d\n", res); 
     53+               cpmac_get_mac(1, cpmac_low_data.dev_addr); 
     54+       } else { 
    5155+               cpmac_low_data.phy_mask = 0xffffffff; 
    52 + 
    53 +       cpmac_get_mac(0, cpmac_low_data.dev_addr); 
     56+               cpmac_get_mac(0, cpmac_low_data.dev_addr); 
     57+       } 
    5458+       res = platform_device_register(&cpmac_low); 
    5559+       if (res) 
     
    5862        detect_leds(); 
    5963        res = platform_device_register(&ar7_gpio_leds); 
    60 @@ -712,8 +697,10 @@ static int __init ar7_register_devices(v 
     64@@ -741,8 +727,10 @@ 
    6165  
    6266        /* Register watchdog only if enabled in hardware */ 
     
    7175                if (ar7_has_high_vlynq()) 
    7276                        ar7_wdt_res.start = UR8_REGS_WDT; 
    73 --- a/arch/mips/include/asm/mach-ar7/ar7.h 
    74 +++ b/arch/mips/include/asm/mach-ar7/ar7.h 
     77Index: 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 
    7581@@ -42,6 +42,7 @@ 
    7682 #define AR7_REGS_PINSEL (AR7_REGS_BASE + 0x160C) 
     
    8187 #define AR7_REGS_MDIO  (AR7_REGS_BASE + 0x1e00) 
    8288 #define AR7_REGS_IRQ   (AR7_REGS_BASE + 0x2400) 
    83 --- a/drivers/net/ethernet/ti/cpmac.c 
    84 +++ b/drivers/net/ethernet/ti/cpmac.c 
     89Index: 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 
    8593@@ -35,7 +35,6 @@ 
    8694 #include <linux/skbuff.h> 
     
    9199 #include <linux/dma-mapping.h> 
    92100 #include <linux/clk.h> 
    93 @@ -48,14 +47,11 @@ MODULE_LICENSE("GPL"); 
     101@@ -48,14 +47,11 @@ 
    94102 MODULE_ALIAS("platform:cpmac"); 
    95103  
     
    107115 #define CPMAC_VERSION "0.5.2" 
    108116 /* frame size + 802.1q tag + FCS size */ 
    109 @@ -674,9 +670,8 @@ static void cpmac_hw_start(struct net_de 
     117@@ -674,9 +670,8 @@ 
    110118        for (i = 0; i < 8; i++) 
    111119                cpmac_write(priv->regs, CPMAC_MAC_ADDR_LO(i), dev->dev_addr[5]); 
     
    119127        cpmac_write(priv->regs, CPMAC_UNICAST_CLEAR, 0xff); 
    120128        cpmac_write(priv->regs, CPMAC_RX_INT_CLEAR, 0xff); 
    121 @@ -1108,8 +1103,6 @@ static const struct net_device_ops cpmac 
    122         .ndo_set_mac_address    = eth_mac_addr, 
    123  }; 
    124   
    125 -static int external_switch; 
    126 - 
    127  static int __devinit cpmac_probe(struct platform_device *pdev) 
    128  { 
    129         int rc, phy_id; 
    130 @@ -1121,25 +1114,18 @@ static int __devinit cpmac_probe(struct 
     129@@ -1121,25 +1116,18 @@ 
    131130  
    132131        pdata = pdev->dev.platform_data; 
     
    163162  
    164163        dev = alloc_etherdev_mq(sizeof(*priv), CPMAC_QUEUES); 
    165 @@ -1228,6 +1214,7 @@ int __devinit cpmac_init(void) 
     164@@ -1178,6 +1166,13 @@ 
     165        snprintf(priv->phy_name, MII_BUS_ID_SIZE, PHY_ID_FMT, 
     166                                                mdio_bus_id, phy_id); 
     167  
     168+       rc = register_netdev(dev); 
     169+       if (rc) { 
     170+               printk(KERN_ERR "cpmac: error %i registering device %s\n", rc, 
     171+                      dev->name); 
     172+               goto fail; 
     173+       } 
     174+ 
     175        priv->phy = phy_connect(dev, priv->phy_name, cpmac_adjust_link, 0, 
     176                                                PHY_INTERFACE_MODE_MII); 
     177  
     178@@ -1189,13 +1184,6 @@ 
     179                goto fail; 
     180        } 
     181  
     182-       rc = register_netdev(dev); 
     183-       if (rc) { 
     184-               printk(KERN_ERR "cpmac: error %i registering device %s\n", rc, 
     185-                      dev->name); 
     186-               goto fail; 
     187-       } 
     188- 
     189        if (netif_msg_probe(priv)) { 
     190                printk(KERN_INFO 
     191                       "cpmac: device %s (regs: %p, irq: %d, phy: %s, " 
     192@@ -1228,6 +1216,7 @@ 
    166193 { 
    167194        u32 mask; 
     
    171198        cpmac_mii = mdiobus_alloc(); 
    172199        if (cpmac_mii == NULL) 
    173 @@ -1251,14 +1238,14 @@ int __devinit cpmac_init(void) 
     200@@ -1251,31 +1240,51 @@ 
    174201        ar7_gpio_disable(26); 
    175202        ar7_gpio_disable(27); 
     
    191218        cpmac_mii->reset(cpmac_mii); 
    192219  
    193 @@ -1270,10 +1257,22 @@ int __devinit cpmac_init(void) 
     220        for (i = 0; i < 300; i++) { 
     221                mask = cpmac_read(cpmac_mii->priv, CPMAC_MDIO_ALIVE); 
     222+               mask &= ar7_is_titan()? ~(0x80000000 | 0x40000000) : ~(0x80000000); 
     223                if (mask) 
     224                        break; 
     225                else 
    194226                        msleep(10); 
    195227        } 
    196228  
    197229-       mask &= 0x7fffffff; 
    198 +       mask &= ar7_is_titan()? ~(0x80000000 | 0x40000000) : ~(0x80000000); 
    199230        if (mask & (mask - 1)) { 
    200 -               external_switch = 1; 
     231                external_switch = 1; 
    201232-               mask = 0; 
    202233+               if (!ar7_has_high_cpmac()) { 
     
    216247        } 
    217248  
     249+       if (external_switch) 
     250+               printk(KERN_INFO "EXTERNAL SWITCH!!!\n"); 
     251+       else if (mask) 
     252+               printk(KERN_INFO "EXTERNAL PHY!!!\n"); 
     253+       else 
     254+               printk(KERN_INFO "INTERNAL PHY!!!\n"); 
     255+ 
    218256        if (ar7_is_titan()) 
     257                cpmac_mii->phy_mask = ~(mask | 0x80000000 | 0x40000000); 
     258        else 
Note: See TracChangeset for help on using the changeset viewer.