Changeset 27301


Ignore:
Timestamp:
2011-06-29T00:21:57+02:00 (7 years ago)
Author:
hauke
Message:

brcm47xx: add initial support for devices with bcma bus.

Ethernet and wifi are not working and this is highly experimental.

Location:
trunk
Files:
14 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/broadcom-diag/src/diag.c

    r26537 r27301  
    150150                /* Enables GPIO 3 that controls HDD and led power on ASUS WL-700gE */ 
    151151                printk(MODULE_NAME ": Spinning up HDD and enabling leds\n"); 
    152                 gpio_outen(pin, pin); 
    153                 gpio_control(pin, 0); 
    154                 gpio_out(pin, pin); 
     152                ssb_gpio_outen(&ssb_bcm47xx, pin, pin); 
     153                ssb_gpio_control(&ssb_bcm47xx, pin, 0); 
     154                ssb_gpio_out(&ssb_bcm47xx, pin, pin); 
    155155 
    156156                /* Wait 5s, so the HDD can spin up */ 
     
    162162                /* unset pin 6 (+12V) */ 
    163163                int pin = 1 << 6; 
    164                 gpio_outen(pin, pin); 
    165                 gpio_control(pin, 0); 
    166                 gpio_out(pin, pin); 
     164                ssb_gpio_outen(&ssb_bcm47xx, pin, pin); 
     165                ssb_gpio_control(&ssb_bcm47xx, pin, 0); 
     166                ssb_gpio_out(&ssb_bcm47xx, pin, pin); 
    167167                /* unset pin 1 (turn off red led, blue will light alone if +5V comes up) */ 
    168168                pin = 1 << 1; 
    169                 gpio_outen(pin, pin); 
    170                 gpio_control(pin, 0); 
    171                 gpio_out(pin, pin); 
     169                ssb_gpio_outen(&ssb_bcm47xx, pin, pin); 
     170                ssb_gpio_control(&ssb_bcm47xx, pin, 0); 
     171                ssb_gpio_out(&ssb_bcm47xx, pin, pin); 
    172172                /* unset pin 3 (+5V) and wait 5 seconds (harddisk spin up) */ 
    173173                bcm4780_init(); 
     
    178178 
    179179        /* FIXME: switch comes up, but port mappings/vlans not right */ 
    180         gpio_outen(pin, pin); 
    181         gpio_control(pin, 0); 
    182         gpio_out(pin, pin); 
     180        ssb_gpio_outen(&ssb_bcm47xx, pin, pin); 
     181        ssb_gpio_control(&ssb_bcm47xx, pin, 0); 
     182        ssb_gpio_out(&ssb_bcm47xx, pin, pin); 
    183183} 
    184184 
     
    11671167        platform.button_mask &= ~gpiomask; 
    11681168 
    1169         gpio_outen(platform.button_mask, 0); 
    1170         gpio_control(platform.button_mask, 0); 
    1171         platform.button_polarity = gpio_in() & platform.button_mask; 
    1172         gpio_intpolarity(platform.button_mask, platform.button_polarity); 
    1173         gpio_setintmask(platform.button_mask, platform.button_mask); 
     1169        ssb_gpio_outen(&ssb_bcm47xx, platform.button_mask, 0); 
     1170        ssb_gpio_control(&ssb_bcm47xx, platform.button_mask, 0); 
     1171        platform.button_polarity = ssb_gpio_in(&ssb_bcm47xx, ~0) & platform.button_mask; 
     1172        ssb_gpio_polarity(&ssb_bcm47xx, platform.button_mask, platform.button_polarity); 
     1173        ssb_gpio_intmask(&ssb_bcm47xx, platform.button_mask, platform.button_mask); 
    11741174 
    11751175        gpio_set_irqenable(1, button_handler); 
     
    11781178static void unregister_buttons(struct button_t *b) 
    11791179{ 
    1180         gpio_setintmask(platform.button_mask, 0); 
     1180        ssb_gpio_intmask(&ssb_bcm47xx, platform.button_mask, 0); 
    11811181 
    11821182        gpio_set_irqenable(0, button_handler); 
     
    12381238        u32 in, changed; 
    12391239 
    1240         in = gpio_in() & platform.button_mask; 
    1241         gpio_intpolarity(platform.button_mask, in); 
     1240        in = ssb_gpio_in(&ssb_bcm47xx, ~0) & platform.button_mask; 
     1241        ssb_gpio_polarity(&ssb_bcm47xx, platform.button_mask, in); 
    12421242        changed = platform.button_polarity ^ in; 
    12431243        platform.button_polarity = in; 
    12441244 
    1245         changed &= ~gpio_outen(0, 0); 
     1245        changed &= ~ssb_gpio_outen(&ssb_bcm47xx, 0, 0); 
    12461246 
    12471247        for (b = platform.buttons; b->name; b++) { 
     
    12991299        } 
    13001300 
    1301         gpio_outen(mask, oe_mask); 
    1302         gpio_control(mask, 0); 
    1303         gpio_out(mask, val); 
    1304         gpio_setintmask(mask, 0); 
     1301        ssb_gpio_outen(&ssb_bcm47xx, mask, oe_mask); 
     1302        ssb_gpio_control(&ssb_bcm47xx, mask, 0); 
     1303        ssb_gpio_out(&ssb_bcm47xx, mask, val); 
     1304        ssb_gpio_intmask(&ssb_bcm47xx, mask, 0); 
    13051305} 
    13061306 
     
    13371337        mask &= ~gpiomask; 
    13381338        if (mask) { 
    1339                 u32 val = ~gpio_in(); 
    1340  
    1341                 gpio_outen(mask, mask); 
    1342                 gpio_control(mask, 0); 
    1343                 gpio_out(mask, val); 
     1339                u32 val = ~ssb_gpio_in(&ssb_bcm47xx, ~0); 
     1340 
     1341                ssb_gpio_outen(&ssb_bcm47xx, mask, mask); 
     1342                ssb_gpio_control(&ssb_bcm47xx, mask, 0); 
     1343                ssb_gpio_out(&ssb_bcm47xx, mask, val); 
    13441344        } 
    13451345        if (mask || extif_blink) { 
     
    13681368                                                len = sprintf(page, "%d\n", led->state); 
    13691369                                        } else { 
    1370                                                 u32 in = (gpio_in() & led->gpio ? 1 : 0); 
     1370                                                u32 in = (ssb_gpio_in(&ssb_bcm47xx, ~0) & led->gpio ? 1 : 0); 
    13711371                                                u8 p = (led->polarity == NORMAL ? 0 : 1); 
    13721372                                                len = sprintf(page, "%d\n", ((in ^ p) ? 1 : 0)); 
     
    14321432                                                set_led_extif(led); 
    14331433                                        } else { 
    1434                                                 gpio_outen(led->gpio, led->gpio); 
    1435                                                 gpio_control(led->gpio, 0); 
    1436                                                 gpio_out(led->gpio, ((p ^ (page[0] == '1')) ? led->gpio : 0)); 
     1434                                                ssb_gpio_outen(&ssb_bcm47xx, led->gpio, led->gpio); 
     1435                                                ssb_gpio_control(&ssb_bcm47xx, led->gpio, 0); 
     1436                                                ssb_gpio_out(&ssb_bcm47xx, led->gpio, ((p ^ (page[0] == '1')) ? led->gpio : 0)); 
    14371437                                        } 
    14381438                                } 
     
    14651465        static struct platform_t *detected; 
    14661466 
     1467#ifdef CONFIG_BCM47XX_SSB 
     1468        if (bcm47xx_active_bus_type != BCM47XX_BUS_TYPE_SSB) { 
     1469                printk(MODULE_NAME ": bcma bus is not supported.\n"); 
     1470                return -ENODEV; 
     1471        } 
     1472#endif 
     1473 
    14671474        detected = platform_detect(); 
    14681475        if (!detected) { 
  • trunk/package/broadcom-diag/src/gpio.h

    r14618 r27301  
    22#define __DIAG_GPIO_H 
    33#include <linux/interrupt.h> 
     4#include <linux/gpio.h> 
     5#include <asm/mach-bcm47xx/bcm47xx.h> 
    46 
    5 #ifndef BCMDRIVER 
    6 #include <linux/ssb/ssb_embedded.h> 
    7  
    8 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25) 
    9 #include <linux/gpio.h> 
    10 #define ssb ssb_bcm47xx 
     7#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) 
     8#define ssb_bcm47xx bcm47xx_bus.ssb 
    119#endif 
    12 extern struct ssb_bus ssb; 
    13  
    14  
    15 static inline u32 gpio_in(void) 
    16 { 
    17         return ssb_gpio_in(&ssb, ~0); 
    18 } 
    19  
    20 static inline u32 gpio_out(u32 mask, u32 value) 
    21 { 
    22         return ssb_gpio_out(&ssb, mask, value); 
    23 } 
    24  
    25 static inline u32 gpio_outen(u32 mask, u32 value) 
    26 { 
    27         return ssb_gpio_outen(&ssb, mask, value); 
    28 } 
    29  
    30 static inline u32 gpio_control(u32 mask, u32 value) 
    31 { 
    32         return ssb_gpio_control(&ssb, mask, value); 
    33 } 
    34  
    35 static inline u32 gpio_setintmask(u32 mask, u32 value) 
    36 { 
    37         return ssb_gpio_intmask(&ssb, mask, value); 
    38 } 
    39  
    40 static inline u32 gpio_intpolarity(u32 mask, u32 value) 
    41 { 
    42         return ssb_gpio_polarity(&ssb, mask, value); 
    43 } 
    4410 
    4511static inline u32 __ssb_write32_masked(struct ssb_device *dev, u16 offset, 
     
    5622        int irq; 
    5723 
    58 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25) 
    5924        irq = gpio_to_irq(0); 
    6025        if (irq == -EINVAL) return; 
    61 #else 
    62         if (ssb.chipco.dev) 
    63                 irq = ssb_mips_irq(ssb.chipco.dev) + 2; 
    64         else if (ssb.extif.dev) 
    65                 irq = ssb_mips_irq(ssb.extif.dev) + 2; 
    66         else return; 
    67 #endif 
    6826         
    6927        if (enabled) { 
     
    7432        } 
    7533 
    76         if (ssb.chipco.dev) 
    77                 __ssb_write32_masked(ssb.chipco.dev, SSB_CHIPCO_IRQMASK, SSB_CHIPCO_IRQ_GPIO, (enabled ? SSB_CHIPCO_IRQ_GPIO : 0)); 
     34        if (ssb_bcm47xx.chipco.dev) 
     35                __ssb_write32_masked(ssb_bcm47xx.chipco.dev, SSB_CHIPCO_IRQMASK, SSB_CHIPCO_IRQ_GPIO, (enabled ? SSB_CHIPCO_IRQ_GPIO : 0)); 
    7836} 
    79  
    80 #else 
    81  
    82 #include <typedefs.h> 
    83 #include <osl.h> 
    84 #include <bcmdevs.h> 
    85 #include <sbutils.h> 
    86 #include <sbconfig.h> 
    87 #include <sbchipc.h> 
    88 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) 
    89 #include <sbmips.h> 
    90 #else 
    91 #include <hndcpu.h> 
    92 #endif 
    93  
    94 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) 
    95 #define sbh bcm947xx_sbh 
    96 #define sbh_lock bcm947xx_sbh_lock 
    97 #endif 
    98  
    99 extern void *sbh; 
    100 extern spinlock_t sbh_lock; 
    101  
    102 #define gpio_in()       sb_gpioin(sbh) 
    103 #define gpio_out(mask, value)   sb_gpioout(sbh, mask, ((value) & (mask)), GPIO_DRV_PRIORITY) 
    104 #define gpio_outen(mask, value)         sb_gpioouten(sbh, mask, value, GPIO_DRV_PRIORITY) 
    105 #define gpio_control(mask, value)       sb_gpiocontrol(sbh, mask, value, GPIO_DRV_PRIORITY) 
    106 #define gpio_setintmask(mask, value)    sb_gpiointmask(sbh, mask, value, GPIO_DRV_PRIORITY) 
    107 #define gpio_intpolarity(mask, value)   sb_gpiointpolarity(sbh, mask, value, GPIO_DRV_PRIORITY) 
    108  
    109 static void gpio_set_irqenable(int enabled, irqreturn_t (*handler)(int, void *, struct pt_regs *)) 
    110 { 
    111         unsigned int coreidx; 
    112         unsigned long flags; 
    113         chipcregs_t *cc; 
    114         int irq; 
    115  
    116         spin_lock_irqsave(sbh_lock, flags); 
    117         coreidx = sb_coreidx(sbh); 
    118  
    119         irq = sb_irq(sbh) + 2; 
    120         if (enabled) 
    121                 request_irq(irq, handler, SA_SHIRQ | SA_SAMPLE_RANDOM, "gpio", handler); 
    122         else 
    123                 free_irq(irq, handler); 
    124  
    125         if ((cc = sb_setcore(sbh, SB_CC, 0))) { 
    126                 int intmask; 
    127  
    128                 intmask = readl(&cc->intmask); 
    129                 if (enabled) 
    130                         intmask |= CI_GPIO; 
    131                 else 
    132                         intmask &= ~CI_GPIO; 
    133                 writel(intmask, &cc->intmask); 
    134         } 
    135         sb_setcoreidx(sbh, coreidx); 
    136         spin_unlock_irqrestore(sbh_lock, flags); 
    137 } 
    138  
    139 #endif /* BCMDRIVER */ 
    14037 
    14138#define EXTIF_ADDR 0x1f000000 
  • trunk/target/linux/brcm47xx/config-3.0

    r27217 r27301  
    1515CONFIG_B44_PCI_AUTOSELECT=y 
    1616CONFIG_BCM47XX=y 
     17CONFIG_BCM47XX_BCMA=y 
     18CONFIG_BCM47XX_SSB=y 
    1719CONFIG_BCM47XX_WDT=y 
     20CONFIG_BCMA=y 
     21CONFIG_BCMA_DEBUG=y 
     22CONFIG_BCMA_DRIVER_MIPS=y 
     23CONFIG_BCMA_DRIVER_PCI_HOSTMODE=y 
     24CONFIG_BCMA_HOST_PCI=y 
     25CONFIG_BCMA_HOST_PCI_POSSIBLE=y 
     26CONFIG_BCMA_HOST_SOC=y 
    1827CONFIG_BCMA_POSSIBLE=y 
    1928# CONFIG_BRCMUTIL is not set 
     
    3241CONFIG_CPU_MIPS32=y 
    3342CONFIG_CPU_MIPS32_R1=y 
     43# CONFIG_CPU_MIPS32_R2 is not set 
    3444CONFIG_CPU_MIPSR1=y 
    3545CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 
     
    119129CONFIG_SSB_SPROM=y 
    120130CONFIG_SYS_HAS_CPU_MIPS32_R1=y 
     131CONFIG_SYS_HAS_CPU_MIPS32_R2=y 
    121132CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 
    122133CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 
  • trunk/target/linux/brcm47xx/patches-3.0/014-MIPS-BCM47xx-Setup-and-register-serial-early.patch

    r27217 r27301  
    1616--- a/arch/mips/bcm47xx/setup.c 
    1717+++ b/arch/mips/bcm47xx/setup.c 
    18 @@ -29,6 +29,8 @@ 
    19  #include <linux/types.h> 
     18@@ -30,6 +30,8 @@ 
    2019 #include <linux/ssb/ssb.h> 
    2120 #include <linux/ssb/ssb_embedded.h> 
     21 #include <linux/bcma/bcma_soc.h> 
    2222+#include <linux/serial.h> 
    2323+#include <linux/serial_8250.h> 
     
    2525 #include <asm/reboot.h> 
    2626 #include <asm/time.h> 
    27 @@ -247,6 +249,31 @@ static int bcm47xx_get_invariants(struct 
     27@@ -274,6 +276,31 @@ static int bcm47xx_get_invariants(struct 
    2828        return 0; 
    2929 } 
     
    5454+#endif 
    5555+ 
    56  void __init plat_mem_setup(void) 
     56 static void __init bcm47xx_register_ssb(void) 
    5757 { 
    5858        int err; 
    59 @@ -277,6 +304,10 @@ void __init plat_mem_setup(void) 
     59@@ -303,6 +330,10 @@ static void __init bcm47xx_register_ssb( 
     60                        memcpy(&mcore->serial_ports[1], &port, sizeof(port)); 
    6061                } 
    6162        } 
    62   
     63+ 
    6364+#ifdef CONFIG_SERIAL_8250 
    6465+       bcm47xx_early_serial_setup(mcore); 
    6566+#endif 
    66 + 
    67         _machine_restart = bcm47xx_machine_restart; 
    68         _machine_halt = bcm47xx_machine_halt; 
    69         pm_power_off = bcm47xx_machine_halt; 
     67 } 
     68 #endif 
     69  
  • trunk/target/linux/brcm47xx/patches-3.0/016-MIPS-BCM47xx-Remove-CFE-console.patch

    r27008 r27301  
    1717--- a/arch/mips/Kconfig 
    1818+++ b/arch/mips/Kconfig 
    19 @@ -101,7 +101,6 @@ config BCM47XX 
    20         select SSB_B43_PCI_BRIDGE if PCI 
    21         select SSB_PCICORE_HOSTMODE if PCI 
     19@@ -94,7 +94,6 @@ config BCM47XX 
     20        select SYS_SUPPORTS_32BIT_KERNEL 
     21        select SYS_SUPPORTS_LITTLE_ENDIAN 
    2222        select GENERIC_GPIO 
    2323-       select SYS_HAS_EARLY_PRINTK 
  • trunk/target/linux/brcm47xx/patches-3.0/040-bcm47xx-add-gpio_set_debounce.patch

    r24968 r27301  
    11--- a/arch/mips/include/asm/mach-bcm47xx/gpio.h 
    22+++ b/arch/mips/include/asm/mach-bcm47xx/gpio.h 
    3 @@ -58,6 +58,10 @@ static inline int gpio_polarity(unsigned 
    4         return 0; 
     3@@ -136,6 +136,10 @@ static inline int gpio_polarity(unsigned 
     4        return -EINVAL; 
    55 } 
    66  
  • trunk/target/linux/brcm47xx/patches-3.0/400-arch-bcm47xx.patch

    r26846 r27301  
    11--- a/arch/mips/bcm47xx/nvram.c 
    22+++ b/arch/mips/bcm47xx/nvram.c 
    3 @@ -93,3 +93,30 @@ int nvram_getenv(char *name, char *val, 
     3@@ -114,3 +114,30 @@ int nvram_getenv(char *name, char *val, 
    44        return NVRAM_ERR_ENVNOTFOUND; 
    55 } 
     
    3434--- a/arch/mips/bcm47xx/setup.c 
    3535+++ b/arch/mips/bcm47xx/setup.c 
    36 @@ -312,3 +312,20 @@ void __init plat_mem_setup(void) 
    37         _machine_halt = bcm47xx_machine_halt; 
    38         pm_power_off = bcm47xx_machine_halt; 
     36@@ -388,3 +388,20 @@ static int __init bcm47xx_register_bus_c 
     37        return 0; 
    3938 } 
     39 device_initcall(bcm47xx_register_bus_complete); 
    4040+ 
    4141+static int __init bcm47xx_register_gpiodev(void) 
  • trunk/target/linux/brcm47xx/patches-3.0/812-disable_wgt634u_crap.patch

    r22296 r27301  
    11--- a/arch/mips/bcm47xx/Makefile 
    22+++ b/arch/mips/bcm47xx/Makefile 
    3 @@ -3,4 +3,4 @@ 
    4  # under Linux. 
     3@@ -4,4 +4,3 @@ 
    54 # 
    65  
    7 -obj-y := gpio.o irq.o nvram.o prom.o serial.o setup.o time.o wgt634u.o 
    8 +obj-y := gpio.o irq.o nvram.o prom.o serial.o setup.o time.o 
     6 obj-y                          += gpio.o irq.o nvram.o prom.o serial.o setup.o time.o 
     7-obj-$(CONFIG_BCM47XX_SSB)      += wgt634u.o 
    98--- a/arch/mips/bcm47xx/wgt634u.c 
    109+++ /dev/null 
    11 @@ -1,166 +0,0 @@ 
     10@@ -1,169 +0,0 @@ 
    1211-/* 
    1312- * This file is subject to the terms and conditions of the GNU General Public 
     
    120119-       /* Interrupts are shared, check if the current one is 
    121120-          a GPIO interrupt. */ 
    122 -       if (!ssb_chipco_irq_status(&ssb_bcm47xx.chipco, 
     121-       if (!ssb_chipco_irq_status(&bcm47xx_bus.ssb.chipco, 
    123122-                                  SSB_CHIPCO_IRQ_GPIO)) 
    124123-               return IRQ_NONE; 
     
    145144-        */ 
    146145- 
    147 -       u8 *et0mac = ssb_bcm47xx.sprom.et0mac; 
     146-       if (bcm47xx_active_bus_type != BCM47XX_BUS_TYPE_SSB) 
     147-               return -ENODEV; 
     148- 
     149-       u8 *et0mac = bcm47xx_bus.ssb.sprom.et0mac; 
    148150- 
    149151-       if (et0mac[0] == 0x00 && 
    150152-           ((et0mac[1] == 0x09 && et0mac[2] == 0x5b) || 
    151153-            (et0mac[1] == 0x0f && et0mac[2] == 0xb5))) { 
    152 -               struct ssb_mipscore *mcore = &ssb_bcm47xx.mipscore; 
     154-               struct ssb_mipscore *mcore = &bcm47xx_bus.ssb.mipscore; 
    153155- 
    154156-               printk(KERN_INFO "WGT634U machine detected.\n"); 
     
    156158-               if (!request_irq(gpio_to_irq(WGT634U_GPIO_RESET), 
    157159-                                gpio_interrupt, IRQF_SHARED, 
    158 -                                "WGT634U GPIO", &ssb_bcm47xx.chipco)) { 
     160-                                "WGT634U GPIO", &bcm47xx_bus.ssb.chipco)) { 
    159161-                       gpio_direction_input(WGT634U_GPIO_RESET); 
    160162-                       gpio_intmask(WGT634U_GPIO_RESET, 1); 
    161 -                       ssb_chipco_irq_mask(&ssb_bcm47xx.chipco, 
     163-                       ssb_chipco_irq_mask(&bcm47xx_bus.ssb.chipco, 
    162164-                                           SSB_CHIPCO_IRQ_GPIO, 
    163165-                                           SSB_CHIPCO_IRQ_GPIO); 
  • trunk/target/linux/brcm47xx/patches-3.0/820-wgt634u-nvram-fix.patch

    r26846 r27301  
    1010 # 
    1111  
    12 -obj-y := gpio.o irq.o nvram.o prom.o serial.o setup.o time.o 
    13 +obj-y := gpio.o irq.o nvram.o prom.o serial.o setup.o time.o cfe_env.o 
     12-obj-y                          += gpio.o irq.o nvram.o prom.o serial.o setup.o time.o 
     13+obj-y                          += gpio.o irq.o nvram.o prom.o serial.o setup.o time.o cfe_env.o 
    1414--- /dev/null 
    1515+++ b/arch/mips/bcm47xx/cfe_env.c 
     
    255255 /* Probe for NVRAM header */ 
    256256 static void early_nvram_init(void) 
    257 @@ -34,6 +36,25 @@ static void early_nvram_init(void) 
    258   
    259         base = mcore->flash_window; 
    260         lim = mcore->flash_window_size; 
     257@@ -55,6 +57,25 @@ static void early_nvram_init(void) 
     258                break; 
     259 #endif 
     260        } 
    261261+       cfe_env = 0; 
    262262+ 
     
    281281        off = FLASH_MIN; 
    282282        while (off <= lim) { 
    283 @@ -75,6 +96,12 @@ int nvram_getenv(char *name, char *val, 
     283@@ -96,6 +117,12 @@ int nvram_getenv(char *name, char *val, 
    284284        if (!nvram_buf[0]) 
    285285                early_nvram_init(); 
     
    294294        var = &nvram_buf[sizeof(struct nvram_header)]; 
    295295        end = nvram_buf + sizeof(nvram_buf) - 2; 
    296 @@ -104,6 +131,9 @@ char *nvram_get(const char *name) 
     296@@ -125,6 +152,9 @@ char *nvram_get(const char *name) 
    297297        if (!nvram_buf[0]) 
    298298                early_nvram_init(); 
  • trunk/target/linux/brcm47xx/patches-3.0/900-bcm47xx_wdt-noprescale.patch

    r25083 r27301  
    99 static int wdt_time = WDT_DEFAULT_TIME; 
    1010 static int nowayout = WATCHDOG_NOWAYOUT; 
    11 @@ -50,11 +51,11 @@ static unsigned long bcm47xx_wdt_busy; 
     11@@ -50,20 +51,20 @@ static unsigned long bcm47xx_wdt_busy; 
    1212 static char expect_release; 
    1313 static struct timer_list wdt_timer; 
     
    1919 { 
    2020-       /* this is 2,5s on 100Mhz clock  and 2s on 133 Mhz */ 
    21 -       ssb_watchdog_timer_set(&ssb_bcm47xx, 0xfffffff); 
    22 +       ssb_watchdog_timer_set(&ssb_bcm47xx, ticks); 
    23  } 
    24   
    25  static inline int bcm47xx_wdt_hw_stop(void) 
    26 @@ -65,33 +66,34 @@ static inline int bcm47xx_wdt_hw_stop(vo 
     21        switch (bcm47xx_active_bus_type) { 
     22 #ifdef CONFIG_BCM47XX_SSB 
     23        case BCM47XX_BUS_TYPE_SSB: 
     24-               ssb_watchdog_timer_set(&bcm47xx_bus.ssb, 0xfffffff); 
     25+               ssb_watchdog_timer_set(&bcm47xx_bus.ssb, ticks); 
     26                break; 
     27 #endif 
     28 #ifdef CONFIG_BCM47XX_BCMA 
     29        case BCM47XX_BUS_TYPE_BCMA: 
     30                bcma_chipco_watchdog_timer_set(&bcm47xx_bus.bcma.bus.drv_cc, 
     31-                                              0xfffffff); 
     32+                                              ticks); 
     33                break; 
     34 #endif 
     35        } 
     36@@ -88,33 +89,34 @@ static inline int bcm47xx_wdt_hw_stop(vo 
    2737 static void bcm47xx_timer_tick(unsigned long unused) 
    2838 { 
     
    7181  
    7282 static int bcm47xx_wdt_settimeout(int new_time) 
    73 @@ -243,7 +245,15 @@ static int __init bcm47xx_wdt_init(void) 
     83@@ -266,7 +268,20 @@ static int __init bcm47xx_wdt_init(void) 
    7484        if (bcm47xx_wdt_hw_stop() < 0) 
    7585                return -ENODEV; 
     
    7787-       setup_timer(&wdt_timer, bcm47xx_timer_tick, 0L); 
    7888+       /* FIXME Other cores */ 
    79 +       if(ssb_bcm47xx.chip_id == 0x5354) { 
     89+#ifdef BCM47XX_BUS_TYPE_BCMA 
     90+       if(bcm47xx_active_bus_type == BCM47XX_BUS_TYPE_BCMA && 
     91+          bcm47xx_bus.ssb.chip_id == 0x5354) { 
    8092+               /* Slow WDT clock, no pre-scaling */ 
    8193+               needs_sw_scale = 0; 
    8294+       } else { 
     95+#endif 
    8396+               /* Fast WDT clock, needs software pre-scaling */ 
    8497+               needs_sw_scale = 1; 
    8598+               setup_timer(&wdt_timer, bcm47xx_timer_tick, 0L); 
     99+#ifdef BCM47XX_BUS_TYPE_BCMA 
    86100+       } 
     101+#endif 
    87102  
    88103        if (bcm47xx_wdt_settimeout(wdt_time)) { 
  • trunk/target/linux/brcm47xx/patches-3.0/980-wnr834b_no_cardbus_invariant.patch

    r26846 r27301  
    11--- a/arch/mips/bcm47xx/setup.c 
    22+++ b/arch/mips/bcm47xx/setup.c 
    3 @@ -246,6 +246,10 @@ static int bcm47xx_get_invariants(struct 
     3@@ -273,6 +273,10 @@ static int bcm47xx_get_invariants(struct 
    44        if (nvram_getenv("cardbus", buf, sizeof(buf)) >= 0) 
    55                iv->has_cardbus_slot = !!simple_strtoul(buf, NULL, 10); 
Note: See TracChangeset for help on using the changeset viewer.