diff options
author | Imre Kaloz <kaloz@openwrt.org> | 2013-11-27 12:40:07 +0000 |
---|---|---|
committer | Imre Kaloz <kaloz@openwrt.org> | 2013-11-27 12:40:07 +0000 |
commit | 620833b3a1ac621e93dc747def1e1f0bb97cb753 (patch) | |
tree | 577c536e003bfaa4eff77a323c06e0c2ecaac7ec /target/linux/omap/patches-3.12/900-wl1251-split-wl251-platform-data-to-a-separate-structure.patch | |
parent | 94cdb9986f60a1fbcd78385bf791b7d87b43e24d (diff) | |
download | upstream-620833b3a1ac621e93dc747def1e1f0bb97cb753.tar.gz upstream-620833b3a1ac621e93dc747def1e1f0bb97cb753.tar.bz2 upstream-620833b3a1ac621e93dc747def1e1f0bb97cb753.zip |
add device tree based initialization to wl12xx
Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38933 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/omap/patches-3.12/900-wl1251-split-wl251-platform-data-to-a-separate-structure.patch')
-rw-r--r-- | target/linux/omap/patches-3.12/900-wl1251-split-wl251-platform-data-to-a-separate-structure.patch | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/target/linux/omap/patches-3.12/900-wl1251-split-wl251-platform-data-to-a-separate-structure.patch b/target/linux/omap/patches-3.12/900-wl1251-split-wl251-platform-data-to-a-separate-structure.patch new file mode 100644 index 0000000000..fa6059ac35 --- /dev/null +++ b/target/linux/omap/patches-3.12/900-wl1251-split-wl251-platform-data-to-a-separate-structure.patch @@ -0,0 +1,198 @@ +Move the wl1251 part of the wl12xx platform data structure into a new +structure specifically for wl1251. Change the platform data built-in +block and board files accordingly. + +Cc: Tony Lindgren <tony@atomide.com> +Signed-off-by: Luciano Coelho <coelho@ti.com> +Acked-by: Tony Lindgren <tony@atomide.com> +Reviewed-by: Felipe Balbi <balbi@ti.com> + +--- + arch/arm/mach-omap2/board-omap3pandora.c | 4 +-- + arch/arm/mach-omap2/board-rx51-peripherals.c | 2 +- + drivers/net/wireless/ti/wilink_platform_data.c | 37 +++++++++++++++++++++----- + drivers/net/wireless/ti/wl1251/sdio.c | 12 ++++----- + drivers/net/wireless/ti/wl1251/spi.c | 2 +- + include/linux/wl12xx.h | 22 ++++++++++++++- + 6 files changed, 62 insertions(+), 17 deletions(-) + +--- a/arch/arm/mach-omap2/board-omap3pandora.c ++++ b/arch/arm/mach-omap2/board-omap3pandora.c +@@ -536,7 +536,7 @@ static struct spi_board_info omap3pandor + + static void __init pandora_wl1251_init(void) + { +- struct wl12xx_platform_data pandora_wl1251_pdata; ++ struct wl1251_platform_data pandora_wl1251_pdata; + int ret; + + memset(&pandora_wl1251_pdata, 0, sizeof(pandora_wl1251_pdata)); +@@ -550,7 +550,7 @@ static void __init pandora_wl1251_init(v + goto fail_irq; + + pandora_wl1251_pdata.use_eeprom = true; +- ret = wl12xx_set_platform_data(&pandora_wl1251_pdata); ++ ret = wl1251_set_platform_data(&pandora_wl1251_pdata); + if (ret < 0) + goto fail_irq; + +--- a/arch/arm/mach-omap2/board-rx51-peripherals.c ++++ b/arch/arm/mach-omap2/board-rx51-peripherals.c +@@ -82,7 +82,7 @@ enum { + RX51_SPI_MIPID, /* LCD panel */ + }; + +-static struct wl12xx_platform_data wl1251_pdata; ++static struct wl1251_platform_data wl1251_pdata; + static struct tsc2005_platform_data tsc2005_pdata; + + #if defined(CONFIG_SENSORS_LIS3_I2C) || defined(CONFIG_SENSORS_LIS3_I2C_MODULE) +--- a/drivers/net/wireless/ti/wilink_platform_data.c ++++ b/drivers/net/wireless/ti/wilink_platform_data.c +@@ -23,17 +23,17 @@ + #include <linux/err.h> + #include <linux/wl12xx.h> + +-static struct wl12xx_platform_data *platform_data; ++static struct wl12xx_platform_data *wl12xx_platform_data; + + int __init wl12xx_set_platform_data(const struct wl12xx_platform_data *data) + { +- if (platform_data) ++ if (wl12xx_platform_data) + return -EBUSY; + if (!data) + return -EINVAL; + +- platform_data = kmemdup(data, sizeof(*data), GFP_KERNEL); +- if (!platform_data) ++ wl12xx_platform_data = kmemdup(data, sizeof(*data), GFP_KERNEL); ++ if (!wl12xx_platform_data) + return -ENOMEM; + + return 0; +@@ -41,9 +41,34 @@ int __init wl12xx_set_platform_data(cons + + struct wl12xx_platform_data *wl12xx_get_platform_data(void) + { +- if (!platform_data) ++ if (!wl12xx_platform_data) + return ERR_PTR(-ENODEV); + +- return platform_data; ++ return wl12xx_platform_data; + } + EXPORT_SYMBOL(wl12xx_get_platform_data); ++ ++static struct wl1251_platform_data *wl1251_platform_data; ++ ++int __init wl1251_set_platform_data(const struct wl1251_platform_data *data) ++{ ++ if (wl1251_platform_data) ++ return -EBUSY; ++ if (!data) ++ return -EINVAL; ++ ++ wl1251_platform_data = kmemdup(data, sizeof(*data), GFP_KERNEL); ++ if (!wl1251_platform_data) ++ return -ENOMEM; ++ ++ return 0; ++} ++ ++struct wl1251_platform_data *wl1251_get_platform_data(void) ++{ ++ if (!wl1251_platform_data) ++ return ERR_PTR(-ENODEV); ++ ++ return wl1251_platform_data; ++} ++EXPORT_SYMBOL(wl1251_get_platform_data); +--- a/drivers/net/wireless/ti/wl1251/sdio.c ++++ b/drivers/net/wireless/ti/wl1251/sdio.c +@@ -227,7 +227,7 @@ static int wl1251_sdio_probe(struct sdio + struct wl1251 *wl; + struct ieee80211_hw *hw; + struct wl1251_sdio *wl_sdio; +- const struct wl12xx_platform_data *wl12xx_board_data; ++ const struct wl1251_platform_data *wl1251_board_data; + + hw = wl1251_alloc_hw(); + if (IS_ERR(hw)) +@@ -254,11 +254,11 @@ static int wl1251_sdio_probe(struct sdio + wl->if_priv = wl_sdio; + wl->if_ops = &wl1251_sdio_ops; + +- wl12xx_board_data = wl12xx_get_platform_data(); +- if (!IS_ERR(wl12xx_board_data)) { +- wl->set_power = wl12xx_board_data->set_power; +- wl->irq = wl12xx_board_data->irq; +- wl->use_eeprom = wl12xx_board_data->use_eeprom; ++ wl1251_board_data = wl1251_get_platform_data(); ++ if (!IS_ERR(wl1251_board_data)) { ++ wl->set_power = wl1251_board_data->set_power; ++ wl->irq = wl1251_board_data->irq; ++ wl->use_eeprom = wl1251_board_data->use_eeprom; + } + + if (wl->irq) { +--- a/drivers/net/wireless/ti/wl1251/spi.c ++++ b/drivers/net/wireless/ti/wl1251/spi.c +@@ -238,7 +238,7 @@ static const struct wl1251_if_operations + + static int wl1251_spi_probe(struct spi_device *spi) + { +- struct wl12xx_platform_data *pdata; ++ struct wl1251_platform_data *pdata; + struct ieee80211_hw *hw; + struct wl1251 *wl; + int ret; +--- a/include/linux/wl12xx.h ++++ b/include/linux/wl12xx.h +@@ -48,11 +48,15 @@ enum { + WL12XX_TCXOCLOCK_33_6 = 7, /* 33.6 MHz */ + }; + +-struct wl12xx_platform_data { ++struct wl1251_platform_data { + void (*set_power)(bool enable); + /* SDIO only: IRQ number if WLAN_IRQ line is used, 0 for SDIO IRQs */ + int irq; + bool use_eeprom; ++}; ++ ++struct wl12xx_platform_data { ++ int irq; + int board_ref_clock; + int board_tcxo_clock; + unsigned long platform_quirks; +@@ -68,6 +72,10 @@ int wl12xx_set_platform_data(const struc + + struct wl12xx_platform_data *wl12xx_get_platform_data(void); + ++int wl1251_set_platform_data(const struct wl1251_platform_data *data); ++ ++struct wl1251_platform_data *wl1251_get_platform_data(void); ++ + #else + + static inline +@@ -81,6 +89,18 @@ struct wl12xx_platform_data *wl12xx_get_ + { + return ERR_PTR(-ENODATA); + } ++ ++static inline ++int wl1251_set_platform_data(const struct wl1251_platform_data *data) ++{ ++ return -ENOSYS; ++} ++ ++static inline ++struct wl1251_platform_data *wl1251_get_platform_data(void) ++{ ++ return ERR_PTR(-ENODATA); ++} + + #endif + |