Index: sources/arch/arm/mach-msm/board-trout-wifi.c =================================================================== --- sources.orig/arch/arm/mach-msm/board-trout-wifi.c 2010-06-24 23:58:13.194099802 +0200 +++ sources/arch/arm/mach-msm/board-trout-wifi.c 2010-06-24 23:58:21.385931197 +0200 @@ -20,7 +20,7 @@ #include #include #include -#include +#include extern int trout_wifi_set_carddetect(int val); extern int trout_wifi_power(int on); @@ -60,7 +60,7 @@ } #endif -struct wifi_platform_data trout_wifi_control = { +struct wl12xx_platform_data trout_wifi_control = { .set_power = trout_wifi_power, .set_reset = trout_wifi_reset, .set_carddetect = trout_wifi_set_carddetect, Index: sources/arch/arm/mach-msm/board-trout.c =================================================================== --- sources.orig/arch/arm/mach-msm/board-trout.c 2010-06-24 23:58:13.234055563 +0200 +++ sources/arch/arm/mach-msm/board-trout.c 2010-06-25 00:40:37.324053664 +0200 @@ -66,7 +66,7 @@ #include #endif #ifdef CONFIG_WIFI_CONTROL_FUNC -#include +#include #endif #include "proc_comm.h" @@ -80,7 +80,7 @@ #ifdef CONFIG_WIFI_MEM_PREALLOC extern int trout_init_wifi_mem(void); #endif -extern struct wifi_platform_data trout_wifi_control; +extern struct wl12xx_platform_data trout_wifi_control; #endif struct trout_axis_info { @@ -545,6 +545,28 @@ .ram_console_size = MSM_RAM_CONSOLE_SIZE, }; + +static void trout_wl1251_init(void) +{ + int ret; + + ret = gpio_request(TROUT_WIFI_IRQ_GPIO, "wl1251 irq"); + if (ret < 0) + goto fail_irq; + + ret = gpio_direction_input(TROUT_WIFI_IRQ_GPIO); + if (ret < 0) + goto fail_irq; + + trout_wifi_control.irq = gpio_to_irq(TROUT_WIFI_IRQ_GPIO); + if (trout_wifi_control.irq < 0) + goto fail_irq; + + return; + +fail_irq: + gpio_free(TROUT_WIFI_IRQ_GPIO); +} #ifdef CONFIG_WIFI_CONTROL_FUNC static struct platform_device trout_wifi = { .name = "msm_wifi", @@ -823,6 +845,7 @@ /* SD card door should wake the device */ set_irq_wake(TROUT_GPIO_TO_INT(TROUT_GPIO_SD_DOOR_N), 1); + trout_wl1251_init(); } static struct map_desc trout_io_desc[] __initdata = { Index: sources/arch/arm/mach-msm/board-trout.h =================================================================== --- sources.orig/arch/arm/mach-msm/board-trout.h 2010-06-24 23:58:13.294049700 +0200 +++ sources/arch/arm/mach-msm/board-trout.h 2010-06-24 23:58:21.385931197 +0200 @@ -74,6 +74,7 @@ #define TROUT_GPIO_HAPTIC_PWM (28) #define TROUT_GPIO_PS_HOLD (25) +#define TROUT_WIFI_IRQ_GPIO (29) #define TROUT_GPIO_MISC2_BASE (TROUT_GPIO_START + 0x00) #define TROUT_GPIO_MISC3_BASE (TROUT_GPIO_START + 0x08) Index: sources/arch/arm/mach-msm/msm_wifi.c =================================================================== --- sources.orig/arch/arm/mach-msm/msm_wifi.c 2010-06-24 23:58:13.344052459 +0200 +++ sources/arch/arm/mach-msm/msm_wifi.c 2010-06-24 23:58:21.385931197 +0200 @@ -18,12 +18,12 @@ * Copyright (C) 2008 Google Inc */ #include -#include +#include static int wifi_probe(struct platform_device *pdev) { - struct wifi_platform_data *wifi_ctrl = - (struct wifi_platform_data *)(pdev->dev.platform_data); + struct wl12xx_platform_data *wifi_ctrl = + (struct wl12xx_platform_data *)(pdev->dev.platform_data); printk(KERN_DEBUG "wifi probe start\n"); @@ -43,8 +43,8 @@ static int wifi_remove(struct platform_device *pdev) { - struct wifi_platform_data *wifi_ctrl = - (struct wifi_platform_data *)(pdev->dev.platform_data); + struct wl12xx_platform_data *wifi_ctrl = + (struct w12xx_platform_data *)(pdev->dev.platform_data); printk(KERN_DEBUG "wifi remove start\n"); if (!wifi_ctrl) Index: sources/include/linux/spi/wl12xx.h =================================================================== --- sources.orig/include/linux/spi/wl12xx.h 2010-06-24 23:58:13.404053597 +0200 +++ sources/include/linux/spi/wl12xx.h 2010-06-24 23:58:21.385931197 +0200 @@ -24,8 +24,19 @@ #ifndef _LINUX_SPI_WL12XX_H #define _LINUX_SPI_WL12XX_H +#define WMPA_NUMBER_OF_SECTIONS 3 +#define WMPA_NUMBER_OF_BUFFERS 160 +#define WMPA_SECTION_HEADER 24 +#define WMPA_SECTION_SIZE_0 (WMPA_NUMBER_OF_BUFFERS * 64) +#define WMPA_SECTION_SIZE_1 (WMPA_NUMBER_OF_BUFFERS * 256) +#define WMPA_SECTION_SIZE_2 (WMPA_NUMBER_OF_BUFFERS * 2048) + struct wl12xx_platform_data { - void (*set_power)(bool enable); + int (*set_power)(bool enable); + int (*set_reset)(bool enable); + int (*set_carddetect)(bool enable); + void *(*mem_prealloc)(int section, unsigned long size); + int irq; }; #endif