diff options
-rw-r--r-- | drivers/net/wireless/Makefile | 2 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/Kconfig | 5 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/wl12xx_platform_data.c | 28 | ||||
-rw-r--r-- | include/linux/wl12xx.h | 3 |
4 files changed, 37 insertions, 1 deletions
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile index 5d4ce4d2b32b..85af697574a6 100644 --- a/drivers/net/wireless/Makefile +++ b/drivers/net/wireless/Makefile | |||
@@ -50,5 +50,7 @@ obj-$(CONFIG_ATH_COMMON) += ath/ | |||
50 | obj-$(CONFIG_MAC80211_HWSIM) += mac80211_hwsim.o | 50 | obj-$(CONFIG_MAC80211_HWSIM) += mac80211_hwsim.o |
51 | 51 | ||
52 | obj-$(CONFIG_WL12XX) += wl12xx/ | 52 | obj-$(CONFIG_WL12XX) += wl12xx/ |
53 | # small builtin driver bit | ||
54 | obj-$(CONFIG_WL12XX_PLATFORM_DATA) += wl12xx/wl12xx_platform_data.o | ||
53 | 55 | ||
54 | obj-$(CONFIG_IWM) += iwmc3200wifi/ | 56 | obj-$(CONFIG_IWM) += iwmc3200wifi/ |
diff --git a/drivers/net/wireless/wl12xx/Kconfig b/drivers/net/wireless/wl12xx/Kconfig index 2f98058be451..4a8bb25c1739 100644 --- a/drivers/net/wireless/wl12xx/Kconfig +++ b/drivers/net/wireless/wl12xx/Kconfig | |||
@@ -74,4 +74,7 @@ config WL1271_SDIO | |||
74 | If you choose to build a module, it'll be called | 74 | If you choose to build a module, it'll be called |
75 | wl1271_sdio. Say N if unsure. | 75 | wl1271_sdio. Say N if unsure. |
76 | 76 | ||
77 | 77 | config WL12XX_PLATFORM_DATA | |
78 | bool | ||
79 | depends on WL1271_SDIO != n | ||
80 | default y | ||
diff --git a/drivers/net/wireless/wl12xx/wl12xx_platform_data.c b/drivers/net/wireless/wl12xx/wl12xx_platform_data.c new file mode 100644 index 000000000000..973b11060a8f --- /dev/null +++ b/drivers/net/wireless/wl12xx/wl12xx_platform_data.c | |||
@@ -0,0 +1,28 @@ | |||
1 | #include <linux/module.h> | ||
2 | #include <linux/err.h> | ||
3 | #include <linux/wl12xx.h> | ||
4 | |||
5 | static const struct wl12xx_platform_data *platform_data; | ||
6 | |||
7 | int __init wl12xx_set_platform_data(const struct wl12xx_platform_data *data) | ||
8 | { | ||
9 | if (platform_data) | ||
10 | return -EBUSY; | ||
11 | if (!data) | ||
12 | return -EINVAL; | ||
13 | |||
14 | platform_data = kmemdup(data, sizeof(*data), GFP_KERNEL); | ||
15 | if (!platform_data) | ||
16 | return -ENOMEM; | ||
17 | |||
18 | return 0; | ||
19 | } | ||
20 | |||
21 | const struct wl12xx_platform_data *wl12xx_get_platform_data(void) | ||
22 | { | ||
23 | if (!platform_data) | ||
24 | return ERR_PTR(-ENODEV); | ||
25 | |||
26 | return platform_data; | ||
27 | } | ||
28 | EXPORT_SYMBOL(wl12xx_get_platform_data); | ||
diff --git a/include/linux/wl12xx.h b/include/linux/wl12xx.h index 015687a1776d..bd70563107fa 100644 --- a/include/linux/wl12xx.h +++ b/include/linux/wl12xx.h | |||
@@ -31,4 +31,7 @@ struct wl12xx_platform_data { | |||
31 | bool use_eeprom; | 31 | bool use_eeprom; |
32 | }; | 32 | }; |
33 | 33 | ||
34 | int wl12xx_set_platform_data(const struct wl12xx_platform_data *data); | ||
35 | const struct wl12xx_platform_data *wl12xx_get_platform_data(void); | ||
36 | |||
34 | #endif | 37 | #endif |