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:
Ohad Ben-Cohen 2010-09-16 01:31:12 +02:00 коммит произвёл John W. Linville
Родитель 2cc78ff78c
Коммит 61ee7007a5
4 изменённых файлов: 37 добавлений и 1 удалений

Просмотреть файл

@ -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

Просмотреть файл

@ -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