diff options
Diffstat (limited to 'drivers/char/ipmi/ipmi_si_intf.c')
| -rw-r--r-- | drivers/char/ipmi/ipmi_si_intf.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c index 3822b4f49c84..7bd7c45b53ef 100644 --- a/drivers/char/ipmi/ipmi_si_intf.c +++ b/drivers/char/ipmi/ipmi_si_intf.c | |||
| @@ -305,6 +305,9 @@ static int num_force_kipmid; | |||
| 305 | #ifdef CONFIG_PCI | 305 | #ifdef CONFIG_PCI |
| 306 | static int pci_registered; | 306 | static int pci_registered; |
| 307 | #endif | 307 | #endif |
| 308 | #ifdef CONFIG_ACPI | ||
| 309 | static int pnp_registered; | ||
| 310 | #endif | ||
| 308 | #ifdef CONFIG_PPC_OF | 311 | #ifdef CONFIG_PPC_OF |
| 309 | static int of_registered; | 312 | static int of_registered; |
| 310 | #endif | 313 | #endif |
| @@ -2126,7 +2129,7 @@ static int __devinit ipmi_pnp_probe(struct pnp_dev *dev, | |||
| 2126 | { | 2129 | { |
| 2127 | struct acpi_device *acpi_dev; | 2130 | struct acpi_device *acpi_dev; |
| 2128 | struct smi_info *info; | 2131 | struct smi_info *info; |
| 2129 | struct resource *res; | 2132 | struct resource *res, *res_second; |
| 2130 | acpi_handle handle; | 2133 | acpi_handle handle; |
| 2131 | acpi_status status; | 2134 | acpi_status status; |
| 2132 | unsigned long long tmp; | 2135 | unsigned long long tmp; |
| @@ -2182,13 +2185,13 @@ static int __devinit ipmi_pnp_probe(struct pnp_dev *dev, | |||
| 2182 | info->io.addr_data = res->start; | 2185 | info->io.addr_data = res->start; |
| 2183 | 2186 | ||
| 2184 | info->io.regspacing = DEFAULT_REGSPACING; | 2187 | info->io.regspacing = DEFAULT_REGSPACING; |
| 2185 | res = pnp_get_resource(dev, | 2188 | res_second = pnp_get_resource(dev, |
| 2186 | (info->io.addr_type == IPMI_IO_ADDR_SPACE) ? | 2189 | (info->io.addr_type == IPMI_IO_ADDR_SPACE) ? |
| 2187 | IORESOURCE_IO : IORESOURCE_MEM, | 2190 | IORESOURCE_IO : IORESOURCE_MEM, |
| 2188 | 1); | 2191 | 1); |
| 2189 | if (res) { | 2192 | if (res_second) { |
| 2190 | if (res->start > info->io.addr_data) | 2193 | if (res_second->start > info->io.addr_data) |
| 2191 | info->io.regspacing = res->start - info->io.addr_data; | 2194 | info->io.regspacing = res_second->start - info->io.addr_data; |
| 2192 | } | 2195 | } |
| 2193 | info->io.regsize = DEFAULT_REGSPACING; | 2196 | info->io.regsize = DEFAULT_REGSPACING; |
| 2194 | info->io.regshift = 0; | 2197 | info->io.regshift = 0; |
| @@ -3359,6 +3362,7 @@ static __devinit int init_ipmi_si(void) | |||
| 3359 | 3362 | ||
| 3360 | #ifdef CONFIG_ACPI | 3363 | #ifdef CONFIG_ACPI |
| 3361 | pnp_register_driver(&ipmi_pnp_driver); | 3364 | pnp_register_driver(&ipmi_pnp_driver); |
| 3365 | pnp_registered = 1; | ||
| 3362 | #endif | 3366 | #endif |
| 3363 | 3367 | ||
| 3364 | #ifdef CONFIG_DMI | 3368 | #ifdef CONFIG_DMI |
| @@ -3526,7 +3530,8 @@ static __exit void cleanup_ipmi_si(void) | |||
| 3526 | pci_unregister_driver(&ipmi_pci_driver); | 3530 | pci_unregister_driver(&ipmi_pci_driver); |
| 3527 | #endif | 3531 | #endif |
| 3528 | #ifdef CONFIG_ACPI | 3532 | #ifdef CONFIG_ACPI |
| 3529 | pnp_unregister_driver(&ipmi_pnp_driver); | 3533 | if (pnp_registered) |
| 3534 | pnp_unregister_driver(&ipmi_pnp_driver); | ||
| 3530 | #endif | 3535 | #endif |
| 3531 | 3536 | ||
| 3532 | #ifdef CONFIG_PPC_OF | 3537 | #ifdef CONFIG_PPC_OF |
