Skip to contentSkip to conversation

compat: fix firmware class compile on linux 2.6.32

PATCH In review Felix Fietkau 3 participants 6 messages Jan 18, 2010 – Jan 19, 2010 Kbuild

lore
Share & tools
lore
#0 lore raw

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 */
#1 lore raw

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
#2 lore raw

Re: [PATCH 2/2] compat: fix compile errors with CONFIG_FW_LOADER unset

Quoted 14 lines · Felix Fietkau

---

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
index 4843869..ad8a602 100644
@@ -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

#3 lore raw

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_LOADER yet, not sure if it works:

Makefile +5 -0
index 4843869..ad8a602 100644
@@ -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

#4 lore raw

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_LOADER  yet, not sure if it works:

Makefile +0 -0
index 4843869..ad8a602 100644
@@ -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

Makefile +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