]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/meta-ti-glsdk.git/blob - recipes-kernel/linux/linux-am335x-3.2.0-psp04.06.00.08/0001-am335x-enable-pullup-on-the-WLAN-enable-pin-fo.patch
linux-am335x-3.2.0-psp04.06.00.08: Add PSP v04.06.00.08 of the Linux kernel
[glsdk/meta-ti-glsdk.git] / recipes-kernel / linux / linux-am335x-3.2.0-psp04.06.00.08 / 0001-am335x-enable-pullup-on-the-WLAN-enable-pin-fo.patch
1 From f69ffbef6793b7238a8518481735fd53326e0cdf Mon Sep 17 00:00:00 2001
2 From: Vita Preskovsky <vitap@ti.com>
3 Date: Tue, 24 Jul 2012 20:02:28 +0300
4 Subject: [PATCH] am335x: enable pullup on the WLAN enable pin for keeping wlan
6   * Enable pullup on the WLAN enable pin for keeping wlan active
7     during suspend in wowlan mode. The fix is relevant only in the case
8     of am335x-SK board.
11 Signed-off-by: Vita Preskovsky <vitap@ti.com>
12 ---
13  arch/arm/mach-omap2/board-am335xevm.c |   22 ++++++++++++++++++++++
14  1 files changed, 22 insertions(+), 0 deletions(-)
16 diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
17 index f68710c..f263f84 100644
18 --- a/arch/arm/mach-omap2/board-am335xevm.c
19 +++ b/arch/arm/mach-omap2/board-am335xevm.c
20 @@ -1673,13 +1673,35 @@ static void wl12xx_bluetooth_enable(void)
21         gpio_direction_output(am335xevm_wlan_data.bt_enable_gpio, 0);
22  }
24 +#define AM33XX_CTRL_REGADDR(reg)                                       \
25 +               AM33XX_L4_WK_IO_ADDRESS(AM33XX_SCM_BASE + (reg))
26 +
27 +/* wlan enable pin */
28 +#define AM33XX_CONTROL_PADCONF_GPMC_CSN0_OFFSET                0x087C
29  static int wl12xx_set_power(struct device *dev, int slot, int on, int vdd)
30  {
31 +       int pad_mux_value;
32 +
33         if (on) {
34                 gpio_direction_output(am335xevm_wlan_data.wlan_enable_gpio, 1);
35 +
36 +               /* Enable pullup on the WLAN enable pin for keeping wlan active during suspend
37 +                  in wowlan mode */
38 +               if ( am335x_evm_get_id() == EVM_SK ) {
39 +                       pad_mux_value = readl(AM33XX_CTRL_REGADDR(AM33XX_CONTROL_PADCONF_GPMC_CSN0_OFFSET));
40 +                       pad_mux_value &= (~AM33XX_PULL_DISA);
41 +                       writel(pad_mux_value, AM33XX_CTRL_REGADDR(AM33XX_CONTROL_PADCONF_GPMC_CSN0_OFFSET));
42 +               }
43 +
44                 mdelay(70);
45         } else {
46                 gpio_direction_output(am335xevm_wlan_data.wlan_enable_gpio, 0);
47 +               /* Disable pullup on the WLAN enable when WLAN is off */
48 +               if ( am335x_evm_get_id() == EVM_SK ) {
49 +                       pad_mux_value = readl(AM33XX_CTRL_REGADDR(AM33XX_CONTROL_PADCONF_GPMC_CSN0_OFFSET));
50 +                       pad_mux_value |= AM33XX_PULL_DISA;
51 +                       writel(pad_mux_value, AM33XX_CTRL_REGADDR(AM33XX_CONTROL_PADCONF_GPMC_CSN0_OFFSET));
52 +               }
53         }
55         return 0;
56 --
57 1.7.0.4