]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/firmware/dmi-id.c
V4L/DVB (7924): ivtv/cx18: snprintf fixes
[linux-2.6-omap-h63xx.git] / drivers / firmware / dmi-id.c
index a7bd87d52897b65427fe4f68cb094de342867c31..e880d6c8d8965d88e9fcc9674006cf6b4206a215 100644 (file)
@@ -11,7 +11,6 @@
 #include <linux/init.h>
 #include <linux/dmi.h>
 #include <linux/device.h>
-#include <linux/autoconf.h>
 
 struct dmi_device_attribute{
        struct device_attribute dev_attr;
@@ -20,10 +19,6 @@ struct dmi_device_attribute{
 #define to_dmi_dev_attr(_dev_attr) \
        container_of(_dev_attr, struct dmi_device_attribute, dev_attr)
 
-#define DEFINE_DMI_ATTR(_name, _mode, _show)           \
-static struct device_attribute sys_dmi_##_name##_attr =        \
-       __ATTR(_name, _mode, _show, NULL);
-
 static ssize_t sys_dmi_field_show(struct device *dev,
                                  struct device_attribute *attr,
                                  char *page)
@@ -135,7 +130,8 @@ static ssize_t sys_dmi_modalias_show(struct device *dev,
        return r+1;
 }
 
-DEFINE_DMI_ATTR(modalias, 0444, sys_dmi_modalias_show);
+static struct device_attribute sys_dmi_modalias_attr =
+       __ATTR(modalias, 0444, sys_dmi_modalias_show, NULL);
 
 static struct attribute *sys_dmi_attributes[DMI_STRING_MAX+2];
 
@@ -176,14 +172,11 @@ static struct device *dmi_dev;
        if (dmi_get_system_info(_field)) \
                sys_dmi_attributes[i++] = &sys_dmi_##_name##_attr.dev_attr.attr;
 
-extern int dmi_available;
-
-static int __init dmi_id_init(void)
+/* In a separate function to keep gcc 3.2 happy - do NOT merge this in
+   dmi_id_init! */
+static void __init dmi_id_init_attr_table(void)
 {
-       int ret, i;
-
-       if (!dmi_available)
-               return -ENODEV;
+       int i;
 
        /* Not necessarily all DMI fields are available on all
         * systems, hence let's built an attribute table of just
@@ -208,6 +201,16 @@ static int __init dmi_id_init(void)
        ADD_DMI_ATTR(chassis_serial,    DMI_CHASSIS_SERIAL);
        ADD_DMI_ATTR(chassis_asset_tag, DMI_CHASSIS_ASSET_TAG);
        sys_dmi_attributes[i++] = &sys_dmi_modalias_attr.attr;
+}
+
+static int __init dmi_id_init(void)
+{
+       int ret;
+
+       if (!dmi_available)
+               return -ENODEV;
+
+       dmi_id_init_attr_table();
 
        ret = class_register(&dmi_class);
        if (ret)