compat: fix firmware class compile on linux 2.6.32
PATCH 1/2 compat: fix firmware class compile on linux 2.6.32
The firmware class API change happened after 2.6.32, so move the compat code to the 2.6.33 header file.
---
include/linux/compat-2.6.32.h +0 -34
@@ -9,40 +9,6 @@#include <linux/compat.h> #include <net/iw_handler.h> #include <linux/workqueue.h> -#include <linux/firmware.h> - -#define release_firmware compat_release_firmware -#define request_firmware compat_request_firmware -#define request_firmware_nowait compat_request_firmware_nowait - -#if defined(CONFIG_FW_LOADER ) || (defined(CONFIG_FW_LOADER_MODULE ) && defined(MODULE )) -int compat_request_firmware (const struct firmware **fw,const char *name, -struct device *device); -int compat_request_firmware_nowait ( -struct module *module,int uevent, -const char *name,struct device *device,gfp_t gfp,void *context, -void (*cont)(const struct firmware *fw,void *context)); - -void compat_release_firmware (const struct firmware *fw); -#else -static inline int compat_request_firmware (const struct firmware **fw, -const char *name, -struct device *device) -{ -return -EINVAL ; -} -static inline int request_firmware_nowait ( -struct module *module,int uevent, -const char *name,struct device *device,gfp_t gfp,void *context, -void (*cont)(const struct firmware *fw,void *context)) -{ -return -EINVAL ; -} - -static inline void compat_release_firmware (const struct firmware *fw) -{ -} -#endif #define SDIO_VENDOR_ID_INTEL 0x0089#define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX 0x1402
include/linux/compat-2.6.33.h +34 -0
@@ -10,6 +10,40 @@#include <pcmcia/cistpl.h> #include <pcmcia/ds.h> #include <linux/kfifo.h> +#include <linux/firmware.h> + +#define release_firmware compat_release_firmware +#define request_firmware compat_request_firmware +#define request_firmware_nowait compat_request_firmware_nowait + +#if defined(CONFIG_FW_LOADER ) || defined(CONFIG_FW_LOADER_MODULE ) +int compat_request_firmware (const struct firmware **fw,const char *name, +struct device *device); +int compat_request_firmware_nowait ( +struct module *module,int uevent, +const char *name,struct device *device,gfp_t gfp,void *context, +void (*cont)(const struct firmware *fw,void *context)); + +void compat_release_firmware (const struct firmware *fw); +#else +static inline int compat_request_firmware (const struct firmware **fw, +const char *name, +struct device *device) +{ +return -EINVAL ; +} +static inline int request_firmware_nowait ( +struct module *module,int uevent, +const char *name,struct device *device,gfp_t gfp,void *context, +void (*cont)(const struct firmware *fw,void *context)) +{ +return -EINVAL ; +} + +static inline void compat_release_firmware (const struct firmware *fw) +{ +} +#endif #define IFF_DONT_BRIDGE 0x800/* disallow bridging this ether dev */ /* source: include/linux/if.h */
PATCH 2/2 compat: fix compile errors with CONFIG_FW_LOADER unset
---
compat/compat_firmware_class.c +4 -0
@@ -20,6 +20,8 @@#include <linux/highmem.h> #include <linux/firmware.h> +#if defined(CONFIG_FW_LOADER ) || defined(CONFIG_FW_LOADER_MODULE ) +#define to_dev (obj) container_of(obj, struct device, kobj)MODULE_AUTHOR ("Manuel Estrada Sainz" );
@@ -724,3 +726,5 @@ module_exit(firmware_class_exit);EXPORT_SYMBOL (release_firmware);EXPORT_SYMBOL (request_firmware);EXPORT_SYMBOL (request_firmware_nowait); + +#endif
Re: [PATCH 2/2] compat: fix compile errors with CONFIG_FW_LOADER unset
Quoted 14 lines · Felix Fietkau
Signed-off-by Felix Fietkau <[email protected]>---
compat/compat_firmware_class.c +2
-0@@ -20,6 +20,8 @@#include <linux/highmem.h> #include <linux/firmware.h> +#if defined(CONFIG_FW_LOADER ) || defined(CONFIG_FW_LOADER_MODULE ) +#define to_dev (obj) container_of(obj, struct device, kobj)MODULE_AUTHOR ("Manuel Estrada Sainz" );
compat/compat_firmware_class.c module_exit(firmware_class_exit); · line 730
Quoted 5 lines
compat/compat_firmware_class.c +2
-0@@ -724,3 +726,5 @@ module_exit(firmware_class_exit);EXPORT_SYMBOL (release_firmware);EXPORT_SYMBOL (request_firmware);EXPORT_SYMBOL (request_firmware_nowait); + +#endif
Hm, that would end up still building the compat_firmware module though, what about something like this? This is not tested on a system without FW_LOADER yet, not sure if it works:
Makefile +5 -0
@@ -19,8 +19,13 @@ $(foreach ver,$(COMPAT_VERSIONS),$(eval export CONFIG_COMPAT_KERNEL_$(ver)=y)) endif ifeq ($(CONFIG_COMPAT_KERNEL_33),y) +ifeq ($(CONFIG_FW_LOADER),y) export CONFIG_COMPAT_FIRMWARE_CLASS=m endif +ifeq ($(CONFIG_FW_LOADER_MODULE),y) + export CONFIG_COMPAT_FIRMWARE_CLASS=m +endif +endif obj-y += compat/
Oh well this is just for compat.git but we'd do something similar on config.mk Testing to build compat.git should suffice though I think.
Luis
Re: [PATCH 2/2] compat: fix compile errors with CONFIG_FW_LOADER unset
Quoted 22 lines · Luis R. Rodriguez
what about something like this? This is not tested on a system without
FW_LOADERyet, not sure if it works:Makefile +5
-0@@ -19,8 +19,13 @@ $(foreach ver,$(COMPAT_VERSIONS),$(eval export CONFIG_COMPAT_KERNEL_$(ver)=y)) endif ifeq ($(CONFIG_COMPAT_KERNEL_33),y) +ifeq ($(CONFIG_FW_LOADER),y) export CONFIG_COMPAT_FIRMWARE_CLASS=m endif +ifeq ($(CONFIG_FW_LOADER_MODULE),y) + export CONFIG_COMPAT_FIRMWARE_CLASS=m +endif +endif obj-y += compat/
Quoted 2 lines
Oh well this is just for compat.git but we'd do something similar on config.mk Testing to build compat.git should suffice though I think.
Sounds good.
- Felix
Re: [PATCH 2/2] compat: fix compile errors with CONFIG_FW_LOADER unset
Quoted 20 lines · Felix Fietkau
Quoted 19 lines · Luis R. Rodriguez
what about something like this? This is not tested on a system without
FW_LOADERyet, not sure if it works:Makefile +0
-0@@ -19,8 +19,13 @@ $(foreach ver,$(COMPAT_VERSIONS),$(eval export CONFIG_COMPAT_KERNEL_$(ver)=y))endif
ifeq ($(CONFIG_COMPAT_KERNEL_33),y)
+ifeq ($(CONFIG_FW_LOADER),y)
exportCONFIG_COMPAT_FIRMWARE_CLASS=m
endifMakefile +4
-0+ifeq ($(CONFIG_FW_LOADER_MODULE),y) + export CONFIG_COMPAT_FIRMWARE_CLASS=m +endif +endif
Quoted 6 lines
Quoted 5 lines
obj-y += compat/
Oh well this is just for compat.git but we'd do something similar on config.mk Testing to build compat.git should suffice though I think.
Sounds good.
OK tested against a kernel without CONFIG_FW_LOADER and it works. Only thing is CONFIG_FW_LOADER can actually be m too so will handle that as well and push a new release of stuff. Thanks for the patches.
Luis
Quoted 4 lines · Felix Fietkau
The firmware class API change happened after 2.6.32, so move the compat code to the 2.6.33 header file.
Signed-off-by Felix Fietkau <[email protected]>
Applied thanks.