Skip to content

Commit

Permalink
wl12xx: add platform data passing support
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Ohad Ben-Cohen authored and John W. Linville committed Sep 21, 2010
1 parent 2cc78ff commit 61ee700
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 1 deletion.
2 changes: 2 additions & 0 deletions drivers/net/wireless/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,7 @@ obj-$(CONFIG_ATH_COMMON) += ath/
obj-$(CONFIG_MAC80211_HWSIM) += mac80211_hwsim.o

obj-$(CONFIG_WL12XX) += wl12xx/
# small builtin driver bit
obj-$(CONFIG_WL12XX_PLATFORM_DATA) += wl12xx/wl12xx_platform_data.o

obj-$(CONFIG_IWM) += iwmc3200wifi/
5 changes: 4 additions & 1 deletion drivers/net/wireless/wl12xx/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,7 @@ config WL1271_SDIO
If you choose to build a module, it'll be called
wl1271_sdio. Say N if unsure.


config WL12XX_PLATFORM_DATA
bool
depends on WL1271_SDIO != n
default y
28 changes: 28 additions & 0 deletions drivers/net/wireless/wl12xx/wl12xx_platform_data.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#include <linux/module.h>
#include <linux/err.h>
#include <linux/wl12xx.h>

static const struct wl12xx_platform_data *platform_data;

int __init wl12xx_set_platform_data(const struct wl12xx_platform_data *data)
{
if (platform_data)
return -EBUSY;
if (!data)
return -EINVAL;

platform_data = kmemdup(data, sizeof(*data), GFP_KERNEL);
if (!platform_data)
return -ENOMEM;

return 0;
}

const struct wl12xx_platform_data *wl12xx_get_platform_data(void)
{
if (!platform_data)
return ERR_PTR(-ENODEV);

return platform_data;
}
EXPORT_SYMBOL(wl12xx_get_platform_data);
3 changes: 3 additions & 0 deletions include/linux/wl12xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,7 @@ struct wl12xx_platform_data {
bool use_eeprom;
};

int wl12xx_set_platform_data(const struct wl12xx_platform_data *data);
const struct wl12xx_platform_data *wl12xx_get_platform_data(void);

#endif

0 comments on commit 61ee700

Please sign in to comment.