Changeset 36407


Ignore:
Timestamp:
2013-04-23T15:55:36+02:00 (5 years ago)
Author:
jogo
Message:

bcm63xx: update patches with upstream submissions

Location:
trunk/target/linux/brcm63xx/patches-3.8
Files:
26 added
17 deleted
5 edited
50 moved

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/brcm63xx/patches-3.8/016-MIPS-BCM63XX-make-nvram-checksum-failure-non-fatal.patch

    r36406 r36407  
    1 From 5e6669fe7487c58b123da1df5c2d95db43185264 Mon Sep 17 00:00:00 2001 
     1From 152addd3a965759b69fbdb9a76526f1f5070bc9a Mon Sep 17 00:00:00 2001 
    22From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Tue, 12 Feb 2013 22:00:10 +0100 
    44Subject: [PATCH] MIPS: BCM63XX: make nvram checksum failure non fatal 
     5MIME-Version: 1.0 
     6Content-Type: text/plain; charset=UTF-8 
     7Content-Transfer-Encoding: 8bit 
    58 
    69Some vendors modify the nvram layout moving the checksum to a different 
    7 place or drop it entirely, so reduce the checksum failure to a warning. 
     10place or dropping entirely, so reduce the checksum failure to a warning. 
    811 
    912Reported-by: Álvaro Fernández Rojas <noltari@gmail.com> 
    1013Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    1114--- 
     15 
     16I'm not sure if it should be that "loud" (pr_warn) because users can't 
     17actually do anything to fix it, so maybe pr_debug would be fine, too. 
     18 
    1219 arch/mips/bcm63xx/boards/board_bcm963xx.c          |    5 +---- 
    1320 arch/mips/bcm63xx/nvram.c                          |    7 +++---- 
     
    1724--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    1825+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    19 @@ -747,10 +747,7 @@ void __init board_prom_init(void) 
     26@@ -745,10 +745,7 @@ void __init board_prom_init(void) 
    2027                strcpy(cfe_version, "unknown"); 
    2128        printk(KERN_INFO PFX "CFE version: %s\n", cfe_version); 
     
    4754- 
    4855-       return 0; 
    49 +               pr_warn("nvram checksum invalid (expected %08x, actual %08x)\n", 
     56+               pr_warn("nvram checksum failed, contents may be invalid (expected %08x, got %08x)\n", 
    5057+                       expected_crc, crc); 
    5158 } 
  • trunk/target/linux/brcm63xx/patches-3.8/017-Revert-MIPS-BCM63XX-Call-board_register_device-from-.patch

    r36406 r36407  
    1 From a7d2622b6614fdca504c074a0cd307d5a1165c30 Mon Sep 17 00:00:00 2001 
    2 From: Jonas Gorski <jonas.gorski@gmail.com> 
     1From 76d82677cb010b28346aa4c7aa9d36d94916392b Mon Sep 17 00:00:00 2001 
     2From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Tue, 8 May 2012 09:39:01 +0200 
    4 Subject: [PATCH 04/59] Revert "MIPS: BCM63XX: Call board_register_device from device_initcall()" 
     4Subject: [PATCH] Revert "MIPS: BCM63XX: Call board_register_device from 
     5 device_initcall()" 
    56 
    67This commit causes a race between PCI scan and SSB fallback SPROM handler 
    78registration, causing the wifi to not work on slower systems. The only 
    8 subsystem touched from board_register_device is platform device 
    9 registration, which should be safe as an arch init call. 
     9subsystem touched from board_register_devices is platform device 
     10registration, which is safe as an arch init call. 
    1011 
    1112This reverts commit d64ed7ada2f689d2c62af1892ca55e47d3653e36. 
     13 
     14Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    1215--- 
     16 
     17This patch is in OpenWrt since ages, and we never encountered any issues 
     18from this revert. 
     19 
    1320 arch/mips/bcm63xx/setup.c |    2 +- 
    14  1 files changed, 1 insertions(+), 1 deletions(-) 
     21 1 file changed, 1 insertion(+), 1 deletion(-) 
    1522 
    1623--- a/arch/mips/bcm63xx/setup.c 
  • trunk/target/linux/brcm63xx/patches-3.8/025-MIPS-BCM63XX-add-basic-BCM6362-support.patch

    r36406 r36407  
    1 From 2665f554de21676a4cf609b1e1bb39d0597a1985 Mon Sep 17 00:00:00 2001 
    2 From: Jonas Gorski <jonas.gorski@gmail.com> 
     1From 1071a9c9527d68eca4605e2eb1686609bfecf287 Mon Sep 17 00:00:00 2001 
     2From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Mon, 21 Nov 2011 00:48:52 +0100 
    4 Subject: [PATCH 28/72] MIPS: BCM63XX: add basic BCM6362 support 
     4Subject: [PATCH 4/7] MIPS: BCM63XX: add basic BCM6362 support 
    55 
    6 Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> 
     6Add basic support for detecting and booting the BCM6362. 
     7 
     8Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    79--- 
    810 arch/mips/bcm63xx/Kconfig                         |    4 + 
    9  arch/mips/bcm63xx/boards/board_bcm963xx.c         |    2 +- 
    10  arch/mips/bcm63xx/cpu.c                           |   52 +++++++- 
    11  arch/mips/bcm63xx/irq.c                           |   19 +++ 
     11 arch/mips/bcm63xx/boards/board_bcm963xx.c         |    6 +- 
     12 arch/mips/bcm63xx/cpu.c                           |   51 +++++++- 
     13 arch/mips/bcm63xx/irq.c                           |   22 ++++ 
    1214 arch/mips/bcm63xx/prom.c                          |    2 + 
    1315 arch/mips/bcm63xx/reset.c                         |   28 +++++ 
     
    1517 arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h  |  139 +++++++++++++++++++++ 
    1618 arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h |    2 + 
    17  arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h |   59 +++++++++ 
     19 arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h |   61 ++++++++- 
    1820 arch/mips/include/asm/mach-bcm63xx/ioremap.h      |    1 + 
    19  11 files changed, 309 insertions(+), 2 deletions(-) 
     21 11 files changed, 314 insertions(+), 5 deletions(-) 
    2022 
    2123--- a/arch/mips/bcm63xx/Kconfig 
    2224+++ b/arch/mips/bcm63xx/Kconfig 
    23 @@ -37,6 +37,10 @@ config BCM63XX_CPU_6358 
    24         select BCM63XX_OHCI 
    25         select BCM63XX_EHCI 
     25@@ -25,6 +25,10 @@ config BCM63XX_CPU_6358 
     26        bool "support 6358 CPU" 
     27        select HW_HAS_PCI 
    2628  
    2729+config BCM63XX_CPU_6362 
     
    3436--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3537+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    36 @@ -785,7 +785,7 @@ void __init board_prom_init(void) 
     38@@ -726,11 +726,11 @@ void __init board_prom_init(void) 
     39        u32 val; 
     40  
    3741        /* read base address of boot chip select (0) 
    38          * 6328 does not have MPI but boots from a fixed address 
     42-        * 6328 does not have MPI but boots from a fixed address 
     43+        * 6328/6362 do not have MPI but boot from a fixed address 
    3944         */ 
    4045-       if (BCMCPU_IS_6328()) 
    41 +       if (BCMCPU_IS_6328() || BCMCPU_IS_6362()) 
     46+       if (BCMCPU_IS_6328() || BCMCPU_IS_6362()) { 
    4247                val = 0x18000000; 
    43         else { 
     48-       else { 
     49+       } else { 
    4450                val = bcm_mpi_readl(MPI_CSBASE_REG(0)); 
     51                val &= MPI_CSBASE_BASE_MASK; 
     52        } 
    4553--- a/arch/mips/bcm63xx/cpu.c 
    4654+++ b/arch/mips/bcm63xx/cpu.c 
     
    113121  
    114122        if (BCMCPU_IS_6345()) { 
    115 @@ -280,6 +325,11 @@ void __init bcm63xx_cpu_init(void) 
    116                                 bcm63xx_regs_base = bcm6328_regs_base; 
    117                                 bcm63xx_irqs = bcm6328_irqs; 
    118                                 break; 
    119 +                       case BCM6362_CPU_ID: 
    120 +                               expected_cpu_id = BCM6362_CPU_ID; 
    121 +                               bcm63xx_regs_base = bcm6362_regs_base; 
    122 +                               bcm63xx_irqs = bcm6362_irqs; 
    123 +                               break; 
    124                         case BCM6368_CPU_ID: 
    125                                 expected_cpu_id = BCM6368_CPU_ID; 
    126                                 bcm63xx_regs_base = bcm6368_regs_base; 
     123@@ -297,6 +342,10 @@ void __init bcm63xx_cpu_init(void) 
     124                bcm63xx_regs_base = bcm6358_regs_base; 
     125                bcm63xx_irqs = bcm6358_irqs; 
     126                break; 
     127+       case BCM6362_CPU_ID: 
     128+               bcm63xx_regs_base = bcm6362_regs_base; 
     129+               bcm63xx_irqs = bcm6362_irqs; 
     130+               break; 
     131        case BCM6368_CPU_ID: 
     132                bcm63xx_regs_base = bcm6368_regs_base; 
     133                bcm63xx_irqs = bcm6368_irqs; 
    127134--- a/arch/mips/bcm63xx/irq.c 
    128135+++ b/arch/mips/bcm63xx/irq.c 
    129 @@ -82,6 +82,14 @@ static void __internal_irq_unmask_64(uns 
     136@@ -82,6 +82,17 @@ static void __internal_irq_unmask_64(uns 
    130137 #define ext_irq_cfg_reg1       PERF_EXTIRQ_CFG_REG_6358 
    131138 #define ext_irq_cfg_reg2       0 
     
    138145+#define ext_irq_start          (BCM_6362_EXT_IRQ0 - IRQ_INTERNAL_BASE) 
    139146+#define ext_irq_end            (BCM_6362_EXT_IRQ3 - IRQ_INTERNAL_BASE) 
     147+#define ext_irq_count          4 
     148+#define ext_irq_cfg_reg1       PERF_EXTIRQ_CFG_REG_6362 
     149+#define ext_irq_cfg_reg2       0 
    140150+#endif 
    141151 #ifdef CONFIG_BCM63XX_CPU_6368 
    142152 #define irq_stat_reg           PERF_IRQSTAT_6368_REG 
    143153 #define irq_mask_reg           PERF_IRQMASK_6368_REG 
    144 @@ -170,6 +178,16 @@ static void bcm63xx_init_irq(void) 
     154@@ -170,6 +181,16 @@ static void bcm63xx_init_irq(void) 
    145155                ext_irq_end = BCM_6358_EXT_IRQ3 - IRQ_INTERNAL_BASE; 
    146156                ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_6358; 
     
    159169                irq_stat_addr += PERF_IRQSTAT_6368_REG; 
    160170                irq_mask_addr += PERF_IRQMASK_6368_REG; 
    161 @@ -458,6 +476,7 @@ static int bcm63xx_external_irq_set_type 
     171@@ -458,6 +479,7 @@ static int bcm63xx_external_irq_set_type 
    162172        case BCM6338_CPU_ID: 
    163173        case BCM6345_CPU_ID: 
     
    279289 # ifdef bcm63xx_get_cpu_id 
    280290 #  undef bcm63xx_get_cpu_id 
    281 @@ -413,6 +428,62 @@ enum bcm63xx_regs_set { 
     291@@ -406,6 +421,62 @@ enum bcm63xx_regs_set { 
    282292  
    283293  
     
    342352  */ 
    343353 #define BCM_6368_DSL_LMEM_BASE         (0xdeadbeef) 
    344 @@ -574,6 +645,9 @@ static inline unsigned long bcm63xx_regs 
     354@@ -564,6 +635,9 @@ static inline unsigned long bcm63xx_regs 
    345355 #ifdef CONFIG_BCM63XX_CPU_6358 
    346356        __GEN_RSET(6358) 
     
    352362        __GEN_RSET(6368) 
    353363 #endif 
    354 @@ -836,6 +910,71 @@ enum bcm63xx_irq { 
     364@@ -820,6 +894,71 @@ enum bcm63xx_irq { 
    355365 #define BCM_6358_EXT_IRQ3              (IRQ_INTERNAL_BASE + 28) 
    356366  
     
    532542 #define SOFTRESET_6368_MPI_MASK                (1 << 3) 
    533543 #define SOFTRESET_6368_EPHY_MASK       (1 << 6) 
    534 @@ -1352,6 +1405,12 @@ 
     544@@ -1240,7 +1293,7 @@ 
     545 #define SPI_6348_RX_DATA               0x80 
     546 #define SPI_6348_RX_DATA_SIZE          0x3f 
     547  
     548-/* BCM 6358/6368 SPI core */ 
     549+/* BCM 6358/6262/6368 SPI core */ 
     550 #define SPI_6358_MSG_CTL               0x00    /* 16-bits register */ 
     551 #define SPI_6358_MSG_CTL_WIDTH         16 
     552 #define SPI_6358_MSG_DATA              0x02 
     553@@ -1316,6 +1369,12 @@ 
    535554 #define SERDES_PCIE_EN                 (1 << 0) 
    536555 #define SERDES_PCIE_EXD_EN             (1 << 15) 
  • trunk/target/linux/brcm63xx/patches-3.8/027-MIPS-BCM63XX-enable-pcie-for-BCM6362.patch

    r36406 r36407  
    1 From 2f94c414e554531e2a65a7c4a7fa2d1ba0380c0a Mon Sep 17 00:00:00 2001 
    2 From: Jonas Gorski <jonas.gorski@gmail.com> 
     1From ec6f1e53b22d01e628b79b99f7a33960034e97e7 Mon Sep 17 00:00:00 2001 
     2From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Mon, 21 Nov 2011 00:53:26 +0100 
    4 Subject: [PATCH 29/72] MIPS: BCM63XX: enable pcie for BCM6362 
     4Subject: [PATCH 6/7] MIPS: BCM63XX: enable pcie for BCM6362 
    55 
    6 Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> 
     6The PCIe controller is almost the same as the BCM6328 one, with only 
     7the SERDES register being at a different location. 
     8 
     9Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    710--- 
    8  arch/mips/pci/pci-bcm63xx.c |   19 ++++++++++++++++--- 
    9  1 file changed, 16 insertions(+), 3 deletions(-) 
     11 arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h |    3 ++- 
     12 arch/mips/pci/pci-bcm63xx.c                       |   11 +++++++++-- 
     13 2 files changed, 11 insertions(+), 3 deletions(-) 
    1014 
    1115--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    1216+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    13 @@ -1401,7 +1401,8 @@ 
     17@@ -1365,7 +1365,8 @@ 
    1418 /************************************************************************* 
    1519  * _REG relative to RSET_MISC 
  • trunk/target/linux/brcm63xx/patches-3.8/100-MIPS-BCM63XX-add-USB-host-clock-enable-delay.patch

    r36406 r36407  
    1515--- a/arch/mips/bcm63xx/clk.c 
    1616+++ b/arch/mips/bcm63xx/clk.c 
    17 @@ -162,6 +162,11 @@ static void usbh_set(struct clk *clk, in 
    18                 bcm_hwclock_set(CKCTL_6348_USBH_EN, enable); 
     17@@ -177,6 +177,11 @@ static void usbh_set(struct clk *clk, in 
     18                bcm_hwclock_set(CKCTL_6362_USBH_EN, enable); 
    1919        else if (BCMCPU_IS_6368()) 
    2020                bcm_hwclock_set(CKCTL_6368_USBH_EN, enable); 
  • trunk/target/linux/brcm63xx/patches-3.8/101-MIPS-BCM63XX-add-USB-device-clock-enable-delay-to-cl.patch

    r36406 r36407  
    1818--- a/arch/mips/bcm63xx/clk.c 
    1919+++ b/arch/mips/bcm63xx/clk.c 
    20 @@ -182,6 +182,11 @@ static void usbd_set(struct clk *clk, in 
    21                 bcm_hwclock_set(CKCTL_6328_USBD_EN, enable); 
     20@@ -199,6 +199,11 @@ static void usbd_set(struct clk *clk, in 
     21                bcm_hwclock_set(CKCTL_6362_USBD_EN, enable); 
    2222        else if (BCMCPU_IS_6368()) 
    2323                bcm_hwclock_set(CKCTL_6368_USBD_EN, enable); 
  • trunk/target/linux/brcm63xx/patches-3.8/103-MIPS-BCM63XX-add-OHCI-EHCI-configuration-bits-to-com.patch

    r36406 r36407  
    110110+                               USBH_PRIV_TEST_6358_REG); 
    111111+ 
    112 +       } else if (BCMCPU_IS_6328() || BCMCPU_IS_6368()) { 
     112+       } else if (BCMCPU_IS_6328() || BCMCPU_IS_6362() || BCMCPU_IS_6368()) { 
    113113+               reg = bcm_rset_readl(RSET_USBH_PRIV, USBH_PRIV_SWAP_6368_REG); 
    114114+               reg &= ~USBH_PRIV_SWAP_OHCI_ENDN_MASK; 
     
    145145+                               USBH_PRIV_TEST_6358_REG); 
    146146+ 
    147 +       } else if (BCMCPU_IS_6328() || BCMCPU_IS_6368()) { 
     147+       } else if (BCMCPU_IS_6328() || BCMCPU_IS_6362() || BCMCPU_IS_6368()) { 
    148148+               reg = bcm_rset_readl(RSET_USBH_PRIV, USBH_PRIV_SWAP_6368_REG); 
    149149+               reg &= ~USBH_PRIV_SWAP_EHCI_ENDN_MASK; 
  • trunk/target/linux/brcm63xx/patches-3.8/104-MIPS-BCM63XX-introduce-BCM63XX_OHCI-configuration-sy.patch

    r36406 r36407  
    1717--- a/arch/mips/bcm63xx/Kconfig 
    1818+++ b/arch/mips/bcm63xx/Kconfig 
    19 @@ -1,33 +1,38 @@ 
     19@@ -1,37 +1,43 @@ 
    2020 menu "CPU support" 
    2121        depends on BCM63XX 
     
    5454+       select BCM63XX_OHCI 
    5555  
     56 config BCM63XX_CPU_6362 
     57        bool "support 6362 CPU" 
     58        select HW_HAS_PCI 
     59+       select BCM63XX_OHCI 
     60  
    5661 config BCM63XX_CPU_6368 
    5762        bool "support 6368 CPU" 
  • trunk/target/linux/brcm63xx/patches-3.8/106-MIPS-BCM63XX-register-OHCI-controller-if-board-enabl.patch

    r36406 r36407  
    2525 #include <board_bcm963xx.h> 
    2626  
    27 @@ -851,6 +852,9 @@ int __init board_register_devices(void) 
     27@@ -848,6 +849,9 @@ int __init board_register_devices(void) 
    2828        if (board.has_usbd) 
    2929                bcm63xx_usbd_register(&board.usbd); 
  • trunk/target/linux/brcm63xx/patches-3.8/107-MIPS-BCM63XX-introduce-BCM63XX_EHCI-configuration-sy.patch

    r36406 r36407  
    3838 config BCM63XX_CPU_6338 
    3939        bool "support 6338 CPU" 
    40 @@ -28,11 +35,13 @@ config BCM63XX_CPU_6358 
     40@@ -28,16 +35,19 @@ config BCM63XX_CPU_6358 
    4141        bool "support 6358 CPU" 
     42        select HW_HAS_PCI 
     43        select BCM63XX_OHCI 
     44+       select BCM63XX_EHCI 
     45  
     46 config BCM63XX_CPU_6362 
     47        bool "support 6362 CPU" 
    4248        select HW_HAS_PCI 
    4349        select BCM63XX_OHCI 
  • trunk/target/linux/brcm63xx/patches-3.8/108-MIPS-BCM63XX-add-support-for-the-on-chip-EHCI-contro.patch

    r36406 r36407  
    116116+int __init bcm63xx_ehci_register(void) 
    117117+{ 
    118 +       if (!BCMCPU_IS_6328() && !BCMCPU_IS_6358() && !BCMCPU_IS_6368()) 
     118+       if (!BCMCPU_IS_6328() && !BCMCPU_IS_6358() && !BCMCPU_IS_6362() && !BCMCPU_IS_6368()) 
    119119+               return 0; 
    120120+ 
  • trunk/target/linux/brcm63xx/patches-3.8/109-MIPS-BCM63XX-register-EHCI-controller-if-board-enabl.patch

    r36406 r36407  
    2525 #include <bcm63xx_dev_usb_usbd.h> 
    2626 #include <board_bcm963xx.h> 
    27 @@ -852,6 +853,9 @@ int __init board_register_devices(void) 
     27@@ -849,6 +850,9 @@ int __init board_register_devices(void) 
    2828        if (board.has_usbd) 
    2929                bcm63xx_usbd_register(&board.usbd); 
  • trunk/target/linux/brcm63xx/patches-3.8/306-MIPS-BCM63XX-expose-the-HS-SPI-clock.patch

    r36406 r36407  
    1111--- a/arch/mips/bcm63xx/clk.c 
    1212+++ b/arch/mips/bcm63xx/clk.c 
    13 @@ -217,6 +217,26 @@ static struct clk clk_spi = { 
     13@@ -236,6 +236,26 @@ static struct clk clk_spi = { 
    1414 }; 
    1515  
     
    3838  */ 
    3939 static void xtm_set(struct clk *clk, int enable) 
    40 @@ -319,6 +339,8 @@ struct clk *clk_get(struct device *dev, 
     40@@ -344,6 +364,8 @@ struct clk *clk_get(struct device *dev, 
    4141                return &clk_usbd; 
    4242        if (!strcmp(id, "spi")) 
  • trunk/target/linux/brcm63xx/patches-3.8/307-MIPS-BCM63XX-add-HSSPI-register-definitions.patch

    r36406 r36407  
    1212--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h 
    1313+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h 
    14 @@ -116,6 +116,7 @@ enum bcm63xx_regs_set { 
     14@@ -131,6 +131,7 @@ enum bcm63xx_regs_set { 
    1515        RSET_UART1, 
    1616        RSET_GPIO, 
     
    2020        RSET_OHCI0, 
    2121        RSET_OHCI_PRIV, 
    22 @@ -161,6 +162,7 @@ enum bcm63xx_regs_set { 
     22@@ -176,6 +177,7 @@ enum bcm63xx_regs_set { 
    2323 #define RSET_ENETDMA_SIZE              2048 
    2424 #define RSET_ENETSW_SIZE               65536 
     
    2828 #define RSET_OHCI_SIZE                 256 
    2929 #define RSET_EHCI_SIZE                 256 
    30 @@ -186,6 +188,7 @@ enum bcm63xx_regs_set { 
     30@@ -201,6 +203,7 @@ enum bcm63xx_regs_set { 
    3131 #define BCM_6328_UART1_BASE            (0xb0000120) 
    3232 #define BCM_6328_GPIO_BASE             (0xb0000080) 
     
    3636 #define BCM_6328_USBDMA_BASE           (0xb000c000) 
    3737 #define BCM_6328_OHCI0_BASE            (0xb0002600) 
    38 @@ -232,6 +235,7 @@ enum bcm63xx_regs_set { 
     38@@ -247,6 +250,7 @@ enum bcm63xx_regs_set { 
    3939 #define BCM_6338_UART1_BASE            (0xdeadbeef) 
    4040 #define BCM_6338_GPIO_BASE             (0xfffe0400) 
     
    4444 #define BCM_6338_USBDMA_BASE           (0xfffe2400) 
    4545 #define BCM_6338_OHCI0_BASE            (0xdeadbeef) 
    46 @@ -279,6 +283,7 @@ enum bcm63xx_regs_set { 
     46@@ -294,6 +298,7 @@ enum bcm63xx_regs_set { 
    4747 #define BCM_6345_UART1_BASE            (0xdeadbeef) 
    4848 #define BCM_6345_GPIO_BASE             (0xfffe0400) 
     
    5252 #define BCM_6345_USBDMA_BASE           (0xfffe2800) 
    5353 #define BCM_6345_ENET0_BASE            (0xfffe1800) 
    54 @@ -325,6 +330,7 @@ enum bcm63xx_regs_set { 
     54@@ -340,6 +345,7 @@ enum bcm63xx_regs_set { 
    5555 #define BCM_6348_UART1_BASE            (0xdeadbeef) 
    5656 #define BCM_6348_GPIO_BASE             (0xfffe0400) 
     
    6060 #define BCM_6348_USBDMA_BASE           (0xdeadbeef) 
    6161 #define BCM_6348_OHCI0_BASE            (0xfffe1b00) 
    62 @@ -370,6 +376,7 @@ enum bcm63xx_regs_set { 
     62@@ -385,6 +391,7 @@ enum bcm63xx_regs_set { 
    6363 #define BCM_6358_UART1_BASE            (0xfffe0120) 
    6464 #define BCM_6358_GPIO_BASE             (0xfffe0080) 
     
    6868 #define BCM_6358_USBDMA_BASE           (0xdeadbeef) 
    6969 #define BCM_6358_OHCI0_BASE            (0xfffe1400) 
    70 @@ -416,6 +423,7 @@ enum bcm63xx_regs_set { 
     70@@ -487,6 +494,7 @@ enum bcm63xx_regs_set { 
    7171 #define BCM_6368_UART1_BASE            (0xb0000120) 
    7272 #define BCM_6368_GPIO_BASE             (0xb0000080) 
     
    7676 #define BCM_6368_USBDMA_BASE           (0xb0004800) 
    7777 #define BCM_6368_OHCI0_BASE            (0xb0001600) 
    78 @@ -467,6 +475,7 @@ extern const unsigned long *bcm63xx_regs 
     78@@ -538,6 +546,7 @@ extern const unsigned long *bcm63xx_regs 
    7979        __GEN_RSET_BASE(__cpu, UART1)                                   \ 
    8080        __GEN_RSET_BASE(__cpu, GPIO)                                    \ 
     
    8484        __GEN_RSET_BASE(__cpu, OHCI0)                                   \ 
    8585        __GEN_RSET_BASE(__cpu, OHCI_PRIV)                               \ 
    86 @@ -510,6 +519,7 @@ extern const unsigned long *bcm63xx_regs 
     86@@ -581,6 +590,7 @@ extern const unsigned long *bcm63xx_regs 
    8787        [RSET_UART1]            = BCM_## __cpu ##_UART1_BASE,           \ 
    8888        [RSET_GPIO]             = BCM_## __cpu ##_GPIO_BASE,            \ 
     
    9292        [RSET_OHCI0]            = BCM_## __cpu ##_OHCI0_BASE,           \ 
    9393        [RSET_OHCI_PRIV]        = BCM_## __cpu ##_OHCI_PRIV_BASE,       \ 
    94 @@ -584,6 +594,7 @@ enum bcm63xx_irq { 
     94@@ -658,6 +668,7 @@ enum bcm63xx_irq { 
    9595        IRQ_ENET0, 
    9696        IRQ_ENET1, 
     
    100100        IRQ_EHCI0, 
    101101        IRQ_USBD, 
    102 @@ -626,6 +637,7 @@ enum bcm63xx_irq { 
     102@@ -700,6 +711,7 @@ enum bcm63xx_irq { 
    103103 #define BCM_6328_ENET0_IRQ             0 
    104104 #define BCM_6328_ENET1_IRQ             0 
     
    108108 #define BCM_6328_EHCI0_IRQ             (BCM_6328_HIGH_IRQ_BASE + 10) 
    109109 #define BCM_6328_USBD_IRQ              (IRQ_INTERNAL_BASE + 4) 
    110 @@ -671,6 +683,7 @@ enum bcm63xx_irq { 
     110@@ -745,6 +757,7 @@ enum bcm63xx_irq { 
    111111 #define BCM_6338_ENET0_IRQ             (IRQ_INTERNAL_BASE + 8) 
    112112 #define BCM_6338_ENET1_IRQ             0 
     
    116116 #define BCM_6338_EHCI0_IRQ             0 
    117117 #define BCM_6338_USBD_IRQ              0 
    118 @@ -709,6 +722,7 @@ enum bcm63xx_irq { 
     118@@ -783,6 +796,7 @@ enum bcm63xx_irq { 
    119119 #define BCM_6345_ENET0_IRQ             (IRQ_INTERNAL_BASE + 8) 
    120120 #define BCM_6345_ENET1_IRQ             0 
     
    124124 #define BCM_6345_EHCI0_IRQ             0 
    125125 #define BCM_6345_USBD_IRQ              0 
    126 @@ -747,6 +761,7 @@ enum bcm63xx_irq { 
     126@@ -821,6 +835,7 @@ enum bcm63xx_irq { 
    127127 #define BCM_6348_ENET0_IRQ             (IRQ_INTERNAL_BASE + 8) 
    128128 #define BCM_6348_ENET1_IRQ             (IRQ_INTERNAL_BASE + 7) 
     
    132132 #define BCM_6348_EHCI0_IRQ             0 
    133133 #define BCM_6348_USBD_IRQ              0 
    134 @@ -785,6 +800,7 @@ enum bcm63xx_irq { 
     134@@ -859,6 +874,7 @@ enum bcm63xx_irq { 
    135135 #define BCM_6358_ENET0_IRQ             (IRQ_INTERNAL_BASE + 8) 
    136136 #define BCM_6358_ENET1_IRQ             (IRQ_INTERNAL_BASE + 6) 
     
    140140 #define BCM_6358_EHCI0_IRQ             (IRQ_INTERNAL_BASE + 10) 
    141141 #define BCM_6358_USBD_IRQ              0 
    142 @@ -832,6 +848,7 @@ enum bcm63xx_irq { 
     142@@ -971,6 +987,7 @@ enum bcm63xx_irq { 
    143143 #define BCM_6368_ENET0_IRQ             0 
    144144 #define BCM_6368_ENET1_IRQ             0 
     
    148148 #define BCM_6368_EHCI0_IRQ             (IRQ_INTERNAL_BASE + 7) 
    149149 #define BCM_6368_USBD_IRQ              (IRQ_INTERNAL_BASE + 8) 
    150 @@ -879,6 +896,7 @@ extern const int *bcm63xx_irqs; 
     150@@ -1018,6 +1035,7 @@ extern const int *bcm63xx_irqs; 
    151151        [IRQ_ENET0]             = BCM_## __cpu ##_ENET0_IRQ,            \ 
    152152        [IRQ_ENET1]             = BCM_## __cpu ##_ENET1_IRQ,            \ 
     
    158158--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    159159+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    160 @@ -1409,4 +1409,51 @@ 
     160@@ -1434,4 +1434,51 @@ 
    161161  
    162162 #define PCIE_DEVICE_OFFSET             0x8000 
  • trunk/target/linux/brcm63xx/patches-3.8/309-cfe_version_mod.patch

    r36406 r36407  
    1212--- a/drivers/mtd/bcm63xxpart.c 
    1313+++ b/drivers/mtd/bcm63xxpart.c 
    14 @@ -54,10 +54,10 @@ static int bcm63xx_detect_cfe(struct mtd 
     14@@ -56,10 +56,10 @@ static int bcm63xx_detect_cfe(struct mtd 
    1515        if (ret) 
    1616                return ret; 
  • trunk/target/linux/brcm63xx/patches-3.8/401-bcm963xx_real_rootfs_length.patch

    r36406 r36407  
    1616--- a/drivers/mtd/bcm63xxpart.c 
    1717+++ b/drivers/mtd/bcm63xxpart.c 
    18 @@ -131,7 +131,8 @@ static int bcm63xx_parse_cfe_partitions( 
     18@@ -134,7 +134,8 @@ static int bcm63xx_parse_cfe_partitions( 
    1919                } else { 
    2020                        /* OpenWrt layout */ 
  • trunk/target/linux/brcm63xx/patches-3.8/404-NET-bcm63xx_enet-move-phy_-dis-connect-into-probe-re.patch

    r36406 r36407  
    101101 } 
    102102  
    103 @@ -1714,6 +1673,8 @@ static int bcm_enet_probe(struct platfor 
     103@@ -1708,6 +1667,8 @@ static int bcm_enet_probe(struct platfor 
    104104  
    105105        /* MII bus registration */ 
     
    110110                priv->mii_bus = mdiobus_alloc(); 
    111111                if (!priv->mii_bus) { 
    112 @@ -1750,6 +1711,38 @@ static int bcm_enet_probe(struct platfor 
     112@@ -1745,6 +1706,38 @@ static int bcm_enet_probe(struct platfor 
    113113                        dev_err(&pdev->dev, "unable to register mdio bus\n"); 
    114114                        goto out_free_mdio; 
     
    149149  
    150150                /* run platform code to initialize PHY device */ 
    151 @@ -1795,6 +1788,9 @@ static int bcm_enet_probe(struct platfor 
     151@@ -1790,6 +1783,9 @@ static int bcm_enet_probe(struct platfor 
    152152        return 0; 
    153153  
     
    156156+               phy_disconnect(priv->phydev); 
    157157+ 
    158         if (priv->mii_bus) { 
     158        if (priv->mii_bus) 
    159159                mdiobus_unregister(priv->mii_bus); 
    160                 kfree(priv->mii_bus->irq); 
    161 @@ -1845,6 +1841,8 @@ static int bcm_enet_remove(struct platfo 
     160  
     161@@ -1831,6 +1827,8 @@ static int bcm_enet_remove(struct platfo 
    162162        enet_writel(priv, 0, ENET_MIISC_REG); 
    163163  
     
    166166+               priv->phydev = NULL; 
    167167                mdiobus_unregister(priv->mii_bus); 
    168                 kfree(priv->mii_bus->irq); 
    169168                mdiobus_free(priv->mii_bus); 
     169        } else { 
  • trunk/target/linux/brcm63xx/patches-3.8/406-bcm63xx_enet-split-dma-registers-access.patch

    r36406 r36407  
    1 From 305579c1f946ed1aa6c125252ace21c53d47c11d Mon Sep 17 00:00:00 2001 
     1From 2e5b0197443fcb454ca88619e36bb33d7a79e3ea Mon Sep 17 00:00:00 2001 
    22From: Maxime Bizon <mbizon@freebox.fr> 
    33Date: Thu, 21 Jan 2010 17:50:54 +0100 
    4 Subject: [PATCH 30/63] bcm63xx_enet: split dma registers access. 
     4Subject: [PATCH] bcm63xx_enet: split dma registers access. 
    55 
    66--- 
    77 arch/mips/bcm63xx/dev-enet.c                     |   23 +++- 
    88 arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h |    4 +- 
    9  drivers/net/ethernet/broadcom/bcm63xx_enet.c     |  179 ++++++++++++++-------- 
    10  3 files changed, 138 insertions(+), 68 deletions(-) 
     9 drivers/net/ethernet/broadcom/bcm63xx_enet.c     |  144 +++++++++++++--------- 
     10 3 files changed, 111 insertions(+), 62 deletions(-) 
    1111 
    1212--- a/arch/mips/bcm63xx/dev-enet.c 
     
    305305  
    306306        res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 
    307 @@ -1904,30 +1926,61 @@ struct platform_driver bcm63xx_enet_driv 
     307@@ -1883,14 +1905,24 @@ struct platform_driver bcm63xx_enet_driv 
    308308 static int bcm_enet_shared_probe(struct platform_device *pdev) 
    309309 { 
    310310        struct resource *res; 
    311 +       int ret, i, requested[3]; 
     311+       void __iomem *p[3]; 
     312+       unsigned int i; 
    312313  
    313314-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 
    314315-       if (!res) 
    315316-               return -ENODEV; 
    316 +       memset(bcm_enet_shared_base, 0, sizeof (bcm_enet_shared_base)); 
    317 +       memset(requested, 0, sizeof (requested)); 
    318   
    319 -       if (!request_mem_region(res->start, resource_size(res), 
    320 -                               "bcm63xx_enet_dma")) 
    321 -               return -EBUSY; 
    322 +       for (i = 0; i < 3; i++) { 
    323 +               void __iomem *p; 
    324   
    325 -       bcm_enet_shared_base = ioremap(res->start, resource_size(res)); 
    326 -       if (!bcm_enet_shared_base) { 
    327 -               release_mem_region(res->start, resource_size(res)); 
     317+       memset(bcm_enet_shared_base, 0, sizeof(bcm_enet_shared_base)); 
     318  
     319-       bcm_enet_shared_base = devm_request_and_ioremap(&pdev->dev, res); 
     320-       if (!bcm_enet_shared_base) 
    328321-               return -ENOMEM; 
    329 +               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
    330 +               if (!res) { 
    331 +                       ret = -EINVAL; 
    332 +                       goto fail; 
    333 +               } 
    334 + 
    335 +               if (!request_mem_region(res->start, resource_size(res), 
    336 +                                       "bcm63xx_enet_dma")) { 
    337 +                       ret = -EBUSY; 
    338 +                       goto fail; 
    339 +               } 
    340 +               requested[i] = 0; 
    341 + 
    342 +               p = ioremap(res->start, resource_size(res)); 
    343 +               if (!p) { 
    344 +                       ret = -ENOMEM; 
    345 +                       goto fail; 
    346 +               } 
    347 + 
    348 +               bcm_enet_shared_base[i] = p; 
    349         } 
    350 + 
    351         return 0; 
    352 + 
    353 +fail: 
    354322+       for (i = 0; i < 3; i++) { 
    355323+               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
    356324+               if (!res) 
    357 +                       continue; 
    358 +               if (bcm_enet_shared_base[i]) 
    359 +                       iounmap(bcm_enet_shared_base[i]); 
    360 +               if (requested[i]) 
    361 +                       release_mem_region(res->start, resource_size(res)); 
     325+                       return -EINVAL; 
     326+ 
     327+               p[i] = devm_request_and_ioremap(&pdev->dev, res); 
     328+               if (!p[i]) 
     329+                       return -ENOMEM; 
     330+ 
     331+               bcm_enet_shared_base[i] = p; 
    362332+       } 
    363 +       return ret; 
    364  } 
    365   
    366  static int bcm_enet_shared_remove(struct platform_device *pdev) 
    367  { 
    368         struct resource *res; 
    369 +       int i; 
    370   
    371 -       iounmap(bcm_enet_shared_base); 
    372 -       res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 
    373 -       release_mem_region(res->start, resource_size(res)); 
    374 +       for (i = 0; i < 3; i++) { 
    375 +               iounmap(bcm_enet_shared_base[i]); 
    376 +               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
    377 +               release_mem_region(res->start, resource_size(res)); 
    378 +       } 
     333+ 
     334+       memcpy(bcm_enet_shared_base, p, sizeof(bcm_enet_shared_base)); 
     335  
    379336        return 0; 
    380337 } 
    381   
  • trunk/target/linux/brcm63xx/patches-3.8/407-bcm63xx_enet-add-support-for-bcm6368-internal-ethern.patch

    r36406 r36407  
    1 From 1324bb5db6815d19b09c1b7bcac3cc2804412205 Mon Sep 17 00:00:00 2001 
     1From d16c1a1410f6c35a835baaa445774b4421db6c96 Mon Sep 17 00:00:00 2001 
    22From: Maxime Bizon <mbizon@freebox.fr> 
    33Date: Sat, 23 Jan 2010 03:01:02 +0100 
    4 Subject: [PATCH 31/63] bcm63xx_enet: add support for bcm6368 internal ethernet switch. 
     4Subject: [PATCH 8/8] bcm63xx_enet: add support for bcm6368 internal ethernet 
     5 switch. 
    56 
     7Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    68--- 
    7  arch/mips/bcm63xx/dev-enet.c                       |  106 ++- 
    8  .../include/asm/mach-bcm63xx/bcm63xx_dev_enet.h    |   25 + 
     9 arch/mips/bcm63xx/boards/board_bcm963xx.c          |    4 + 
     10 arch/mips/bcm63xx/dev-enet.c                       |  113 ++- 
     11 .../include/asm/mach-bcm63xx/bcm63xx_dev_enet.h    |   28 + 
    912 arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h  |   50 + 
    10  drivers/net/ethernet/broadcom/bcm63xx_enet.c       | 1054 ++++++++++++++++++-- 
    11  drivers/net/ethernet/broadcom/bcm63xx_enet.h       |   71 ++ 
    12  5 files changed, 1221 insertions(+), 85 deletions(-) 
     13 .../mips/include/asm/mach-bcm63xx/board_bcm963xx.h |    2 + 
     14 drivers/net/ethernet/broadcom/bcm63xx_enet.c       | 1018 +++++++++++++++++++- 
     15 drivers/net/ethernet/broadcom/bcm63xx_enet.h       |   75 ++ 
     16 8 files changed, 1239 insertions(+), 66 deletions(-) 
    1317 
    1418--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    1519+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    16 @@ -927,6 +927,10 @@ int __init board_register_devices(void) 
    17         if (board.has_usbd) 
    18                 bcm63xx_usbd_register(&board.usbd); 
     20@@ -924,6 +924,10 @@ int __init board_register_devices(void) 
     21            !bcm63xx_nvram_get_mac_address(board.enet1.mac_addr)) 
     22                bcm63xx_enet_register(1, &board.enet1); 
    1923  
    2024+       if (board.has_enetsw && 
     
    2226+               bcm63xx_enetsw_register(&board.enetsw); 
    2327+ 
    24         if (board.has_ehci0) 
    25                 bcm63xx_ehci_register(); 
    26   
    27 --- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 
    28 +++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 
    29 @@ -25,6 +25,7 @@ struct board_info { 
    30         /* enabled feature/device */ 
    31         unsigned int    has_enet0:1; 
    32         unsigned int    has_enet1:1; 
    33 +       unsigned int    has_enetsw:1; 
    34         unsigned int    has_pci:1; 
    35         unsigned int    has_pccard:1; 
    36         unsigned int    has_ohci0:1; 
    37 @@ -37,6 +38,7 @@ struct board_info { 
    38         /* ethernet config */ 
    39         struct bcm63xx_enet_platform_data enet0; 
    40         struct bcm63xx_enet_platform_data enet1; 
    41 +       struct bcm63xx_enetsw_platform_data enetsw; 
    42   
    43         /* USB config */ 
    44         struct bcm63xx_usbd_platform_data usbd; 
     28        if (board.has_usbd) 
     29                bcm63xx_usbd_register(&board.usbd); 
     30  
    4531--- a/arch/mips/bcm63xx/dev-enet.c 
    4632+++ b/arch/mips/bcm63xx/dev-enet.c 
     
    8672+       shared_res[0].end += (RSET_ENETDMA_SIZE)  - 1; 
    8773+ 
    88 +       if (BCMCPU_IS_6368()) 
     74+       if (BCMCPU_IS_6328() || BCMCPU_IS_6362() || BCMCPU_IS_6368()) 
    8975+               chan_count = 32; 
    9076+       else 
     
    138124        if (unit == 0) { 
    139125                enet0_res[0].start = bcm63xx_regset_address(RSET_ENET0); 
    140 @@ -175,3 +218,30 @@ int __init bcm63xx_enet_register(int uni 
     126@@ -175,3 +218,37 @@ int __init bcm63xx_enet_register(int uni 
    141127                return ret; 
    142128        return 0; 
     
    148134+       int ret; 
    149135+ 
    150 +       if (!BCMCPU_IS_6368()) 
     136+       if (!BCMCPU_IS_6328() && !BCMCPU_IS_6362() && !BCMCPU_IS_6368()) 
    151137+               return -ENODEV; 
    152138+ 
     
    160146+       enetsw_res[1].start = bcm63xx_get_irq_number(IRQ_ENETSW_RXDMA0); 
    161147+       enetsw_res[2].start = bcm63xx_get_irq_number(IRQ_ENETSW_TXDMA0); 
    162 + 
    163 +       memcpy(bcm63xx_enetsw_device.dev.platform_data, pd, sizeof (*pd)); 
     148+       if (!enetsw_res[2].start) 
     149+               enetsw_res[2].start = -1; 
     150+ 
     151+       memcpy(bcm63xx_enetsw_device.dev.platform_data, pd, sizeof(*pd)); 
     152+ 
     153+       if (BCMCPU_IS_6328()) 
     154+               enetsw_pd.num_ports = ENETSW_PORTS_6328; 
     155+       else if (BCMCPU_IS_6362() || BCMCPU_IS_6368()) 
     156+               enetsw_pd.num_ports = ENETSW_PORTS_6368; 
    164157+ 
    165158+       ret = platform_device_register(&bcm63xx_enetsw_device); 
     
    171164--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h 
    172165+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h 
    173 @@ -39,7 +39,32 @@ struct bcm63xx_enet_platform_data { 
     166@@ -39,7 +39,35 @@ struct bcm63xx_enet_platform_data { 
    174167                                            int phy_id, int reg, int val)); 
    175168 }; 
     
    178171+ * on board ethernet switch platform data 
    179172+ */ 
    180 +#define ENETSW_MAX_PORT        6 
     173+#define ENETSW_MAX_PORT        8 
     174+#define ENETSW_PORTS_6328 5 /* 4 FE PHY + 1 RGMII */ 
     175+#define ENETSW_PORTS_6368 6 /* 4 FE PHY + 2 RGMII */ 
     176+ 
     177+#define ENETSW_RGMII_PORT0     4 
    181178+ 
    182179+struct bcm63xx_enetsw_port { 
    183180+       int             used; 
    184 +       int             external_phy; 
    185181+       int             phy_id; 
    186182+ 
     
    194190+struct bcm63xx_enetsw_platform_data { 
    195191+       char mac_addr[ETH_ALEN]; 
     192+       int num_ports; 
    196193+       struct bcm63xx_enetsw_port used_ports[ENETSW_MAX_PORT]; 
    197194+}; 
     
    200197                                 const struct bcm63xx_enet_platform_data *pd); 
    201198  
    202 +int __init 
    203 +bcm63xx_enetsw_register(const struct bcm63xx_enetsw_platform_data *pd); 
     199+int bcm63xx_enetsw_register(const struct bcm63xx_enetsw_platform_data *pd); 
    204200+ 
    205201 #endif /* ! BCM63XX_DEV_ENET_H_ */ 
     
    267263 /************************************************************************* 
    268264  * _REG relative to RSET_OHCI_PRIV 
     265--- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 
     266+++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 
     267@@ -25,6 +25,7 @@ struct board_info { 
     268        /* enabled feature/device */ 
     269        unsigned int    has_enet0:1; 
     270        unsigned int    has_enet1:1; 
     271+       unsigned int    has_enetsw:1; 
     272        unsigned int    has_pci:1; 
     273        unsigned int    has_pccard:1; 
     274        unsigned int    has_ohci0:1; 
     275@@ -37,6 +38,7 @@ struct board_info { 
     276        /* ethernet config */ 
     277        struct bcm63xx_enet_platform_data enet0; 
     278        struct bcm63xx_enet_platform_data enet1; 
     279+       struct bcm63xx_enetsw_platform_data enetsw; 
     280  
     281        /* USB config */ 
     282        struct bcm63xx_usbd_platform_data usbd; 
    269283--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    270284+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
     
    319333  */ 
    320334 static inline u32 enet_dma_readl(struct bcm_enet_priv *priv, u32 off) 
    321 @@ -321,7 +364,8 @@ static int bcm_enet_receive_queue(struct 
     335@@ -218,7 +261,6 @@ static int bcm_enet_refill_rx(struct net 
     336                        if (!skb) 
     337                                break; 
     338                        priv->rx_skb[desc_idx] = skb; 
     339- 
     340                        p = dma_map_single(&priv->pdev->dev, skb->data, 
     341                                           priv->rx_skb_size, 
     342                                           DMA_FROM_DEVICE); 
     343@@ -321,7 +363,8 @@ static int bcm_enet_receive_queue(struct 
    322344                } 
    323345  
    324346                /* recycle packet if it's marked as bad */ 
    325347-               if (unlikely(len_stat & DMADESC_ERR_MASK)) { 
    326 +               if (!bcm_enet_is_sw(priv) && 
     348+               if (!priv->enet_is_sw && 
    327349+                   unlikely(len_stat & DMADESC_ERR_MASK)) { 
    328350                        dev->stats.rx_errors++; 
    329351  
    330352                        if (len_stat & DMADESC_OVSIZE_MASK) 
    331 @@ -552,6 +596,26 @@ static int bcm_enet_start_xmit(struct sk 
     353@@ -552,6 +595,26 @@ static int bcm_enet_start_xmit(struct sk 
    332354                goto out_unlock; 
    333355        } 
    334356  
    335357+       /* pad small packets sent on a switch device */ 
    336 +       if (bcm_enet_is_sw(priv) && skb->len < 64) { 
     358+       if (priv->enet_is_sw && skb->len < 64) { 
    337359+               int needed = 64 - skb->len; 
    338360+               char *data; 
     
    356378        desc = &priv->tx_desc_cpu[priv->tx_curr_desc]; 
    357379        priv->tx_skb[priv->tx_curr_desc] = skb; 
    358 @@ -1921,96 +1985,951 @@ struct platform_driver bcm63xx_enet_driv 
     380@@ -931,9 +994,9 @@ static int bcm_enet_open(struct net_devi 
     381        enet_writel(priv, priv->hw_mtu, ENET_TXMAXLEN_REG); 
     382  
     383        /* set dma maximum burst len */ 
     384-       enet_dmac_writel(priv, BCMENET_DMA_MAXBURST, 
     385+       enet_dmac_writel(priv, priv->dma_maxburst, 
     386                         ENETDMAC_MAXBURST_REG(priv->rx_chan)); 
     387-       enet_dmac_writel(priv, BCMENET_DMA_MAXBURST, 
     388+       enet_dmac_writel(priv, priv->dma_maxburst, 
     389                         ENETDMAC_MAXBURST_REG(priv->tx_chan)); 
     390  
     391        /* set correct transmit fifo watermark */ 
     392@@ -1529,7 +1592,7 @@ static int compute_hw_mtu(struct bcm_ene 
     393         * it's appended 
     394         */ 
     395        priv->rx_skb_size = ALIGN(actual_mtu + ETH_FCS_LEN, 
     396-                                 BCMENET_DMA_MAXBURST * 4); 
     397+                                 priv->dma_maxburst * 4); 
     398        return 0; 
     399 } 
     400  
     401@@ -1636,6 +1699,9 @@ static int bcm_enet_probe(struct platfor 
     402                return -ENOMEM; 
     403        priv = netdev_priv(dev); 
     404  
     405+       priv->enet_is_sw = false; 
     406+       priv->dma_maxburst = BCMENET_DMA_MAXBURST; 
     407+ 
     408        ret = compute_hw_mtu(priv, dev->mtu); 
     409        if (ret) 
     410                goto out; 
     411@@ -1900,65 +1966,928 @@ struct platform_driver bcm63xx_enet_driv 
    359412 }; 
    360413  
     
    368421 { 
    369422-       struct resource *res; 
    370 -       int ret, i, requested[3]; 
     423-       void __iomem *p[3]; 
     424-       unsigned int i; 
    371425+       u32 reg; 
    372426+       int ret; 
    373427  
    374 -       memset(bcm_enet_shared_base, 0, sizeof (bcm_enet_shared_base)); 
    375 -       memset(requested, 0, sizeof (requested)); 
     428-       memset(bcm_enet_shared_base, 0, sizeof(bcm_enet_shared_base)); 
    376429+       spin_lock_bh(&priv->enetsw_mdio_lock); 
    377430+       enetsw_writel(priv, 0, ENETSW_MDIOC_REG); 
    378431  
    379432-       for (i = 0; i < 3; i++) { 
    380 -               void __iomem *p; 
     433-               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
     434-               if (!res) 
     435-                       return -EINVAL; 
    381436+       reg = ENETSW_MDIOC_RD_MASK | 
    382437+               (phy_id << ENETSW_MDIOC_PHYID_SHIFT) | 
     
    393448+} 
    394449  
    395 -               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
    396 -               if (!res) { 
    397 -                       ret = -EINVAL; 
    398 -                       goto fail; 
    399 -               } 
     450-               p[i] = devm_request_and_ioremap(&pdev->dev, res); 
     451-               if (!p[i]) 
     452-                       return -ENOMEM; 
    400453+static void bcmenet_sw_mdio_write(struct bcm_enet_priv *priv, 
    401454+                                int ext, int phy_id, int location, 
     
    404457+       u32 reg; 
    405458  
    406 -               if (!request_mem_region(res->start, resource_size(res), 
    407 -                                       "bcm63xx_enet_dma")) { 
    408 -                       ret = -EBUSY; 
    409 -                       goto fail; 
    410 -               } 
    411 -               requested[i] = 0; 
     459-               bcm_enet_shared_base[i] = p; 
     460-       } 
    412461+       spin_lock_bh(&priv->enetsw_mdio_lock); 
    413462+       enetsw_writel(priv, 0, ENETSW_MDIOC_REG); 
    414463  
    415 -               p = ioremap(res->start, resource_size(res)); 
    416 -               if (!p) { 
    417 -                       ret = -ENOMEM; 
    418 -                       goto fail; 
    419 -               } 
     464-       memcpy(bcm_enet_shared_base, p, sizeof(bcm_enet_shared_base)); 
    420465+       reg = ENETSW_MDIOC_WR_MASK | 
    421466+               (phy_id << ENETSW_MDIOC_PHYID_SHIFT) | 
    422467+               (location << ENETSW_MDIOC_REG_SHIFT); 
    423468  
    424 -               bcm_enet_shared_base[i] = p; 
    425 -       } 
     469-       return 0; 
     470-} 
    426471+       if (ext) 
    427472+               reg |= ENETSW_MDIOC_EXT_MASK; 
    428473  
     474-static int bcm_enet_shared_remove(struct platform_device *pdev) 
     475-{ 
    429476-       return 0; 
    430477+       reg |= data; 
    431   
    432 -fail: 
    433 -       for (i = 0; i < 3; i++) { 
    434 -               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
    435 -               if (!res) 
    436 -                       continue; 
    437 -               if (bcm_enet_shared_base[i]) 
    438 -                       iounmap(bcm_enet_shared_base[i]); 
    439 -               if (requested[i]) 
    440 -                       release_mem_region(res->start, resource_size(res)); 
    441 -       } 
    442 -       return ret; 
     478+ 
    443479+       enetsw_writel(priv, reg, ENETSW_MDIOC_REG); 
    444480+       udelay(50); 
     
    446482 } 
    447483  
    448 -static int bcm_enet_shared_remove(struct platform_device *pdev) 
    449 +/* 
     484 /* 
     485- * this "shared" driver is needed because both macs share a single 
     486- * address space 
    450487+ * enet sw PHY polling 
    451 + */ 
     488  */ 
     489-struct platform_driver bcm63xx_enet_shared_driver = { 
     490-       .probe  = bcm_enet_shared_probe, 
     491-       .remove = bcm_enet_shared_remove, 
     492-       .driver = { 
     493-               .name   = "bcm63xx_enet_shared", 
     494-               .owner  = THIS_MODULE, 
     495-       }, 
     496-}; 
    452497+static void swphy_poll_timer(unsigned long data) 
    453  { 
    454 -       struct resource *res; 
    455 -       int i; 
     498+{ 
    456499+       struct bcm_enet_priv *priv = (struct bcm_enet_priv *)data; 
    457500+       unsigned int i; 
    458   
    459 -       for (i = 0; i < 3; i++) { 
    460 -               iounmap(bcm_enet_shared_base[i]); 
    461 -               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
    462 -               release_mem_region(res->start, resource_size(res)); 
    463 +       for (i = 0; i < ARRAY_SIZE(priv->used_ports); i++) { 
     501+ 
     502+       for (i = 0; i < priv->num_ports; i++) { 
    464503+               struct bcm63xx_enetsw_port *port; 
    465504+               int val, j, up, advertise, lpa, lpa2, speed, duplex, media; 
     505+               int external_phy = bcm_enet_port_is_rgmii(i); 
    466506+               u8 override; 
    467507+ 
     
    475515+               /* dummy read to clear */ 
    476516+               for (j = 0; j < 2; j++) 
    477 +                       val = bcmenet_sw_mdio_read(priv, port->external_phy, 
     517+                       val = bcmenet_sw_mdio_read(priv, external_phy, 
    478518+                                                  port->phy_id, MII_BMSR); 
    479519+ 
     
    499539+               } 
    500540+ 
    501 +               advertise = bcmenet_sw_mdio_read(priv, port->external_phy, 
     541+               advertise = bcmenet_sw_mdio_read(priv, external_phy, 
    502542+                                                port->phy_id, MII_ADVERTISE); 
    503543+ 
    504 +               lpa = bcmenet_sw_mdio_read(priv, port->external_phy, 
    505 +                                          port->phy_id, MII_LPA); 
    506 + 
    507 +               lpa2 = bcmenet_sw_mdio_read(priv, port->external_phy, 
    508 +                                          port->phy_id, MII_STAT1000); 
     544+               lpa = bcmenet_sw_mdio_read(priv, external_phy, port->phy_id, 
     545+                                          MII_LPA); 
     546+ 
     547+               lpa2 = bcmenet_sw_mdio_read(priv, external_phy, port->phy_id, 
     548+                                          MII_STAT1000); 
    509549+ 
    510550+               /* figure out media and duplex from advertise and LPA values */ 
     
    539579+               enetsw_writeb(priv, override, ENETSW_PORTOV_REG(i)); 
    540580+               enetsw_writeb(priv, 0, ENETSW_PTCTRL_REG(i)); 
    541         } 
    542 -       return 0; 
    543 -} 
    544   
    545 -/* 
    546 - * this "shared" driver is needed because both macs share a single 
    547 - * address space 
    548 - */ 
    549 -struct platform_driver bcm63xx_enet_shared_driver = { 
    550 -       .probe  = bcm_enet_shared_probe, 
    551 -       .remove = bcm_enet_shared_remove, 
    552 -       .driver = { 
    553 -               .name   = "bcm63xx_enet_shared", 
    554 -               .owner  = THIS_MODULE, 
    555 -       }, 
    556 -}; 
     581+       } 
     582+ 
    557583+       priv->swphy_poll.expires = jiffies + HZ; 
    558584+       add_timer(&priv->swphy_poll); 
     
    575601  
    576602-       ret = platform_driver_register(&bcm63xx_enet_shared_driver); 
     603-       if (ret) 
     604-               return ret; 
    577605+       priv = netdev_priv(dev); 
    578606+       kdev = &priv->pdev->dev; 
    579 + 
     607  
     608-       ret = platform_driver_register(&bcm63xx_enet_driver); 
    580609+       /* mask all interrupts and request them */ 
    581610+       enet_dmac_writel(priv, 0, ENETDMAC_IRMASK_REG(priv->rx_chan)); 
     
    585614+                         IRQF_DISABLED, dev->name, dev); 
    586615        if (ret) 
    587 -               return ret; 
     616-               platform_driver_unregister(&bcm63xx_enet_shared_driver); 
    588617+               goto out_freeirq; 
    589   
    590 -       ret = platform_driver_register(&bcm63xx_enet_driver); 
    591 +       ret = request_irq(priv->irq_tx, bcm_enet_isr_dma, 
    592 +                         IRQF_DISABLED, dev->name, dev); 
    593         if (ret) 
    594 -               platform_driver_unregister(&bcm63xx_enet_shared_driver); 
    595 +               goto out_freeirq_rx; 
     618+ 
     619+       if (priv->irq_tx != -1) { 
     620+               ret = request_irq(priv->irq_tx, bcm_enet_isr_dma, 
     621+                                 IRQF_DISABLED, dev->name, dev); 
     622+               if (ret) 
     623+                       goto out_freeirq_rx; 
     624+       } 
    596625+ 
    597626+       /* allocate rx dma ring */ 
     
    648677+ 
    649678+       /* disable all ports */ 
    650 +       for (i = 0; i < 6; i++) { 
     679+       for (i = 0; i < priv->num_ports; i++) { 
    651680+               enetsw_writeb(priv, ENETSW_PORTOV_ENABLE_MASK, 
    652681+                             ENETSW_PORTOV_REG(i)); 
     
    654683+                             ENETSW_PTCTRL_TXDIS_MASK, 
    655684+                             ENETSW_PTCTRL_REG(i)); 
     685+ 
     686+               priv->sw_port_link[i] = 0; 
    656687+       } 
    657688+ 
     
    704735+ 
    705736+       /* set dma maximum burst len */ 
    706 +       enet_dmac_writel(priv, BCMENET_DMA_MAXBURST, 
     737+       enet_dmac_writel(priv, priv->dma_maxburst, 
    707738+                        ENETDMAC_MAXBURST_REG(priv->rx_chan)); 
    708 +       enet_dmac_writel(priv, BCMENET_DMA_MAXBURST, 
     739+       enet_dmac_writel(priv, priv->dma_maxburst, 
    709740+                        ENETDMAC_MAXBURST_REG(priv->tx_chan)); 
    710741+ 
     
    742773+        * apply override config for bypass_link ports here. 
    743774+        */ 
    744 +       for (i = 0; i < ARRAY_SIZE(priv->used_ports); i++) { 
     775+       for (i = 0; i < priv->num_ports; i++) { 
    745776+               struct bcm63xx_enetsw_port *port; 
    746777+               u8 override; 
     
    765796+                       break; 
    766797+               default: 
    767 +                       printk(KERN_WARNING "invalid forced speed on port %s: " 
    768 +                              "assume 10\n", 
     798+                       printk(KERN_WARNING "invalid forced speed on port %s: assume 10\n", 
    769799+                              port->name); 
    770800+                       break; 
     
    772802+ 
    773803+               if (port->force_duplex_full) 
    774 +                       override = ENETSW_IMPOV_FDX_MASK; 
     804+                       override |= ENETSW_IMPOV_FDX_MASK; 
    775805+ 
    776806+ 
     
    813843+ 
    814844+out_freeirq_tx: 
    815 +       free_irq(priv->irq_tx, dev); 
     845+       if (priv->irq_tx != -1) 
     846+               free_irq(priv->irq_tx, dev); 
    816847+ 
    817848+out_freeirq_rx: 
     
    870901+       dma_free_coherent(kdev, priv->tx_desc_alloc_size, 
    871902+                         priv->tx_desc_cpu, priv->tx_desc_dma); 
    872 +       free_irq(priv->irq_tx, dev); 
     903+       if (priv->irq_tx != -1) 
     904+               free_irq(priv->irq_tx, dev); 
    873905+       free_irq(priv->irq_rx, dev); 
    874906+ 
     
    886918+       int i; 
    887919+ 
    888 +       for (i = 0; i < (int)ARRAY_SIZE(priv->used_ports); ++i) { 
     920+       for (i = 0; i < priv->num_ports; ++i) { 
    889921+               if (!priv->used_ports[i].used) 
    890922+                       continue; 
    891923+               if (priv->used_ports[i].phy_id == phy_id) 
    892 +                       return priv->used_ports[i].external_phy; 
    893 +       } 
    894 + 
    895 +       printk_once(KERN_WARNING  "bcm63xx_enet: could not find a used port " 
    896 +              "with phy_id %i, assuming phy is external\n", phy_id); 
     924+                       return bcm_enet_port_is_rgmii(i); 
     925+       } 
     926+ 
     927+       printk_once(KERN_WARNING  "bcm63xx_enet: could not find a used port with phy_id %i, assuming phy is external\n", 
     928+                   phy_id); 
    897929+       return 1; 
    898930+} 
     
    10621094+                       hi = enetsw_readl(priv, ENETSW_MIB_REG(reg + 1)); 
    10631095+                       *(u64 *)p = ((u64)hi << 32 | lo); 
    1064 +               } else 
     1096+               } else { 
    10651097+                       *(u32 *)p = lo; 
     1098+               } 
    10661099+       } 
    10671100+ 
     
    11531186+       irq_rx = platform_get_irq(pdev, 0); 
    11541187+       irq_tx = platform_get_irq(pdev, 1); 
    1155 +       if (!res_mem || irq_rx < 0 || irq_tx < 0) 
     1188+       if (!res_mem || irq_rx < 0) 
    11561189+               return -ENODEV; 
    11571190+ 
     
    11641197+ 
    11651198+       /* initialize default and fetch platform data */ 
     1199+       priv->enet_is_sw = true; 
    11661200+       priv->irq_rx = irq_rx; 
    11671201+       priv->irq_tx = irq_tx; 
    11681202+       priv->rx_ring_size = BCMENET_DEF_RX_DESC; 
    11691203+       priv->tx_ring_size = BCMENET_DEF_TX_DESC; 
     1204+       priv->dma_maxburst = BCMENETSW_DMA_MAXBURST; 
    11701205+ 
    11711206+       pd = pdev->dev.platform_data; 
     
    11741209+               memcpy(priv->used_ports, pd->used_ports, 
    11751210+                      sizeof (pd->used_ports)); 
     1211+               priv->num_ports = pd->num_ports; 
    11761212+       } 
    11771213+ 
     
    12801316+{ 
    12811317+       struct resource *res; 
    1282 +       int ret, i, requested[3]; 
    1283 + 
    1284 +       memset(bcm_enet_shared_base, 0, sizeof (bcm_enet_shared_base)); 
    1285 +       memset(requested, 0, sizeof (requested)); 
    1286 + 
    1287 +       for (i = 0; i < 3; i++) { 
    1288 +               void __iomem *p; 
    1289 + 
    1290 +               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
    1291 +               if (!res) { 
    1292 +                       ret = -EINVAL; 
    1293 +                       goto fail; 
    1294 +               } 
    1295 + 
    1296 +               if (!request_mem_region(res->start, resource_size(res), 
    1297 +                                       "bcm63xx_enet_dma")) { 
    1298 +                       ret = -EBUSY; 
    1299 +                       goto fail; 
    1300 +               } 
    1301 +               requested[i] = 0; 
    1302 + 
    1303 +               p = ioremap(res->start, resource_size(res)); 
    1304 +               if (!p) { 
    1305 +                       ret = -ENOMEM; 
    1306 +                       goto fail; 
    1307 +               } 
    1308 + 
    1309 +               bcm_enet_shared_base[i] = p; 
    1310 +       } 
    1311 + 
    1312 +       return 0; 
    1313 + 
    1314 +fail: 
     1318+       void __iomem *p[3]; 
     1319+       unsigned int i; 
     1320+ 
     1321+       memset(bcm_enet_shared_base, 0, sizeof(bcm_enet_shared_base)); 
     1322+ 
    13151323+       for (i = 0; i < 3; i++) { 
    13161324+               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
    13171325+               if (!res) 
    1318 +                       continue; 
    1319 +               if (bcm_enet_shared_base[i]) 
    1320 +                       iounmap(bcm_enet_shared_base[i]); 
    1321 +               if (requested[i]) 
    1322 +                       release_mem_region(res->start, resource_size(res)); 
    1323 +       } 
    1324 +       return ret; 
     1326+                       return -EINVAL; 
     1327+ 
     1328+               p[i] = devm_request_and_ioremap(&pdev->dev, res); 
     1329+               if (!p[i]) 
     1330+                       return -ENOMEM; 
     1331+       } 
     1332+ 
     1333+       memcpy(bcm_enet_shared_base, p, sizeof(bcm_enet_shared_base)); 
     1334+ 
     1335+       return 0; 
    13251336+} 
    13261337+ 
    13271338+static int bcm_enet_shared_remove(struct platform_device *pdev) 
    13281339+{ 
    1329 +       struct resource *res; 
    1330 +       int i; 
    1331 + 
    1332 +       for (i = 0; i < 3; i++) { 
    1333 +               iounmap(bcm_enet_shared_base[i]); 
    1334 +               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
    1335 +               release_mem_region(res->start, resource_size(res)); 
    1336 +       } 
    13371340+       return 0; 
    13381341+} 
     
    13741377        return ret; 
    13751378 } 
    1376 @@ -2018,6 +2937,7 @@ static int __init bcm_enet_init(void) 
     1379@@ -1966,6 +2895,7 @@ static int __init bcm_enet_init(void) 
    13771380 static void __exit bcm_enet_exit(void) 
    13781381 { 
     
    13841387--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.h 
    13851388+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.h 
    1386 @@ -84,11 +84,60 @@ 
     1389@@ -18,6 +18,7 @@ 
     1390  
     1391 /* maximum burst len for dma (4 bytes unit) */ 
     1392 #define BCMENET_DMA_MAXBURST   16 
     1393+#define BCMENETSW_DMA_MAXBURST 8 
     1394  
     1395 /* tx transmit threshold (4 bytes unit), fifo is 256 bytes, the value 
     1396  * must be low enough so that a DMA transfer of above burst length can 
     1397@@ -84,11 +85,60 @@ 
    13871398 #define ETH_MIB_RX_CNTRL                       54 
    13881399  
     
    14451456        u32 tx_mult; 
    14461457        u32 tx_64; 
    1447 @@ -97,7 +146,12 @@ struct bcm_enet_mib_counters { 
     1458@@ -97,7 +147,12 @@ struct bcm_enet_mib_counters { 
    14481459        u32 tx_256_511; 
    14491460        u32 tx_512_1023; 
     
    14581469        u32 tx_frag; 
    14591470        u32 tx_underrun; 
    1460 @@ -114,6 +168,7 @@ struct bcm_enet_mib_counters { 
     1471@@ -114,6 +169,7 @@ struct bcm_enet_mib_counters { 
    14611472        u32 rx_all_octets; 
    14621473        u32 rx_all_pkts; 
     
    14661477        u32 rx_64; 
    14671478        u32 rx_65_127; 
    1468 @@ -269,6 +324,22 @@ struct bcm_enet_priv { 
     1479@@ -197,6 +253,9 @@ struct bcm_enet_priv { 
     1480        /* number of dma desc in tx ring */ 
     1481        int tx_ring_size; 
     1482  
     1483+       /* maximum dma burst size */ 
     1484+       int dma_maxburst; 
     1485+ 
     1486        /* cpu view of rx dma ring */ 
     1487        struct bcm_enet_desc *tx_desc_cpu; 
     1488  
     1489@@ -269,6 +328,22 @@ struct bcm_enet_priv { 
    14691490  
    14701491        /* maximum hardware transmit/receive size */ 
    14711492        unsigned int hw_mtu; 
    14721493+ 
     1494+       bool enet_is_sw; 
     1495+ 
    14731496+       /* port mapping for switch devices */ 
     1497+       int num_ports; 
    14741498+       struct bcm63xx_enetsw_port used_ports[ENETSW_MAX_PORT]; 
    14751499+       int sw_port_link[ENETSW_MAX_PORT]; 
     
    14801504 }; 
    14811505  
    1482 +static inline int bcm_enet_is_sw(struct bcm_enet_priv *priv) 
    1483 +{ 
    1484 +       if (BCMCPU_IS_6368()) 
    1485 +               return 1; 
    1486 +       else 
    1487 +               return 0; 
     1506+static inline int bcm_enet_port_is_rgmii(int portid) 
     1507+{ 
     1508+       return portid >= ENETSW_RGMII_PORT0; 
    14881509+} 
    14891510+ 
  • trunk/target/linux/brcm63xx/patches-3.8/408-bcm63xx_enet-enable-rgmii-clock-on-external-ports.patch

    r36406 r36407  
    3333--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    3434+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    35 @@ -2222,6 +2222,18 @@ static int bcm_enetsw_open(struct net_de 
     35@@ -2201,6 +2201,18 @@ static int bcm_enetsw_open(struct net_de 
    3636                priv->sw_port_link[i] = 0; 
    3737        } 
  • trunk/target/linux/brcm63xx/patches-3.8/409-MIPS-BCM63XX-add-HS-SPI-platform-device-and-register.patch

    r36406 r36407  
    4848--- /dev/null 
    4949+++ b/arch/mips/bcm63xx/dev-hsspi.c 
    50 @@ -0,0 +1,57 @@ 
     50@@ -0,0 +1,60 @@ 
    5151+/* 
    5252+ * This file is subject to the terms and conditions of the GNU General Public 
     
    9494+{ 
    9595+ 
    96 +       if (!BCMCPU_IS_6328()) 
     96+       if (!BCMCPU_IS_6328() && !BCMCPU_IS_6362()) 
    9797+               return -ENODEV; 
    9898+ 
     
    102102+       spi_resources[1].start = bcm63xx_get_irq_number(IRQ_HSSPI); 
    103103+ 
    104 +       spi_pdata.speed_hz = HSSPI_PLL_HZ_6328; 
     104+       if (BCMCPU_IS_6328()) 
     105+               spi_pdata.speed_hz = HSSPI_PLL_HZ_6328; 
     106+       else if (BCMCPU_IS_6362()) 
     107+               spi_pdata.speed_hz = HSSPI_PLL_HZ_6362; 
    105108+ 
    106109+       return platform_device_register(&bcm63xx_hsspi_device); 
     
    108111--- /dev/null 
    109112+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_hsspi.h 
    110 @@ -0,0 +1,20 @@ 
     113@@ -0,0 +1,21 @@ 
    111114+#ifndef BCM63XX_DEV_HSSPI_H 
    112115+#define BCM63XX_DEV_HSSPI_H 
     
    127130+ 
    128131+#define HSSPI_PLL_HZ_6328      133333333 
     132+#define HSSPI_PLL_HZ_6362      400000000 
    129133+ 
    130134+#endif /* BCM63XX_DEV_HSSPI_H */ 
  • trunk/target/linux/brcm63xx/patches-3.8/410-SPI-MIPS-BCM63XX-Add-HS-SPI-driver.patch

    r36406 r36407  
    1717--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_hsspi.h 
    1818+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_hsspi.h 
    19 @@ -17,4 +17,6 @@ struct bcm63xx_hsspi_pdata { 
    20   
     19@@ -18,4 +18,6 @@ struct bcm63xx_hsspi_pdata { 
    2120 #define HSSPI_PLL_HZ_6328      133333333 
     21 #define HSSPI_PLL_HZ_6362      400000000 
    2222  
    2323+#define HSSPI_BUFFER_LEN       512 
  • trunk/target/linux/brcm63xx/patches-3.8/411-MIPS-BCM63XX-Register-SPI-flash-if-present.patch

    r36406 r36407  
    5959                        return BCM63XX_FLASH_TYPE_SERIAL; 
    6060                else 
    61 @@ -79,6 +102,9 @@ static int __init bcm63xx_detect_flash_t 
    62                         return BCM63XX_FLASH_TYPE_SERIAL; 
     61@@ -85,6 +108,9 @@ static int __init bcm63xx_detect_flash_t 
     62                        return BCM63XX_FLASH_TYPE_NAND; 
    6363        case BCM6368_CPU_ID: 
    6464                val = bcm_gpio_readl(GPIO_STRAPBUS_REG); 
     
    6969                case STRAPBUS_6368_BOOT_SEL_NAND: 
    7070                        return BCM63XX_FLASH_TYPE_NAND; 
    71 @@ -110,8 +136,11 @@ int __init bcm63xx_flash_register(void) 
     71@@ -116,8 +142,11 @@ int __init bcm63xx_flash_register(void) 
    7272  
    7373                return platform_device_register(&mtd_dev); 
     
    9393 #define STRAPBUS_6368_BOOT_SEL_NAND    0 
    9494 #define STRAPBUS_6368_BOOT_SEL_SERIAL  1 
    95 @@ -1478,6 +1479,7 @@ 
     95@@ -1443,6 +1444,7 @@ 
    9696 #define STRAPBUS_6362_BOOT_SEL_NAND    (0 << 15) 
    9797  
  • trunk/target/linux/brcm63xx/patches-3.8/415-MIPS-BCM63XX-store-the-flash-type-in-global-variable.patch

    r36406 r36407  
    2020        { 
    2121                .name           = "cfe", 
    22 @@ -86,20 +88,23 @@ static int __init bcm63xx_detect_flash_t 
     22@@ -86,26 +88,30 @@ static int __init bcm63xx_detect_flash_t 
    2323                        bcm63xx_spi_flash_info[0].max_speed_hz = 16666667; 
    2424  
     
    4848        case BCM6362_CPU_ID: 
    4949                val = bcm_misc_readl(MISC_STRAPBUS_6362_REG); 
    50                 if (val & STRAPBUS_6362_HSSPI_CLK_FAST) 
    51 @@ -108,9 +113,10 @@ static int __init bcm63xx_detect_flash_t 
    52                         bcm63xx_spi_flash_info[0].max_speed_hz = 20000000; 
    53   
    5450                if (val & STRAPBUS_6362_BOOT_SEL_SERIAL) 
    5551-                       return BCM63XX_FLASH_TYPE_SERIAL; 
     
    6258                val = bcm_gpio_readl(GPIO_STRAPBUS_REG); 
    6359                if (val & STRAPBUS_6368_SPI_CLK_FAST) 
    64 @@ -118,25 +124,32 @@ static int __init bcm63xx_detect_flash_t 
     60@@ -113,25 +119,32 @@ static int __init bcm63xx_detect_flash_t 
    6561  
    6662                switch (val & STRAPBUS_6368_BOOT_SEL_MASK) { 
     
    10197                /* read base address of boot chip select (0) */ 
    10298                val = bcm_mpi_readl(MPI_CSBASE_REG(0)); 
    103 @@ -157,7 +170,7 @@ int __init bcm63xx_flash_register(void) 
     99@@ -152,7 +165,7 @@ int __init bcm63xx_flash_register(void) 
    104100                return -ENODEV; 
    105101        default: 
  • trunk/target/linux/brcm63xx/patches-3.8/417-MTD-bcm63xxpart-allow-passing-a-caldata-offset.patch

    r36406 r36407  
    88--- a/drivers/mtd/bcm63xxpart.c 
    99+++ b/drivers/mtd/bcm63xxpart.c 
    10 @@ -76,10 +76,12 @@ static int bcm63xx_parse_cfe_partitions( 
     10@@ -77,10 +77,12 @@ static int bcm63xx_parse_cfe_partitions( 
    1111        struct mtd_partition *parts; 
    1212        int ret; 
     
    2222        u32 computed_crc; 
    2323        bool rootfs_first = false; 
    24 @@ -93,6 +95,24 @@ static int bcm63xx_parse_cfe_partitions( 
     24@@ -94,6 +96,24 @@ static int bcm63xx_parse_cfe_partitions( 
    2525        cfelen = cfe_erasesize; 
    26         nvramlen = bcm63xx_nvram_get_psi_size() * 1024; 
     26        nvramlen = bcm63xx_nvram_get_psi_size(); 
    2727        nvramlen = roundup(nvramlen, cfe_erasesize); 
    2828+       nvramaddr = master->size - nvramlen; 
     
    4747        /* Allocate memory for buffer */ 
    4848        buf = vmalloc(sizeof(struct bcm_tag)); 
    49 @@ -144,7 +164,7 @@ static int bcm63xx_parse_cfe_partitions( 
     49@@ -145,7 +165,7 @@ static int bcm63xx_parse_cfe_partitions( 
    5050                rootfsaddr = 0; 
    5151                spareaddr = cfelen; 
     
    5656        /* Determine number of partitions */ 
    5757        if (rootfslen > 0) 
    58 @@ -153,6 +173,12 @@ static int bcm63xx_parse_cfe_partitions( 
     58@@ -154,6 +174,12 @@ static int bcm63xx_parse_cfe_partitions( 
    5959        if (kernellen > 0) 
    6060                nrparts++; 
     
    6969        parts = kzalloc(sizeof(*parts) * nrparts + 10 * nrparts, GFP_KERNEL); 
    7070        if (!parts) { 
    71 @@ -190,15 +216,32 @@ static int bcm63xx_parse_cfe_partitions( 
     71@@ -191,15 +217,32 @@ static int bcm63xx_parse_cfe_partitions( 
    7272                curpart++; 
    7373        } 
  • trunk/target/linux/brcm63xx/patches-3.8/418-MIPS-BCM63XX-pass-caldata-info-to-flash.patch

    r36406 r36407  
    4747  
    4848 static struct spi_board_info bcm63xx_spi_flash_info[] = { 
    49 @@ -142,10 +146,13 @@ static int __init bcm63xx_detect_flash_t 
     49@@ -137,10 +141,13 @@ static int __init bcm63xx_detect_flash_t 
    5050        return 0; 
    5151 } 
  • trunk/target/linux/brcm63xx/patches-3.8/419-MIPS-BCM63XX-enable-enet-for-BCM6345.patch

    r36406 r36407  
    111111        if (ret) 
    112112                return ret; 
    113 @@ -248,6 +303,10 @@ bcm63xx_enetsw_register(const struct bcm 
    114         else if (BCMCPU_IS_6368()) 
     113@@ -246,6 +301,10 @@ bcm63xx_enetsw_register(const struct bcm 
     114        else if (BCMCPU_IS_6362() || BCMCPU_IS_6368()) 
    115115                enetsw_pd.num_ports = ENETSW_PORTS_6368; 
    116116  
     
    174174  
    175175 /* 
    176 @@ -64,6 +81,15 @@ struct bcm63xx_enetsw_platform_data { 
     176@@ -63,6 +80,15 @@ struct bcm63xx_enetsw_platform_data { 
    177177        char mac_addr[ETH_ALEN]; 
    178178        int num_ports; 
     
    190190  
    191191 int __init bcm63xx_enet_register(int unit, 
    192 @@ -72,4 +98,66 @@ int __init bcm63xx_enet_register(int uni 
    193  int __init 
    194  bcm63xx_enetsw_register(const struct bcm63xx_enetsw_platform_data *pd); 
     192@@ -70,4 +96,66 @@ int __init bcm63xx_enet_register(int uni 
     193  
     194 int bcm63xx_enetsw_register(const struct bcm63xx_enetsw_platform_data *pd); 
    195195  
    196196+enum bcm63xx_regs_enetdmac { 
     
    672672        /* make sure no mib update is scheduled */ 
    673673        cancel_work_sync(&priv->mib_update_task); 
    674 @@ -1757,6 +1788,11 @@ static int bcm_enet_probe(struct platfor 
     674@@ -1752,6 +1783,11 @@ static int bcm_enet_probe(struct platfor 
    675675                priv->pause_tx = pd->pause_tx; 
    676676                priv->force_duplex_full = pd->force_duplex_full; 
     
    684684  
    685685        if (priv->mac_id == 0 && priv->has_phy && !priv->use_external_mii) { 
    686 @@ -2144,8 +2180,8 @@ static int bcm_enetsw_open(struct net_de 
     686@@ -2123,8 +2159,8 @@ static int bcm_enetsw_open(struct net_de 
    687687        kdev = &priv->pdev->dev; 
    688688  
     
    695695        ret = request_irq(priv->irq_rx, bcm_enet_isr_dma, 
    696696                          IRQF_DISABLED, dev->name, dev); 
    697 @@ -2269,23 +2305,23 @@ static int bcm_enetsw_open(struct net_de 
     697@@ -2248,23 +2284,23 @@ static int bcm_enetsw_open(struct net_de 
    698698  
    699699        /* write rx & tx ring addresses */ 
     
    729729        /* set flow control low/high threshold to 1/3 / 2/3 */ 
    730730        val = priv->rx_ring_size / 3; 
    731 @@ -2298,21 +2334,21 @@ static int bcm_enetsw_open(struct net_de 
     731@@ -2277,21 +2313,21 @@ static int bcm_enetsw_open(struct net_de 
    732732        wmb(); 
    733733        enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG); 
     
    756756        netif_carrier_on(dev); 
    757757        netif_start_queue(dev); 
    758 @@ -2419,8 +2455,8 @@ static int bcm_enetsw_stop(struct net_de 
     758@@ -2397,8 +2433,8 @@ static int bcm_enetsw_stop(struct net_de 
    759759        del_timer_sync(&priv->rx_timeout); 
    760760  
     
    767767        /* disable dma & mac */ 
    768768        bcm_enet_disable_dma(priv, priv->tx_chan); 
    769 @@ -2757,6 +2793,9 @@ static int bcm_enetsw_probe(struct platf 
     769@@ -2736,6 +2772,9 @@ static int bcm_enetsw_probe(struct platf 
    770770                memcpy(priv->used_ports, pd->used_ports, 
    771771                       sizeof (pd->used_ports)); 
  • trunk/target/linux/brcm63xx/patches-3.8/422-BCM63XX-add-a-fixup-for-rt2x00-devices.patch

    r36406 r36407  
    6262--- a/arch/mips/bcm63xx/dev-flash.c 
    6363+++ b/arch/mips/bcm63xx/dev-flash.c 
    64 @@ -146,7 +146,7 @@ static int __init bcm63xx_detect_flash_t 
     64@@ -141,7 +141,7 @@ static int __init bcm63xx_detect_flash_t 
    6565        return 0; 
    6666 } 
  • trunk/target/linux/brcm63xx/patches-3.8/423-bcm63xx_enet_add_b53_support.patch

    r36406 r36407  
    2121 #include <bcm63xx_dev_enet.h> 
    2222 #include "bcm63xx_enet.h" 
    23 @@ -2013,7 +2014,8 @@ static int bcm_enet_remove(struct platfo 
     23@@ -1992,7 +1993,8 @@ static int bcm_enet_remove(struct platfo 
    2424        return 0; 
    2525 } 
     
    3131        .remove = bcm_enet_remove, 
    3232        .driver = { 
    33 @@ -2022,6 +2024,42 @@ struct platform_driver bcm63xx_enet_driv 
     33@@ -2001,6 +2003,42 @@ struct platform_driver bcm63xx_enet_driv 
    3434        }, 
    3535 }; 
     
    7474  * switch mii access callbacks 
    7575  */ 
    76 @@ -2270,29 +2308,6 @@ static int bcm_enetsw_open(struct net_de 
     76@@ -2249,29 +2287,6 @@ static int bcm_enetsw_open(struct net_de 
    7777                enetsw_writeb(priv, rgmii_ctrl, ENETSW_RGMII_CTRL_REG(i)); 
    7878        } 
     
    104104        enet_dma_writel(priv, ENETDMA_BUFALLOC_FORCE_MASK | 0, 
    105105                        ENETDMA_BUFALLOC_REG(priv->rx_chan)); 
    106 @@ -2760,6 +2775,9 @@ static int bcm_enetsw_probe(struct platf 
     106@@ -2739,6 +2754,9 @@ static int bcm_enetsw_probe(struct platf 
    107107        struct bcm63xx_enetsw_platform_data *pd; 
    108108        struct resource *res_mem; 
     
    114114        /* stop if shared driver failed, assume driver->probe will be 
    115115         * called in the same order we register devices (correct ?) */ 
    116 @@ -2847,6 +2865,43 @@ static int bcm_enetsw_probe(struct platf 
     116@@ -2826,6 +2844,43 @@ static int bcm_enetsw_probe(struct platf 
    117117        priv->pdev = pdev; 
    118118        priv->net_dev = dev; 
     
    158158  
    159159 out_put_clk: 
    160 @@ -2877,6 +2932,9 @@ static int bcm_enetsw_remove(struct plat 
     160@@ -2856,6 +2911,9 @@ static int bcm_enetsw_remove(struct plat 
    161161        priv = netdev_priv(dev); 
    162162        unregister_netdev(dev); 
  • trunk/target/linux/brcm63xx/patches-3.8/511-board_V2500V.patch

    r35605 r36407  
    108108 #include <bcm63xx_dev_flash.h> 
    109109 #include <bcm63xx_dev_hsspi.h> 
    110 @@ -162,6 +163,13 @@ int __init bcm63xx_flash_register(int nu 
     110@@ -157,6 +158,13 @@ int __init bcm63xx_flash_register(int nu 
    111111                val = bcm_mpi_readl(MPI_CSBASE_REG(0)); 
    112112                val &= MPI_CSBASE_BASE_MASK; 
  • trunk/target/linux/brcm63xx/patches-3.8/533-board_rta770bw.patch

    r36406 r36407  
    5757  
    5858 /* 
    59 @@ -3313,6 +3362,7 @@ static const struct board_info __initcon 
     59@@ -3196,6 +3245,7 @@ static const struct board_info __initcon 
    6060 #endif 
    6161 #ifdef CONFIG_BCM63XX_CPU_6345 
  • trunk/target/linux/brcm63xx/patches-3.8/534-board_hw556.patch

    r36406 r36407  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -2973,6 +2973,374 @@ static struct board_info __initdata boar 
     3@@ -2856,6 +2856,374 @@ static struct board_info __initdata boar 
    44        }, 
    55 }; 
     
    376376 static struct board_info __initdata board_spw303v = { 
    377377        .name                   = "96358-502V", 
    378 @@ -3401,6 +3769,10 @@ static const struct board_info __initcon 
     378@@ -3284,6 +3652,10 @@ static const struct board_info __initcon 
    379379        &board_nb4_fxc_r2, 
    380380        &board_ct6373_1, 
     
    387387        &board_DVAG3810BN, 
    388388 #endif 
    389 @@ -3466,13 +3838,37 @@ static void __init boardid_fixup(u8 *boo 
     389@@ -3349,13 +3721,37 @@ static void __init boardid_fixup(u8 *boo 
    390390        struct bcm_tag *tag = (struct bcm_tag *)(boot_addr + CFE_OFFSET_64K); 
    391391        char *board_name = (char *)bcm63xx_nvram_get_name(); 
     
    434434--- a/drivers/mtd/bcm63xxpart.c 
    435435+++ b/drivers/mtd/bcm63xxpart.c 
    436 @@ -93,6 +93,11 @@ static int bcm63xx_parse_cfe_partitions( 
     436@@ -94,6 +94,11 @@ static int bcm63xx_parse_cfe_partitions( 
    437437                              BCM63XX_CFE_BLOCK_SIZE); 
    438438  
     
    443443+               cfelen = 0x20000; 
    444444+ 
    445         nvramlen = bcm63xx_nvram_get_psi_size() * 1024; 
     445        nvramlen = bcm63xx_nvram_get_psi_size(); 
    446446        nvramlen = roundup(nvramlen, cfe_erasesize); 
    447447        nvramaddr = master->size - nvramlen; 
  • trunk/target/linux/brcm63xx/patches-3.8/535-board_rta770w.patch

    r36406 r36407  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -803,6 +803,60 @@ static struct board_info __initdata boar 
     3@@ -799,6 +799,60 @@ static struct board_info __initdata boar 
    44                }, 
    55        }, 
     
    6262  
    6363 /* 
    64 @@ -3757,6 +3811,7 @@ static const struct board_info __initcon 
     64@@ -3614,6 +3668,7 @@ static const struct board_info __initcon 
    6565 #ifdef CONFIG_BCM63XX_CPU_6345 
    6666        &board_96345gw2, 
  • trunk/target/linux/brcm63xx/patches-3.8/550-alice_gate2_leds.patch

    r35482 r36407  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -1953,6 +1953,99 @@ static struct board_info __initdata boar 
     3@@ -2056,6 +2056,99 @@ static struct board_info __initdata boar 
    44  
    55        .has_ohci0 = 1, 
  • trunk/target/linux/brcm63xx/patches-3.8/551-96348gw_a_leds.patch

    r35482 r36407  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -1398,6 +1398,19 @@ static struct board_info __initdata boar 
     3@@ -1501,6 +1501,19 @@ static struct board_info __initdata boar 
    44        }, 
    55  
  • trunk/target/linux/brcm63xx/patches-3.8/552-board_96348gw-10_reset_button.patch

    r35482 r36407  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -858,6 +858,17 @@ static struct board_info __initdata boar 
     3@@ -961,6 +961,17 @@ static struct board_info __initdata boar 
    44                        .active_low     = 1, 
    55                }, 
  • trunk/target/linux/brcm63xx/patches-3.8/553-boards_probe_switch.patch

    r36406 r36407  
    1919                .force_duplex_full      = 1, 
    2020        }, 
    21 @@ -863,6 +867,8 @@ static struct board_info __initdata boar 
     21@@ -917,6 +921,8 @@ static struct board_info __initdata boar 
    2222                .use_internal_phy       = 1, 
    2323        }, 
     
    2828                .force_duplex_full      = 1, 
    2929        }, 
    30 @@ -935,6 +941,8 @@ static struct board_info __initdata boar 
     30@@ -989,6 +995,8 @@ static struct board_info __initdata boar 
    3131        }, 
    3232  
     
    3737                .force_duplex_full      = 1, 
    3838        }, 
    39 @@ -1164,6 +1172,8 @@ static struct board_info __initdata boar 
     39@@ -1218,6 +1226,8 @@ static struct board_info __initdata boar 
    4040                .use_internal_phy       = 1, 
    4141        }, 
     
    4646                .force_duplex_full      = 1, 
    4747        }, 
    48 @@ -1339,6 +1349,8 @@ static struct board_info __initdata boar 
     48@@ -1393,6 +1403,8 @@ static struct board_info __initdata boar 
    4949        }, 
    5050  
     
    5555                .force_duplex_full      = 1, 
    5656        }, 
    57 @@ -1413,6 +1425,8 @@ static struct board_info __initdata boar 
     57@@ -1467,6 +1479,8 @@ static struct board_info __initdata boar 
    5858                .use_internal_phy       = 1, 
    5959        }, 
     
    6464                .force_duplex_full      = 1, 
    6565        }, 
    66 @@ -1434,6 +1448,8 @@ static struct board_info __initdata boar 
     66@@ -1488,6 +1502,8 @@ static struct board_info __initdata boar 
    6767                .use_internal_phy       = 1, 
    6868        }, 
     
    7373                .force_duplex_full      = 1, 
    7474        }, 
    75 @@ -1453,6 +1469,8 @@ static struct board_info __initdata boar 
     75@@ -1507,6 +1523,8 @@ static struct board_info __initdata boar 
    7676                .use_internal_phy       = 1, 
    7777        }, 
     
    8282                .force_duplex_full      = 1, 
    8383        }, 
    84 @@ -1828,6 +1846,8 @@ static struct board_info __initdata boar 
     84@@ -1882,6 +1900,8 @@ static struct board_info __initdata boar 
    8585        }, 
    8686  
     
    9191                .force_duplex_full      = 1, 
    9292        }, 
    93 @@ -1880,6 +1900,8 @@ static struct board_info __initdata boar 
     93@@ -1934,6 +1954,8 @@ static struct board_info __initdata boar 
    9494        }, 
    9595  
     
    100100                .force_duplex_full      = 1, 
    101101        }, 
    102 @@ -2020,6 +2042,8 @@ static struct board_info __initdata boar 
     102@@ -2074,6 +2096,8 @@ static struct board_info __initdata boar 
    103103        }, 
    104104  
     
    109109                .force_duplex_full      = 1, 
    110110        }, 
    111 @@ -2137,6 +2161,8 @@ static struct board_info __initdata boar 
     111@@ -2191,6 +2215,8 @@ static struct board_info __initdata boar 
    112112        }, 
    113113  
  • trunk/target/linux/brcm63xx/patches-3.8/800-wl_exports.patch

    r35605 r36407  
    11--- a/arch/mips/bcm63xx/nvram.c 
    22+++ b/arch/mips/bcm63xx/nvram.c 
    3 @@ -40,6 +40,13 @@ struct bcm963xx_nvram { 
     3@@ -41,6 +41,13 @@ struct bcm963xx_nvram { 
    44 static struct bcm963xx_nvram nvram; 
    55 static int mac_addr_used; 
     
    1515 { 
    1616        unsigned int check_len; 
    17 @@ -47,6 +54,7 @@ void __init bcm63xx_nvram_init(void *add 
     17@@ -48,6 +55,7 @@ void __init bcm63xx_nvram_init(void *add 
    1818  
    1919        /* extract nvram data */ 
Note: See TracChangeset for help on using the changeset viewer.