···1367136713681368 /* Reserve the ISA region */13691369 res = platform_get_resource(pdev, IORESOURCE_IO, 0);13701370- if (!request_region(res->start, W83781D_EXTENT, "w83781d")) {13701370+ if (!request_region(res->start + W83781D_ADDR_REG_OFFSET, 2,13711371+ "w83781d")) {13711372 err = -EBUSY;13721373 goto exit;13731374 }···14161415 device_remove_file(&pdev->dev, &dev_attr_name);14171416 kfree(data);14181417 exit_release_region:14191419- release_region(res->start, W83781D_EXTENT);14181418+ release_region(res->start + W83781D_ADDR_REG_OFFSET, 2);14201419 exit:14211420 return err;14221421}···14301429 sysfs_remove_group(&pdev->dev.kobj, &w83781d_group);14311430 sysfs_remove_group(&pdev->dev.kobj, &w83781d_group_opt);14321431 device_remove_file(&pdev->dev, &dev_attr_name);14331433- release_region(data->client.addr, W83781D_EXTENT);14321432+ release_region(data->client.addr + W83781D_ADDR_REG_OFFSET, 2);14341433 kfree(data);1435143414361435 return 0;···17981797{17991798 int val, save, found = 0;1800179918011801- if (!request_region(address, W83781D_EXTENT, "w83781d"))18001800+ /* We have to request the region in two parts because some18011801+ boards declare base+4 to base+7 as a PNP device */18021802+ if (!request_region(address, 4, "w83781d")) {18031803+ pr_debug("w83781d: Failed to request low part of region\n");18021804 return 0;18051805+ }18061806+ if (!request_region(address + 4, 4, "w83781d")) {18071807+ pr_debug("w83781d: Failed to request high part of region\n");18081808+ release_region(address, 4);18091809+ return 0;18101810+ }1803181118041812#define REALLY_SLOW_IO18051813 /* We need the timeouts for at least some W83781D-like···18811871 val == 0x30 ? "W83782D" : "W83781D", (int)address);1882187218831873 release:18841884- release_region(address, W83781D_EXTENT);18741874+ release_region(address + 4, 4);18751875+ release_region(address, 4);18851876 return found;18861877}18871878