wl12xx_platform_data.c revision 61ee7007a5d61aa066076da578e8e8084e122d7d
161ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen#include <linux/module.h>
261ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen#include <linux/err.h>
361ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen#include <linux/wl12xx.h>
461ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen
561ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohenstatic const struct wl12xx_platform_data *platform_data;
661ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen
761ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohenint __init wl12xx_set_platform_data(const struct wl12xx_platform_data *data)
861ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen{
961ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen	if (platform_data)
1061ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen		return -EBUSY;
1161ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen	if (!data)
1261ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen		return -EINVAL;
1361ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen
1461ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen	platform_data = kmemdup(data, sizeof(*data), GFP_KERNEL);
1561ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen	if (!platform_data)
1661ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen		return -ENOMEM;
1761ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen
1861ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen	return 0;
1961ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen}
2061ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen
2161ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohenconst struct wl12xx_platform_data *wl12xx_get_platform_data(void)
2261ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen{
2361ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen	if (!platform_data)
2461ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen		return ERR_PTR(-ENODEV);
2561ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen
2661ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen	return platform_data;
2761ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-Cohen}
2861ee7007a5d61aa066076da578e8e8084e122d7dOhad Ben-CohenEXPORT_SYMBOL(wl12xx_get_platform_data);
29