Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 61ee7007 authored by Ohad Ben-Cohen's avatar Ohad Ben-Cohen Committed by John W. Linville
Browse files

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: default avatarOhad Ben-Cohen <ohad@wizery.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 2cc78ff7
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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/
+4 −1
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
#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 −0
Original line number Diff line number Diff line
@@ -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