hwmon: Cleanup it87 detection
Subsystems (3)
PATCH 1/1 hwmon: Cleanup it87 detection
Hi all,
I am enqueuing the following patch. Testers and comments are welcome. Thanks.
Drop legacy ISA address support from the it87 driver. All supported chips are Super-I/O chips, so the device ISA address can be safely read from Super-I/O space rather than blindly assumed.
Two nearby inaccurate documentation statements have been fixed as well:
* The IT8705F doesn't have an SMBus interface.
* The SiS950 doesn't have a distinct prefix.
Signed-off-by Jean Delvare <[email protected]>
Documentation/hwmon/it87 | 8 +++--- drivers/hwmon/it87.c | 51 ++++++++++------------------------------------ 2 files changed, 15 insertions(+), 44 deletions(-)
drivers/hwmon/it87.c +11 -40
@@ -2,7 +2,7 @@ it87.c - Part of lm_sensors, Linux kernel modules for hardware monitoring. - Supports: IT8705F Super I/O chip w/LPC interface & SMBus + Supports: IT8705F Super I/O chip w/LPC interface IT8712F Super I/O chip w/LPC interface & SMBus Sis950 A clone of the IT8705F
@@ -47,7 +47,7 @@/* Addresses to scan */ static unsigned short normal_i2c[] = {0x28 ,0x29 ,0x2a ,0x2b ,0x2c ,0x2d ,0x2e ,0x2f ,I2C_CLIENT_END }; -static unsigned short isa_address =0x290 ; +static unsigned short isa_address;/* Insmod parameters */ I2C_CLIENT_INSMOD_2 (it87, it8712);
@@ -706,7 +706,7 @@ }/* SuperIO detection - will change isa_address if a chip is found */ -static int __init it87_find (int *address) +static int __init it87_find (unsigned short *address) {int err = -ENODEV ;
@@ -757,34 +757,7 @@if (!request_region (address,IT87_EXTENT , it87_isa_driver.name)) goto ERROR0; -/* Probe whether there is anything available on this address. Already -done for SMBus and Super-I/O clients */ -if (kind <0 ) { -if (is_isa && !chip_type) { -#define REALLY_SLOW_IO -/* We need the timeouts for at least some IT87-like chips. But only -if we read 'undefined' registers. */ - i =inb_p (address +1 ); -if (inb_p (address +2 ) != i - ||inb_p (address +3 ) != i - ||inb_p (address +7 ) != i) { - err = -ENODEV ; - goto ERROR1; - } -#undef REALLY_SLOW_IO - -/* Let's just hope nothing breaks here */ - i =inb_p (address +5 ) &0x7f ; -outb_p (~i &0x7f , address +5 ); -if ((inb_p (address +5 ) &0x7f ) != (~i &0x7f )) { -outb_p (i, address +5 ); - err = -ENODEV ; - goto ERROR1; - } - } - } - -/* OK. For now, we presume we have a valid client. We now create the +/* For now, we presume we have a valid client. We create the client structure, even though we cannot fill it completely yet. But it allows us to access it87_{read,write}_value. */
@@ -1182,20 +1155,18 @@static int __init sm_it87_init (void ) { -int addr, res; - -if (!it87_find (&addr)) { - isa_address = addr; - } +int res; res =i2c_add_driver (&it87_driver);if (res)return res; - res =i2c_isa_add_driver (&it87_isa_driver); -if (res) { -i2c_del_driver (&it87_driver); -return res; +if (!it87_find (&isa_address)) { + res =i2c_isa_add_driver (&it87_isa_driver); +if (res) { +i2c_del_driver (&it87_driver); +return res; + } }return 0 ;
Documentation/hwmon/it87 +4 -4
@@ -4,18 +4,18 @@ Supported chips: * IT8705F Prefix: 'it87' - Addresses scanned: from Super I/O config space, or default ISA 0x290 (8 I/O ports) + Addresses scanned: from Super I/O config space (8 I/O ports) Datasheet: Publicly available at the ITE website http://www.ite.com.tw/ * IT8712F Prefix: 'it8712' Addresses scanned: I2C 0x28 - 0x2f - from Super I/O config space, or default ISA 0x290 (8 I/O ports) + from Super I/O config space (8 I/O ports) Datasheet: Publicly available at the ITE website http://www.ite.com.tw/ * SiS950 [clone of IT8705F] - Prefix: 'sis950' - Addresses scanned: from Super I/O config space, or default ISA 0x290 (8 I/O ports) + Prefix: 'it87' + Addresses scanned: from Super I/O config space (8 I/O ports) Datasheet: No longer be available Author: Christophe Gauthron <[email protected]>
Signature · 1 line
Jean Delvare