Changeset 37098


Ignore:
Timestamp:
2013-06-30T15:09:50+02:00 (5 years ago)
Author:
jogo
Message:

bcm63xx: update patches

Update patches with their upstream versions.

Signed-off-by: Jonas Gorski <jogo@…>

Location:
trunk/target/linux/brcm63xx/patches-3.9
Files:
10 added
6 deleted
73 edited
8 moved

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/brcm63xx/patches-3.9/033-MIPS-BCM63XX-Handle-SW-IRQs-0-1.patch

    r37097 r37098  
    1 From 8e0bd819cc0f8815cad99feea98664172c0b1fe4 Mon Sep 17 00:00:00 2001 
     1From 1a66581c94ad3966a823f2efaf8a5cc514895318 Mon Sep 17 00:00:00 2001 
    22From: Kevin Cernekee <cernekee@gmail.com> 
    33Date: Mon, 31 Oct 2011 11:52:10 -0700 
    4 Subject: [PATCH 02/13] MIPS: BCM63XX: Handle SW IRQs 0-1 
     4Subject: [PATCH 2/3] MIPS: BCM63XX: Handle SW IRQs 0-1 
    55 
    66MIPS software IRQs 0 and 1 are used for interprocessor signaling (IPI) 
  • trunk/target/linux/brcm63xx/patches-3.9/036-MIPS-BCM63XX-add-support-for-BCM3368-Cable-Modem.patch

    r37097 r37098  
     1From 31c761c9c1fa91bf4ed83d75dcbc4e426ea2b670 Mon Sep 17 00:00:00 2001 
     2From: Florian Fainelli <florian@openwrt.org> 
     3Date: Tue, 18 Jun 2013 16:55:40 +0000 
     4Subject: [PATCH 2/6] MIPS: BCM63XX: add support for BCM3368 Cable Modem 
     5 
     6The Broadcom BCM3368 Cable Modem SoC is extremely similar to the 
     7existing BCM63xx DSL SoCs, in particular BCM6358, therefore little effort 
     8in the existing code base is required to get it supported. This patch adds 
     9support for the following on-chip peripherals: 
     10 
     11- two UARTS 
     12- GPIO 
     13- Ethernet 
     14- SPI 
     15- PCI 
     16- NOR Flash 
     17 
     18The most noticeable difference with 3368 is that it has its peripheral 
     19register at 0xfff8_0000 we check that separately in ioremap.h. Since 
     203368 is identical to 6358 for its clock and reset bits, we use them 
     21verbatim. 
     22 
     23Signed-off-by: Florian Fainelli <florian@openwrt.org> 
     24Cc: linux-mips@linux-mips.org 
     25Cc: cernekee@gmail.com 
     26Cc: jogo@openwrt.org 
     27Patchwork: https://patchwork.linux-mips.org/patch/5499/ 
     28Signed-off-by: Ralf Baechle <ralf@linux-mips.org> 
     29--- 
     30 arch/mips/bcm63xx/Kconfig                         |    4 + 
     31 arch/mips/bcm63xx/clk.c                           |   18 ++-- 
     32 arch/mips/bcm63xx/cpu.c                           |   28 +++++- 
     33 arch/mips/bcm63xx/dev-flash.c                     |    1 + 
     34 arch/mips/bcm63xx/dev-spi.c                       |    6 +- 
     35 arch/mips/bcm63xx/dev-uart.c                      |    3 +- 
     36 arch/mips/bcm63xx/irq.c                           |   19 ++++ 
     37 arch/mips/bcm63xx/prom.c                          |    4 +- 
     38 arch/mips/bcm63xx/reset.c                         |   29 +++++- 
     39 arch/mips/bcm63xx/setup.c                         |    3 + 
     40 arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h  |  110 +++++++++++++++++++++ 
     41 arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h |    1 + 
     42 arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h |   45 ++++++++- 
     43 arch/mips/include/asm/mach-bcm63xx/ioremap.h      |    4 + 
     44 arch/mips/pci/pci-bcm63xx.c                       |    3 +- 
     45 15 files changed, 259 insertions(+), 19 deletions(-) 
     46 
    147--- a/arch/mips/bcm63xx/Kconfig 
    248+++ b/arch/mips/bcm63xx/Kconfig 
    3 @@ -13,6 +13,10 @@ config BCM63XX_EHCI 
    4         select USB_EHCI_BIG_ENDIAN_DESC if USB_EHCI_HCD 
    5         select USB_EHCI_BIG_ENDIAN_MMIO if USB_EHCI_HCD 
     49@@ -1,6 +1,10 @@ 
     50 menu "CPU support" 
     51        depends on BCM63XX 
    652  
    753+config BCM63XX_CPU_3368 
     
    1258        bool "support 6328 CPU" 
    1359        select HW_HAS_PCI 
     60--- a/arch/mips/bcm63xx/clk.c 
     61+++ b/arch/mips/bcm63xx/clk.c 
     62@@ -84,7 +84,7 @@ static void enetx_set(struct clk *clk, i 
     63        else 
     64                clk_disable_unlocked(&clk_enet_misc); 
     65  
     66-       if (BCMCPU_IS_6358()) { 
     67+       if (BCMCPU_IS_3368() || BCMCPU_IS_6358()) { 
     68                u32 mask; 
     69  
     70                if (clk->id == 0) 
     71@@ -110,9 +110,8 @@ static struct clk clk_enet1 = { 
     72  */ 
     73 static void ephy_set(struct clk *clk, int enable) 
     74 { 
     75-       if (!BCMCPU_IS_6358()) 
     76-               return; 
     77-       bcm_hwclock_set(CKCTL_6358_EPHY_EN, enable); 
     78+       if (BCMCPU_IS_3368() || BCMCPU_IS_6358()) 
     79+               bcm_hwclock_set(CKCTL_6358_EPHY_EN, enable); 
     80 } 
     81  
     82  
     83@@ -155,9 +154,10 @@ static struct clk clk_enetsw = { 
     84  */ 
     85 static void pcm_set(struct clk *clk, int enable) 
     86 { 
     87-       if (!BCMCPU_IS_6358()) 
     88-               return; 
     89-       bcm_hwclock_set(CKCTL_6358_PCM_EN, enable); 
     90+       if (BCMCPU_IS_3368()) 
     91+               bcm_hwclock_set(CKCTL_3368_PCM_EN, enable); 
     92+       if (BCMCPU_IS_6358()) 
     93+               bcm_hwclock_set(CKCTL_6358_PCM_EN, enable); 
     94 } 
     95  
     96 static struct clk clk_pcm = { 
     97@@ -211,7 +211,7 @@ static void spi_set(struct clk *clk, int 
     98                mask = CKCTL_6338_SPI_EN; 
     99        else if (BCMCPU_IS_6348()) 
     100                mask = CKCTL_6348_SPI_EN; 
     101-       else if (BCMCPU_IS_6358()) 
     102+       else if (BCMCPU_IS_3368() || BCMCPU_IS_6358()) 
     103                mask = CKCTL_6358_SPI_EN; 
     104        else if (BCMCPU_IS_6362()) 
     105                mask = CKCTL_6362_SPI_EN; 
     106@@ -338,7 +338,7 @@ struct clk *clk_get(struct device *dev, 
     107                return &clk_xtm; 
     108        if (!strcmp(id, "periph")) 
     109                return &clk_periph; 
     110-       if (BCMCPU_IS_6358() && !strcmp(id, "pcm")) 
     111+       if ((BCMCPU_IS_3368() || BCMCPU_IS_6358()) && !strcmp(id, "pcm")) 
     112                return &clk_pcm; 
     113        if ((BCMCPU_IS_6362() || BCMCPU_IS_6368()) && !strcmp(id, "ipsec")) 
     114                return &clk_ipsec; 
    14115--- a/arch/mips/bcm63xx/cpu.c 
    15116+++ b/arch/mips/bcm63xx/cpu.c 
     
    79180                bcm63xx_regs_base = bcm6328_regs_base; 
    80181                bcm63xx_irqs = bcm6328_irqs; 
     182--- a/arch/mips/bcm63xx/dev-flash.c 
     183+++ b/arch/mips/bcm63xx/dev-flash.c 
     184@@ -71,6 +71,7 @@ static int __init bcm63xx_detect_flash_t 
     185        case BCM6348_CPU_ID: 
     186                /* no way to auto detect so assume parallel */ 
     187                return BCM63XX_FLASH_TYPE_PARALLEL; 
     188+       case BCM3368_CPU_ID: 
     189        case BCM6358_CPU_ID: 
     190                val = bcm_gpio_readl(GPIO_STRAPBUS_REG); 
     191                if (val & STRAPBUS_6358_BOOT_SEL_PARALLEL) 
     192--- a/arch/mips/bcm63xx/dev-spi.c 
     193+++ b/arch/mips/bcm63xx/dev-spi.c 
     194@@ -37,7 +37,8 @@ static __init void bcm63xx_spi_regs_init 
     195 { 
     196        if (BCMCPU_IS_6338() || BCMCPU_IS_6348()) 
     197                bcm63xx_regs_spi = bcm6348_regs_spi; 
     198-       if (BCMCPU_IS_6358() || BCMCPU_IS_6362() || BCMCPU_IS_6368()) 
     199+       if (BCMCPU_IS_3368() || BCMCPU_IS_6358() || 
     200+               BCMCPU_IS_6362() || BCMCPU_IS_6368()) 
     201                bcm63xx_regs_spi = bcm6358_regs_spi; 
     202 } 
     203 #else 
     204@@ -87,7 +88,8 @@ int __init bcm63xx_spi_register(void) 
     205                spi_pdata.msg_ctl_width = SPI_6348_MSG_CTL_WIDTH; 
     206        } 
     207  
     208-       if (BCMCPU_IS_6358() || BCMCPU_IS_6362() || BCMCPU_IS_6368()) { 
     209+       if (BCMCPU_IS_3368() || BCMCPU_IS_6358() || BCMCPU_IS_6362() || 
     210+               BCMCPU_IS_6368()) { 
     211                spi_resources[0].end += BCM_6358_RSET_SPI_SIZE - 1; 
     212                spi_pdata.fifo_size = SPI_6358_MSG_DATA_SIZE; 
     213                spi_pdata.msg_type_shift = SPI_6358_MSG_TYPE_SHIFT; 
    81214--- a/arch/mips/bcm63xx/dev-uart.c 
    82215+++ b/arch/mips/bcm63xx/dev-uart.c 
    83 @@ -54,8 +54,8 @@ int __init bcm63xx_uart_register(unsigne 
     216@@ -54,7 +54,8 @@ int __init bcm63xx_uart_register(unsigne 
    84217        if (id >= ARRAY_SIZE(bcm63xx_uart_devices)) 
    85218                return -ENODEV; 
    86219  
    87 -       if (id == 1 && !BCMCPU_IS_6328() && !BCMCPU_IS_6358() && 
    88 -           !BCMCPU_IS_6368()) 
    89 +       if (id == 1 && !BCMCPU_IS_3368() && !BCMCPU_IS_6328() && 
    90 +                       !BCMCPU_IS_6358() && !BCMCPU_IS_6368()) 
     220-       if (id == 1 && (!BCMCPU_IS_6358() && !BCMCPU_IS_6368())) 
     221+       if (id == 1 && (!BCMCPU_IS_3368() && !BCMCPU_IS_6358() && 
     222+               !BCMCPU_IS_6368())) 
    91223                return -ENODEV; 
    92224  
    93225        if (id == 0) { 
     226--- a/arch/mips/bcm63xx/irq.c 
     227+++ b/arch/mips/bcm63xx/irq.c 
     228@@ -27,6 +27,17 @@ static void __internal_irq_unmask_32(uns 
     229 static void __internal_irq_unmask_64(unsigned int irq) __maybe_unused; 
     230  
     231 #ifndef BCMCPU_RUNTIME_DETECT 
     232+#ifdef CONFIG_BCM63XX_CPU_3368 
     233+#define irq_stat_reg           PERF_IRQSTAT_3368_REG 
     234+#define irq_mask_reg           PERF_IRQMASK_3368_REG 
     235+#define irq_bits               32 
     236+#define is_ext_irq_cascaded    0 
     237+#define ext_irq_start          0 
     238+#define ext_irq_end            0 
     239+#define ext_irq_count          4 
     240+#define ext_irq_cfg_reg1       PERF_EXTIRQ_CFG_REG_3368 
     241+#define ext_irq_cfg_reg2       0 
     242+#endif 
     243 #ifdef CONFIG_BCM63XX_CPU_6328 
     244 #define irq_stat_reg           PERF_IRQSTAT_6328_REG 
     245 #define irq_mask_reg           PERF_IRQMASK_6328_REG 
     246@@ -140,6 +151,13 @@ static void bcm63xx_init_irq(void) 
     247        irq_mask_addr = bcm63xx_regset_address(RSET_PERF); 
     248  
     249        switch (bcm63xx_get_cpu_id()) { 
     250+       case BCM3368_CPU_ID: 
     251+               irq_stat_addr += PERF_IRQSTAT_3368_REG; 
     252+               irq_mask_addr += PERF_IRQMASK_3368_REG; 
     253+               irq_bits = 32; 
     254+               ext_irq_count = 4; 
     255+               ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_3368; 
     256+               break; 
     257        case BCM6328_CPU_ID: 
     258                irq_stat_addr += PERF_IRQSTAT_6328_REG; 
     259                irq_mask_addr += PERF_IRQMASK_6328_REG; 
     260@@ -479,6 +497,7 @@ static int bcm63xx_external_irq_set_type 
     261                        reg &= ~EXTIRQ_CFG_BOTHEDGE_6348(irq); 
     262                break; 
     263  
     264+       case BCM3368_CPU_ID: 
     265        case BCM6328_CPU_ID: 
     266        case BCM6338_CPU_ID: 
     267        case BCM6345_CPU_ID: 
    94268--- a/arch/mips/bcm63xx/prom.c 
    95269+++ b/arch/mips/bcm63xx/prom.c 
    96 @@ -30,7 +30,9 @@ void __init prom_init(void) 
     270@@ -26,7 +26,9 @@ void __init prom_init(void) 
    97271        bcm_wdt_writel(WDT_STOP_2, WDT_CTL_REG); 
    98272  
     
    105279        else if (BCMCPU_IS_6338()) 
    106280                mask = CKCTL_6338_ALL_SAFE_EN; 
     281--- a/arch/mips/bcm63xx/reset.c 
     282+++ b/arch/mips/bcm63xx/reset.c 
     283@@ -30,6 +30,19 @@ 
     284        [BCM63XX_RESET_PCIE]            = BCM## __cpu ##_RESET_PCIE,    \ 
     285        [BCM63XX_RESET_PCIE_EXT]        = BCM## __cpu ##_RESET_PCIE_EXT, 
     286  
     287+#define BCM3368_RESET_SPI      SOFTRESET_3368_SPI_MASK 
     288+#define BCM3368_RESET_ENET     SOFTRESET_3368_ENET_MASK 
     289+#define BCM3368_RESET_USBH     0 
     290+#define BCM3368_RESET_USBD     SOFTRESET_3368_USBS_MASK 
     291+#define BCM3368_RESET_DSL      0 
     292+#define BCM3368_RESET_SAR      0 
     293+#define BCM3368_RESET_EPHY     SOFTRESET_3368_EPHY_MASK 
     294+#define BCM3368_RESET_ENETSW   0 
     295+#define BCM3368_RESET_PCM      SOFTRESET_3368_PCM_MASK 
     296+#define BCM3368_RESET_MPI      SOFTRESET_3368_MPI_MASK 
     297+#define BCM3368_RESET_PCIE     0 
     298+#define BCM3368_RESET_PCIE_EXT 0 
     299+ 
     300 #define BCM6328_RESET_SPI      SOFTRESET_6328_SPI_MASK 
     301 #define BCM6328_RESET_ENET     0 
     302 #define BCM6328_RESET_USBH     SOFTRESET_6328_USBH_MASK 
     303@@ -117,6 +130,10 @@ 
     304 /* 
     305  * core reset bits 
     306  */ 
     307+static const u32 bcm3368_reset_bits[] = { 
     308+       __GEN_RESET_BITS_TABLE(3368) 
     309+}; 
     310+ 
     311 static const u32 bcm6328_reset_bits[] = { 
     312        __GEN_RESET_BITS_TABLE(6328) 
     313 }; 
     314@@ -146,7 +163,10 @@ static int reset_reg; 
     315  
     316 static int __init bcm63xx_reset_bits_init(void) 
     317 { 
     318-       if (BCMCPU_IS_6328()) { 
     319+       if (BCMCPU_IS_3368()) { 
     320+               reset_reg = PERF_SOFTRESET_6358_REG; 
     321+               bcm63xx_reset_bits = bcm3368_reset_bits; 
     322+       } else if (BCMCPU_IS_6328()) { 
     323                reset_reg = PERF_SOFTRESET_6328_REG; 
     324                bcm63xx_reset_bits = bcm6328_reset_bits; 
     325        } else if (BCMCPU_IS_6338()) { 
     326@@ -170,6 +190,13 @@ static int __init bcm63xx_reset_bits_ini 
     327 } 
     328 #else 
     329  
     330+#ifdef CONFIG_BCM63XX_CPU_3368 
     331+static const u32 bcm63xx_reset_bits[] = { 
     332+       __GEN_RESET_BITS_TABLE(3368) 
     333+}; 
     334+#define reset_reg PERF_SOFTRESET_6358_REG 
     335+#endif 
     336+ 
     337 #ifdef CONFIG_BCM63XX_CPU_6328 
     338 static const u32 bcm63xx_reset_bits[] = { 
     339        __GEN_RESET_BITS_TABLE(6328) 
    107340--- a/arch/mips/bcm63xx/setup.c 
    108341+++ b/arch/mips/bcm63xx/setup.c 
     
    147380 # ifdef bcm63xx_get_cpu_id 
    148381 #  undef bcm63xx_get_cpu_id 
    149 @@ -196,6 +210,53 @@ enum bcm63xx_regs_set { 
     382@@ -191,6 +205,53 @@ enum bcm63xx_regs_set { 
    150383 #define RSET_RNG_SIZE                  20 
    151384  
     
    201434  */ 
    202435 #define BCM_6328_DSL_LMEM_BASE         (0xdeadbeef) 
    203 @@ -633,6 +694,9 @@ static inline unsigned long bcm63xx_regs 
     436@@ -620,6 +681,9 @@ static inline unsigned long bcm63xx_regs 
    204437 #ifdef BCMCPU_RUNTIME_DETECT 
    205438        return bcm63xx_regs_base[set]; 
     
    211444        __GEN_RSET(6328) 
    212445 #endif 
    213 @@ -701,6 +765,52 @@ enum bcm63xx_irq { 
     446@@ -687,6 +751,52 @@ enum bcm63xx_irq { 
    214447 }; 
    215448  
     
    321554 /* Interrupt Mask register */ 
    322555+#define PERF_IRQMASK_3368_REG          0xc 
    323  #define PERF_IRQMASK_6328_REG(x)       (0x20 + (x) * 0x10) 
     556 #define PERF_IRQMASK_6328_REG          0x20 
    324557 #define PERF_IRQMASK_6338_REG          0xc 
    325558 #define PERF_IRQMASK_6345_REG          0xc 
    326559@@ -190,6 +224,7 @@ 
    327  #define PERF_IRQMASK_6368_REG(x)       (0x20 + (x) * 0x10) 
     560 #define PERF_IRQMASK_6368_REG          0x20 
    328561  
    329562 /* Interrupt Status register */ 
    330563+#define PERF_IRQSTAT_3368_REG          0x10 
    331  #define PERF_IRQSTAT_6328_REG(x)       (0x28 + (x) * 0x10) 
     564 #define PERF_IRQSTAT_6328_REG          0x28 
    332565 #define PERF_IRQSTAT_6338_REG          0x10 
    333566 #define PERF_IRQSTAT_6345_REG          0x10 
    334567@@ -199,6 +234,7 @@ 
    335  #define PERF_IRQSTAT_6368_REG(x)       (0x28 + (x) * 0x10) 
     568 #define PERF_IRQSTAT_6368_REG          0x28 
    336569  
    337570 /* External Interrupt Configuration register */ 
     
    340573 #define PERF_EXTIRQ_CFG_REG_6338       0x14 
    341574 #define PERF_EXTIRQ_CFG_REG_6345       0x14 
    342 @@ -1386,7 +1422,7 @@ 
     575@@ -236,6 +272,13 @@ 
     576 #define PERF_SOFTRESET_6362_REG                0x10 
     577 #define PERF_SOFTRESET_6368_REG                0x10 
     578  
     579+#define SOFTRESET_3368_SPI_MASK                (1 << 0) 
     580+#define SOFTRESET_3368_ENET_MASK       (1 << 2) 
     581+#define SOFTRESET_3368_MPI_MASK                (1 << 3) 
     582+#define SOFTRESET_3368_EPHY_MASK       (1 << 6) 
     583+#define SOFTRESET_3368_USBS_MASK       (1 << 11) 
     584+#define SOFTRESET_3368_PCM_MASK                (1 << 13) 
     585+ 
     586 #define SOFTRESET_6328_SPI_MASK                (1 << 0) 
     587 #define SOFTRESET_6328_EPHY_MASK       (1 << 1) 
     588 #define SOFTRESET_6328_SAR_MASK                (1 << 2) 
     589@@ -1293,7 +1336,7 @@ 
    343590 #define SPI_6348_RX_DATA               0x80 
    344591 #define SPI_6348_RX_DATA_SIZE          0x3f 
     
    362609        case BCM6345_CPU_ID: 
    363610        case BCM6348_CPU_ID: 
    364 --- a/arch/mips/bcm63xx/irq.c 
    365 +++ b/arch/mips/bcm63xx/irq.c 
    366 @@ -33,6 +33,19 @@ static DEFINE_SPINLOCK(ipic_lock); 
    367  static DEFINE_SPINLOCK(epic_lock); 
    368   
    369  #ifndef BCMCPU_RUNTIME_DETECT 
    370 +#ifdef CONFIG_BCM63XX_CPU_3368 
    371 +#define irq_stat_reg0          PERF_IRQSTAT_3368_REG 
    372 +#define irq_mask_reg0          PERF_IRQMASK_3368_REG 
    373 +#define irq_stat_reg1          0 
    374 +#define irq_mask_reg1          0 
    375 +#define irq_bits               32 
    376 +#define is_ext_irq_cascaded    0 
    377 +#define ext_irq_start          0 
    378 +#define ext_irq_end            0 
    379 +#define ext_irq_count          4 
    380 +#define ext_irq_cfg_reg1       PERF_EXTIRQ_CFG_REG_3368 
    381 +#define ext_irq_cfg_reg2       0 
    382 +#endif 
    383  #ifdef CONFIG_BCM63XX_CPU_6328 
    384  #define irq_stat_reg0          PERF_IRQSTAT_6328_REG(0) 
    385  #define irq_mask_reg0          PERF_IRQMASK_6328_REG(0) 
    386 @@ -165,6 +178,13 @@ static void bcm63xx_init_irq(void) 
    387         irq_mask_addr1 = bcm63xx_regset_address(RSET_PERF); 
    388   
    389         switch (bcm63xx_get_cpu_id()) { 
    390 +       case BCM3368_CPU_ID: 
    391 +               irq_stat_addr0 += PERF_IRQSTAT_3368_REG; 
    392 +               irq_mask_addr0 += PERF_IRQMASK_3368_REG; 
    393 +               irq_bits = 32; 
    394 +               ext_irq_count = 4; 
    395 +               ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_3368; 
    396 +               break; 
    397         case BCM6328_CPU_ID: 
    398                 irq_stat_addr0 += PERF_IRQSTAT_6328_REG(0); 
    399                 irq_mask_addr0 += PERF_IRQMASK_6328_REG(0); 
    400 --- a/arch/mips/bcm63xx/dev-spi.c 
    401 +++ b/arch/mips/bcm63xx/dev-spi.c 
    402 @@ -37,7 +37,7 @@ static __init void bcm63xx_spi_regs_init 
    403  { 
    404         if (BCMCPU_IS_6338() || BCMCPU_IS_6348()) 
    405                 bcm63xx_regs_spi = bcm6348_regs_spi; 
    406 -       if (BCMCPU_IS_6358() || BCMCPU_IS_6362() || BCMCPU_IS_6368()) 
    407 +       if (BCMCPU_IS_3368() || BCMCPU_IS_6358() || BCMCPU_IS_6362() || BCMCPU_IS_6368()) 
    408                 bcm63xx_regs_spi = bcm6358_regs_spi; 
    409  } 
    410  #else 
    411 @@ -87,7 +87,8 @@ int __init bcm63xx_spi_register(void) 
    412                 spi_pdata.msg_ctl_width = SPI_6348_MSG_CTL_WIDTH; 
    413         } 
    414   
    415 -       if (BCMCPU_IS_6358() || BCMCPU_IS_6362() || BCMCPU_IS_6368()) { 
    416 +       if (BCMCPU_IS_3368() || BCMCPU_IS_6358() || BCMCPU_IS_6362() || 
    417 +               BCMCPU_IS_6368()) { 
    418                 spi_resources[0].end += BCM_6358_RSET_SPI_SIZE - 1; 
    419                 spi_pdata.fifo_size = SPI_6358_MSG_DATA_SIZE; 
    420                 spi_pdata.msg_type_shift = SPI_6358_MSG_TYPE_SHIFT; 
    421 --- a/arch/mips/bcm63xx/clk.c 
    422 +++ b/arch/mips/bcm63xx/clk.c 
    423 @@ -84,7 +84,7 @@ static void enetx_set(struct clk *clk, i 
    424         else 
    425                 clk_disable_unlocked(&clk_enet_misc); 
    426   
    427 -       if (BCMCPU_IS_6358()) { 
    428 +       if (BCMCPU_IS_3368() || BCMCPU_IS_6358()) { 
    429                 u32 mask; 
    430   
    431                 if (clk->id == 0) 
    432 @@ -110,9 +110,8 @@ static struct clk clk_enet1 = { 
    433   */ 
    434  static void ephy_set(struct clk *clk, int enable) 
    435  { 
    436 -       if (!BCMCPU_IS_6358()) 
    437 -               return; 
    438 -       bcm_hwclock_set(CKCTL_6358_EPHY_EN, enable); 
    439 +       if (BCMCPU_IS_3368() || BCMCPU_IS_6358()) 
    440 +               bcm_hwclock_set(CKCTL_6358_EPHY_EN, enable); 
    441  } 
    442   
    443   
    444 @@ -155,9 +154,10 @@ static struct clk clk_enetsw = { 
    445   */ 
    446  static void pcm_set(struct clk *clk, int enable) 
    447  { 
    448 -       if (!BCMCPU_IS_6358()) 
    449 -               return; 
    450 -       bcm_hwclock_set(CKCTL_6358_PCM_EN, enable); 
    451 +       if (BCMCPU_IS_3368()) 
    452 +               bcm_hwclock_set(CKCTL_3368_PCM_EN, enable); 
    453 +       if (BCMCPU_IS_6358()) 
    454 +               bcm_hwclock_set(CKCTL_6358_PCM_EN, enable); 
    455  } 
    456   
    457  static struct clk clk_pcm = { 
    458 @@ -221,7 +221,7 @@ static void spi_set(struct clk *clk, int 
    459                 mask = CKCTL_6338_SPI_EN; 
    460         else if (BCMCPU_IS_6348()) 
    461                 mask = CKCTL_6348_SPI_EN; 
    462 -       else if (BCMCPU_IS_6358()) 
    463 +       else if (BCMCPU_IS_3368() || BCMCPU_IS_6358()) 
    464                 mask = CKCTL_6358_SPI_EN; 
    465         else if (BCMCPU_IS_6362()) 
    466                 mask = CKCTL_6362_SPI_EN; 
    467 @@ -370,7 +370,7 @@ struct clk *clk_get(struct device *dev, 
    468                 return &clk_xtm; 
    469         if (!strcmp(id, "periph")) 
    470                 return &clk_periph; 
    471 -       if (BCMCPU_IS_6358() && !strcmp(id, "pcm")) 
    472 +       if ((BCMCPU_IS_3368() || BCMCPU_IS_6358()) && !strcmp(id, "pcm")) 
    473                 return &clk_pcm; 
    474         if ((BCMCPU_IS_6362() || BCMCPU_IS_6368()) && !strcmp(id, "ipsec")) 
    475                 return &clk_ipsec; 
    476 --- a/arch/mips/bcm63xx/dev-flash.c 
    477 +++ b/arch/mips/bcm63xx/dev-flash.c 
    478 @@ -102,6 +102,7 @@ static int __init bcm63xx_detect_flash_t 
    479                 /* no way to auto detect so assume parallel */ 
    480                 bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_PARALLEL; 
    481                 break; 
    482 +       case BCM3368_CPU_ID: 
    483         case BCM6358_CPU_ID: 
    484                 val = bcm_gpio_readl(GPIO_STRAPBUS_REG); 
    485                 if (val & STRAPBUS_6358_BOOT_SEL_PARALLEL) 
    486611--- a/arch/mips/pci/pci-bcm63xx.c 
    487612+++ b/arch/mips/pci/pci-bcm63xx.c 
  • trunk/target/linux/brcm63xx/patches-3.9/038-MIPS-BCM63XX-provide-a-MAC-address-for-BCM3368-chips.patch

    r37097 r37098  
     1From 404fdc457082772ff52e22988e09e82c0d6e8780 Mon Sep 17 00:00:00 2001 
     2From: Florian Fainelli <florian@openwrt.org> 
     3Date: Tue, 18 Jun 2013 16:55:42 +0000 
     4Subject: [PATCH 4/6] MIPS: BCM63XX: provide a MAC address for BCM3368 chips 
     5 
     6The BCM3368 SoC uses a NVRAM format which is not compatible with the one 
     7used by CFE, provide a default MAC address which is suitable for use and 
     8which is the default one also being used by the bootloader on these 
     9chips. 
     10 
     11Signed-off-by: Florian Fainelli <florian@openwrt.org> 
     12Cc: linux-mips@linux-mips.org 
     13Cc: cernekee@gmail.com 
     14Cc: jogo@openwrt.org 
     15Patchwork: https://patchwork.linux-mips.org/patch/5498/ 
     16Signed-off-by: Ralf Baechle <ralf@linux-mips.org> 
     17--- 
     18 arch/mips/bcm63xx/nvram.c |   10 ++++++++++ 
     19 1 file changed, 10 insertions(+) 
     20 
    121--- a/arch/mips/bcm63xx/nvram.c 
    222+++ b/arch/mips/bcm63xx/nvram.c 
  • trunk/target/linux/brcm63xx/patches-3.9/045-bcm63xx_enet-implement-reset-autoneg-ethtool-callbac.patch

    r37097 r37098  
    1 From accc558f334662c8b16c121b4819931c028e8eb0 Mon Sep 17 00:00:00 2001 
     1From a15c33450df64f183c8ab5de8ef113091081679d Mon Sep 17 00:00:00 2001 
    22From: Maxime Bizon <mbizon@freebox.fr> 
    3 Date: Mon, 8 Jun 2009 16:12:10 +0200 
    4 Subject: [PATCH 27/63] bcm63xx_enet: implement reset_autoneg ethtool. 
     3Date: Tue, 4 Jun 2013 20:53:33 +0000 
     4Subject: [PATCH 1/3] bcm63xx_enet: implement reset autoneg ethtool callback 
    55 
     6Implement the rset_nway ethtool callback which uses libphy generic 
     7autonegotiation restart function. 
     8 
     9Signed-off-by: Maxime Bizon <mbizon@freebox.fr> 
    610--- 
    711 drivers/net/ethernet/broadcom/bcm63xx_enet.c |   15 +++++++++++++++ 
    8  1 files changed, 15 insertions(+), 0 deletions(-) 
     12 1 file changed, 15 insertions(+) 
    913 
    1014--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    1115+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    12 @@ -1289,6 +1289,20 @@ static void bcm_enet_get_ethtool_stats(s 
     16@@ -1330,6 +1330,20 @@ static void bcm_enet_get_ethtool_stats(s 
    1317        mutex_unlock(&priv->mib_update_lock); 
    1418 } 
     
    3135                                 struct ethtool_cmd *cmd) 
    3236 { 
    33 @@ -1431,6 +1445,7 @@ static const struct ethtool_ops bcm_enet 
     37@@ -1472,6 +1486,7 @@ static const struct ethtool_ops bcm_enet 
    3438        .get_strings            = bcm_enet_get_strings, 
    3539        .get_sset_count         = bcm_enet_get_sset_count, 
  • trunk/target/linux/brcm63xx/patches-3.9/046-bcm63xx_enet-split-DMA-channel-register-accesses.patch

    r37097 r37098  
    1 From 2e5b0197443fcb454ca88619e36bb33d7a79e3ea Mon Sep 17 00:00:00 2001 
     1From 33cab1696444a8e333cf0490bfe04c32d583fd51 Mon Sep 17 00:00:00 2001 
    22From: Maxime Bizon <mbizon@freebox.fr> 
    3 Date: Thu, 21 Jan 2010 17:50:54 +0100 
    4 Subject: [PATCH] bcm63xx_enet: split dma registers access. 
    5  
     3Date: Tue, 4 Jun 2013 20:53:34 +0000 
     4Subject: [PATCH 2/3] bcm63xx_enet: split DMA channel register accesses 
     5 
     6The current bcm63xx_enet driver always uses bcmenet_shared_base whenever 
     7it needs to access DMA channel configuration space or access the DMA 
     8channel state RAM. Split these register in 3 parts to be more accurate: 
     9 
     10- global DMA configuration 
     11- per DMA channel configuration space 
     12- per DMA channel state RAM space 
     13 
     14This is preliminary to support new chips where the global DMA 
     15configuration remains the same, but there is a varying number of DMA 
     16channels located at a different memory offset. 
     17 
     18Signed-off-by: Maxime Bizon <mbizon@freebox.fr> 
     19Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    620--- 
    721 arch/mips/bcm63xx/dev-enet.c                     |   23 +++- 
    822 arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h |    4 +- 
    9  drivers/net/ethernet/broadcom/bcm63xx_enet.c     |  144 +++++++++++++--------- 
    10  3 files changed, 111 insertions(+), 62 deletions(-) 
     23 drivers/net/ethernet/broadcom/bcm63xx_enet.c     |  139 +++++++++++++--------- 
     24 3 files changed, 105 insertions(+), 61 deletions(-) 
    1125 
    1226--- a/arch/mips/bcm63xx/dev-enet.c 
     
    5165--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h 
    5266+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h 
    53 @@ -174,7 +174,9 @@ enum bcm63xx_regs_set { 
     67@@ -187,7 +187,9 @@ enum bcm63xx_regs_set { 
    5468 #define BCM_6358_RSET_SPI_SIZE         1804 
    5569 #define BCM_6368_RSET_SPI_SIZE         1804 
     
    6175 #define RSET_ENETSW_SIZE               65536 
    6276 #define RSET_UART_SIZE                 24 
    63  #define RSET_HSSPI_SIZE                        1536 
     77 #define RSET_UDC_SIZE                  256 
    6478--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    6579+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
     
    176190        /* stop queue if no more desc available */ 
    177191        if (!priv->tx_desc_count) 
    178 @@ -801,8 +823,8 @@ static int bcm_enet_open(struct net_devi 
     192@@ -833,8 +855,8 @@ static int bcm_enet_open(struct net_devi 
    179193  
    180194        /* mask all interrupts and request them */ 
     
    187201        ret = request_irq(dev->irq, bcm_enet_isr_mac, 0, dev->name, dev); 
    188202        if (ret) 
    189 @@ -889,28 +911,28 @@ static int bcm_enet_open(struct net_devi 
     203@@ -921,28 +943,28 @@ static int bcm_enet_open(struct net_devi 
    190204        } 
    191205  
     
    230244        /* set correct transmit fifo watermark */ 
    231245        enet_writel(priv, BCMENET_TX_FIFO_TRESH, ENET_TXWMARK_REG); 
    232 @@ -928,26 +950,26 @@ static int bcm_enet_open(struct net_devi 
     246@@ -960,26 +982,26 @@ static int bcm_enet_open(struct net_devi 
    233247        val |= ENET_CTL_ENABLE_MASK; 
    234248        enet_writel(priv, val, ENET_CTL_REG); 
     
    267281        if (priv->has_phy) 
    268282                phy_start(priv->phydev); 
    269 @@ -1024,14 +1046,14 @@ static void bcm_enet_disable_dma(struct 
     283@@ -1059,14 +1081,14 @@ static void bcm_enet_disable_dma(struct 
    270284 { 
    271285        int limit; 
     
    285299                udelay(1); 
    286300        } while (limit--); 
    287 @@ -1057,8 +1079,8 @@ static int bcm_enet_stop(struct net_devi 
     301@@ -1092,8 +1114,8 @@ static int bcm_enet_stop(struct net_devi 
    288302  
    289303        /* mask all interrupts */ 
     
    296310        /* make sure no mib update is scheduled */ 
    297311        cancel_work_sync(&priv->mib_update_task); 
    298 @@ -1597,7 +1619,7 @@ static int bcm_enet_probe(struct platfor 
     312@@ -1638,7 +1660,7 @@ static int bcm_enet_probe(struct platfor 
    299313  
    300314        /* stop if shared driver failed, assume driver->probe will be 
     
    305319  
    306320        res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 
    307 @@ -1882,14 +1904,24 @@ struct platform_driver bcm63xx_enet_driv 
     321@@ -1884,14 +1906,19 @@ struct platform_driver bcm63xx_enet_driv 
    308322 static int bcm_enet_shared_probe(struct platform_device *pdev) 
    309323 { 
     
    322336+       for (i = 0; i < 3; i++) { 
    323337+               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
    324 +               if (!res) 
    325 +                       return -EINVAL; 
    326 + 
    327 +               p[i] = devm_request_and_ioremap(&pdev->dev, res); 
     338+               p[i] = devm_ioremap_resource(&pdev->dev, res); 
    328339+               if (!p[i]) 
    329340+                       return -ENOMEM; 
    330 + 
    331 +               bcm_enet_shared_base[i] = p; 
    332341+       } 
    333342+ 
  • trunk/target/linux/brcm63xx/patches-3.9/047-bcm63xx_enet-add-support-for-Broadcom-BCM63xx-integr.patch

    r37097 r37098  
    1 From d16c1a1410f6c35a835baaa445774b4421db6c96 Mon Sep 17 00:00:00 2001 
     1From 85b2e40acd7b33409a0d889cd3d0b964c9df4b13 Mon Sep 17 00:00:00 2001 
    22From: Maxime Bizon <mbizon@freebox.fr> 
    3 Date: Sat, 23 Jan 2010 03:01:02 +0100 
    4 Subject: [PATCH 8/8] bcm63xx_enet: add support for bcm6368 internal ethernet 
    5  switch. 
     3Date: Tue, 4 Jun 2013 20:53:35 +0000 
     4Subject: [PATCH 3/3] bcm63xx_enet: add support for Broadcom BCM63xx 
     5 integrated gigabit switch 
    66 
     7Newer Broadcom BCM63xx SoCs: 6328, 6362 and 6368 have an integrated switch 
     8which needs to be driven slightly differently from the traditional 
     9external switches. This patch introduces changes in arch/mips/bcm63xx in order 
     10to: 
     11 
     12- register a bcm63xx_enetsw driver instead of bcm63xx_enet driver 
     13- update DMA channels configuration & state RAM base addresses 
     14- add a new platform data configuration knob to define the number of 
     15  ports per switch/device and force link on some ports 
     16- define the required switch registers 
     17 
     18On the driver side, the following changes are required: 
     19 
     20- the switch ports need to be polled to ensure the link is up and 
     21  running and RX/TX can properly work 
     22- basic switch configuration needs to be performed for the switch to 
     23  forward packets to the CPU 
     24- update the MIB counters since the integrated 
     25 
     26Signed-off-by: Maxime Bizon <mbizon@freebox.fr> 
    727Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    828--- 
     
    1232 arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h  |   50 + 
    1333 .../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(-) 
     34 drivers/net/ethernet/broadcom/bcm63xx_enet.c       |  995 +++++++++++++++++++- 
     35 drivers/net/ethernet/broadcom/bcm63xx_enet.h       |   71 ++ 
     36 7 files changed, 1205 insertions(+), 58 deletions(-) 
    1737 
    1838--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    1939+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    20 @@ -924,6 +924,10 @@ int __init board_register_devices(void) 
     40@@ -890,6 +890,10 @@ int __init board_register_devices(void) 
    2141            !bcm63xx_nvram_get_mac_address(board.enet1.mac_addr)) 
    2242                bcm63xx_enet_register(1, &board.enet1); 
     
    7595+               chan_count = 32; 
    7696+       else 
    77 +               chan_count = 8; 
     97+               chan_count = 16; 
    7898+ 
    7999+       shared_res[1].start = bcm63xx_regset_address(RSET_ENETDMAC); 
     
    202222--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    203223+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    204 @@ -832,10 +832,60 @@ 
     224@@ -873,10 +873,60 @@ 
    205225  * _REG relative to RSET_ENETSW 
    206226  *************************************************************************/ 
     
    265285--- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 
    266286+++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 
    267 @@ -25,6 +25,7 @@ struct board_info { 
     287@@ -24,6 +24,7 @@ struct board_info { 
    268288        /* enabled feature/device */ 
    269289        unsigned int    has_enet0:1; 
     
    273293        unsigned int    has_pccard:1; 
    274294        unsigned int    has_ohci0:1; 
    275 @@ -37,6 +38,7 @@ struct board_info { 
     295@@ -36,6 +37,7 @@ struct board_info { 
    276296        /* ethernet config */ 
    277297        struct bcm63xx_enet_platform_data enet0; 
     
    283303--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    284304+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    285 @@ -59,6 +59,49 @@ static inline void enet_writel(struct bc 
     305@@ -59,8 +59,43 @@ static inline void enet_writel(struct bc 
    286306 } 
    287307  
    288308 /* 
     309- * io helpers to access shared registers 
    289310+ * io helpers to access switch registers 
    290 + */ 
     311  */ 
    291312+static inline u32 enetsw_readl(struct bcm_enet_priv *priv, u32 off) 
    292313+{ 
    293 +       /* printk("enetsw_readl at %p\n", priv->base + off); */ 
    294314+       return bcm_readl(priv->base + off); 
    295315+} 
     
    298318+                                u32 val, u32 off) 
    299319+{ 
    300 +       /* printk("enetsw_writel %08x at %p\n", val, priv->base + off); */ 
    301320+       bcm_writel(val, priv->base + off); 
    302321+} 
     
    304323+static inline u16 enetsw_readw(struct bcm_enet_priv *priv, u32 off) 
    305324+{ 
    306 +       /* printk("enetsw_readw  at %p\n", priv->base + off); */ 
    307325+       return bcm_readw(priv->base + off); 
    308326+} 
     
    311329+                                u16 val, u32 off) 
    312330+{ 
    313 +       /* printk("enetsw_writew %04x at %p\n", val, priv->base + off); */ 
    314331+       bcm_writew(val, priv->base + off); 
    315332+} 
     
    317334+static inline u8 enetsw_readb(struct bcm_enet_priv *priv, u32 off) 
    318335+{ 
    319 +       /* printk("enetsw_readb  at %p\n", priv->base + off); */ 
    320336+       return bcm_readb(priv->base + off); 
    321337+} 
     
    324340+                                u8 val, u32 off) 
    325341+{ 
    326 +       /* printk("enetsw_writeb %02x at %p\n", val, priv->base + off); */ 
    327342+       bcm_writeb(val, priv->base + off); 
    328343+} 
    329344+ 
    330345+ 
    331 +/* 
    332   * io helpers to access shared registers 
    333   */ 
     346+/* io helpers to access shared registers */ 
    334347 static inline u32 enet_dma_readl(struct bcm_enet_priv *priv, u32 off) 
    335 @@ -218,7 +261,6 @@ static int bcm_enet_refill_rx(struct net 
     348 { 
     349        return bcm_readl(bcm_enet_shared_base[0] + off); 
     350@@ -218,7 +253,6 @@ static int bcm_enet_refill_rx(struct net 
    336351                        if (!skb) 
    337352                                break; 
     
    341356                                           priv->rx_skb_size, 
    342357                                           DMA_FROM_DEVICE); 
    343 @@ -321,7 +363,8 @@ static int bcm_enet_receive_queue(struct 
     358@@ -321,7 +355,8 @@ static int bcm_enet_receive_queue(struct 
    344359                } 
    345360  
     
    351366  
    352367                        if (len_stat & DMADESC_OVSIZE_MASK) 
    353 @@ -552,6 +595,26 @@ static int bcm_enet_start_xmit(struct sk 
     368@@ -552,6 +587,26 @@ static int bcm_enet_start_xmit(struct sk 
    354369                goto out_unlock; 
    355370        } 
     
    378393        desc = &priv->tx_desc_cpu[priv->tx_curr_desc]; 
    379394        priv->tx_skb[priv->tx_curr_desc] = skb; 
    380 @@ -929,9 +992,9 @@ static int bcm_enet_open(struct net_devi 
     395@@ -961,9 +1016,9 @@ static int bcm_enet_open(struct net_devi 
    381396        enet_writel(priv, priv->hw_mtu, ENET_TXMAXLEN_REG); 
    382397  
     
    390405  
    391406        /* set correct transmit fifo watermark */ 
    392 @@ -1528,7 +1591,7 @@ static int compute_hw_mtu(struct bcm_ene 
     407@@ -1569,7 +1624,7 @@ static int compute_hw_mtu(struct bcm_ene 
    393408         * it's appended 
    394409         */ 
     
    399414 } 
    400415  
    401 @@ -1635,6 +1698,9 @@ static int bcm_enet_probe(struct platfor 
     416@@ -1676,6 +1731,9 @@ static int bcm_enet_probe(struct platfor 
    402417                return -ENOMEM; 
    403418        priv = netdev_priv(dev); 
     
    409424        if (ret) 
    410425                goto out; 
    411 @@ -1899,65 +1965,928 @@ struct platform_driver bcm63xx_enet_driv 
     426@@ -1901,60 +1959,916 @@ struct platform_driver bcm63xx_enet_driv 
    412427 }; 
    413428  
     
    432447-       for (i = 0; i < 3; i++) { 
    433448-               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
    434 -               if (!res) 
    435 -                       return -EINVAL; 
     449-               p[i] = devm_ioremap_resource(&pdev->dev, res); 
     450-               if (!p[i]) 
     451-                       return -ENOMEM; 
     452-       } 
    436453+       reg = ENETSW_MDIOC_RD_MASK | 
    437454+               (phy_id << ENETSW_MDIOC_PHYID_SHIFT) | 
     
    448465+} 
    449466  
    450 -               p[i] = devm_request_and_ioremap(&pdev->dev, res); 
    451 -               if (!p[i]) 
    452 -                       return -ENOMEM; 
     467-       memcpy(bcm_enet_shared_base, p, sizeof(bcm_enet_shared_base)); 
    453468+static void bcmenet_sw_mdio_write(struct bcm_enet_priv *priv, 
    454469+                                int ext, int phy_id, int location, 
     
    457472+       u32 reg; 
    458473  
    459 -               bcm_enet_shared_base[i] = p; 
    460 -       } 
     474-       return 0; 
    461475+       spin_lock_bh(&priv->enetsw_mdio_lock); 
    462476+       enetsw_writel(priv, 0, ENETSW_MDIOC_REG); 
    463   
    464 -       memcpy(bcm_enet_shared_base, p, sizeof(bcm_enet_shared_base)); 
     477+ 
    465478+       reg = ENETSW_MDIOC_WR_MASK | 
    466479+               (phy_id << ENETSW_MDIOC_PHYID_SHIFT) | 
    467480+               (location << ENETSW_MDIOC_REG_SHIFT); 
    468   
    469 -       return 0; 
    470 -} 
     481+ 
    471482+       if (ext) 
    472483+               reg |= ENETSW_MDIOC_EXT_MASK; 
    473   
    474 -static int bcm_enet_shared_remove(struct platform_device *pdev) 
    475 -{ 
    476 -       return 0; 
     484+ 
    477485+       reg |= data; 
    478486+ 
     
    480488+       udelay(50); 
    481489+       spin_unlock_bh(&priv->enetsw_mdio_lock); 
     490 } 
     491  
     492-static int bcm_enet_shared_remove(struct platform_device *pdev) 
     493+static inline int bcm_enet_port_is_rgmii(int portid) 
     494 { 
     495-       return 0; 
     496+       return portid >= ENETSW_RGMII_PORT0; 
    482497 } 
    483498  
     
    747762+ 
    748763+       /* all set, enable mac and interrupts, start dma engine and 
    749 +        * kick rx dma channel */ 
     764+        * kick rx dma channel 
     765+        */ 
    750766+       wmb(); 
    751767+       enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG); 
     
    770786+       netif_start_queue(dev); 
    771787+ 
    772 +       /* 
    773 +        * apply override config for bypass_link ports here. 
    774 +        */ 
     788+       /* apply override config for bypass_link ports here. */ 
    775789+       for (i = 0; i < priv->num_ports; i++) { 
    776790+               struct bcm63xx_enetsw_port *port; 
     
    796810+                       break; 
    797811+               default: 
    798 +                       printk(KERN_WARNING "invalid forced speed on port %s: assume 10\n", 
     812+                       pr_warn("invalid forced speed on port %s: assume 10\n", 
    799813+                              port->name); 
    800814+                       break; 
     
    853867+} 
    854868+ 
    855 +/* 
    856 + * stop callback 
    857 + */ 
     869+/* stop callback */ 
    858870+static int bcm_enetsw_stop(struct net_device *dev) 
    859871+{ 
     
    908920+} 
    909921+ 
    910 +/* 
    911 + * try to sort out phy external status by walking the used_port field 
     922+/* try to sort out phy external status by walking the used_port field 
    912923+ * in the bcm_enet_priv structure. in case the phy address is not 
    913924+ * assigned to any physical port on the switch, assume it is external 
     
    930941+} 
    931942+ 
    932 +/* 
    933 + * can't use bcmenet_sw_mdio_read directly as we need to sort out 
     943+/* can't use bcmenet_sw_mdio_read directly as we need to sort out 
    934944+ * external/internal status of the given phy_id first. 
    935945+ */ 
     
    945955+} 
    946956+ 
    947 +/* 
    948 + * can't use bcmenet_sw_mdio_write directly as we need to sort out 
     957+/* can't use bcmenet_sw_mdio_write directly as we need to sort out 
    949958+ * external/internal status of the given phy_id first. 
    950959+ */ 
     
    11671176+}; 
    11681177+ 
    1169 +/* 
    1170 + * allocate netdevice, request register memory and register device. 
    1171 + */ 
     1178+/* allocate netdevice, request register memory and register device. */ 
    11721179+static int bcm_enetsw_probe(struct platform_device *pdev) 
    11731180+{ 
     
    11791186+ 
    11801187+       /* stop if shared driver failed, assume driver->probe will be 
    1181 +        * called in the same order we register devices (correct ?) */ 
     1188+        * called in the same order we register devices (correct ?) 
     1189+        */ 
    11821190+       if (!bcm_enet_shared_base[0]) 
    11831191+               return -ENODEV; 
     
    12081216+               memcpy(dev->dev_addr, pd->mac_addr, ETH_ALEN); 
    12091217+               memcpy(priv->used_ports, pd->used_ports, 
    1210 +                      sizeof (pd->used_ports)); 
     1218+                      sizeof(pd->used_ports)); 
    12111219+               priv->num_ports = pd->num_ports; 
    12121220+       } 
     
    12771285+ 
    12781286+ 
    1279 +/* 
    1280 + * exit func, stops hardware and unregisters netdevice 
    1281 + */ 
     1287+/* exit func, stops hardware and unregisters netdevice */ 
    12821288+static int bcm_enetsw_remove(struct platform_device *pdev) 
    12831289+{ 
     
    13101316+}; 
    13111317+ 
    1312 +/* 
    1313 + * reserve & remap memory space shared between all macs 
    1314 + */ 
     1318+/* reserve & remap memory space shared between all macs */ 
    13151319+static int bcm_enet_shared_probe(struct platform_device *pdev) 
    13161320+{ 
     
    13231327+       for (i = 0; i < 3; i++) { 
    13241328+               res = platform_get_resource(pdev, IORESOURCE_MEM, i); 
    1325 +               if (!res) 
    1326 +                       return -EINVAL; 
    1327 + 
    1328 +               p[i] = devm_request_and_ioremap(&pdev->dev, res); 
     1329+               p[i] = devm_ioremap_resource(&pdev->dev, res); 
    13291330+               if (!p[i]) 
    13301331+                       return -ENOMEM; 
     
    13411342+} 
    13421343+ 
    1343 +/* 
    1344 + * this "shared" driver is needed because both macs share a single 
     1344+/* this "shared" driver is needed because both macs share a single 
    13451345+ * address space 
    13461346+ */ 
     
    13541354+}; 
    13551355+ 
    1356 +/* 
    1357 + * entry point 
    1358 + */ 
     1356+/* entry point */ 
    13591357+static int __init bcm_enet_init(void) 
    13601358+{ 
     
    13771375        return ret; 
    13781376 } 
    1379 @@ -1965,6 +2894,7 @@ static int __init bcm_enet_init(void) 
     1377@@ -1962,6 +2876,7 @@ static int __init bcm_enet_init(void) 
    13801378 static void __exit bcm_enet_exit(void) 
    13811379 { 
     
    14871485        struct bcm_enet_desc *tx_desc_cpu; 
    14881486  
    1489 @@ -269,6 +328,22 @@ struct bcm_enet_priv { 
     1487@@ -269,6 +328,18 @@ struct bcm_enet_priv { 
    14901488  
    14911489        /* maximum hardware transmit/receive size */ 
     
    15041502 }; 
    15051503  
    1506 +static inline int bcm_enet_port_is_rgmii(int portid) 
    1507 +{ 
    1508 +       return portid >= ENETSW_RGMII_PORT0; 
    1509 +} 
    15101504+ 
    15111505 #endif /* ! BCM63XX_ENET_H_ */ 
  • trunk/target/linux/brcm63xx/patches-3.9/048-bcm63xx_enet-add-support-Broadcom-BCM6345-Ethernet.patch

    r37097 r37098  
    1 From 1b0b5d325d0cc50cade62afd6a9416fb3cd1e658 Mon Sep 17 00:00:00 2001 
    2 From: Jonas Gorski <jogo@openwrt.org> 
    3 Date: Mon, 7 Jan 2013 17:42:45 +0100 
    4 Subject: [PATCH 69/72] 443-MIPS-BCM63XX-enable-enet-for-BCM6345.patch 
    5  
     1From fb7e08ec47f7168b8f4f72d8e3b5bcf625e1089e Mon Sep 17 00:00:00 2001 
     2From: Florian Fainelli <florian@openwrt.org> 
     3Date: Wed, 12 Jun 2013 18:53:05 +0000 
     4Subject: [PATCH] bcm63xx_enet: add support Broadcom BCM6345 Ethernet 
     5 
     6This patch adds support for the Broadcom BCM6345 SoC Ethernet. BCM6345 
     7has a slightly different and older DMA engine which requires the 
     8following modifications: 
     9 
     10- the width of the DMA channels on BCM6345 is 64 bytes vs 16 bytes, 
     11  which means that the helpers enet_dma{c,s} need to account for this 
     12  channel width and we can no longer use macros 
     13 
     14- BCM6345 DMA engine does not have any internal SRAM for transfering 
     15  buffers 
     16 
     17- BCM6345 buffer allocation and flow control is not per-channel but 
     18  global (done in RSET_ENETDMA) 
     19 
     20- the DMA engine bits are right-shifted by 3 compared to other DMA 
     21  generations 
     22 
     23- the DMA enable/interrupt masks are a little different (we need to 
     24  enabled more bits for 6345) 
     25 
     26- some register have the same meaning but are offsetted in the ENET_DMAC 
     27  space so a lookup table is required to return the proper offset 
     28 
     29The MAC itself is identical and requires no modifications to work. 
     30 
     31Signed-off-by: Florian Fainelli <florian@openwrt.org> 
     32Acked-by: Ralf Baechle <ralf@linux-mips.org> 
    633--- 
    7  arch/mips/bcm63xx/dev-enet.c                       |   63 ++++++- 
     34 arch/mips/bcm63xx/dev-enet.c                       |   65 ++++++- 
    835 arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h   |    3 +- 
    9  .../include/asm/mach-bcm63xx/bcm63xx_dev_enet.h    |   88 +++++++++ 
     36 .../include/asm/mach-bcm63xx/bcm63xx_dev_enet.h    |   94 +++++++++ 
    1037 arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h  |   43 ++++- 
    11  drivers/net/ethernet/broadcom/bcm63xx_enet.c       |  199 ++++++++++++-------- 
     38 drivers/net/ethernet/broadcom/bcm63xx_enet.c       |  200 ++++++++++++-------- 
    1239 drivers/net/ethernet/broadcom/bcm63xx_enet.h       |   15 ++ 
    13  6 files changed, 320 insertions(+), 91 deletions(-) 
     40 6 files changed, 329 insertions(+), 91 deletions(-) 
    1441 
    1542--- a/arch/mips/bcm63xx/dev-enet.c 
     
    2552  
    2653+#ifdef BCMCPU_RUNTIME_DETECT 
    27 +static const unsigned long bcm6xxx_regs_enetdmac[] = { 
     54+static const unsigned long bcm6348_regs_enetdmac[] = { 
    2855+       [ENETDMAC_CHANCFG]      = ENETDMAC_CHANCFG_REG, 
    2956+       [ENETDMAC_IR]           = ENETDMAC_IR_REG, 
     
    5178+               bcm63xx_regs_enetdmac = bcm6345_regs_enetdmac; 
    5279+       else 
    53 +               bcm63xx_regs_enetdmac = bcm6xxx_regs_enetdmac; 
     80+               bcm63xx_regs_enetdmac = bcm6348_regs_enetdmac; 
    5481+} 
    5582+#else 
     
    6087        { 
    6188                .start          = -1, /* filled at runtime */ 
    62 @@ -137,9 +171,14 @@ static int __init register_shared(void) 
     89@@ -137,12 +171,19 @@ static int __init register_shared(void) 
    6390        if (shared_device_registered) 
    6491                return 0; 
     
    76103        if (BCMCPU_IS_6328() || BCMCPU_IS_6362() || BCMCPU_IS_6368()) 
    77104                chan_count = 32; 
    78 @@ -172,7 +211,7 @@ int __init bcm63xx_enet_register(int uni 
     105+       else if (BCMCPU_IS_6345()) 
     106+               chan_count = 8; 
     107        else 
     108                chan_count = 16; 
     109  
     110@@ -172,7 +213,7 @@ int __init bcm63xx_enet_register(int uni 
    79111        if (unit > 1) 
    80112                return -ENODEV; 
     
    85117  
    86118        ret = register_shared(); 
    87 @@ -213,6 +252,20 @@ int __init bcm63xx_enet_register(int uni 
     119@@ -213,6 +254,21 @@ int __init bcm63xx_enet_register(int uni 
    88120                dpd->phy_interrupt = bcm63xx_get_irq_number(IRQ_ENET_PHY); 
    89121        } 
     
    98130+               dpd->dma_chan_int_mask |= ENETDMA_IR_NOTOWNER_MASK; 
    99131+               dpd->dma_chan_width = ENETDMA_6345_CHAN_WIDTH; 
    100 +               dpd->dma_no_sram = 1; 
    101132+               dpd->dma_desc_shift = ENETDMA_6345_DESC_SHIFT; 
    102 +       } else 
     133+       } else { 
     134+               dpd->dma_has_sram = true; 
    103135+               dpd->dma_chan_width = ENETDMA_CHAN_WIDTH; 
     136+       } 
    104137+ 
    105138        ret = platform_device_register(pdev); 
    106139        if (ret) 
    107140                return ret; 
    108 @@ -246,6 +299,10 @@ bcm63xx_enetsw_register(const struct bcm 
     141@@ -246,6 +302,11 @@ bcm63xx_enetsw_register(const struct bcm 
    109142        else if (BCMCPU_IS_6362() || BCMCPU_IS_6368()) 
    110143                enetsw_pd.num_ports = ENETSW_PORTS_6368; 
    111144  
     145+       enetsw_pd.dma_has_sram = true; 
    112146+       enetsw_pd.dma_chan_width = ENETDMA_CHAN_WIDTH; 
    113147+       enetsw_pd.dma_chan_en_mask = ENETDMAC_CHANCFG_EN_MASK; 
     
    119153--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h 
    120154+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h 
    121 @@ -175,6 +175,7 @@ enum bcm63xx_regs_set { 
     155@@ -188,6 +188,7 @@ enum bcm63xx_regs_set { 
    122156 #define BCM_6368_RSET_SPI_SIZE         1804 
    123157 #define RSET_ENET_SIZE                 2048 
     
    127161 #define RSET_ENETDMAS_SIZE(chans)      (16 * (chans)) 
    128162 #define RSET_ENETSW_SIZE               65536 
    129 @@ -305,7 +306,7 @@ enum bcm63xx_regs_set { 
     163@@ -363,7 +364,7 @@ enum bcm63xx_regs_set { 
    130164 #define BCM_6345_USBDMA_BASE           (0xfffe2800) 
    131165 #define BCM_6345_ENET0_BASE            (0xfffe1800) 
     
    158192+       u32 dma_chan_int_mask; 
    159193+ 
    160 +       /* Set to one if DMA engine has *no* SRAM */ 
    161 +       unsigned int dma_no_sram; 
     194+       /* DMA engine has internal SRAM */ 
     195+       bool dma_has_sram; 
    162196+ 
    163197+       /* DMA channel register width */ 
     
    169203  
    170204 /* 
    171 @@ -63,6 +80,15 @@ struct bcm63xx_enetsw_platform_data { 
     205@@ -63,6 +80,18 @@ struct bcm63xx_enetsw_platform_data { 
    172206        char mac_addr[ETH_ALEN]; 
    173207        int num_ports; 
     
    182216+       /* DMA channel register width */ 
    183217+       unsigned int dma_chan_width; 
     218+ 
     219+       /* DMA engine has internal SRAM */ 
     220+       bool dma_has_sram; 
    184221 }; 
    185222  
    186223 int __init bcm63xx_enet_register(int unit, 
    187 @@ -70,4 +96,69 @@ int __init bcm63xx_enet_register(int uni 
     224@@ -70,4 +99,69 @@ int __init bcm63xx_enet_register(int uni 
    188225  
    189226 int bcm63xx_enetsw_register(const struct bcm63xx_enetsw_platform_data *pd); 
     
    257294--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    258295+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    259 @@ -730,6 +730,8 @@ 
     296@@ -770,6 +770,8 @@ 
    260297 /************************************************************************* 
    261298  * _REG relative to RSET_ENETDMA 
     
    266303 /* Controller Configuration Register */ 
    267304 #define ENETDMA_CFG_REG                        (0x0) 
    268 @@ -785,31 +787,56 @@ 
     305@@ -825,31 +827,56 @@ 
    269306 /* State Ram Word 4 */ 
    270307 #define ENETDMA_SRAM4_REG(x)           (0x20c + (x) * 0x10) 
     
    327364  
    328365 /************************************************************************* 
    329 @@ -817,16 +844,16 @@ 
     366@@ -857,16 +884,16 @@ 
    330367  *************************************************************************/ 
    331368  
     
    350387--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    351388+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    352 @@ -115,26 +115,28 @@ static inline void enet_dma_writel(struc 
     389@@ -107,26 +107,28 @@ static inline void enet_dma_writel(struc 
    353390        bcm_writel(val, bcm_enet_shared_base[0] + off); 
    354391 } 
     
    359396-       return bcm_readl(bcm_enet_shared_base[1] + off); 
    360397+       return bcm_readl(bcm_enet_shared_base[1] + 
    361 +               (bcm63xx_enetdmacreg(off) + (chan * priv->dma_chan_width))); 
     398+               bcm63xx_enetdmacreg(off) + chan * priv->dma_chan_width); 
    362399 } 
    363400  
     
    368405-       bcm_writel(val, bcm_enet_shared_base[1] + off); 
    369406+       bcm_writel(val, bcm_enet_shared_base[1] + 
    370 +               (bcm63xx_enetdmacreg(off) + (chan * priv->dma_chan_width))); 
     407+               bcm63xx_enetdmacreg(off) + chan * priv->dma_chan_width); 
    371408 } 
    372409  
     
    375412 { 
    376413-       return bcm_readl(bcm_enet_shared_base[2] + off); 
    377 +       return bcm_readl(bcm_enet_shared_base[2] + (off + (chan * priv->dma_chan_width))); 
     414+       return bcm_readl(bcm_enet_shared_base[2] + off + chan * priv->dma_chan_width); 
    378415 } 
    379416  
     
    383420 { 
    384421-       bcm_writel(val, bcm_enet_shared_base[2] + off); 
    385 +       bcm_writel(val, bcm_enet_shared_base[2] + (off + (chan * priv->dma_chan_width))); 
     422+       bcm_writel(val, bcm_enet_shared_base[2] + off + chan * priv->dma_chan_width); 
    386423 } 
    387424  
    388425 /* 
    389 @@ -270,7 +272,7 @@ static int bcm_enet_refill_rx(struct net 
     426@@ -262,7 +264,7 @@ static int bcm_enet_refill_rx(struct net 
    390427                len_stat = priv->rx_skb_size << DMADESC_LENGTH_SHIFT; 
    391428                len_stat |= DMADESC_OWNER_MASK; 
     
    396433                } else { 
    397434                        priv->rx_dirty_desc++; 
    398 @@ -281,7 +283,10 @@ static int bcm_enet_refill_rx(struct net 
     435@@ -273,7 +275,10 @@ static int bcm_enet_refill_rx(struct net 
    399436                priv->rx_desc_count++; 
    400437  
    401438                /* tell dma engine we allocated one buffer */ 
    402439-               enet_dma_writel(priv, 1, ENETDMA_BUFALLOC_REG(priv->rx_chan)); 
    403 +               if (!priv->dma_no_sram) 
     440+               if (priv->dma_has_sram) 
    404441+                       enet_dma_writel(priv, 1, ENETDMA_BUFALLOC_REG(priv->rx_chan)); 
    405442+               else 
     
    408445  
    409446        /* If rx ring is still empty, set a timer to try allocating 
    410 @@ -357,7 +362,8 @@ static int bcm_enet_receive_queue(struct 
     447@@ -349,7 +354,8 @@ static int bcm_enet_receive_queue(struct 
    411448  
    412449                /* if the packet does not have start of packet _and_ 
     
    418455                        continue; 
    419456                } 
    420 @@ -418,8 +424,8 @@ static int bcm_enet_receive_queue(struct 
     457@@ -410,8 +416,8 @@ static int bcm_enet_receive_queue(struct 
    421458                bcm_enet_refill_rx(dev); 
    422459  
     
    429466  
    430467        return processed; 
    431 @@ -494,10 +500,10 @@ static int bcm_enet_poll(struct napi_str 
     468@@ -486,10 +492,10 @@ static int bcm_enet_poll(struct napi_str 
    432469        dev = priv->net_dev; 
    433470  
     
    444481        /* reclaim sent skb */ 
    445482        tx_work_done = bcm_enet_tx_reclaim(dev, 0); 
    446 @@ -516,10 +522,10 @@ static int bcm_enet_poll(struct napi_str 
     483@@ -508,10 +514,10 @@ static int bcm_enet_poll(struct napi_str 
    447484        napi_complete(napi); 
    448485  
     
    459496        return rx_work_done; 
    460497 } 
    461 @@ -562,8 +568,8 @@ static irqreturn_t bcm_enet_isr_dma(int 
     498@@ -554,8 +560,8 @@ static irqreturn_t bcm_enet_isr_dma(int 
    462499        priv = netdev_priv(dev); 
    463500  
     
    470507        napi_schedule(&priv->napi); 
    471508  
    472 @@ -624,14 +630,14 @@ static int bcm_enet_start_xmit(struct sk 
     509@@ -616,14 +622,14 @@ static int bcm_enet_start_xmit(struct sk 
    473510                                       DMA_TO_DEVICE); 
    474511  
     
    487524        priv->tx_desc_count--; 
    488525  
    489 @@ -642,8 +648,8 @@ static int bcm_enet_start_xmit(struct sk 
     526@@ -634,8 +640,8 @@ static int bcm_enet_start_xmit(struct sk 
    490527        wmb(); 
    491528  
     
    498535        /* stop queue if no more desc available */ 
    499536        if (!priv->tx_desc_count) 
    500 @@ -771,6 +777,9 @@ static void bcm_enet_set_flow(struct bcm 
     537@@ -763,6 +769,9 @@ static void bcm_enet_set_flow(struct bcm 
    501538                val &= ~ENET_RXCFG_ENFLOW_MASK; 
    502539        enet_writel(priv, val, ENET_RXCFG_REG); 
    503540  
    504 +       if (priv->dma_no_sram) 
     541+       if (!priv->dma_has_sram) 
    505542+               return; 
    506543+ 
     
    508545        val = enet_dma_readl(priv, ENETDMA_CFG_REG); 
    509546        if (tx_en) 
    510 @@ -886,8 +895,8 @@ static int bcm_enet_open(struct net_devi 
     547@@ -910,8 +919,8 @@ static int bcm_enet_open(struct net_devi 
    511548  
    512549        /* mask all interrupts and request them */ 
     
    519556        ret = request_irq(dev->irq, bcm_enet_isr_mac, 0, dev->name, dev); 
    520557        if (ret) 
    521 @@ -964,8 +973,12 @@ static int bcm_enet_open(struct net_devi 
     558@@ -988,8 +997,12 @@ static int bcm_enet_open(struct net_devi 
    522559        priv->rx_curr_desc = 0; 
    523560  
     
    525562-       enet_dma_writel(priv, ENETDMA_BUFALLOC_FORCE_MASK | 0, 
    526563-                       ENETDMA_BUFALLOC_REG(priv->rx_chan)); 
    527 +       if (!priv->dma_no_sram) 
     564+       if (priv->dma_has_sram) 
    528565+               enet_dma_writel(priv, ENETDMA_BUFALLOC_FORCE_MASK | 0, 
    529566+                               ENETDMA_BUFALLOC_REG(priv->rx_chan)); 
     
    534571        if (bcm_enet_refill_rx(dev)) { 
    535572                dev_err(kdev, "cannot allocate rx skb queue\n"); 
    536 @@ -974,18 +987,30 @@ static int bcm_enet_open(struct net_devi 
     573@@ -998,18 +1011,30 @@ static int bcm_enet_open(struct net_devi 
    537574        } 
    538575  
     
    542579-       enet_dmas_writel(priv, priv->tx_desc_dma, 
    543580-                        ENETDMAS_RSTART_REG(priv->tx_chan)); 
    544 +       if (!priv->dma_no_sram) { 
     581+       if (priv->dma_has_sram) { 
    545582+               enet_dmas_writel(priv, priv->rx_desc_dma, 
    546583+                                ENETDMAS_RSTART_REG, priv->rx_chan); 
     
    561598-       enet_dmas_writel(priv, 0, ENETDMAS_SRAM4_REG(priv->rx_chan)); 
    562599-       enet_dmas_writel(priv, 0, ENETDMAS_SRAM4_REG(priv->tx_chan)); 
    563 +       if (!priv->dma_no_sram) { 
     600+       if (priv->dma_has_sram) { 
    564601+               enet_dmas_writel(priv, 0, ENETDMAS_SRAM2_REG, priv->rx_chan); 
    565602+               enet_dmas_writel(priv, 0, ENETDMAS_SRAM2_REG, priv->tx_chan); 
     
    575612        /* set max rx/tx length */ 
    576613        enet_writel(priv, priv->hw_mtu, ENET_RXMAXLEN_REG); 
    577 @@ -993,18 +1018,24 @@ static int bcm_enet_open(struct net_devi 
     614@@ -1017,18 +1042,24 @@ static int bcm_enet_open(struct net_devi 
    578615  
    579616        /* set dma maximum burst len */ 
     
    593630-       val = (priv->rx_ring_size * 2) / 3; 
    594631-       enet_dma_writel(priv, val, ENETDMA_FLOWCH_REG(priv->rx_chan)); 
    595 +       if (!priv->dma_no_sram) { 
     632+       if (priv->dma_has_sram) { 
    596633+               val = priv->rx_ring_size / 3; 
    597634+               enet_dma_writel(priv, val, ENETDMA_FLOWCL_REG(priv->rx_chan)); 
     
    606643        /* all set, enable mac and interrupts, start dma engine and 
    607644         * kick rx dma channel */ 
    608 @@ -1013,26 +1044,26 @@ static int bcm_enet_open(struct net_devi 
     645@@ -1037,26 +1068,26 @@ static int bcm_enet_open(struct net_devi 
    609646        val |= ENET_CTL_ENABLE_MASK; 
    610647        enet_writel(priv, val, ENET_CTL_REG); 
     
    643680        if (priv->has_phy) 
    644681                phy_start(priv->phydev); 
    645 @@ -1109,13 +1140,13 @@ static void bcm_enet_disable_dma(struct 
     682@@ -1136,13 +1167,13 @@ static void bcm_enet_disable_dma(struct 
    646683 { 
    647684        int limit; 
     
    659696                        break; 
    660697                udelay(1); 
    661 @@ -1142,8 +1173,8 @@ static int bcm_enet_stop(struct net_devi 
     698@@ -1169,8 +1200,8 @@ static int bcm_enet_stop(struct net_devi 
    662699  
    663700        /* mask all interrupts */ 
     
    670707        /* make sure no mib update is scheduled */ 
    671708        cancel_work_sync(&priv->mib_update_task); 
    672 @@ -1751,6 +1782,11 @@ static int bcm_enet_probe(struct platfor 
     709@@ -1784,6 +1815,11 @@ static int bcm_enet_probe(struct platfor 
    673710                priv->pause_tx = pd->pause_tx; 
    674711                priv->force_duplex_full = pd->force_duplex_full; 
     
    677714+               priv->dma_chan_int_mask = pd->dma_chan_int_mask; 
    678715+               priv->dma_chan_width = pd->dma_chan_width; 
    679 +               priv->dma_no_sram = pd->dma_no_sram; 
     716+               priv->dma_has_sram = pd->dma_has_sram; 
    680717+               priv->dma_desc_shift = pd->dma_desc_shift; 
    681718        } 
    682719  
    683720        if (priv->mac_id == 0 && priv->has_phy && !priv->use_external_mii) { 
    684 @@ -2122,8 +2158,8 @@ static int bcm_enetsw_open(struct net_de 
     721@@ -2121,8 +2157,8 @@ static int bcm_enetsw_open(struct net_de 
    685722        kdev = &priv->pdev->dev; 
    686723  
     
    693730        ret = request_irq(priv->irq_rx, bcm_enet_isr_dma, 
    694731                          IRQF_DISABLED, dev->name, dev); 
    695 @@ -2247,23 +2283,23 @@ static int bcm_enetsw_open(struct net_de 
     732@@ -2234,23 +2270,23 @@ static int bcm_enetsw_open(struct net_de 
    696733  
    697734        /* write rx & tx ring addresses */ 
     
    727764        /* set flow control low/high threshold to 1/3 / 2/3 */ 
    728765        val = priv->rx_ring_size / 3; 
    729 @@ -2276,21 +2312,21 @@ static int bcm_enetsw_open(struct net_de 
     766@@ -2264,21 +2300,21 @@ static int bcm_enetsw_open(struct net_de 
    730767        wmb(); 
    731768        enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG); 
     
    754791        netif_carrier_on(dev); 
    755792        netif_start_queue(dev); 
    756 @@ -2396,8 +2432,8 @@ static int bcm_enetsw_stop(struct net_de 
     793@@ -2380,8 +2416,8 @@ static int bcm_enetsw_stop(struct net_de 
    757794        del_timer_sync(&priv->rx_timeout); 
    758795  
     
    765802        /* disable dma & mac */ 
    766803        bcm_enet_disable_dma(priv, priv->tx_chan); 
    767 @@ -2735,6 +2771,9 @@ static int bcm_enetsw_probe(struct platf 
     804@@ -2715,6 +2751,10 @@ static int bcm_enetsw_probe(struct platf 
    768805                memcpy(priv->used_ports, pd->used_ports, 
    769                        sizeof (pd->used_ports)); 
     806                       sizeof(pd->used_ports)); 
    770807                priv->num_ports = pd->num_ports; 
     808+               priv->dma_has_sram = pd->dma_has_sram; 
    771809+               priv->dma_chan_en_mask = pd->dma_chan_en_mask; 
    772810+               priv->dma_chan_int_mask = pd->dma_chan_int_mask; 
     
    788826+       u32 dma_chan_int_mask; 
    789827+ 
    790 +       /* dma engine has *no* internal SRAM */ 
    791 +       unsigned int dma_no_sram; 
     828+       /* DMA engine has internal SRAM */ 
     829+       bool dma_has_sram; 
    792830+ 
    793831+       /* dma channel width */ 
     
    798836 }; 
    799837  
    800  static inline int bcm_enet_port_is_rgmii(int portid) 
     838  
  • trunk/target/linux/brcm63xx/patches-3.9/104-MIPS-BCM63XX-introduce-BCM63XX_OHCI-configuration-sy.patch

    r36660 r37098  
    1717--- a/arch/mips/bcm63xx/Kconfig 
    1818+++ b/arch/mips/bcm63xx/Kconfig 
    19 @@ -1,37 +1,43 @@ 
    20  menu "CPU support" 
    21         depends on BCM63XX 
     19@@ -5,9 +5,16 @@ config BCM63XX_CPU_3368 
     20        bool "support 3368 CPU" 
     21        select HW_HAS_PCI 
    2222  
    2323+config BCM63XX_OHCI 
     
    3434 config BCM63XX_CPU_6338 
    3535        bool "support 6338 CPU" 
    36         select HW_HAS_PCI 
    37 -       select USB_ARCH_HAS_OHCI 
    38 -       select USB_OHCI_BIG_ENDIAN_DESC 
    39 -       select USB_OHCI_BIG_ENDIAN_MMIO 
    40   
    41  config BCM63XX_CPU_6345 
    42         bool "support 6345 CPU" 
    43 -       select USB_OHCI_BIG_ENDIAN_DESC 
    44 -       select USB_OHCI_BIG_ENDIAN_MMIO 
    45   
     36@@ -19,18 +26,22 @@ config BCM63XX_CPU_6345 
    4637 config BCM63XX_CPU_6348 
    4738        bool "support 6348 CPU" 
  • trunk/target/linux/brcm63xx/patches-3.9/106-MIPS-BCM63XX-register-OHCI-controller-if-board-enabl.patch

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

    r36660 r37098  
    2020--- a/arch/mips/bcm63xx/Kconfig 
    2121+++ b/arch/mips/bcm63xx/Kconfig 
    22 @@ -7,10 +7,17 @@ config BCM63XX_OHCI 
     22@@ -11,10 +11,17 @@ config BCM63XX_OHCI 
    2323        select USB_OHCI_BIG_ENDIAN_DESC if USB_OHCI_HCD 
    2424        select USB_OHCI_BIG_ENDIAN_MMIO if USB_OHCI_HCD 
     
    3838 config BCM63XX_CPU_6338 
    3939        bool "support 6338 CPU" 
    40 @@ -28,16 +35,19 @@ config BCM63XX_CPU_6358 
     40@@ -32,16 +39,19 @@ config BCM63XX_CPU_6358 
    4141        bool "support 6358 CPU" 
    4242        select HW_HAS_PCI 
  • trunk/target/linux/brcm63xx/patches-3.9/109-MIPS-BCM63XX-register-EHCI-controller-if-board-enabl.patch

    r36660 r37098  
    2525 #include <bcm63xx_dev_usb_usbd.h> 
    2626 #include <board_bcm963xx.h> 
    27 @@ -849,6 +850,9 @@ int __init board_register_devices(void) 
     27@@ -898,6 +899,9 @@ int __init board_register_devices(void) 
    2828        if (board.has_usbd) 
    2929                bcm63xx_usbd_register(&board.usbd); 
  • trunk/target/linux/brcm63xx/patches-3.9/300-reset_buttons.patch

    r36660 r37098  
    1010 #include <bcm63xx_board.h> 
    1111 #include <bcm63xx_cpu.h> 
    12 @@ -32,6 +34,9 @@ 
     12@@ -36,6 +38,9 @@ 
    1313  
    14  #define PFX    "board_bcm963xx: " 
     14 #define HCS_OFFSET_128K                        0x20000 
    1515  
    1616+#define BCM963XX_KEYS_POLL_INTERVAL    20 
     
    2020  
    2121 /* 
    22 @@ -343,6 +348,16 @@ static struct board_info __initdata boar 
     22@@ -379,6 +384,16 @@ static struct board_info __initdata boar 
    2323                        .active_low     = 1, 
    2424                }, 
     
    3737  
    3838 static struct board_info __initdata board_96348gw = { 
    39 @@ -401,6 +416,16 @@ static struct board_info __initdata boar 
     39@@ -437,6 +452,16 @@ static struct board_info __initdata boar 
    4040                        .active_low     = 1, 
    4141                }, 
     
    5454  
    5555 static struct board_info __initdata board_FAST2404 = { 
    56 @@ -825,11 +850,23 @@ static struct platform_device bcm63xx_gp 
     56@@ -870,11 +895,23 @@ static struct platform_device bcm63xx_gp 
    5757        .dev.platform_data      = &bcm63xx_led_data, 
    5858 }; 
     
    7878                bcm63xx_uart_register(0); 
    7979  
    80 @@ -881,5 +918,16 @@ int __init board_register_devices(void) 
    81   
    82         platform_device_register(&bcm63xx_gpio_leds); 
     80@@ -934,5 +971,16 @@ int __init board_register_devices(void) 
     81                gpio_request_one(board.ephy_reset_gpio, 
     82                                board.ephy_reset_gpio_flags, "ephy-reset"); 
    8383  
    8484+       /* count number of BUTTONs defined by this device */ 
     
    105105 #include <bcm63xx_dev_enet.h> 
    106106 #include <bcm63xx_dev_usb_usbd.h> 
    107 @@ -45,6 +46,9 @@ struct board_info { 
    108   
     107@@ -48,6 +49,9 @@ struct board_info { 
    109108        /* GPIO LEDs */ 
    110109        struct gpio_led leds[5]; 
    111 + 
     110  
    112111+       /* Buttons */ 
    113112+       struct gpio_keys_button buttons[4]; 
    114  }; 
     113+ 
     114        /* External PHY reset GPIO */ 
     115        unsigned int ephy_reset_gpio; 
    115116  
    116  #endif /* ! BOARD_BCM963XX_H_ */ 
  • trunk/target/linux/brcm63xx/patches-3.9/301-led_count.patch

    r36660 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -866,6 +866,7 @@ static struct platform_device bcm63xx_gp 
     3@@ -911,6 +911,7 @@ static struct platform_device bcm63xx_gp 
    44 int __init board_register_devices(void) 
    55 { 
     
    99        if (board.has_uart0) 
    1010                bcm63xx_uart_register(0); 
    11 @@ -913,10 +914,16 @@ int __init board_register_devices(void) 
     11@@ -962,10 +963,16 @@ int __init board_register_devices(void) 
    1212  
    1313        bcm63xx_flash_register(); 
     
    2727+       } 
    2828  
    29         /* count number of BUTTONs defined by this device */ 
    30         while (button_count < ARRAY_SIZE(board.buttons) && board.buttons[button_count].desc) 
     29        if (board.ephy_reset_gpio && board.ephy_reset_gpio_flags) 
     30                gpio_request_one(board.ephy_reset_gpio, 
    3131--- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 
    3232+++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 
    33 @@ -45,7 +45,7 @@ struct board_info { 
     33@@ -47,7 +47,7 @@ struct board_info { 
    3434        struct bcm63xx_dsp_platform_data dsp; 
    3535  
  • trunk/target/linux/brcm63xx/patches-3.9/302-extended-platform-devices.patch

    r36660 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -912,6 +912,9 @@ int __init board_register_devices(void) 
     3@@ -961,6 +961,9 @@ int __init board_register_devices(void) 
    44  
    55        bcm63xx_spi_register(); 
     
    1313--- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 
    1414+++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 
    15 @@ -49,6 +49,10 @@ struct board_info { 
     15@@ -57,6 +57,10 @@ struct board_info { 
    1616  
    17         /* Buttons */ 
    18         struct gpio_keys_button buttons[4]; 
     17        /* External PHY reset GPIO flags from gpio.h */ 
     18        unsigned long ephy_reset_gpio_flags; 
    1919+ 
    2020+       /* Additional platform devices */ 
  • trunk/target/linux/brcm63xx/patches-3.9/303-spi-board-info.patch

    r36660 r37098  
    99 #include <bcm63xx_board.h> 
    1010 #include <bcm63xx_cpu.h> 
    11 @@ -915,6 +916,9 @@ int __init board_register_devices(void) 
     11@@ -964,6 +965,9 @@ int __init board_register_devices(void) 
    1212        if (board.num_devs) 
    1313                platform_add_devices(board.devs, board.num_devs); 
     
    2121--- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 
    2222+++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h 
    23 @@ -53,6 +53,10 @@ struct board_info { 
     23@@ -61,6 +61,10 @@ struct board_info { 
    2424        /* Additional platform devices */ 
    2525        struct platform_device **devs; 
  • trunk/target/linux/brcm63xx/patches-3.9/304-boardid_fixup.patch

    r36660 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -33,11 +33,16 @@ 
    4  #include <bcm63xx_dev_usb_usbd.h> 
     3@@ -34,6 +34,7 @@ 
    54 #include <board_bcm963xx.h> 
    65  
     6 #include <uapi/linux/bcm933xx_hcs.h> 
    77+#include <uapi/linux/bcm963xx_tag.h> 
    8 + 
     8  
    99 #define PFX    "board_bcm963xx: " 
    1010  
     11@@ -42,6 +43,9 @@ 
    1112 #define BCM963XX_KEYS_POLL_INTERVAL    20 
    1213 #define BCM963XX_KEYS_DEBOUNCE_INTERVAL        (BCM963XX_KEYS_POLL_INTERVAL * 3) 
     
    1819  
    1920 /* 
    20 @@ -742,6 +747,30 @@ const char *board_get_name(void) 
     21@@ -781,6 +785,30 @@ const char *board_get_name(void) 
    2122        return board.name; 
    2223 } 
     
    4950  * early init callback, read nvram data from flash and checksum it 
    5051  */ 
    51 @@ -775,6 +804,11 @@ void __init board_prom_init(void) 
    52   
    53         bcm63xx_nvram_init(boot_addr + BCM963XX_NVRAM_OFFSET); 
    54   
    55 +       if (strcmp(cfe_version, "unknown") != 0) { 
    56 +               /* cfe present */ 
    57 +               boardid_fixup(boot_addr); 
    58 +       } 
    59 + 
    60         board_name = bcm63xx_nvram_get_name(); 
     52@@ -819,6 +847,10 @@ void __init board_prom_init(void) 
     53                hcs = (struct bcm_hcs *)boot_addr; 
     54                board_name = hcs->filename; 
     55        } else { 
     56+               if (strcmp(cfe_version, "unknown") != 0) { 
     57+                       /* cfe present */ 
     58+                       boardid_fixup(boot_addr); 
     59+               } 
     60                board_name = bcm63xx_nvram_get_name(); 
     61        } 
    6162        /* find board by name */ 
    62         for (i = 0; i < ARRAY_SIZE(bcm963xx_boards); i++) { 
  • trunk/target/linux/brcm63xx/patches-3.9/307-MIPS-BCM63XX-add-HSSPI-register-definitions.patch

    r36660 r37098  
    1212--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h 
    1313+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h 
    14 @@ -131,6 +131,7 @@ enum bcm63xx_regs_set { 
     14@@ -145,6 +145,7 @@ enum bcm63xx_regs_set { 
    1515        RSET_UART1, 
    1616        RSET_GPIO, 
     
    2020        RSET_OHCI0, 
    2121        RSET_OHCI_PRIV, 
    22 @@ -176,6 +177,7 @@ enum bcm63xx_regs_set { 
    23  #define RSET_ENETDMA_SIZE              2048 
     22@@ -193,6 +194,7 @@ enum bcm63xx_regs_set { 
     23 #define RSET_ENETDMAS_SIZE(chans)      (16 * (chans)) 
    2424 #define RSET_ENETSW_SIZE               65536 
    2525 #define RSET_UART_SIZE                 24 
     
    2828 #define RSET_OHCI_SIZE                 256 
    2929 #define RSET_EHCI_SIZE                 256 
    30 @@ -201,6 +203,7 @@ enum bcm63xx_regs_set { 
     30@@ -265,6 +267,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 @@ -247,6 +250,7 @@ enum bcm63xx_regs_set { 
     38@@ -313,6 +316,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 @@ -294,6 +298,7 @@ enum bcm63xx_regs_set { 
     46@@ -360,6 +364,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 @@ -340,6 +345,7 @@ enum bcm63xx_regs_set { 
     54@@ -406,6 +411,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 @@ -385,6 +391,7 @@ enum bcm63xx_regs_set { 
     62@@ -451,6 +457,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 @@ -487,6 +494,7 @@ enum bcm63xx_regs_set { 
     70@@ -553,6 +560,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 @@ -538,6 +546,7 @@ extern const unsigned long *bcm63xx_regs 
     78@@ -604,6 +612,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 @@ -581,6 +590,7 @@ extern const unsigned long *bcm63xx_regs 
     86@@ -647,6 +656,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 @@ -658,6 +668,7 @@ enum bcm63xx_irq { 
     94@@ -727,6 +737,7 @@ enum bcm63xx_irq { 
    9595        IRQ_ENET0, 
    9696        IRQ_ENET1, 
     
    100100        IRQ_EHCI0, 
    101101        IRQ_USBD, 
    102 @@ -700,6 +711,7 @@ enum bcm63xx_irq { 
     102@@ -815,6 +826,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 @@ -745,6 +757,7 @@ enum bcm63xx_irq { 
     110@@ -860,6 +872,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 @@ -783,6 +796,7 @@ enum bcm63xx_irq { 
     118@@ -898,6 +911,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 @@ -821,6 +835,7 @@ enum bcm63xx_irq { 
     126@@ -936,6 +950,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 @@ -859,6 +874,7 @@ enum bcm63xx_irq { 
     134@@ -974,6 +989,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 @@ -971,6 +987,7 @@ enum bcm63xx_irq { 
     142@@ -1086,6 +1102,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 @@ -1018,6 +1035,7 @@ extern const int *bcm63xx_irqs; 
     150@@ -1133,6 +1150,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 @@ -1434,4 +1434,51 @@ 
    161   
    162  #define PCIE_DEVICE_OFFSET             0x8000 
     160@@ -1561,4 +1561,51 @@ 
     161 #define OTP_USER_BITS_6328_REG(i)      (0x20 + (i) * 4) 
     162 #define   OTP_6328_REG3_TP1_DISABLED   BIT(9) 
    163163  
    164164+/************************************************************************* 
  • trunk/target/linux/brcm63xx/patches-3.9/308-board_leds_naming.patch

    r36660 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -112,28 +112,28 @@ static struct board_info __initdata boar 
     3@@ -147,28 +147,28 @@ static struct board_info __initdata boar 
    44  
    55        .leds = { 
     
    3535                        .active_low     = 1, 
    3636                } 
    37 @@ -153,28 +153,28 @@ static struct board_info __initdata boar 
     37@@ -188,28 +188,28 @@ static struct board_info __initdata boar 
    3838  
    3939        .leds = { 
     
    6969                        .active_low     = 1, 
    7070                }, 
    71 @@ -213,29 +213,29 @@ static struct board_info __initdata boar 
     71@@ -248,29 +248,29 @@ static struct board_info __initdata boar 
    7272  
    7373        .leds = { 
     
    104104                        .active_low     = 1, 
    105105                }, 
    106 @@ -274,28 +274,28 @@ static struct board_info __initdata boar 
     106@@ -309,28 +309,28 @@ static struct board_info __initdata boar 
    107107  
    108108        .leds = { 
     
    138138                        .active_low     = 1, 
    139139                }, 
    140 @@ -328,28 +328,28 @@ static struct board_info __initdata boar 
     140@@ -363,28 +363,28 @@ static struct board_info __initdata boar 
    141141  
    142142        .leds = { 
     
    172172                        .active_low     = 1, 
    173173                }, 
    174 @@ -396,28 +396,28 @@ static struct board_info __initdata boar 
     174@@ -431,28 +431,28 @@ static struct board_info __initdata boar 
    175175  
    176176        .leds = { 
     
    206206                        .active_low     = 1, 
    207207                }, 
    208 @@ -549,27 +549,27 @@ static struct board_info __initdata boar 
     208@@ -584,27 +584,27 @@ static struct board_info __initdata boar 
    209209  
    210210        .leds = { 
     
    239239                }, 
    240240        }, 
    241 @@ -601,22 +601,22 @@ static struct board_info __initdata boar 
     241@@ -636,22 +636,22 @@ static struct board_info __initdata boar 
    242242  
    243243        .leds = { 
  • trunk/target/linux/brcm63xx/patches-3.9/309-cfe_version_mod.patch

    r36660 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -798,6 +798,8 @@ void __init board_prom_init(void) 
     3@@ -837,6 +837,8 @@ void __init board_prom_init(void) 
    44        if (!memcmp(cfe, "cfe-v", 5)) 
    55                snprintf(cfe_version, sizeof(cfe_version), "%u.%u.%u-%u.%u", 
  • trunk/target/linux/brcm63xx/patches-3.9/313-MIPS-BCM63XX-rename-__dispatch_internal-to-__dispatc.patch

    r36660 r37098  
    1 From bb2774da9598f3ea38099d3dcf753b585824a011 Mon Sep 17 00:00:00 2001 
     1From 3bc62bd6e8c8a37d64cb797d24955711e98de15c Mon Sep 17 00:00:00 2001 
    22From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Thu, 21 Mar 2013 17:05:15 +0100 
    4 Subject: [PATCH 04/13] MIPS: BCM63XX: rename __dispatch_internal to 
     4Subject: [PATCH 05/14] MIPS: BCM63XX: rename __dispatch_internal to 
    55 __dispatch_internal_32 
    66 
     
    2323 static void __internal_irq_mask_32(unsigned int irq) __maybe_unused; 
    2424 static void __internal_irq_mask_64(unsigned int irq) __maybe_unused; 
    25 @@ -106,7 +106,7 @@ static void __internal_irq_unmask_64(uns 
     25@@ -117,7 +117,7 @@ static void __internal_irq_unmask_64(uns 
    2626 #endif 
    2727  
     
    3232 #define internal_irq_unmask                    __internal_irq_unmask_32 
    3333 #else 
    34 @@ -207,7 +207,7 @@ static void bcm63xx_init_irq(void) 
     34@@ -225,7 +225,7 @@ static void bcm63xx_init_irq(void) 
    3535        } 
    3636  
     
    4141                internal_irq_unmask = __internal_irq_unmask_32; 
    4242        } else { 
    43 @@ -240,7 +240,7 @@ static inline void handle_internal(int i 
     43@@ -258,7 +258,7 @@ static inline void handle_internal(int i 
    4444  * will resume the loop where it ended the last time we left this 
    4545  * function. 
  • trunk/target/linux/brcm63xx/patches-3.9/314-MIPS-BCM63XX-replace-irq-dispatch-code-with-a-generi.patch

    r36660 r37098  
    1 From 661e02b8e2b9a4b48a809bc82dfe8f7b20ca750f Mon Sep 17 00:00:00 2001 
     1From 7447daa9a0768db157bbb64585f5411389712d59 Mon Sep 17 00:00:00 2001 
    22From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Thu, 18 Apr 2013 21:14:49 +0200 
    4 Subject: [PATCH 05/13] MIPS: BCM63XX: replace irq dispatch code with a 
     4Subject: [PATCH 06/14] MIPS: BCM63XX: replace irq dispatch code with a 
    55 generic version 
    66 
     
    1919--- a/arch/mips/bcm63xx/irq.c 
    2020+++ b/arch/mips/bcm63xx/irq.c 
    21 @@ -240,47 +240,65 @@ static inline void handle_internal(int i 
     21@@ -258,47 +258,65 @@ static inline void handle_internal(int i 
    2222  * will resume the loop where it ended the last time we left this 
    2323  * function. 
     
    123123 asmlinkage void plat_irq_dispatch(void) 
    124124 { 
    125 @@ -317,42 +335,6 @@ asmlinkage void plat_irq_dispatch(void) 
     125@@ -335,42 +353,6 @@ asmlinkage void plat_irq_dispatch(void) 
    126126  * internal IRQs operations: only mask/unmask on PERF irq mask 
    127127  * register. 
  • trunk/target/linux/brcm63xx/patches-3.9/315-MIPS-BCM63XX-append-cpu-number-to-irq_-stat-mask.patch

    r36660 r37098  
    1 From 6ec70ebfccd31ae3668d99b5703e5c9ce38384b4 Mon Sep 17 00:00:00 2001 
     1From 46442450ffb95a869894b0dfd1e5b4f973d4b4ee Mon Sep 17 00:00:00 2001 
    22From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Thu, 25 Apr 2013 00:24:06 +0200 
    4 Subject: [PATCH 06/13] MIPS: BCM63XX: append cpu number to irq_{stat,mask}* 
     4Subject: [PATCH 07/14] MIPS: BCM63XX: append cpu number to irq_{stat,mask}* 
    55 
    6 For SMP affinity support we need to discrimnate between the registers 
    7 for both CPUs. 
     6The SMP capable irq controllers have two interupt output pins which are 
     7controlled through separate registers. 
    88 
    99Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    1010--- 
    11  arch/mips/bcm63xx/irq.c                           |   78 ++++++++++----------- 
    12  arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h |   16 ++--- 
    13  2 files changed, 47 insertions(+), 47 deletions(-) 
     11 arch/mips/bcm63xx/irq.c                           |   86 ++++++++++----------- 
     12 arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h |   16 ++-- 
     13 2 files changed, 51 insertions(+), 51 deletions(-) 
    1414 
    1515--- a/arch/mips/bcm63xx/irq.c 
     
    1818  
    1919 #ifndef BCMCPU_RUNTIME_DETECT 
     20 #ifdef CONFIG_BCM63XX_CPU_3368 
     21-#define irq_stat_reg           PERF_IRQSTAT_3368_REG 
     22-#define irq_mask_reg           PERF_IRQMASK_3368_REG 
     23+#define irq_stat_reg0          PERF_IRQSTAT_3368_REG 
     24+#define irq_mask_reg0          PERF_IRQMASK_3368_REG 
     25 #define irq_bits               32 
     26 #define is_ext_irq_cascaded    0 
     27 #define ext_irq_start          0 
     28@@ -39,8 +39,8 @@ static void __internal_irq_unmask_64(uns 
     29 #define ext_irq_cfg_reg2       0 
     30 #endif 
    2031 #ifdef CONFIG_BCM63XX_CPU_6328 
    2132-#define irq_stat_reg           PERF_IRQSTAT_6328_REG 
     
    2637 #define is_ext_irq_cascaded    1 
    2738 #define ext_irq_start          (BCM_6328_EXT_IRQ0 - IRQ_INTERNAL_BASE) 
    28 @@ -39,8 +39,8 @@ static void __internal_irq_unmask_64(uns 
     39@@ -50,8 +50,8 @@ static void __internal_irq_unmask_64(uns 
    2940 #define ext_irq_cfg_reg2       0 
    3041 #endif 
     
    3748 #define is_ext_irq_cascaded    0 
    3849 #define ext_irq_start          0 
    39 @@ -50,8 +50,8 @@ static void __internal_irq_unmask_64(uns 
     50@@ -61,8 +61,8 @@ static void __internal_irq_unmask_64(uns 
    4051 #define ext_irq_cfg_reg2       0 
    4152 #endif 
     
    4859 #define is_ext_irq_cascaded    0 
    4960 #define ext_irq_start          0 
    50 @@ -61,8 +61,8 @@ static void __internal_irq_unmask_64(uns 
     61@@ -72,8 +72,8 @@ static void __internal_irq_unmask_64(uns 
    5162 #define ext_irq_cfg_reg2       0 
    5263 #endif 
     
    5970 #define is_ext_irq_cascaded    0 
    6071 #define ext_irq_start          0 
    61 @@ -72,8 +72,8 @@ static void __internal_irq_unmask_64(uns 
     72@@ -83,8 +83,8 @@ static void __internal_irq_unmask_64(uns 
    6273 #define ext_irq_cfg_reg2       0 
    6374 #endif 
     
    7081 #define is_ext_irq_cascaded    1 
    7182 #define ext_irq_start          (BCM_6358_EXT_IRQ0 - IRQ_INTERNAL_BASE) 
    72 @@ -83,8 +83,8 @@ static void __internal_irq_unmask_64(uns 
     83@@ -94,8 +94,8 @@ static void __internal_irq_unmask_64(uns 
    7384 #define ext_irq_cfg_reg2       0 
    7485 #endif 
     
    8192 #define is_ext_irq_cascaded    1 
    8293 #define ext_irq_start          (BCM_6362_EXT_IRQ0 - IRQ_INTERNAL_BASE) 
    83 @@ -94,8 +94,8 @@ static void __internal_irq_unmask_64(uns 
     94@@ -105,8 +105,8 @@ static void __internal_irq_unmask_64(uns 
    8495 #define ext_irq_cfg_reg2       0 
    8596 #endif 
     
    92103 #define is_ext_irq_cascaded    1 
    93104 #define ext_irq_start          (BCM_6368_EXT_IRQ0 - IRQ_INTERNAL_BASE) 
    94 @@ -115,15 +115,15 @@ static void __internal_irq_unmask_64(uns 
     105@@ -126,15 +126,15 @@ static void __internal_irq_unmask_64(uns 
    95106 #define internal_irq_unmask                    __internal_irq_unmask_64 
    96107 #endif 
     
    111122 static int is_ext_irq_cascaded; 
    112123 static unsigned int ext_irq_count; 
    113 @@ -136,13 +136,13 @@ static void bcm63xx_init_irq(void) 
     124@@ -147,20 +147,20 @@ static void bcm63xx_init_irq(void) 
    114125 { 
    115126        int irq_bits; 
     
    121132  
    122133        switch (bcm63xx_get_cpu_id()) { 
     134        case BCM3368_CPU_ID: 
     135-               irq_stat_addr += PERF_IRQSTAT_3368_REG; 
     136-               irq_mask_addr += PERF_IRQMASK_3368_REG; 
     137+               irq_stat_addr0 += PERF_IRQSTAT_3368_REG; 
     138+               irq_mask_addr0 += PERF_IRQMASK_3368_REG; 
     139                irq_bits = 32; 
     140                ext_irq_count = 4; 
     141                ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_3368; 
     142                break; 
    123143        case BCM6328_CPU_ID: 
    124144-               irq_stat_addr += PERF_IRQSTAT_6328_REG; 
     
    129149                ext_irq_count = 4; 
    130150                is_ext_irq_cascaded = 1; 
    131 @@ -151,29 +151,29 @@ static void bcm63xx_init_irq(void) 
     151@@ -169,29 +169,29 @@ static void bcm63xx_init_irq(void) 
    132152                ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_6328; 
    133153                break; 
     
    167187                ext_irq_count = 4; 
    168188                is_ext_irq_cascaded = 1; 
    169 @@ -182,8 +182,8 @@ static void bcm63xx_init_irq(void) 
     189@@ -200,8 +200,8 @@ static void bcm63xx_init_irq(void) 
    170190                ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_6358; 
    171191                break; 
     
    178198                ext_irq_count = 4; 
    179199                is_ext_irq_cascaded = 1; 
    180 @@ -192,8 +192,8 @@ static void bcm63xx_init_irq(void) 
     200@@ -210,8 +210,8 @@ static void bcm63xx_init_irq(void) 
    181201                ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_6362; 
    182202                break; 
     
    189209                ext_irq_count = 6; 
    190210                is_ext_irq_cascaded = 1; 
    191 @@ -253,8 +253,8 @@ void __dispatch_internal_##width(void) 
     211@@ -271,8 +271,8 @@ void __dispatch_internal_##width(void) 
    192212        for (src = 0, tgt = (width / 32); src < (width / 32); src++) {  \ 
    193213                u32 val;                                                \ 
     
    200220                                                                        \ 
    201221                if (val)                                                \ 
    202 @@ -281,9 +281,9 @@ static void __internal_irq_mask_##width( 
     222@@ -299,9 +299,9 @@ static void __internal_irq_mask_##width( 
    203223        unsigned reg = (irq / 32) ^ (width/32 - 1);                     \ 
    204224        unsigned bit = irq & 0x1f;                                      \ 
     
    212232                                                                        \ 
    213233 static void __internal_irq_unmask_##width(unsigned int irq)            \ 
    214 @@ -292,9 +292,9 @@ static void __internal_irq_unmask_##widt 
     234@@ -310,9 +310,9 @@ static void __internal_irq_unmask_##widt 
    215235        unsigned reg = (irq / 32) ^ (width/32 - 1);                     \ 
    216236        unsigned bit = irq & 0x1f;                                      \ 
     
    226246--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    227247+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    228 @@ -181,22 +181,22 @@ 
    229  #define SYS_PLL_SOFT_RESET             0x1 
     248@@ -215,23 +215,23 @@ 
    230249  
    231250 /* Interrupt Mask register */ 
     251 #define PERF_IRQMASK_3368_REG          0xc 
    232252-#define PERF_IRQMASK_6328_REG          0x20 
    233253+#define PERF_IRQMASK_6328_REG(x)       (0x20 + (x) * 0x10) 
     
    243263  
    244264 /* Interrupt Status register */ 
     265 #define PERF_IRQSTAT_3368_REG          0x10 
    245266-#define PERF_IRQSTAT_6328_REG          0x28 
    246267+#define PERF_IRQSTAT_6328_REG(x)       (0x28 + (x) * 0x10) 
     
    256277  
    257278 /* External Interrupt Configuration register */ 
    258  #define PERF_EXTIRQ_CFG_REG_6328       0x18 
     279 #define PERF_EXTIRQ_CFG_REG_3368       0x14 
  • trunk/target/linux/brcm63xx/patches-3.9/316-MIPS-BCM63XX-populate-irq_-stat-mask-_addr-for-secon.patch

    r36660 r37098  
    1 From b14de5c78d32f8f98535a99ea56bb924beb66810 Mon Sep 17 00:00:00 2001 
     1From 1a1769d6268c93b042f635b31b43024fea7feb30 Mon Sep 17 00:00:00 2001 
    22From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Thu, 25 Apr 2013 00:31:29 +0200 
    4 Subject: [PATCH 07/13] MIPS: BCM63XX: populate irq_{stat,mask}_addr for 
    5  second CPU 
    6  
    7 Populate it for all platforms with a BMIPS4350. 
     4Subject: [PATCH 08/14] MIPS: BCM63XX: populate irq_{stat,mask}_addr for 
     5 second pin 
    86 
    97Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    108--- 
    11  arch/mips/bcm63xx/irq.c |   28 +++++++++++++++++++++++++++- 
    12  1 file changed, 27 insertions(+), 1 deletion(-) 
     9 arch/mips/bcm63xx/irq.c |   43 ++++++++++++++++++++++++++++++++++++++++++- 
     10 1 file changed, 42 insertions(+), 1 deletion(-) 
    1311 
    1412--- a/arch/mips/bcm63xx/irq.c 
    1513+++ b/arch/mips/bcm63xx/irq.c 
    1614@@ -30,6 +30,8 @@ static void __internal_irq_unmask_64(uns 
     15 #ifdef CONFIG_BCM63XX_CPU_3368 
     16 #define irq_stat_reg0          PERF_IRQSTAT_3368_REG 
     17 #define irq_mask_reg0          PERF_IRQMASK_3368_REG 
     18+#define irq_stat_reg1          0 
     19+#define irq_mask_reg1          0 
     20 #define irq_bits               32 
     21 #define is_ext_irq_cascaded    0 
     22 #define ext_irq_start          0 
     23@@ -41,6 +43,8 @@ static void __internal_irq_unmask_64(uns 
    1724 #ifdef CONFIG_BCM63XX_CPU_6328 
    1825 #define irq_stat_reg0          PERF_IRQSTAT_6328_REG(0) 
     
    2330 #define is_ext_irq_cascaded    1 
    2431 #define ext_irq_start          (BCM_6328_EXT_IRQ0 - IRQ_INTERNAL_BASE) 
    25 @@ -41,6 +43,8 @@ static void __internal_irq_unmask_64(uns 
     32@@ -52,6 +56,8 @@ static void __internal_irq_unmask_64(uns 
    2633 #ifdef CONFIG_BCM63XX_CPU_6338 
    2734 #define irq_stat_reg0          PERF_IRQSTAT_6338_REG 
     
    3239 #define is_ext_irq_cascaded    0 
    3340 #define ext_irq_start          0 
    34 @@ -52,6 +56,8 @@ static void __internal_irq_unmask_64(uns 
     41@@ -63,6 +69,8 @@ static void __internal_irq_unmask_64(uns 
    3542 #ifdef CONFIG_BCM63XX_CPU_6345 
    3643 #define irq_stat_reg0          PERF_IRQSTAT_6345_REG 
     
    4148 #define is_ext_irq_cascaded    0 
    4249 #define ext_irq_start          0 
    43 @@ -63,6 +69,8 @@ static void __internal_irq_unmask_64(uns 
     50@@ -74,6 +82,8 @@ static void __internal_irq_unmask_64(uns 
    4451 #ifdef CONFIG_BCM63XX_CPU_6348 
    4552 #define irq_stat_reg0          PERF_IRQSTAT_6348_REG 
     
    5057 #define is_ext_irq_cascaded    0 
    5158 #define ext_irq_start          0 
    52 @@ -74,6 +82,8 @@ static void __internal_irq_unmask_64(uns 
     59@@ -85,6 +95,8 @@ static void __internal_irq_unmask_64(uns 
    5360 #ifdef CONFIG_BCM63XX_CPU_6358 
    5461 #define irq_stat_reg0          PERF_IRQSTAT_6358_REG(0) 
     
    5966 #define is_ext_irq_cascaded    1 
    6067 #define ext_irq_start          (BCM_6358_EXT_IRQ0 - IRQ_INTERNAL_BASE) 
    61 @@ -85,6 +95,8 @@ static void __internal_irq_unmask_64(uns 
     68@@ -96,6 +108,8 @@ static void __internal_irq_unmask_64(uns 
    6269 #ifdef CONFIG_BCM63XX_CPU_6362 
    6370 #define irq_stat_reg0          PERF_IRQSTAT_6362_REG(0) 
     
    6875 #define is_ext_irq_cascaded    1 
    6976 #define ext_irq_start          (BCM_6362_EXT_IRQ0 - IRQ_INTERNAL_BASE) 
    70 @@ -96,6 +108,8 @@ static void __internal_irq_unmask_64(uns 
     77@@ -107,6 +121,8 @@ static void __internal_irq_unmask_64(uns 
    7178 #ifdef CONFIG_BCM63XX_CPU_6368 
    7279 #define irq_stat_reg0          PERF_IRQSTAT_6368_REG(0) 
     
    7784 #define is_ext_irq_cascaded    1 
    7885 #define ext_irq_start          (BCM_6368_EXT_IRQ0 - IRQ_INTERNAL_BASE) 
    79 @@ -117,13 +131,15 @@ static void __internal_irq_unmask_64(uns 
     86@@ -128,13 +144,20 @@ static void __internal_irq_unmask_64(uns 
    8087  
    8188 #define irq_stat_addr0 (bcm63xx_regset_address(RSET_PERF) + irq_stat_reg0) 
    8289 #define irq_mask_addr0 (bcm63xx_regset_address(RSET_PERF) + irq_mask_reg0) 
     90+#if (irq_stat_reg1 > 0) && (irq_mask_reg1 > 0) 
    8391+#define irq_stat_addr1 (bcm63xx_regset_address(RSET_PERF) + irq_stat_reg1) 
    8492+#define irq_mask_addr1 (bcm63xx_regset_address(RSET_PERF) + irq_mask_reg1) 
     93+#else 
     94+#define irq_stat_addr1 0 
     95+#define irq_mask_addr1 0 
     96+#endif 
    8597  
    8698 static inline void bcm63xx_init_irq(void) 
     
    94106 static int is_ext_irq_cascaded; 
    95107 static unsigned int ext_irq_count; 
    96 @@ -138,11 +154,15 @@ static void bcm63xx_init_irq(void) 
     108@@ -149,11 +172,15 @@ static void bcm63xx_init_irq(void) 
    97109  
    98110        irq_stat_addr0 = bcm63xx_regset_address(RSET_PERF); 
     
    102114  
    103115        switch (bcm63xx_get_cpu_id()) { 
     116        case BCM3368_CPU_ID: 
     117                irq_stat_addr0 += PERF_IRQSTAT_3368_REG; 
     118                irq_mask_addr0 += PERF_IRQMASK_3368_REG; 
     119+               irq_stat_addr1 = 0; 
     120+               irq_stat_addr1 = 0; 
     121                irq_bits = 32; 
     122                ext_irq_count = 4; 
     123                ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_3368; 
     124@@ -161,6 +188,8 @@ static void bcm63xx_init_irq(void) 
    104125        case BCM6328_CPU_ID: 
    105126                irq_stat_addr0 += PERF_IRQSTAT_6328_REG(0); 
     
    110131                ext_irq_count = 4; 
    111132                is_ext_irq_cascaded = 1; 
    112 @@ -174,6 +194,8 @@ static void bcm63xx_init_irq(void) 
     133@@ -171,6 +200,8 @@ static void bcm63xx_init_irq(void) 
     134        case BCM6338_CPU_ID: 
     135                irq_stat_addr0 += PERF_IRQSTAT_6338_REG; 
     136                irq_mask_addr0 += PERF_IRQMASK_6338_REG; 
     137+               irq_stat_addr1 = 0; 
     138+               irq_mask_addr1 = 0; 
     139                irq_bits = 32; 
     140                ext_irq_count = 4; 
     141                ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_6338; 
     142@@ -178,6 +209,8 @@ static void bcm63xx_init_irq(void) 
     143        case BCM6345_CPU_ID: 
     144                irq_stat_addr0 += PERF_IRQSTAT_6345_REG; 
     145                irq_mask_addr0 += PERF_IRQMASK_6345_REG; 
     146+               irq_stat_addr1 = 0; 
     147+               irq_mask_addr1 = 0; 
     148                irq_bits = 32; 
     149                ext_irq_count = 4; 
     150                ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_6345; 
     151@@ -185,6 +218,8 @@ static void bcm63xx_init_irq(void) 
     152        case BCM6348_CPU_ID: 
     153                irq_stat_addr0 += PERF_IRQSTAT_6348_REG; 
     154                irq_mask_addr0 += PERF_IRQMASK_6348_REG; 
     155+               irq_stat_addr1 = 0; 
     156+               irq_mask_addr1 = 0; 
     157                irq_bits = 32; 
     158                ext_irq_count = 4; 
     159                ext_irq_cfg_reg1 = PERF_EXTIRQ_CFG_REG_6348; 
     160@@ -192,6 +227,8 @@ static void bcm63xx_init_irq(void) 
    113161        case BCM6358_CPU_ID: 
    114162                irq_stat_addr0 += PERF_IRQSTAT_6358_REG(0); 
     
    119167                ext_irq_count = 4; 
    120168                is_ext_irq_cascaded = 1; 
    121 @@ -184,6 +206,8 @@ static void bcm63xx_init_irq(void) 
     169@@ -202,6 +239,8 @@ static void bcm63xx_init_irq(void) 
    122170        case BCM6362_CPU_ID: 
    123171                irq_stat_addr0 += PERF_IRQSTAT_6362_REG(0); 
     
    128176                ext_irq_count = 4; 
    129177                is_ext_irq_cascaded = 1; 
    130 @@ -194,6 +218,8 @@ static void bcm63xx_init_irq(void) 
     178@@ -212,6 +251,8 @@ static void bcm63xx_init_irq(void) 
    131179        case BCM6368_CPU_ID: 
    132180                irq_stat_addr0 += PERF_IRQSTAT_6368_REG(0); 
  • trunk/target/linux/brcm63xx/patches-3.9/317-MIPS-BCM63XX-use-a-helper-for-getting-the-right-regi.patch

    r36660 r37098  
    1 From 7c9d3fe01034adbb890aab7c44534658f89c211b Mon Sep 17 00:00:00 2001 
     1From 353f07637d82cf485a9319d203a6ed9b38590526 Mon Sep 17 00:00:00 2001 
    22From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Thu, 25 Apr 2013 15:35:12 +0200 
    4 Subject: [PATCH 08/13] MIPS: BCM63XX: use a helper for getting the right 
     4Subject: [PATCH 09/14] MIPS: BCM63XX: use a helper for getting the right 
    55 register address 
    66 
     
    1212--- a/arch/mips/bcm63xx/irq.c 
    1313+++ b/arch/mips/bcm63xx/irq.c 
    14 @@ -251,6 +251,20 @@ static inline u32 get_ext_irq_perf_reg(i 
     14@@ -284,6 +284,20 @@ static inline u32 get_ext_irq_perf_reg(i 
    1515        return ext_irq_cfg_reg2; 
    1616 } 
    1717  
    18 +static inline u32 get_irq_stat_addr(int cpu) 
     18+static inline u32 get_irq_stat_addr(int pin) 
    1919+{ 
    20 +       if (cpu == 0) 
     20+       if (pin == 0) 
    2121+               return irq_stat_addr0; 
    2222+       return irq_stat_addr1; 
    2323+} 
    2424+ 
    25 +static inline u32 get_irq_mask_addr(int cpu) 
     25+static inline u32 get_irq_mask_addr(int pin) 
    2626+{ 
    27 +       if (cpu == 0) 
     27+       if (pin == 0) 
    2828+               return irq_mask_addr0; 
    2929+       return irq_mask_addr1; 
     
    3333 { 
    3434        if (is_ext_irq_cascaded && 
    35 @@ -274,13 +288,15 @@ void __dispatch_internal_##width(void) 
     35@@ -307,13 +321,15 @@ void __dispatch_internal_##width(void) 
    3636        unsigned int src, tgt;                                          \ 
    3737        bool irqs_pending = false;                                      \ 
     
    5151                                                                        \ 
    5252                if (val)                                                \ 
    53 @@ -306,10 +322,11 @@ static void __internal_irq_mask_##width( 
     53@@ -339,10 +355,11 @@ static void __internal_irq_mask_##width( 
    5454        u32 val;                                                        \ 
    5555        unsigned reg = (irq / 32) ^ (width/32 - 1);                     \ 
     
    6565                                                                        \ 
    6666 static void __internal_irq_unmask_##width(unsigned int irq)            \ 
    67 @@ -317,10 +334,11 @@ static void __internal_irq_unmask_##widt 
     67@@ -350,10 +367,11 @@ static void __internal_irq_unmask_##widt 
    6868        u32 val;                                                        \ 
    6969        unsigned reg = (irq / 32) ^ (width/32 - 1);                     \ 
  • trunk/target/linux/brcm63xx/patches-3.9/318-MIPS-BCM63XX-add-cpu-argument-to-dispatch-internal.patch

    r36660 r37098  
    1 From 398337c57ebe3c704e0df5f569e6bd860ffe8914 Mon Sep 17 00:00:00 2001 
     1From b6b668f780d62d41bc14bc7baba1692e17cabf84 Mon Sep 17 00:00:00 2001 
    22From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Fri, 26 Apr 2013 11:21:16 +0200 
    4 Subject: [PATCH 09/13] MIPS: BCM63XX: add cpu argument to dispatch internal 
     4Subject: [PATCH 10/14] MIPS: BCM63XX: add cpu argument to dispatch internal 
    55 
    66Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    77--- 
    8  arch/mips/bcm63xx/irq.c |   14 +++++++------- 
    9  1 file changed, 7 insertions(+), 7 deletions(-) 
     8 arch/mips/bcm63xx/irq.c |   21 +++++++++++---------- 
     9 1 file changed, 11 insertions(+), 10 deletions(-) 
    1010 
    1111--- a/arch/mips/bcm63xx/irq.c 
     
    2222 static void __internal_irq_mask_64(unsigned int irq) __maybe_unused; 
    2323 static void __internal_irq_unmask_32(unsigned int irq) __maybe_unused; 
    24 @@ -140,7 +140,7 @@ static inline void bcm63xx_init_irq(void 
     24@@ -158,7 +158,7 @@ static inline void bcm63xx_init_irq(void 
    2525 #else /* ! BCMCPU_RUNTIME_DETECT */ 
    2626  
     
    3131 static unsigned int ext_irq_count; 
    3232 static unsigned int ext_irq_start, ext_irq_end; 
    33 @@ -282,14 +282,14 @@ static inline void handle_internal(int i 
     33@@ -315,14 +315,15 @@ static inline void handle_internal(int i 
    3434  */ 
    3535  
     
    4141        unsigned int src, tgt;                                          \ 
    4242        bool irqs_pending = false;                                      \ 
    43         static int i;                                                   \ 
     43-       static int i;                                                   \ 
    4444-       u32 irq_stat_addr = get_irq_stat_addr(0);                       \ 
    4545-       u32 irq_mask_addr = get_irq_mask_addr(0);                       \ 
     46+       static int i[NR_CPUS];                                          \ 
    4647+       u32 irq_stat_addr = get_irq_stat_addr(cpu);                     \ 
    4748+       u32 irq_mask_addr = get_irq_mask_addr(cpu);                     \ 
     49+       int *next = &i[cpu];                                            \ 
    4850                                                                        \ 
    4951        /* read registers in reverse order */                           \ 
    5052        for (src = 0, tgt = (width / 32); src < (width / 32); src++) {  \ 
    51 @@ -361,7 +361,7 @@ asmlinkage void plat_irq_dispatch(void) 
     53@@ -340,9 +341,9 @@ void __dispatch_internal_##width(void) 
     54                return;                                                 \ 
     55                                                                        \ 
     56        while (1) {                                                     \ 
     57-               int to_call = i;                                        \ 
     58+               int to_call = *next;                                    \ 
     59                                                                        \ 
     60-               i = (i + 1) & (width - 1);                              \ 
     61+               *next = (*next + 1) & (width - 1);                      \ 
     62                if (pending[to_call / 32] & (1 << (to_call & 0x1f))) {  \ 
     63                        handle_internal(to_call);                       \ 
     64                        break;                                          \ 
     65@@ -394,7 +395,7 @@ asmlinkage void plat_irq_dispatch(void) 
    5266                if (cause & CAUSEF_IP1) 
    5367                        do_IRQ(1); 
  • trunk/target/linux/brcm63xx/patches-3.9/319-MIPS-BCM63XX-protect-irq-register-accesses.patch

    r37097 r37098  
    1 From 7b8e7bc9806b61be2f07bf2bbb5e3ee6e0f333e9 Mon Sep 17 00:00:00 2001 
     1From 05e32e9dc84ee96728596c0b8b86de7eae8de229 Mon Sep 17 00:00:00 2001 
    22From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Sun, 21 Apr 2013 15:38:56 +0200 
    4 Subject: [PATCH 10/13] MIPS: BCM63XX: protect irq register accesses with a 
    5  spinlock 
     4Subject: [PATCH 11/14] MIPS: BCM63XX: protect irq register accesses 
    65 
    7 Since IRQs can be handled on both CPUs, we need to ensure that we 
    8 don't try to modify the IRQ registers at the same time. 
    9  
    10 Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    116--- 
    12  arch/mips/bcm63xx/irq.c |   47 ++++++++++++++++++++++++++++++++++++++++++----- 
    13  1 file changed, 42 insertions(+), 5 deletions(-) 
     7 arch/mips/bcm63xx/irq.c |   26 ++++++++++++++++++++++++++ 
     8 1 file changed, 26 insertions(+) 
    149 
    1510--- a/arch/mips/bcm63xx/irq.c 
     
    3126+ 
    3227 #ifndef BCMCPU_RUNTIME_DETECT 
    33  #ifdef CONFIG_BCM63XX_CPU_6328 
    34  #define irq_stat_reg0          PERF_IRQSTAT_6328_REG(0) 
    35 @@ -290,7 +294,9 @@ void __dispatch_internal_##width(int cpu 
    36         static int i;                                                   \ 
     28 #ifdef CONFIG_BCM63XX_CPU_3368 
     29 #define irq_stat_reg0          PERF_IRQSTAT_3368_REG 
     30@@ -324,8 +328,10 @@ void __dispatch_internal_##width(int cpu 
    3731        u32 irq_stat_addr = get_irq_stat_addr(cpu);                     \ 
    3832        u32 irq_mask_addr = get_irq_mask_addr(cpu);                     \ 
     33        int *next = &i[cpu];                                            \ 
    3934+       unsigned long flags;                                            \ 
    4035                                                                        \ 
     36        /* read registers in reverse order */                           \ 
    4137+       spin_lock_irqsave(&ipic_lock, flags);                           \ 
    42         /* read registers in reverse order */                           \ 
    4338        for (src = 0, tgt = (width / 32); src < (width / 32); src++) {  \ 
    4439                u32 val;                                                \ 
    45 @@ -302,6 +308,7 @@ void __dispatch_internal_##width(int cpu 
     40                                                                        \ 
     41@@ -336,6 +342,7 @@ void __dispatch_internal_##width(int cpu 
    4642                if (val)                                                \ 
    4743                        irqs_pending = true;                            \ 
     
    5147        if (!irqs_pending)                                              \ 
    5248                return;                                                 \ 
    53 @@ -381,12 +388,20 @@ asmlinkage void plat_irq_dispatch(void) 
    54   */ 
    55  static void bcm63xx_internal_irq_mask(struct irq_data *d) 
    56  { 
    57 +       unsigned long flags; 
    58 + 
    59 +       spin_lock_irqsave(&ipic_lock, flags); 
    60         internal_irq_mask(d->irq - IRQ_INTERNAL_BASE); 
    61 +       spin_unlock_irqrestore(&ipic_lock, flags); 
     49@@ -357,10 +364,13 @@ static void __internal_irq_mask_##width( 
     50        unsigned reg = (irq / 32) ^ (width/32 - 1);                     \ 
     51        unsigned bit = irq & 0x1f;                                      \ 
     52        u32 irq_mask_addr = get_irq_mask_addr(0);                       \ 
     53+       unsigned long flags;                                            \ 
     54                                                                        \ 
     55+       spin_lock_irqsave(&ipic_lock, flags);                           \ 
     56        val = bcm_readl(irq_mask_addr + reg * sizeof(u32));             \ 
     57        val &= ~(1 << bit);                                             \ 
     58        bcm_writel(val, irq_mask_addr + reg * sizeof(u32));             \ 
     59+       spin_unlock_irqrestore(&ipic_lock, flags);                      \ 
     60 }                                                                      \ 
     61                                                                        \ 
     62 static void __internal_irq_unmask_##width(unsigned int irq)            \ 
     63@@ -369,10 +379,13 @@ static void __internal_irq_unmask_##widt 
     64        unsigned reg = (irq / 32) ^ (width/32 - 1);                     \ 
     65        unsigned bit = irq & 0x1f;                                      \ 
     66        u32 irq_mask_addr = get_irq_mask_addr(0);                       \ 
     67+       unsigned long flags;                                            \ 
     68                                                                        \ 
     69+       spin_lock_irqsave(&ipic_lock, flags);                           \ 
     70        val = bcm_readl(irq_mask_addr + reg * sizeof(u32));             \ 
     71        val |= (1 << bit);                                              \ 
     72        bcm_writel(val, irq_mask_addr + reg * sizeof(u32));             \ 
     73+       spin_unlock_irqrestore(&ipic_lock, flags);                      \ 
    6274 } 
    6375  
    64  static void bcm63xx_internal_irq_unmask(struct irq_data *d) 
    65  { 
    66 +       unsigned long flags; 
    67 + 
    68 +       spin_lock_irqsave(&ipic_lock, flags); 
    69         internal_irq_unmask(d->irq - IRQ_INTERNAL_BASE); 
    70 +       spin_unlock_irqrestore(&ipic_lock, flags); 
    71  } 
    72   
    73  /* 
    74 @@ -397,8 +412,11 @@ static void bcm63xx_external_irq_mask(st 
     76 BUILD_IPIC_INTERNAL(32); 
     77@@ -431,8 +444,10 @@ static void bcm63xx_external_irq_mask(st 
    7578 { 
    7679        unsigned int irq = d->irq - IRQ_EXTERNAL_BASE; 
     
    7982  
    8083        regaddr = get_ext_irq_perf_reg(irq); 
    81 + 
    8284+       spin_lock_irqsave(&epic_lock, flags); 
    8385        reg = bcm_perf_readl(regaddr); 
    8486  
    8587        if (BCMCPU_IS_6348()) 
    86 @@ -407,16 +425,24 @@ static void bcm63xx_external_irq_mask(st 
     88@@ -441,6 +456,8 @@ static void bcm63xx_external_irq_mask(st 
    8789                reg &= ~EXTIRQ_CFG_MASK(irq % 4); 
    8890  
    8991        bcm_perf_writel(reg, regaddr); 
    90 -       if (is_ext_irq_cascaded) 
    91 -               internal_irq_mask(irq + ext_irq_start); 
    9292+       spin_unlock_irqrestore(&epic_lock, flags); 
    9393+ 
    94 +       if (is_ext_irq_cascaded) { 
    95 +               struct irq_data *cd = irq_get_irq_data(irq + ext_irq_start); 
    96 + 
    97 +               bcm63xx_internal_irq_mask(cd); 
    98 +       } 
     94        if (is_ext_irq_cascaded) 
     95                internal_irq_mask(irq + ext_irq_start); 
    9996 } 
    100   
    101  static void bcm63xx_external_irq_unmask(struct irq_data *d) 
     97@@ -449,8 +466,10 @@ static void bcm63xx_external_irq_unmask( 
    10298 { 
    10399        unsigned int irq = d->irq - IRQ_EXTERNAL_BASE; 
     
    106102  
    107103        regaddr = get_ext_irq_perf_reg(irq); 
    108 + 
    109104+       spin_lock_irqsave(&epic_lock, flags); 
    110105        reg = bcm_perf_readl(regaddr); 
    111106  
    112107        if (BCMCPU_IS_6348()) 
    113 @@ -425,16 +451,22 @@ static void bcm63xx_external_irq_unmask( 
     108@@ -459,6 +478,7 @@ static void bcm63xx_external_irq_unmask( 
    114109                reg |= EXTIRQ_CFG_MASK(irq % 4); 
    115110  
    116111        bcm_perf_writel(reg, regaddr); 
    117112+       spin_unlock_irqrestore(&epic_lock, flags); 
    118 + 
    119 +       if (is_ext_irq_cascaded) { 
    120 +               struct irq_data *cd = irq_get_irq_data(irq + ext_irq_start); 
    121113  
    122 -       if (is_ext_irq_cascaded) 
    123 -               internal_irq_unmask(irq + ext_irq_start); 
    124 +               bcm63xx_internal_irq_unmask(cd); 
    125 +       } 
    126  } 
    127   
    128  static void bcm63xx_external_irq_clear(struct irq_data *d) 
     114        if (is_ext_irq_cascaded) 
     115                internal_irq_unmask(irq + ext_irq_start); 
     116@@ -468,8 +488,10 @@ static void bcm63xx_external_irq_clear(s 
    129117 { 
    130118        unsigned int irq = d->irq - IRQ_EXTERNAL_BASE; 
     
    132120+       unsigned long flags; 
    133121  
     122        regaddr = get_ext_irq_perf_reg(irq); 
    134123+       spin_lock_irqsave(&epic_lock, flags); 
    135         regaddr = get_ext_irq_perf_reg(irq); 
    136124        reg = bcm_perf_readl(regaddr); 
    137125  
    138 @@ -444,6 +476,7 @@ static void bcm63xx_external_irq_clear(s 
     126        if (BCMCPU_IS_6348()) 
     127@@ -478,6 +500,7 @@ static void bcm63xx_external_irq_clear(s 
    139128                reg |= EXTIRQ_CFG_CLEAR(irq % 4); 
    140129  
     
    144133  
    145134 static int bcm63xx_external_irq_set_type(struct irq_data *d, 
    146 @@ -452,6 +485,7 @@ static int bcm63xx_external_irq_set_type 
     135@@ -486,6 +509,7 @@ static int bcm63xx_external_irq_set_type 
    147136        unsigned int irq = d->irq - IRQ_EXTERNAL_BASE; 
    148137        u32 reg, regaddr; 
     
    152141        flow_type &= IRQ_TYPE_SENSE_MASK; 
    153142  
    154 @@ -486,9 +520,11 @@ static int bcm63xx_external_irq_set_type 
     143@@ -520,6 +544,7 @@ static int bcm63xx_external_irq_set_type 
    155144        } 
    156145  
    157146        regaddr = get_ext_irq_perf_reg(irq); 
    158 -       reg = bcm_perf_readl(regaddr); 
     147+       spin_lock_irqsave(&epic_lock, flags); 
     148        reg = bcm_perf_readl(regaddr); 
    159149        irq %= 4; 
    160150  
    161 +       spin_lock_irqsave(&epic_lock, flags); 
    162 +       reg = bcm_perf_readl(regaddr); 
    163 + 
    164         switch (bcm63xx_get_cpu_id()) { 
    165         case BCM6348_CPU_ID: 
    166                 if (levelsense) 
    167 @@ -529,6 +565,7 @@ static int bcm63xx_external_irq_set_type 
     151@@ -564,6 +589,7 @@ static int bcm63xx_external_irq_set_type 
    168152        } 
    169153  
  • trunk/target/linux/brcm63xx/patches-3.9/320-MIPS-BCM63XX-wire-up-the-second-CPU-s-irq-line.patch

    r36660 r37098  
    1 From 1baec3216529f795905b6376f9c8e4f14b114ba2 Mon Sep 17 00:00:00 2001 
     1From 70c33fe0df8d14e40f3ca92ce56a668d66184858 Mon Sep 17 00:00:00 2001 
    22From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Fri, 26 Apr 2013 12:03:15 +0200 
    4 Subject: [PATCH 11/13] MIPS: BCM63XX: wire up the second CPU's irq line 
     4Subject: [PATCH 12/14] MIPS: BCM63XX: wire up the second cpu's irq line 
    55 
    6 It's hardwired to IRQ3, so we don't need to actually check the CPU id. 
    7  
    8 Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    96--- 
    10  arch/mips/bcm63xx/irq.c |   40 ++++++++++++++++++++++++++++++++-------- 
    11  1 file changed, 32 insertions(+), 8 deletions(-) 
     7 arch/mips/bcm63xx/irq.c |   50 ++++++++++++++++++++++++++++++++++++++--------- 
     8 1 file changed, 41 insertions(+), 9 deletions(-) 
    129 
    1310--- a/arch/mips/bcm63xx/irq.c 
    1411+++ b/arch/mips/bcm63xx/irq.c 
    15 @@ -329,11 +329,15 @@ static void __internal_irq_mask_##width( 
     12@@ -363,13 +363,20 @@ static void __internal_irq_mask_##width( 
    1613        u32 val;                                                        \ 
    1714        unsigned reg = (irq / 32) ^ (width/32 - 1);                     \ 
    1815        unsigned bit = irq & 0x1f;                                      \ 
    1916-       u32 irq_mask_addr = get_irq_mask_addr(0);                       \ 
     17        unsigned long flags;                                            \ 
    2018+       int cpu;                                                        \ 
    2119                                                                        \ 
     20        spin_lock_irqsave(&ipic_lock, flags);                           \ 
    2221-       val = bcm_readl(irq_mask_addr + reg * sizeof(u32));             \ 
    2322-       val &= ~(1 << bit);                                             \ 
    2423-       bcm_writel(val, irq_mask_addr + reg * sizeof(u32));             \ 
    25 +       for_each_online_cpu(cpu) {                                      \ 
     24+       for_each_present_cpu(cpu) {                                     \ 
    2625+               u32 irq_mask_addr = get_irq_mask_addr(cpu);             \ 
     26+                                                                       \ 
     27+               if (!irq_mask_addr)                                     \ 
     28+                       break;                                          \ 
    2729+                                                                       \ 
    2830+               val = bcm_readl(irq_mask_addr + reg * sizeof(u32));     \ 
     
    3032+               bcm_writel(val, irq_mask_addr + reg * sizeof(u32));     \ 
    3133+       }                                                               \ 
     34        spin_unlock_irqrestore(&ipic_lock, flags);                      \ 
    3235 }                                                                      \ 
    3336                                                                        \ 
    34  static void __internal_irq_unmask_##width(unsigned int irq)            \ 
    35 @@ -341,11 +345,15 @@ static void __internal_irq_unmask_##widt 
     37@@ -378,13 +385,23 @@ static void __internal_irq_unmask_##widt 
    3638        u32 val;                                                        \ 
    3739        unsigned reg = (irq / 32) ^ (width/32 - 1);                     \ 
    3840        unsigned bit = irq & 0x1f;                                      \ 
    3941-       u32 irq_mask_addr = get_irq_mask_addr(0);                       \ 
     42        unsigned long flags;                                            \ 
    4043+       int cpu;                                                        \ 
    41 +                                                                       \ 
    42 +       for_each_online_cpu(cpu) {                                      \ 
    43 +               u32 irq_mask_addr = get_irq_mask_addr(cpu);             \ 
    4444                                                                        \ 
     45        spin_lock_irqsave(&ipic_lock, flags);                           \ 
    4546-       val = bcm_readl(irq_mask_addr + reg * sizeof(u32));             \ 
    4647-       val |= (1 << bit);                                              \ 
    4748-       bcm_writel(val, irq_mask_addr + reg * sizeof(u32));             \ 
     49+       for_each_present_cpu(cpu) {                                     \ 
     50+               u32 irq_mask_addr = get_irq_mask_addr(cpu);             \ 
     51+                                                                       \ 
     52+               if (!irq_mask_addr)                                     \ 
     53+                       break;                                          \ 
     54+                                                                       \ 
    4855+               val = bcm_readl(irq_mask_addr + reg * sizeof(u32));     \ 
    49 +               val |= (1 << bit);                                      \ 
     56+               if (cpu_online(cpu))                                    \ 
     57+                       val |= (1 << bit);                              \ 
     58+               else                                                    \ 
     59+                       val &= ~(1 << bit);                             \ 
    5060+               bcm_writel(val, irq_mask_addr + reg * sizeof(u32));     \ 
    5161+       }                                                               \ 
     62        spin_unlock_irqrestore(&ipic_lock, flags);                      \ 
    5263 } 
    5364  
    54  BUILD_IPIC_INTERNAL(32); 
    55 @@ -369,6 +377,10 @@ asmlinkage void plat_irq_dispatch(void) 
     65@@ -409,7 +426,10 @@ asmlinkage void plat_irq_dispatch(void) 
    5666                        do_IRQ(1); 
    5767                if (cause & CAUSEF_IP2) 
    5868                        dispatch_internal(0); 
    59 +#ifdef CONFIG_SMP 
    60 +               if (cause & CAUSEF_IP3) 
    61 +                       dispatch_internal(1); 
    62 +#else 
    63                 if (!is_ext_irq_cascaded) { 
     69-               if (!is_ext_irq_cascaded) { 
     70+               if (is_ext_irq_cascaded) { 
     71+                       if (cause & CAUSEF_IP3) 
     72+                               dispatch_internal(1); 
     73+               } else { 
    6474                        if (cause & CAUSEF_IP3) 
    6575                                do_IRQ(IRQ_EXT_0); 
    66 @@ -379,6 +391,7 @@ asmlinkage void plat_irq_dispatch(void) 
    67                         if (cause & CAUSEF_IP6) 
    68                                 do_IRQ(IRQ_EXT_3); 
    69                 } 
    70 +#endif 
    71         } while (1); 
    72  } 
    73   
    74 @@ -598,6 +611,14 @@ static struct irqaction cpu_ip2_cascade_ 
     76                        if (cause & CAUSEF_IP4) 
     77@@ -622,6 +642,14 @@ static struct irqaction cpu_ip2_cascade_ 
    7578        .flags          = IRQF_NO_THREAD, 
    7679 }; 
     
    8790        .handler        = no_action, 
    8891        .name           = "cascade_extirq", 
    89 @@ -624,4 +645,7 @@ void __init arch_init_irq(void) 
     92@@ -648,4 +676,8 @@ void __init arch_init_irq(void) 
    9093        } 
    9194  
    9295        setup_irq(MIPS_CPU_IRQ_BASE + 2, &cpu_ip2_cascade_action); 
    9396+#ifdef CONFIG_SMP 
    94 +       setup_irq(MIPS_CPU_IRQ_BASE + 3, &cpu_ip3_cascade_action); 
     97+       if (is_ext_irq_cascaded) 
     98+               setup_irq(MIPS_CPU_IRQ_BASE + 3, &cpu_ip3_cascade_action); 
    9599+#endif 
    96100 } 
  • trunk/target/linux/brcm63xx/patches-3.9/322-MIPS-BCM63XX-allow-setting-affinity-for-IPIC.patch

    r36660 r37098  
    1 From a8bb19e5ba9a3a73fe6a761295b67b641a7bc9df Mon Sep 17 00:00:00 2001 
     1From 9e341df1f67c3c64dc5ac668a30bbb6b5ab5f2b4 Mon Sep 17 00:00:00 2001 
    22From: Jonas Gorski <jogo@openwrt.org> 
    33Date: Fri, 26 Apr 2013 12:06:03 +0200 
    4 Subject: [PATCH 13/13] MIPS: BCM63XX: allow setting affinity for IPIC 
    5  
    6 Add support for setting the SMP affinity for the IPIC IRQs. 
     4Subject: [PATCH 14/14] MIPS: BCM63XX: allow setting affinity for IPIC 
    75 
    86Signed-off-by: Jonas Gorski <jogo@openwrt.org> 
    97--- 
    10  arch/mips/bcm63xx/irq.c |   27 ++++++++++++++++++++++++++- 
    11  1 file changed, 26 insertions(+), 1 deletion(-) 
     8 arch/mips/bcm63xx/irq.c |   49 +++++++++++++++++++++++++++++++++++++++-------- 
     9 1 file changed, 41 insertions(+), 8 deletions(-) 
    1210 
    1311--- a/arch/mips/bcm63xx/irq.c 
    1412+++ b/arch/mips/bcm63xx/irq.c 
    15 @@ -418,9 +418,14 @@ static void bcm63xx_internal_irq_mask(st 
     13@@ -24,8 +24,10 @@ static void __dispatch_internal_32(int c 
     14 static void __dispatch_internal_64(int cpu) __maybe_unused; 
     15 static void __internal_irq_mask_32(struct irq_data *d) __maybe_unused; 
     16 static void __internal_irq_mask_64(struct irq_data *d) __maybe_unused; 
     17-static void __internal_irq_unmask_32(struct irq_data *d) __maybe_unused; 
     18-static void __internal_irq_unmask_64(struct irq_data *d) __maybe_unused; 
     19+static void __internal_irq_unmask_32(struct irq_data *d, 
     20+                                    const struct cpumask *mask) __maybe_unused; 
     21+static void __internal_irq_unmask_64(struct irq_data *d, 
     22+                                    const struct cpumask *mask) __maybe_unused; 
     23  
     24 static DEFINE_SPINLOCK(ipic_lock); 
     25 static DEFINE_SPINLOCK(epic_lock); 
     26@@ -168,7 +170,7 @@ static unsigned int ext_irq_count; 
     27 static unsigned int ext_irq_start, ext_irq_end; 
     28 static unsigned int ext_irq_cfg_reg1, ext_irq_cfg_reg2; 
     29 static void (*internal_irq_mask)(struct irq_data *d); 
     30-static void (*internal_irq_unmask)(struct irq_data *d); 
     31+static void (*internal_irq_unmask)(struct irq_data *d, const struct cpumask *m); 
     32  
     33 static void bcm63xx_init_irq(void) 
     34 { 
     35@@ -311,6 +313,20 @@ static inline void handle_internal(int i 
     36                do_IRQ(intbit + IRQ_INTERNAL_BASE); 
     37 } 
     38  
     39+static inline int enable_irq_for_cpu(int cpu, struct irq_data *d, 
     40+                                    const struct cpumask *m) 
     41+{ 
     42+       bool enable = cpu_online(cpu); 
     43+#ifdef CONFIG_SMP 
     44+ 
     45+       if (m) 
     46+               enable &= cpu_isset(cpu, *m); 
     47+       else if (irqd_affinity_was_set(d)) 
     48+               enable &= cpu_isset(cpu, *d->affinity); 
     49+#endif 
     50+       return enable; 
     51+} 
     52+ 
     53 /* 
     54  * dispatch internal devices IRQ (uart, enet, watchdog, ...). do not 
     55  * prioritize any interrupt relatively to another. the static counter 
     56@@ -381,7 +397,8 @@ static void __internal_irq_mask_##width( 
     57        spin_unlock_irqrestore(&ipic_lock, flags);                      \ 
     58 }                                                                      \ 
     59                                                                        \ 
     60-static void __internal_irq_unmask_##width(struct irq_data *d)          \ 
     61+static void __internal_irq_unmask_##width(struct irq_data *d,          \ 
     62+                                         const struct cpumask *m)      \ 
     63 {                                                                      \ 
     64        u32 val;                                                        \ 
     65        unsigned irq = d->irq - IRQ_INTERNAL_BASE;                      \ 
     66@@ -398,7 +415,7 @@ static void __internal_irq_unmask_##widt 
     67                        break;                                          \ 
     68                                                                        \ 
     69                val = bcm_readl(irq_mask_addr + reg * sizeof(u32));     \ 
     70-               if (cpu_online(cpu))                                    \ 
     71+               if (enable_irq_for_cpu(cpu, d, m))                      \ 
     72                        val |= (1 << bit);                              \ 
     73                else                                                    \ 
     74                        val &= ~(1 << bit);                             \ 
     75@@ -455,7 +472,7 @@ static void bcm63xx_internal_irq_mask(st 
     76  
    1677 static void bcm63xx_internal_irq_unmask(struct irq_data *d) 
    1778 { 
    18         unsigned long flags; 
    19 +       const struct cpumask *dest = cpu_online_mask; 
    20   
    21         spin_lock_irqsave(&ipic_lock, flags); 
    22 -       internal_irq_unmask(d->irq - IRQ_INTERNAL_BASE, cpu_online_mask); 
    23 +#ifdef CONFIG_SMP 
    24 +       if (irqd_affinity_was_set(d)) 
    25 +               dest = d->affinity; 
    26 +#endif 
    27 +       internal_irq_unmask(d->irq - IRQ_INTERNAL_BASE, dest); 
    28         spin_unlock_irqrestore(&ipic_lock, flags); 
     79-       internal_irq_unmask(d); 
     80+       internal_irq_unmask(d, NULL); 
    2981 } 
    3082  
    31 @@ -596,10 +601,30 @@ static int bcm63xx_external_irq_set_type 
     83 /* 
     84@@ -503,7 +520,8 @@ static void bcm63xx_external_irq_unmask( 
     85        spin_unlock_irqrestore(&epic_lock, flags); 
     86  
     87        if (is_ext_irq_cascaded) 
     88-               internal_irq_unmask(irq_get_irq_data(irq + ext_irq_start)); 
     89+               internal_irq_unmask(irq_get_irq_data(irq + ext_irq_start), 
     90+                                   NULL); 
     91 } 
     92  
     93 static void bcm63xx_external_irq_clear(struct irq_data *d) 
     94@@ -622,6 +640,18 @@ static int bcm63xx_external_irq_set_type 
    3295        return IRQ_SET_MASK_OK_NOCOPY; 
    3396 } 
     
    38101+                                        bool force) 
    39102+{ 
    40 +       unsigned int irq = data->irq - IRQ_INTERNAL_BASE; 
    41 +       unsigned long flags; 
    42 + 
    43 +       spin_lock_irqsave(&ipic_lock, flags); 
    44103+       if (!irqd_irq_disabled(data)) 
    45 +               internal_irq_unmask(irq, dest); 
    46 +       spin_unlock_irqrestore(&ipic_lock, flags); 
     104+               internal_irq_unmask(data, dest); 
    47105+ 
    48106+       return 0; 
     
    53111        .name           = "bcm63xx_ipic", 
    54112        .irq_mask       = bcm63xx_internal_irq_mask, 
    55         .irq_unmask     = bcm63xx_internal_irq_unmask, 
    56 +#ifdef CONFIG_SMP 
    57 +       .irq_set_affinity = bcm63xx_internal_set_affinity, 
    58 +#endif 
    59  }; 
     113@@ -679,7 +709,10 @@ void __init arch_init_irq(void) 
    60114  
    61  static struct irq_chip bcm63xx_external_irq_chip = { 
     115        setup_irq(MIPS_CPU_IRQ_BASE + 2, &cpu_ip2_cascade_action); 
     116 #ifdef CONFIG_SMP 
     117-       if (is_ext_irq_cascaded) 
     118+       if (is_ext_irq_cascaded) { 
     119                setup_irq(MIPS_CPU_IRQ_BASE + 3, &cpu_ip3_cascade_action); 
     120+               bcm63xx_internal_irq_chip.irq_set_affinity = 
     121+                       bcm63xx_internal_set_affinity; 
     122+       } 
     123 #endif 
     124 } 
  • trunk/target/linux/brcm63xx/patches-3.9/402_bcm63xx_enet_vlan_incoming_fixed.patch

    r36660 r37098  
    11--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    22+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    3 @@ -1514,7 +1514,7 @@ static int compute_hw_mtu(struct bcm_ene 
     3@@ -1637,7 +1637,7 @@ static int compute_hw_mtu(struct bcm_ene 
    44        actual_mtu = mtu; 
    55  
  • trunk/target/linux/brcm63xx/patches-3.9/403-6358-enet1-external-mii-clk.patch

    r36660 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -859,6 +859,8 @@ void __init board_prom_init(void) 
     3@@ -902,6 +902,8 @@ void __init board_prom_init(void) 
    44                if (BCMCPU_IS_6348()) 
    55                        val |= GPIO_MODE_6348_G3_EXT_MII | 
     
    1212--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    1313+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    14 @@ -578,6 +578,8 @@ 
     14@@ -621,6 +621,8 @@ 
    1515 #define GPIO_MODE_6358_EXTRA_SPI_SS    (1 << 7) 
    1616 #define GPIO_MODE_6358_SERIAL_LED      (1 << 10) 
  • trunk/target/linux/brcm63xx/patches-3.9/404-NET-bcm63xx_enet-move-phy_-dis-connect-into-probe-re.patch

    r36660 r37098  
    1616--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    1717+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    18 @@ -784,10 +784,8 @@ static int bcm_enet_open(struct net_devi 
     18@@ -870,10 +870,8 @@ static int bcm_enet_open(struct net_devi 
    1919        struct bcm_enet_priv *priv; 
    2020        struct sockaddr addr; 
     
    2727        u32 val; 
    2828  
    29 @@ -795,40 +793,10 @@ static int bcm_enet_open(struct net_devi 
     29@@ -881,40 +879,10 @@ static int bcm_enet_open(struct net_devi 
    3030        kdev = &priv->pdev->dev; 
    3131  
     
    6969  
    7070        /* mask all interrupts and request them */ 
    71 @@ -838,7 +806,7 @@ static int bcm_enet_open(struct net_devi 
     71@@ -924,7 +892,7 @@ static int bcm_enet_open(struct net_devi 
    7272  
    7373        ret = request_irq(dev->irq, bcm_enet_isr_mac, 0, dev->name, dev); 
     
    7878        ret = request_irq(priv->irq_rx, bcm_enet_isr_dma, IRQF_DISABLED, 
    7979                          dev->name, dev); 
    80 @@ -1023,9 +991,6 @@ out_freeirq_rx: 
     80@@ -1131,9 +1099,6 @@ out_freeirq_rx: 
    8181 out_freeirq: 
    8282        free_irq(dev->irq, dev); 
     
    8888 } 
    8989  
    90 @@ -1130,12 +1095,6 @@ static int bcm_enet_stop(struct net_devi 
     90@@ -1238,12 +1203,6 @@ static int bcm_enet_stop(struct net_devi 
    9191        free_irq(priv->irq_rx, dev); 
    9292        free_irq(dev->irq, dev); 
     
    101101 } 
    102102  
    103 @@ -1707,6 +1666,8 @@ static int bcm_enet_probe(struct platfor 
     103@@ -1838,6 +1797,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 @@ -1744,6 +1705,38 @@ static int bcm_enet_probe(struct platfor 
     112@@ -1875,6 +1836,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 @@ -1789,6 +1782,9 @@ static int bcm_enet_probe(struct platfor 
     151@@ -1920,6 +1913,9 @@ static int bcm_enet_probe(struct platfor 
    152152        return 0; 
    153153  
     
    159159                mdiobus_unregister(priv->mii_bus); 
    160160  
    161 @@ -1830,6 +1826,8 @@ static int bcm_enet_remove(struct platfo 
     161@@ -1961,6 +1957,8 @@ static int bcm_enet_remove(struct platfo 
    162162        enet_writel(priv, 0, ENET_MIISC_REG); 
    163163  
  • trunk/target/linux/brcm63xx/patches-3.9/408-bcm63xx_enet-enable-rgmii-clock-on-external-ports.patch

    r36660 r37098  
    1111--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    1212+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    13 @@ -861,6 +861,19 @@ 
     13@@ -931,6 +931,19 @@ 
    1414 #define ENETSW_PORTOV_FDX_MASK         (1 << 1) 
    1515 #define ENETSW_PORTOV_LINKUP_MASK      (1 << 0) 
     
    3333--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    3434+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c 
    35 @@ -2200,6 +2200,18 @@ static int bcm_enetsw_open(struct net_de 
     35@@ -2233,6 +2233,18 @@ static int bcm_enetsw_open(struct net_de 
    3636                priv->sw_port_link[i] = 0; 
    3737        } 
  • trunk/target/linux/brcm63xx/patches-3.9/409-MIPS-BCM63XX-add-HS-SPI-platform-device-and-register.patch

    r36660 r37098  
    3838 #include <bcm63xx_dev_spi.h> 
    3939 #include <bcm63xx_dev_usb_ehci.h> 
    40 @@ -952,6 +953,7 @@ int __init board_register_devices(void) 
     40@@ -995,6 +996,7 @@ int __init board_register_devices(void) 
    4141                        pr_err(PFX "failed to register fallback SPROM\n"); 
    4242        } 
  • trunk/target/linux/brcm63xx/patches-3.9/411-MIPS-BCM63XX-Register-SPI-flash-if-present.patch

    r36660 r37098  
    5959                        return BCM63XX_FLASH_TYPE_SERIAL; 
    6060                else 
    61 @@ -85,6 +108,9 @@ static int __init bcm63xx_detect_flash_t 
     61@@ -86,6 +109,9 @@ static int __init bcm63xx_detect_flash_t 
    6262                        return BCM63XX_FLASH_TYPE_NAND; 
    6363        case BCM6368_CPU_ID: 
     
    6969                case STRAPBUS_6368_BOOT_SEL_NAND: 
    7070                        return BCM63XX_FLASH_TYPE_NAND; 
    71 @@ -116,8 +142,13 @@ int __init bcm63xx_flash_register(void) 
     71@@ -117,8 +143,13 @@ int __init bcm63xx_flash_register(void) 
    7272  
    7373                return platform_device_register(&mtd_dev); 
     
    8787--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    8888+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h 
    89 @@ -629,6 +629,7 @@ 
     89@@ -672,6 +672,7 @@ 
    9090 #define GPIO_STRAPBUS_REG              0x40 
    9191 #define STRAPBUS_6358_BOOT_SEL_PARALLEL (1 << 1) 
     
    9595 #define STRAPBUS_6368_BOOT_SEL_NAND    0 
    9696 #define STRAPBUS_6368_BOOT_SEL_SERIAL  1 
    97 @@ -1443,6 +1444,7 @@ 
     97@@ -1513,6 +1514,7 @@ 
    9898 #define STRAPBUS_6362_BOOT_SEL_NAND    (0 << 15) 
    9999  
  • trunk/target/linux/brcm63xx/patches-3.9/413-BCM63XX-allow-providing-fixup-data-in-board-data.patch

    r36660 r37098  
    1717+#include <pci_ath9k_fixup.h> 
    1818  
     19 #include <uapi/linux/bcm933xx_hcs.h> 
    1920 #include <uapi/linux/bcm963xx_tag.h> 
    20   
    21 @@ -907,6 +908,7 @@ int __init board_register_devices(void) 
     21@@ -950,6 +951,7 @@ int __init board_register_devices(void) 
    2222 { 
    2323        int button_count = 0; 
     
    2727        if (board.has_uart0) 
    2828                bcm63xx_uart_register(0); 
    29 @@ -945,7 +947,8 @@ int __init board_register_devices(void) 
     29@@ -988,7 +990,8 @@ int __init board_register_devices(void) 
    3030         * do this after registering enet devices 
    3131         */ 
     
    3737                memcpy(bcm63xx_sprom.et1mac, bcm63xx_sprom.il0mac, ETH_ALEN); 
    3838                if (ssb_arch_register_fallback_sprom( 
    39 @@ -987,5 +990,9 @@ int __init board_register_devices(void) 
     39@@ -1034,5 +1037,9 @@ int __init board_register_devices(void) 
    4040                platform_device_register(&bcm63xx_gpio_keys_device); 
    4141        } 
  • trunk/target/linux/brcm63xx/patches-3.9/415-MIPS-BCM63XX-store-the-flash-type-in-global-variable.patch

    r36660 r37098  
    2020        { 
    2121                .name           = "cfe", 
    22 @@ -86,26 +88,30 @@ static int __init bcm63xx_detect_flash_t 
     22@@ -86,27 +88,31 @@ static int __init bcm63xx_detect_flash_t 
    2323                        bcm63xx_spi_flash_info[0].max_speed_hz = 16666667; 
    2424  
     
    3737+               bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_PARALLEL; 
    3838+               break; 
     39        case BCM3368_CPU_ID: 
    3940        case BCM6358_CPU_ID: 
    4041                val = bcm_gpio_readl(GPIO_STRAPBUS_REG); 
     
    5859                val = bcm_gpio_readl(GPIO_STRAPBUS_REG); 
    5960                if (val & STRAPBUS_6368_SPI_CLK_FAST) 
    60 @@ -113,25 +119,32 @@ static int __init bcm63xx_detect_flash_t 
     61@@ -114,25 +120,32 @@ static int __init bcm63xx_detect_flash_t 
    6162  
    6263                switch (val & STRAPBUS_6368_BOOT_SEL_MASK) { 
     
    9798                /* read base address of boot chip select (0) */ 
    9899                val = bcm_mpi_readl(MPI_CSBASE_REG(0)); 
    99 @@ -154,7 +167,7 @@ int __init bcm63xx_flash_register(void) 
     100@@ -155,7 +168,7 @@ int __init bcm63xx_flash_register(void) 
    100101                return -ENODEV; 
    101102        default: 
  • trunk/target/linux/brcm63xx/patches-3.9/418-MIPS-BCM63XX-pass-caldata-info-to-flash.patch

    r36660 r37098  
    1212--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    1313+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    14 @@ -966,7 +966,7 @@ int __init board_register_devices(void) 
     14@@ -1009,7 +1009,7 @@ int __init board_register_devices(void) 
    1515        if (board.num_spis) 
    1616                spi_register_board_info(board.spis, board.num_spis); 
     
    4747  
    4848 static struct spi_board_info bcm63xx_spi_flash_info[] = { 
    49 @@ -137,10 +141,13 @@ static int __init bcm63xx_detect_flash_t 
     49@@ -138,10 +142,13 @@ static int __init bcm63xx_detect_flash_t 
    5050        return 0; 
    5151 } 
  • trunk/target/linux/brcm63xx/patches-3.9/420-BCM63XX-add-endian-check-for-ath9k.patch

    r36660 r37098  
    4040--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    4141+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    42 @@ -992,7 +992,8 @@ int __init board_register_devices(void) 
     42@@ -1039,7 +1039,8 @@ int __init board_register_devices(void) 
    4343  
    4444        /* register any fixups */ 
  • trunk/target/linux/brcm63xx/patches-3.9/421-BCM63XX-add-led-pin-for-ath9k.patch

    r36660 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -993,7 +993,7 @@ int __init board_register_devices(void) 
     3@@ -1040,7 +1040,7 @@ int __init board_register_devices(void) 
    44        /* register any fixups */ 
    55        for (i = 0; i < board.has_caldata; i++) 
  • trunk/target/linux/brcm63xx/patches-3.9/422-BCM63XX-add-a-fixup-for-rt2x00-devices.patch

    r36660 r37098  
    3535+#include <pci_rt2x00_fixup.h> 
    3636  
     37 #include <uapi/linux/bcm933xx_hcs.h> 
    3738 #include <uapi/linux/bcm963xx_tag.h> 
    38   
    39 @@ -991,9 +992,19 @@ int __init board_register_devices(void) 
     39@@ -1038,9 +1039,19 @@ int __init board_register_devices(void) 
    4040        } 
    4141  
     
    6262--- a/arch/mips/bcm63xx/dev-flash.c 
    6363+++ b/arch/mips/bcm63xx/dev-flash.c 
    64 @@ -141,7 +141,7 @@ static int __init bcm63xx_detect_flash_t 
     64@@ -142,7 +142,7 @@ static int __init bcm63xx_detect_flash_t 
    6565        return 0; 
    6666 } 
  • trunk/target/linux/brcm63xx/patches-3.9/423-bcm63xx_enet_add_b53_support.patch

    r36660 r37098  
    2121 #include <bcm63xx_dev_enet.h> 
    2222 #include "bcm63xx_enet.h" 
    23 @@ -1991,7 +1992,8 @@ static int bcm_enet_remove(struct platfo 
     23@@ -1983,7 +1984,8 @@ static int bcm_enet_remove(struct platfo 
    2424        return 0; 
    2525 } 
     
    3131        .remove = bcm_enet_remove, 
    3232        .driver = { 
    33 @@ -2000,6 +2002,42 @@ struct platform_driver bcm63xx_enet_driv 
     33@@ -1992,6 +1994,42 @@ struct platform_driver bcm63xx_enet_driv 
    3434        }, 
    3535 }; 
     
    7474  * switch mii access callbacks 
    7575  */ 
    76 @@ -2248,29 +2286,6 @@ static int bcm_enetsw_open(struct net_de 
     76@@ -2245,29 +2283,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 @@ -2738,6 +2753,9 @@ static int bcm_enetsw_probe(struct platf 
     106@@ -2727,6 +2742,9 @@ static int bcm_enetsw_probe(struct platf 
    107107        struct bcm63xx_enetsw_platform_data *pd; 
    108108        struct resource *res_mem; 
     
    113113  
    114114        /* stop if shared driver failed, assume driver->probe will be 
    115          * called in the same order we register devices (correct ?) */ 
    116 @@ -2825,6 +2843,43 @@ static int bcm_enetsw_probe(struct platf 
     115         * called in the same order we register devices (correct ?) 
     116@@ -2816,6 +2834,43 @@ static int bcm_enetsw_probe(struct platf 
    117117        priv->pdev = pdev; 
    118118        priv->net_dev = dev; 
     
    158158  
    159159 out_put_clk: 
    160 @@ -2855,6 +2910,9 @@ static int bcm_enetsw_remove(struct plat 
     160@@ -2844,6 +2899,9 @@ static int bcm_enetsw_remove(struct plat 
    161161        priv = netdev_priv(dev); 
    162162        unregister_netdev(dev); 
  • trunk/target/linux/brcm63xx/patches-3.9/500-board-D4PW.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -522,6 +522,56 @@ static struct board_info __initdata boar 
     3@@ -555,6 +555,56 @@ static struct board_info __initdata boar 
    44  
    55        .has_ohci0 = 1, 
     
    5858  
    5959 /* 
    60 @@ -696,6 +746,7 @@ static const struct board_info __initcon 
     60@@ -732,6 +782,7 @@ static const struct board_info __initcon 
    6161        &board_DV201AMR, 
    6262        &board_96348gw_a, 
  • trunk/target/linux/brcm63xx/patches-3.9/501-board-NB4.patch

    r36958 r37098  
    1010 #include <bcm63xx_board.h> 
    1111 #include <bcm63xx_cpu.h> 
    12 @@ -48,6 +50,12 @@ 
     12@@ -49,6 +51,12 @@ 
     13 #define CFE_OFFSET_64K                 0x10000 
    1314 #define CFE_OFFSET_128K                        0x20000 
    14  #define HCS_OFFSET_128K                        0x20000 
    1515  
    1616+#define NB4_PID_OFFSET         0xff80 
     
    2323  
    2424 /* 
    25 @@ -721,6 +729,596 @@ static struct board_info __initdata boar 
     25@@ -754,6 +762,596 @@ static struct board_info __initdata boar 
    2626  
    2727        .has_ohci0                      = 1, 
     
    620620  
    621621 /* 
    622 @@ -754,6 +1352,11 @@ static const struct board_info __initcon 
     622@@ -790,6 +1388,11 @@ static const struct board_info __initcon 
    623623        &board_96358vw2, 
    624624        &board_AGPFS0, 
     
    632632 }; 
    633633  
    634 @@ -808,6 +1411,16 @@ static void __init boardid_fixup(u8 *boo 
     634@@ -844,6 +1447,16 @@ static void __init boardid_fixup(u8 *boo 
    635635        struct bcm_tag *tag = (struct bcm_tag *)(boot_addr + CFE_OFFSET_64K); 
    636636        char *board_name = (char *)bcm63xx_nvram_get_name(); 
  • trunk/target/linux/brcm63xx/patches-3.9/502-board-96338W2_E7T.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -193,6 +193,40 @@ static struct board_info __initdata boar 
     3@@ -226,6 +226,40 @@ static struct board_info __initdata boar 
    44                }, 
    55        }, 
     
    4242  
    4343 /* 
    44 @@ -1331,6 +1365,7 @@ static const struct board_info __initcon 
     44@@ -1367,6 +1401,7 @@ static const struct board_info __initcon 
    4545 #ifdef CONFIG_BCM63XX_CPU_6338 
    4646        &board_96338gw, 
  • trunk/target/linux/brcm63xx/patches-3.9/503-board-CPVA642.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -720,6 +720,98 @@ static struct board_info __initdata boar 
     3@@ -753,6 +753,98 @@ static struct board_info __initdata boar 
    44        }, 
    55 }; 
     
    100100        .name                           = "AGPF-S0", 
    101101        .expected_cpu_id                = 0x6358, 
    102 @@ -1386,6 +1478,7 @@ static const struct board_info __initcon 
     102@@ -1422,6 +1514,7 @@ static const struct board_info __initcon 
    103103        &board_96358vw, 
    104104        &board_96358vw2, 
  • trunk/target/linux/brcm63xx/patches-3.9/504-board_dsl_274xb_rev_c.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -856,6 +856,61 @@ static struct board_info __initdata boar 
     3@@ -889,6 +889,61 @@ static struct board_info __initdata boar 
    44        .has_ohci0                      = 1, 
    55 }; 
     
    6363        .sck            = NB4_SPI_GPIO_CLK, 
    6464        .mosi           = NB4_SPI_GPIO_MOSI, 
    65 @@ -1480,6 +1535,7 @@ static const struct board_info __initcon 
     65@@ -1516,6 +1571,7 @@ static const struct board_info __initcon 
    6666        &board_AGPFS0, 
    6767        &board_CPVA642, 
  • trunk/target/linux/brcm63xx/patches-3.9/505-board_spw500v.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -614,6 +614,67 @@ static struct board_info __initdata boar 
     3@@ -647,6 +647,67 @@ static struct board_info __initdata boar 
    44                }, 
    55        }, 
     
    6969  
    7070 /* 
    71 @@ -1527,6 +1588,7 @@ static const struct board_info __initcon 
     71@@ -1563,6 +1624,7 @@ static const struct board_info __initcon 
    7272        &board_96348gw_a, 
    7373        &board_rta1025w_16, 
  • trunk/target/linux/brcm63xx/patches-3.9/506-board_gw6200_gw6000.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -481,6 +481,112 @@ static struct board_info __initdata boar 
     3@@ -514,6 +514,112 @@ static struct board_info __initdata boar 
    44        }, 
    55 }; 
     
    114114        .name                           = "F@ST2404", 
    115115        .expected_cpu_id                = 0x6348, 
    116 @@ -1581,6 +1687,8 @@ static const struct board_info __initcon 
     116@@ -1617,6 +1723,8 @@ static const struct board_info __initcon 
    117117 #ifdef CONFIG_BCM63XX_CPU_6348 
    118118        &board_96348r, 
  • trunk/target/linux/brcm63xx/patches-3.9/507-board-MAGIC.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -781,6 +781,78 @@ static struct board_info __initdata boar 
     3@@ -814,6 +814,78 @@ static struct board_info __initdata boar 
    44                }, 
    55        }, 
     
    8080  
    8181 /* 
    82 @@ -1697,6 +1769,7 @@ static const struct board_info __initcon 
     82@@ -1733,6 +1805,7 @@ static const struct board_info __initcon 
    8383        &board_rta1025w_16, 
    8484        &board_96348_D4PW, 
  • trunk/target/linux/brcm63xx/patches-3.9/508-board_hw553.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -1739,6 +1739,82 @@ static struct board_info __initdata boar 
     3@@ -1772,6 +1772,82 @@ static struct board_info __initdata boar 
    44        .spis = nb4_spi_devices, 
    55        .num_spis = ARRAY_SIZE(nb4_spi_devices), 
     
    8484  
    8585 /* 
    86 @@ -1784,6 +1860,7 @@ static const struct board_info __initcon 
     86@@ -1820,6 +1896,7 @@ static const struct board_info __initcon 
    8787        &board_nb4_ser_r2, 
    8888        &board_nb4_fxc_r1, 
  • trunk/target/linux/brcm63xx/patches-3.9/509-board_rta1320_16m.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -227,6 +227,45 @@ static struct board_info __initdata boar 
     3@@ -260,6 +260,45 @@ static struct board_info __initdata boar 
    44                }, 
    55        }, 
     
    4747  
    4848 /* 
    49 @@ -1828,6 +1867,7 @@ static const struct board_info __initcon 
     49@@ -1864,6 +1903,7 @@ static const struct board_info __initcon 
    5050        &board_96338gw, 
    5151        &board_96338w, 
  • trunk/target/linux/brcm63xx/patches-3.9/510-board_spw303v.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -1854,6 +1854,72 @@ static struct board_info __initdata boar 
     3@@ -1887,6 +1887,72 @@ static struct board_info __initdata boar 
    44                }, 
    55        }, 
     
    7474  
    7575 /* 
    76 @@ -1901,6 +1967,7 @@ static const struct board_info __initcon 
     76@@ -1937,6 +2003,7 @@ static const struct board_info __initcon 
    7777        &board_nb4_fxc_r1, 
    7878        &board_nb4_fxc_r2, 
  • trunk/target/linux/brcm63xx/patches-3.9/511-board_V2500V.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -892,6 +892,65 @@ static struct board_info __initdata boar 
     3@@ -925,6 +925,65 @@ static struct board_info __initdata boar 
    44                }, 
    55        }, 
     
    6767  
    6868 /* 
    69 @@ -1952,6 +2011,7 @@ static const struct board_info __initcon 
     69@@ -1988,6 +2047,7 @@ static const struct board_info __initcon 
    7070        &board_96348_D4PW, 
    7171        &board_spw500v, 
     
    7575  
    7676 #ifdef CONFIG_BCM63XX_CPU_6358 
    77 @@ -2073,6 +2133,22 @@ void __init board_prom_init(void) 
     77@@ -2109,6 +2169,22 @@ void __init board_prom_init(void) 
    7878                val &= MPI_CSBASE_BASE_MASK; 
    7979        } 
  • trunk/target/linux/brcm63xx/patches-3.9/512-board_BTV2110.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -452,6 +452,64 @@ static struct board_info __initdata boar 
     3@@ -485,6 +485,64 @@ static struct board_info __initdata boar 
    44        }, 
    55 }; 
     
    6666        .name                           = "96348GW", 
    6767        .expected_cpu_id                = 0x6348, 
    68 @@ -2012,6 +2070,7 @@ static const struct board_info __initcon 
     68@@ -2048,6 +2106,7 @@ static const struct board_info __initcon 
    6969        &board_spw500v, 
    7070        &board_96348sv, 
  • trunk/target/linux/brcm63xx/patches-3.9/514-board_ct536_ct5621.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -510,6 +510,51 @@ static struct board_info __initdata boar 
     3@@ -543,6 +543,51 @@ static struct board_info __initdata boar 
    44 }; 
    55  
     
    5353        .name                           = "96348GW", 
    5454        .expected_cpu_id                = 0x6348, 
    55 @@ -2071,6 +2116,7 @@ static const struct board_info __initcon 
     55@@ -2107,6 +2152,7 @@ static const struct board_info __initcon 
    5656        &board_96348sv, 
    5757        &board_V2500V_BB, 
  • trunk/target/linux/brcm63xx/patches-3.9/515-board_DWV-S0_fixes.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -1279,6 +1279,8 @@ static struct board_info __initdata boar 
     3@@ -1312,6 +1312,8 @@ static struct board_info __initdata boar 
    44        .name                           = "DWV-S0", 
    55        .expected_cpu_id                = 0x6358, 
     
    1010        .has_enet1                      = 1, 
    1111        .has_pci                        = 1, 
    12 @@ -1294,6 +1296,7 @@ static struct board_info __initdata boar 
     12@@ -1327,6 +1329,7 @@ static struct board_info __initdata boar 
    1313        }, 
    1414  
  • trunk/target/linux/brcm63xx/patches-3.9/516-board_96348A-122.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -555,6 +555,69 @@ static struct board_info __initdata boar 
     3@@ -588,6 +588,69 @@ static struct board_info __initdata boar 
    44        }, 
    55 }; 
     
    7171        .name                           = "96348GW", 
    7272        .expected_cpu_id                = 0x6348, 
    73 @@ -2120,6 +2183,7 @@ static const struct board_info __initcon 
     73@@ -2156,6 +2219,7 @@ static const struct board_info __initcon 
    7474        &board_V2500V_BB, 
    7575        &board_V2110, 
  • trunk/target/linux/brcm63xx/patches-3.9/517-RTA1205W_16_uart_fixes.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -820,6 +820,7 @@ static struct board_info __initdata boar 
     3@@ -853,6 +853,7 @@ static struct board_info __initdata boar 
    44        .name                           = "RTA1025W_16", 
    55        .expected_cpu_id                = 0x6348, 
  • trunk/target/linux/brcm63xx/patches-3.9/519_board_CPVA502plus.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -1118,6 +1118,46 @@ static struct board_info __initdata boar 
     3@@ -1151,6 +1151,46 @@ static struct board_info __initdata boar 
    44                }, 
    55        }, 
     
    4848  
    4949 /* 
    50 @@ -2185,6 +2225,7 @@ static const struct board_info __initcon 
     50@@ -2221,6 +2261,7 @@ static const struct board_info __initcon 
    5151        &board_V2110, 
    5252        &board_ct536_ct5621, 
  • trunk/target/linux/brcm63xx/patches-3.9/520-bcm63xx-add-support-for-96368MVWG-board.patch

    r36958 r37098  
    1111--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    1212+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    13 @@ -2192,6 +2192,78 @@ static struct board_info __initdata boar 
     13@@ -2225,6 +2225,78 @@ static struct board_info __initdata boar 
    1414 #endif 
    1515  
     
    9090  */ 
    9191 static const struct board_info __initconst *bcm963xx_boards[] = { 
    92 @@ -2243,6 +2315,10 @@ static const struct board_info __initcon 
     92@@ -2279,6 +2351,10 @@ static const struct board_info __initcon 
    9393        &board_HW553, 
    9494        &board_spw303v, 
     
    101101  
    102102 /* 
    103 @@ -2416,12 +2492,25 @@ void __init board_prom_init(void) 
     103@@ -2452,12 +2528,25 @@ void __init board_prom_init(void) 
    104104                bcm63xx_pci_enabled = 1; 
    105105                if (BCMCPU_IS_6348()) 
  • trunk/target/linux/brcm63xx/patches-3.9/521-bcm63xx-add-support-for-96368MVNgr-board.patch

    r36958 r37098  
    1010--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    1111+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    12 @@ -2261,6 +2261,72 @@ static struct board_info __initdata boar 
     12@@ -2294,6 +2294,72 @@ static struct board_info __initdata boar 
    1313        .has_ohci0 = 1, 
    1414        .has_ehci0 = 1, 
     
    8383  
    8484 /* 
    85 @@ -2318,6 +2384,7 @@ static const struct board_info __initcon 
     85@@ -2354,6 +2420,7 @@ static const struct board_info __initcon 
    8686  
    8787 #ifdef CONFIG_BCM63XX_CPU_6368 
  • trunk/target/linux/brcm63xx/patches-3.9/522-MIPS-BCM63XX-add-96328avng-reference-board.patch

    r36958 r37098  
    1010--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    1111+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    12 @@ -75,13 +75,45 @@ static struct board_info __initdata boar 
     12@@ -108,13 +108,45 @@ static struct board_info __initdata boar 
    1313                .port_no                = 0, 
    1414        }, 
     
    5757                        .gpio           = 4, 
    5858                        .active_low     = 1, 
    59 @@ -98,7 +130,7 @@ static struct board_info __initdata boar 
     59@@ -131,7 +163,7 @@ static struct board_info __initdata boar 
    6060                        .active_low     = 1, 
    6161                }, 
  • trunk/target/linux/brcm63xx/patches-3.9/523-MIPS-BCM63XX-add-963281TAN-reference-board.patch

    r36958 r37098  
    1010--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    1111+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    12 @@ -136,6 +136,76 @@ static struct board_info __initdata boar 
     12@@ -169,6 +169,76 @@ static struct board_info __initdata boar 
    1313                }, 
    1414        }, 
     
    8787  
    8888 /* 
    89 @@ -2367,6 +2437,7 @@ static struct board_info __initdata boar 
    90  static const struct board_info __initconst *bcm963xx_boards[] = { 
     89@@ -2403,6 +2473,7 @@ static const struct board_info __initcon 
     90 #endif 
    9191 #ifdef CONFIG_BCM63XX_CPU_6328 
    9292        &board_96328avng, 
  • trunk/target/linux/brcm63xx/patches-3.9/524-board_dsl_274xb_rev_f.patch

    r36958 r37098  
    1111--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    1212+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    13 @@ -206,6 +206,111 @@ static struct board_info __initdata boar 
     13@@ -239,6 +239,111 @@ static struct board_info __initdata boar 
    1414  
    1515        }, 
     
    123123  
    124124 /* 
    125 @@ -2438,6 +2543,7 @@ static const struct board_info __initcon 
     125@@ -2474,6 +2579,7 @@ static const struct board_info __initcon 
    126126 #ifdef CONFIG_BCM63XX_CPU_6328 
    127127        &board_96328avng, 
  • trunk/target/linux/brcm63xx/patches-3.9/525-board_96348w3.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -1365,6 +1365,59 @@ static struct board_info __initdata boar 
     3@@ -1398,6 +1398,59 @@ static struct board_info __initdata boar 
    44        }, 
    55 }; 
     
    6161  
    6262 /* 
    63 @@ -2573,6 +2626,7 @@ static const struct board_info __initcon 
     63@@ -2609,6 +2662,7 @@ static const struct board_info __initcon 
    6464        &board_ct536_ct5621, 
    6565        &board_96348A_122, 
  • trunk/target/linux/brcm63xx/patches-3.9/526-board_CT6373-1.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -56,6 +56,13 @@ 
     3@@ -57,6 +57,13 @@ 
    44 #define NB4_SPI_GPIO_CLK       6 
    55 #define NB4_74HC64_GPIO(X)     (NB4_74X164_GPIO_BASE + (X)) 
     
    1515  
    1616 /* 
    17 @@ -2308,6 +2315,113 @@ static struct board_info __initdata boar 
     17@@ -2341,6 +2348,113 @@ static struct board_info __initdata boar 
    1818        .num_spis = ARRAY_SIZE(nb4_spi_devices), 
    1919 }; 
     
    129129        .name                           = "HW553", 
    130130        .expected_cpu_id                = 0x6358, 
    131 @@ -2641,6 +2755,7 @@ static const struct board_info __initcon 
     131@@ -2677,6 +2791,7 @@ static const struct board_info __initcon 
    132132        &board_nb4_ser_r2, 
    133133        &board_nb4_fxc_r1, 
  • trunk/target/linux/brcm63xx/patches-3.9/527-board_dva-g3810bn-tl-1.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -2563,6 +2563,73 @@ static struct board_info __initdata boar 
     3@@ -2596,6 +2596,73 @@ static struct board_info __initdata boar 
    44                }, 
    55        } 
     
    7575  
    7676 /* 
    77 @@ -2758,6 +2825,7 @@ static const struct board_info __initcon 
     77@@ -2794,6 +2861,7 @@ static const struct board_info __initcon 
    7878        &board_ct6373_1, 
    7979        &board_HW553, 
  • trunk/target/linux/brcm63xx/patches-3.9/528-board_nb6.patch

    r36958 r37098  
    99 #include <bcm63xx_board.h> 
    1010 #include <bcm63xx_cpu.h> 
    11 @@ -55,6 +56,8 @@ 
     11@@ -56,6 +57,8 @@ 
    1212 #define NB4_SPI_GPIO_MOSI      7 
    1313 #define NB4_SPI_GPIO_CLK       6 
     
    1818 #define CT6373_PID_OFFSET              0xff80 
    1919 #define CT6373_74X164_GPIO_BASE        64 
    20 @@ -2632,6 +2635,103 @@ static struct board_info __initdata boar 
     20@@ -2665,6 +2668,103 @@ static struct board_info __initdata boar 
    2121 }; 
    2222 #endif 
     
    122122  * known 6368 boards 
    123123  */ 
    124 @@ -2828,6 +2928,10 @@ static const struct board_info __initcon 
     124@@ -2864,6 +2964,10 @@ static const struct board_info __initcon 
    125125        &board_DVAG3810BN, 
    126126 #endif 
     
    133133        &board_96368mvwg, 
    134134        &board_96368mvngr, 
    135 @@ -2895,6 +2999,11 @@ static void __init boardid_fixup(u8 *boo 
     135@@ -2931,6 +3035,11 @@ static void __init boardid_fixup(u8 *boo 
    136136                } 
    137137        } 
  • trunk/target/linux/brcm63xx/patches-3.9/529-board_fast2604.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -1033,6 +1033,57 @@ static struct board_info __initdata boar 
     3@@ -1066,6 +1066,57 @@ static struct board_info __initdata boar 
    44        .has_ehci0                      = 1, 
    55 }; 
     
    5959        .name                           = "RTA1025W_16", 
    6060        .expected_cpu_id                = 0x6348, 
    61 @@ -2896,6 +2947,7 @@ static const struct board_info __initcon 
     61@@ -2932,6 +2983,7 @@ static const struct board_info __initcon 
    6262        &board_96348gw_10, 
    6363        &board_96348gw_11, 
  • trunk/target/linux/brcm63xx/patches-3.9/530-board_963281T_TEF.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -217,6 +217,125 @@ static struct board_info __initdata boar 
     3@@ -250,6 +250,125 @@ static struct board_info __initdata boar 
    44        }, 
    55 }; 
     
    127127        .name                           = "AW4339U", 
    128128        .expected_cpu_id                = 0x6328, 
    129 @@ -2928,6 +3047,7 @@ static const struct board_info __initcon 
     129@@ -2964,6 +3083,7 @@ static const struct board_info __initcon 
    130130 #ifdef CONFIG_BCM63XX_CPU_6328 
    131131        &board_96328avng, 
  • trunk/target/linux/brcm63xx/patches-3.9/531-board_96328A-1441N1.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -147,6 +147,78 @@ static struct board_info __initdata boar 
     3@@ -180,6 +180,78 @@ static struct board_info __initdata boar 
    44        }, 
    55 }; 
     
    8080        .name                           = "963281TAN", 
    8181        .expected_cpu_id                = 0x6328, 
    82 @@ -3046,6 +3118,7 @@ static struct board_info __initdata boar 
    83  static const struct board_info __initconst *bcm963xx_boards[] = { 
     82@@ -3082,6 +3154,7 @@ static const struct board_info __initcon 
     83 #endif 
    8484 #ifdef CONFIG_BCM63XX_CPU_6328 
    8585        &board_96328avng, 
  • trunk/target/linux/brcm63xx/patches-3.9/532-board_96328a-1241N.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -147,6 +147,72 @@ static struct board_info __initdata boar 
     3@@ -180,6 +180,72 @@ static struct board_info __initdata boar 
    44        }, 
    55 }; 
     
    7474        .name                                   = "96328A-1441N1", 
    7575        .expected_cpu_id                        = 0x6328, 
    76 @@ -3118,6 +3184,7 @@ static struct board_info __initdata boar 
    77  static const struct board_info __initconst *bcm963xx_boards[] = { 
     76@@ -3154,6 +3220,7 @@ static const struct board_info __initcon 
     77 #endif 
    7878 #ifdef CONFIG_BCM63XX_CPU_6328 
    7979        &board_96328avng, 
  • trunk/target/linux/brcm63xx/patches-3.9/533-board_rta770bw.patch

    r36958 r37098  
    11--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    22+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 
    3 @@ -752,6 +752,55 @@ static struct board_info __initdata boar 
     3@@ -785,6 +785,55 @@ static struct board_info __initdata boar 
    44  
    55        .has_uart0                      = 1,