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>
This commit is contained in:
parent
2cc78ff78c
commit
61ee7007a5
@ -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/
|
||||
|
@ -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
drivers/net/wireless/wl12xx/wl12xx_platform_data.c
Normal file
28
drivers/net/wireless/wl12xx/wl12xx_platform_data.c
Normal file
@ -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);
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user