diff options
author | Ohad Ben-Cohen <ohad@wizery.com> | 2010-09-15 19:31:12 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-09-21 11:04:57 -0400 |
commit | 61ee7007a5d61aa066076da578e8e8084e122d7d (patch) | |
tree | a4a9a4d812504af92fd4e84e92578b7dfbbf2605 /drivers/net/wireless/wl12xx | |
parent | 2cc78ff78c0af502b040d4527212e29e02d3231d (diff) |
wl12xx: add platform data passing support
Add a simple mechanism to pass platform data to the
SDIO instances of wl12xx.
This way there is no confusion over who owns the 'embedded data',
typechecking is preserved, and no possibility for the wrong driver to
pick up the data.
Originally proposed by Russell King.
Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/wl12xx')
-rw-r--r-- | drivers/net/wireless/wl12xx/Kconfig | 5 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/wl12xx_platform_data.c | 28 |
2 files changed, 32 insertions, 1 deletions
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); | ||