fix mac80211 build
[openwrt.git] / package / broadcom-diag / src / diag.c
index 5b9ff02..af19079 100644 (file)
@@ -104,6 +104,10 @@ enum {
        
        /* SimpleTech */
        STI_NAS,
+
+       /* D-Link */
+       DIR130,
+       DIR330,
 };
 
 static void __init bcm4780_init(void) {
@@ -305,6 +309,7 @@ static struct platform_t __initdata platforms[] = {
                        { .name = "internal",   .gpio = 1 << 3, .polarity = REVERSE },
                        { .name = "ses",        .gpio = 1 << 6, .polarity = REVERSE },
                        { .name = "bridge",     .gpio = 1 << 1, .polarity = REVERSE },
+                       { .name = "wlan",       .gpio = 1 << 2, .polarity = REVERSE },
                },
        },
        [WBR2_G54] = {
@@ -326,8 +331,10 @@ static struct platform_t __initdata platforms[] = {
                },
                .leds           = {
                        { .name = "diag",       .gpio = 1 << 7, .polarity = REVERSE },
+                       { .name = "internal",   .gpio = 1 << 3, .polarity = REVERSE },
                        { .name = "bridge",     .gpio = 1 << 1, .polarity = REVERSE },
                        { .name = "ses",        .gpio = 1 << 6, .polarity = REVERSE },
+                       { .name = "wlan",       .gpio = 1 << 2, .polarity = REVERSE },
                },
        },
        [WHR2_A54G54] = {
@@ -503,7 +510,7 @@ static struct platform_t __initdata platforms[] = {
                        { .name = "reset",      .gpio = 1 << 2 },
                },
                .leds           = {
-                       { .name = "power",      .gpio = 1 << 3, .polarity = REVERSE },
+                       { .name = "power",      .gpio = 1 << 3, .polarity = NORMAL },
                },
        },
        /* Trendware */
@@ -530,6 +537,30 @@ static struct platform_t __initdata platforms[] = {
                },
                .platform_init = bcm4780_init,
        },
+       /* D-Link */
+       [DIR130] = {
+               .name     = "D-Link DIR-130",
+               .buttons        = {
+                       { .name = "reset",      .gpio = 1 << 3},
+                       { .name = "reserved",   .gpio = 1 << 7},
+               },
+               .leds      = {
+                       { .name = "diag",       .gpio = 1 << 0},
+                       { .name = "blue",       .gpio = 1 << 6},
+               },
+       },
+       [DIR330] = {
+               .name     = "D-Link DIR-330",
+               .buttons        = {
+                       { .name = "reset",      .gpio = 1 << 3},
+                       { .name = "reserved",   .gpio = 1 << 7},
+               },
+               .leds      = {
+                       { .name = "diag",       .gpio = 1 << 0},
+                       { .name = "usb",        .gpio = 1 << 4},
+                       { .name = "blue",       .gpio = 1 << 6},
+               },
+       },
 };
 
 static struct platform_t __init *platform_detect(void)
@@ -539,8 +570,11 @@ static struct platform_t __init *platform_detect(void)
        boardnum = getvar("boardnum");
        boardtype = getvar("boardtype");
 
-       if (strncmp(getvar("model_no"), "WL700",5) == 0) {
-               return &platforms[WL700GE]; }
+       if (strcmp(getvar("nvram_type"), "cfe") == 0)
+               return &platforms[WGT634U];
+       
+       if (strncmp(getvar("model_no"), "WL700",5) == 0)
+               return &platforms[WL700GE];
 
        if (strncmp(getvar("pmon_ver"), "CFE", 3) == 0) {
                /* CFE based - newer hardware */
@@ -569,6 +603,13 @@ static struct platform_t __init *platform_detect(void)
                
                if (!strcmp(boardnum, "10496"))
                        return &platforms[USR5461];
+
+               /* D-Link */
+               if (!strcmp(getvar("model_name"), "DIR-130"))
+                       return &platforms[DIR130];
+               if (!strcmp(getvar("model_name"), "DIR-330"))
+                       return &platforms[DIR330];
+
        } else { /* PMON based - old stuff */
 
                /* Dell TrueMobile 2300 */
@@ -672,8 +713,14 @@ static void unregister_buttons(struct button_t *b)
        gpio_set_irqenable(0, button_handler);
 }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
+static void hotplug_button(struct work_struct *work)
+{
+       struct event_t *event = container_of(work, struct event_t, wq);
+#else
 static void hotplug_button(struct event_t *event)
 {
+#endif
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
        call_usermodehelper (event->argv[0], event->argv, event->envp, 1);
 #else
@@ -721,7 +768,11 @@ static irqreturn_t button_handler(int irq, void *dev_id, struct pt_regs *regs)
                        scratch += sprintf (scratch, "SEEN=%ld", (jiffies - b->seen)/HZ) + 1;
                        event->envp[i] = 0;
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
+                       INIT_WORK(&event->wq, (void *)(void *)hotplug_button);
+#else
                        INIT_WORK(&event->wq, (void *)(void *)hotplug_button, (void *)event);
+#endif
                        schedule_work(&event->wq);
                }
 
@@ -861,6 +912,7 @@ static ssize_t diag_proc_read(struct file *file, char *buf, size_t count, loff_t
                len = 0;
        }
 
+       kfree(page);
        return len;
 }
 
This page took 0.027841 seconds and 4 git commands to generate.