[ARM] pxa/em-x270: update libertas device setup
authorMike Rapoport <mike@compulab.co.il>
Tue, 12 May 2009 13:31:14 +0000 (16:31 +0300)
committerEric Miao <eric.y.miao@gmail.com>
Fri, 5 Jun 2009 02:50:24 +0000 (10:50 +0800)
Signed-off-by: Mike Rapoport <mike@compulab.co.il>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
arch/arm/mach-pxa/em-x270.c

index e2f9834..65e8dba 100644 (file)
@@ -684,26 +684,52 @@ static int em_x270_libertas_setup(struct spi_device *spi)
        if (err)
                return err;
 
+       err = gpio_request(GPIO19_WLAN_STRAP, "WLAN STRAP");
+       if (err)
+               goto err_free_pwen;
+
+       if (machine_is_exeda()) {
+               err = gpio_request(GPIO37_WLAN_RST, "WLAN RST");
+               if (err)
+                       goto err_free_strap;
+
+               gpio_direction_output(GPIO37_WLAN_RST, 1);
+               msleep(100);
+       }
+
        gpio_direction_output(GPIO19_WLAN_STRAP, 1);
-       mdelay(100);
+       msleep(100);
 
        pxa2xx_mfp_config(ARRAY_AND_SIZE(em_x270_libertas_pin_config));
 
        gpio_direction_output(GPIO115_WLAN_PWEN, 0);
-       mdelay(100);
+       msleep(100);
        gpio_set_value(GPIO115_WLAN_PWEN, 1);
-       mdelay(100);
+       msleep(100);
 
        spi->bits_per_word = 16;
        spi_setup(spi);
 
        return 0;
+
+err_free_strap:
+       gpio_free(GPIO19_WLAN_STRAP);
+err_free_pwen:
+       gpio_free(GPIO115_WLAN_PWEN);
+
+       return err;
 }
 
 static int em_x270_libertas_teardown(struct spi_device *spi)
 {
        gpio_set_value(GPIO115_WLAN_PWEN, 0);
        gpio_free(GPIO115_WLAN_PWEN);
+       gpio_free(GPIO19_WLAN_STRAP);
+
+       if (machine_is_exeda()) {
+               gpio_set_value(GPIO37_WLAN_RST, 0);
+               gpio_free(GPIO37_WLAN_RST);
+       }
 
        return 0;
 }