diff options
| -rw-r--r-- | drivers/firmware/dmi-id.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c index b6e1eb77d148..bc132d8f79cb 100644 --- a/drivers/firmware/dmi-id.c +++ b/drivers/firmware/dmi-id.c | |||
| @@ -175,12 +175,11 @@ static struct device *dmi_dev; | |||
| 175 | 175 | ||
| 176 | extern int dmi_available; | 176 | extern int dmi_available; |
| 177 | 177 | ||
| 178 | static int __init dmi_id_init(void) | 178 | /* In a separate function to keep gcc 3.2 happy - do NOT merge this in |
| 179 | dmi_id_init! */ | ||
| 180 | static void __init dmi_id_init_attr_table(void) | ||
| 179 | { | 181 | { |
| 180 | int ret, i; | 182 | int i; |
| 181 | |||
| 182 | if (!dmi_available) | ||
| 183 | return -ENODEV; | ||
| 184 | 183 | ||
| 185 | /* Not necessarily all DMI fields are available on all | 184 | /* Not necessarily all DMI fields are available on all |
| 186 | * systems, hence let's built an attribute table of just | 185 | * systems, hence let's built an attribute table of just |
| @@ -205,6 +204,16 @@ static int __init dmi_id_init(void) | |||
| 205 | ADD_DMI_ATTR(chassis_serial, DMI_CHASSIS_SERIAL); | 204 | ADD_DMI_ATTR(chassis_serial, DMI_CHASSIS_SERIAL); |
| 206 | ADD_DMI_ATTR(chassis_asset_tag, DMI_CHASSIS_ASSET_TAG); | 205 | ADD_DMI_ATTR(chassis_asset_tag, DMI_CHASSIS_ASSET_TAG); |
| 207 | sys_dmi_attributes[i++] = &sys_dmi_modalias_attr.attr; | 206 | sys_dmi_attributes[i++] = &sys_dmi_modalias_attr.attr; |
| 207 | } | ||
| 208 | |||
| 209 | static int __init dmi_id_init(void) | ||
| 210 | { | ||
| 211 | int ret; | ||
| 212 | |||
| 213 | if (!dmi_available) | ||
| 214 | return -ENODEV; | ||
| 215 | |||
| 216 | dmi_id_init_attr_table(); | ||
| 208 | 217 | ||
| 209 | ret = class_register(&dmi_class); | 218 | ret = class_register(&dmi_class); |
| 210 | if (ret) | 219 | if (ret) |
