ARM: pxa/cm-x300: GPIO cleanup
authorIgor Grinberg <grinberg@compulab.co.il>
Mon, 9 May 2011 11:41:47 +0000 (14:41 +0300)
committerEric Miao <eric.y.miao@gmail.com>
Mon, 11 Jul 2011 06:43:26 +0000 (14:43 +0800)
use gpio_request_<one|array>() instead of multiple gpiolib calls

Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
arch/arm/mach-pxa/cm-x300.c

index 8a034872ac774b14db308bd79364a923fe4d360b..880df335a3e9135cbe1ca89d5caa49fb9c4028ee 100644 (file)
@@ -484,14 +484,14 @@ static int cm_x300_ulpi_phy_reset(void)
        int err;
 
        /* reset the PHY */
-       err = gpio_request(GPIO_ULPI_PHY_RST, "ulpi reset");
+       err = gpio_request_one(GPIO_ULPI_PHY_RST, GPIOF_OUT_INIT_LOW,
+                              "ulpi reset");
        if (err) {
                pr_err("%s: failed to request ULPI reset GPIO: %d\n",
                       __func__, err);
                return err;
        }
 
-       gpio_direction_output(GPIO_ULPI_PHY_RST, 0);
        msleep(10);
        gpio_set_value(GPIO_ULPI_PHY_RST, 1);
        msleep(10);
@@ -768,39 +768,36 @@ static void __init cm_x300_init_da9030(void)
        irq_set_irq_wake(IRQ_WAKEUP0, 1);
 }
 
+/* wi2wi gpio setting for system_rev >= 130 */
+static struct gpio cm_x300_wi2wi_gpios[] __initdata = {
+       { 71, GPIOF_OUT_INIT_HIGH, "wlan en" },
+       { 70, GPIOF_OUT_INIT_HIGH, "bt reset" },
+};
+
 static void __init cm_x300_init_wi2wi(void)
 {
        int bt_reset, wlan_en;
        int err;
 
        if (system_rev < 130) {
-               wlan_en = 77;
-               bt_reset = 78;
-       } else {
-               wlan_en = 71;
-               bt_reset = 70;
+               cm_x300_wi2wi_gpios[0].gpio = 77;       /* wlan en */
+               cm_x300_wi2wi_gpios[1].gpio = 78;       /* bt reset */
        }
 
        /* Libertas and CSR reset */
-       err = gpio_request(wlan_en, "wlan en");
+       err = gpio_request_array(ARRAY_AND_SIZE(cm_x300_wi2wi_gpios));
        if (err) {
-               pr_err("CM-X300: failed to request wlan en gpio: %d\n", err);
-       } else {
-               gpio_direction_output(wlan_en, 1);
-               gpio_free(wlan_en);
+               pr_err("CM-X300: failed to request wifi/bt gpios: %d\n", err);
+               return;
        }
 
-       err = gpio_request(bt_reset, "bt reset");
-       if (err) {
-               pr_err("CM-X300: failed to request bt reset gpio: %d\n", err);
-       } else {
-               gpio_direction_output(bt_reset, 1);
-               udelay(10);
-               gpio_set_value(bt_reset, 0);
-               udelay(10);
-               gpio_set_value(bt_reset, 1);
-               gpio_free(bt_reset);
-       }
+       udelay(10);
+       gpio_set_value(bt_reset, 0);
+       udelay(10);
+       gpio_set_value(bt_reset, 1);
+
+       gpio_free(wlan_en);
+       gpio_free(bt_reset);
 }
 
 /* MFP */