Merge branch 'release' of git://lm-sensors.org/kernel/mhoffman/hwmon-2.6

* 'release' of git://lm-sensors.org/kernel/mhoffman/hwmon-2.6:
hwmon: (w83781d) Fix I/O resource conflict with PNP

+16 -5
+16 -5
drivers/hwmon/w83781d.c
··· 1367 1368 /* Reserve the ISA region */ 1369 res = platform_get_resource(pdev, IORESOURCE_IO, 0); 1370 - if (!request_region(res->start, W83781D_EXTENT, "w83781d")) { 1371 err = -EBUSY; 1372 goto exit; 1373 } ··· 1416 device_remove_file(&pdev->dev, &dev_attr_name); 1417 kfree(data); 1418 exit_release_region: 1419 - release_region(res->start, W83781D_EXTENT); 1420 exit: 1421 return err; 1422 } ··· 1430 sysfs_remove_group(&pdev->dev.kobj, &w83781d_group); 1431 sysfs_remove_group(&pdev->dev.kobj, &w83781d_group_opt); 1432 device_remove_file(&pdev->dev, &dev_attr_name); 1433 - release_region(data->client.addr, W83781D_EXTENT); 1434 kfree(data); 1435 1436 return 0; ··· 1798 { 1799 int val, save, found = 0; 1800 1801 - if (!request_region(address, W83781D_EXTENT, "w83781d")) 1802 return 0; 1803 1804 #define REALLY_SLOW_IO 1805 /* We need the timeouts for at least some W83781D-like ··· 1881 val == 0x30 ? "W83782D" : "W83781D", (int)address); 1882 1883 release: 1884 - release_region(address, W83781D_EXTENT); 1885 return found; 1886 } 1887
··· 1367 1368 /* Reserve the ISA region */ 1369 res = platform_get_resource(pdev, IORESOURCE_IO, 0); 1370 + if (!request_region(res->start + W83781D_ADDR_REG_OFFSET, 2, 1371 + "w83781d")) { 1372 err = -EBUSY; 1373 goto exit; 1374 } ··· 1415 device_remove_file(&pdev->dev, &dev_attr_name); 1416 kfree(data); 1417 exit_release_region: 1418 + release_region(res->start + W83781D_ADDR_REG_OFFSET, 2); 1419 exit: 1420 return err; 1421 } ··· 1429 sysfs_remove_group(&pdev->dev.kobj, &w83781d_group); 1430 sysfs_remove_group(&pdev->dev.kobj, &w83781d_group_opt); 1431 device_remove_file(&pdev->dev, &dev_attr_name); 1432 + release_region(data->client.addr + W83781D_ADDR_REG_OFFSET, 2); 1433 kfree(data); 1434 1435 return 0; ··· 1797 { 1798 int val, save, found = 0; 1799 1800 + /* We have to request the region in two parts because some 1801 + boards declare base+4 to base+7 as a PNP device */ 1802 + if (!request_region(address, 4, "w83781d")) { 1803 + pr_debug("w83781d: Failed to request low part of region\n"); 1804 return 0; 1805 + } 1806 + if (!request_region(address + 4, 4, "w83781d")) { 1807 + pr_debug("w83781d: Failed to request high part of region\n"); 1808 + release_region(address, 4); 1809 + return 0; 1810 + } 1811 1812 #define REALLY_SLOW_IO 1813 /* We need the timeouts for at least some W83781D-like ··· 1871 val == 0x30 ? "W83782D" : "W83781D", (int)address); 1872 1873 release: 1874 + release_region(address + 4, 4); 1875 + release_region(address, 4); 1876 return found; 1877 } 1878