Commit 078dc519 authored by Linus Walleij's avatar Linus Walleij

ARM: omap2: Rewrite WLAN quirk to use GPIO descriptors

The OMAP2 platform data quirk is using the global GPIO numberspace
to obtain two WLAN GPIOs to drive power and xcvr reset GPIO
lines during start-up.

Rewrite the quirk to use a GPIO descriptor table so we avoid using
global GPIO numbers.

This gets rid of the final dependency on the legacy <linux/gpio.h>
header from the OMAP2/3 platforms.

Fixes: 92bf78b3 ("gpio: omap: use dynamic allocation of base")
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 94075d16
......@@ -8,7 +8,6 @@
#include <linux/davinci_emac.h>
#include <linux/gpio/machine.h>
#include <linux/gpio/consumer.h>
#include <linux/gpio.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/of_platform.h>
......@@ -178,25 +177,41 @@ static void __init am35xx_emac_reset(void)
omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET); /* OCP barrier */
}
static struct gpio cm_t3517_wlan_gpios[] __initdata = {
{ 56, GPIOF_OUT_INIT_HIGH, "wlan pwr" },
{ 4, GPIOF_OUT_INIT_HIGH, "xcvr noe" },
static struct gpiod_lookup_table cm_t3517_wlan_gpio_table = {
.dev_id = NULL,
.table = {
GPIO_LOOKUP("gpio-48-53", 8, "power",
GPIO_ACTIVE_HIGH),
GPIO_LOOKUP("gpio-0-15", 4, "noe",
GPIO_ACTIVE_HIGH),
{ }
},
};
static void __init omap3_sbc_t3517_wifi_init(void)
{
int err = gpio_request_array(cm_t3517_wlan_gpios,
ARRAY_SIZE(cm_t3517_wlan_gpios));
if (err) {
pr_err("SBC-T3517: wl12xx gpios request failed: %d\n", err);
return;
}
struct gpio_desc *d;
gpiod_export(gpio_to_desc(cm_t3517_wlan_gpios[0].gpio), 0);
gpiod_export(gpio_to_desc(cm_t3517_wlan_gpios[1].gpio), 0);
gpiod_add_lookup_table(&cm_t3517_wlan_gpio_table);
/* This asserts the RESET line (reverse polarity) */
d = gpiod_get(NULL, "power", GPIOD_OUT_HIGH);
if (IS_ERR(d)) {
pr_err("Unable to get CM T3517 WLAN power GPIO descriptor\n");
} else {
gpiod_set_consumer_name(d, "wlan pwr");
gpiod_export(d, 0);
}
d = gpiod_get(NULL, "noe", GPIOD_OUT_HIGH);
if (IS_ERR(d)) {
pr_err("Unable to get CM T3517 WLAN XCVR NOE GPIO descriptor\n");
} else {
gpiod_set_consumer_name(d, "xcvr noe");
gpiod_export(d, 0);
}
msleep(100);
gpio_set_value(cm_t3517_wlan_gpios[1].gpio, 0);
gpiod_set_value(d, 0);
}
static struct gpiod_lookup_table omap3_sbc_t3517_usb_gpio_table = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment