sb_gpioout() doesn't honor mask correctly
authorMike Baker <mbm@openwrt.org>
Sat, 4 Nov 2006 04:02:20 +0000 (04:02 +0000)
committerMike Baker <mbm@openwrt.org>
Sat, 4 Nov 2006 04:02:20 +0000 (04:02 +0000)
SVN-Revision: 5440

openwrt/target/linux/package/diag/src/diag.c

index d975137f8747f7d9bc8235ab5539c92a1527d98a..5f0e07acda7aaca12077b60d789a236fc5cb48b3 100644 (file)
@@ -591,8 +591,8 @@ static void button_handler(int irq, void *dev_id, struct pt_regs *regs)
 static void register_leds(struct led_t *l)
 {
        struct proc_dir_entry *p;
-       u32 mask;
-       u32 val;
+       u32 mask = 0;
+       u32 val = 0;
 
        leds = proc_mkdir("led", diag);
        if (!leds) 
@@ -661,6 +661,8 @@ static void led_flash(unsigned long dummy) {
        if (mask) {
                u32 val = ~sb_gpioin(sbh);
 
+               val &= mask;
+
                sb_gpioouten(sbh, mask, mask);
                sb_gpiocontrol(sbh, mask, 0);
                sb_gpioout(sbh, mask, val);