Skip to content

Commit

Permalink
Merge branch 'release' of git://lm-sensors.org/kernel/mhoffman/hwmon-2.6
Browse files Browse the repository at this point in the history
* 'release' of git://lm-sensors.org/kernel/mhoffman/hwmon-2.6:
  hwmon: (it87) request only Environment Controller ports
  • Loading branch information
Linus Torvalds committed Jan 22, 2008
2 parents ac935cb + 87b4b66 commit 4ad2b22
Showing 1 changed file with 23 additions and 9 deletions.
32 changes: 23 additions & 9 deletions drivers/hwmon/it87.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@
it87.c - Part of lm_sensors, Linux kernel modules for hardware
monitoring.
The IT8705F is an LPC-based Super I/O part that contains UARTs, a
parallel port, an IR port, a MIDI port, a floppy controller, etc., in
addition to an Environment Controller (Enhanced Hardware Monitor and
Fan Controller)
This driver supports only the Environment Controller in the IT8705F and
similar parts. The other devices are supported by different drivers.
Supports: IT8705F Super I/O chip w/LPC interface
IT8712F Super I/O chip w/LPC interface
IT8716F Super I/O chip w/LPC interface
Expand Down Expand Up @@ -118,9 +126,15 @@ static int fix_pwm_polarity;
/* Length of ISA address segment */
#define IT87_EXTENT 8

/* Where are the ISA address/data registers relative to the base address */
#define IT87_ADDR_REG_OFFSET 5
#define IT87_DATA_REG_OFFSET 6
/* Length of ISA address segment for Environmental Controller */
#define IT87_EC_EXTENT 2

/* Offset of EC registers from ISA base address */
#define IT87_EC_OFFSET 5

/* Where are the ISA address/data registers relative to the EC base address */
#define IT87_ADDR_REG_OFFSET 0
#define IT87_DATA_REG_OFFSET 1

/*----- The IT87 registers -----*/

Expand Down Expand Up @@ -968,10 +982,10 @@ static int __devinit it87_probe(struct platform_device *pdev)
};

res = platform_get_resource(pdev, IORESOURCE_IO, 0);
if (!request_region(res->start, IT87_EXTENT, DRVNAME)) {
if (!request_region(res->start, IT87_EC_EXTENT, DRVNAME)) {
dev_err(dev, "Failed to request region 0x%lx-0x%lx\n",
(unsigned long)res->start,
(unsigned long)(res->start + IT87_EXTENT - 1));
(unsigned long)(res->start + IT87_EC_EXTENT - 1));
err = -EBUSY;
goto ERROR0;
}
Expand Down Expand Up @@ -1124,7 +1138,7 @@ static int __devinit it87_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, NULL);
kfree(data);
ERROR1:
release_region(res->start, IT87_EXTENT);
release_region(res->start, IT87_EC_EXTENT);
ERROR0:
return err;
}
Expand All @@ -1137,7 +1151,7 @@ static int __devexit it87_remove(struct platform_device *pdev)
sysfs_remove_group(&pdev->dev.kobj, &it87_group);
sysfs_remove_group(&pdev->dev.kobj, &it87_group_opt);

release_region(data->addr, IT87_EXTENT);
release_region(data->addr, IT87_EC_EXTENT);
platform_set_drvdata(pdev, NULL);
kfree(data);

Expand Down Expand Up @@ -1402,8 +1416,8 @@ static int __init it87_device_add(unsigned short address,
const struct it87_sio_data *sio_data)
{
struct resource res = {
.start = address ,
.end = address + IT87_EXTENT - 1,
.start = address + IT87_EC_OFFSET,
.end = address + IT87_EC_OFFSET + IT87_EC_EXTENT - 1,
.name = DRVNAME,
.flags = IORESOURCE_IO,
};
Expand Down

0 comments on commit 4ad2b22

Please sign in to comment.