[Jaunty SRU] hwmon: (it87) Add support for the ITE IT8720F
Amit Kucheria
amit.kucheria at verdurent.com
Fri Apr 24 13:06:09 UTC 2009
On Fri, Apr 24, 2009 at 07:43:06PM +0800, Ike Panhc wrote:
> The following changes since commit e7668e9904527fb989f377fcbea6696d171e4d9a:
> Makito SHIOKAWA (1):
> UBUNTU: [ARM] 5404/1: Fix condition in arm_elf_read_implies_exec() to set READ_IMPLIES_EXEC
>
> are available in the git repository at:
>
> git://kernel.ubuntu.com/ikepanhc/ike-jaunty.git lp#357766
>
> Jean-Marc Spaggiari (1):
> hwmon: (it87) Add support for the ITE IT8720F
>
> Documentation/hwmon/it87 | 20 ++++++++++++--------
> drivers/hwmon/Kconfig | 3 ++-
> drivers/hwmon/it87.c | 30 +++++++++++++++++++++---------
> 3 files changed, 35 insertions(+), 18 deletions(-)
>
> From ceed5d58d46ec53ba36a130e82e5c4071f7c9dd1 Mon Sep 17 00:00:00 2001
> From: Jean-Marc Spaggiari <jean-marc at spaggiari.org>
> Date: Wed, 7 Jan 2009 16:37:32 +0100
> Subject: [PATCH] hwmon: (it87) Add support for the ITE IT8720F
>
> Bug: #357766
>
> Allow it87.c to handle IT8720 chipset like IT8718 in order to
> retrieve voltage, temperatures and fans speed from sensors
> tools. Also updating the related documentation.
>
> (cherry picked from commit b4da93e4b0ffc261c3530fe938aefd52854aa84c)
>
> Signed-off-by: Jean-Marc Spaggiari <jean-marc at spaggiari.org>
> Signed-off-by: Jean Delvare <khali at linux-fr.org>
> Signed-off-by: Ike Panhc <ike.pan at canonical.com>
> ---
> Documentation/hwmon/it87 | 20 ++++++++++++--------
> drivers/hwmon/Kconfig | 3 ++-
> drivers/hwmon/it87.c | 30 +++++++++++++++++++++---------
> 3 files changed, 35 insertions(+), 18 deletions(-)
>
> diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87
> index 042c041..659315d 100644
> --- a/Documentation/hwmon/it87
> +++ b/Documentation/hwmon/it87
> @@ -26,6 +26,10 @@ Supported chips:
> Datasheet: Publicly available at the ITE website
> http://www.ite.com.tw/product_info/file/pc/IT8718F_V0.2.zip
> http://www.ite.com.tw/product_info/file/pc/IT8718F_V0%203_(for%20C%20version).zip
> + * IT8720F
> + Prefix: 'it8720'
> + Addresses scanned: from Super I/O config space (8 I/O ports)
> + Datasheet: Not yet publicly available.
> * SiS950 [clone of IT8705F]
> Prefix: 'it87'
> Addresses scanned: from Super I/O config space (8 I/O ports)
> @@ -71,7 +75,7 @@ Description
> -----------
>
> This driver implements support for the IT8705F, IT8712F, IT8716F,
> -IT8718F, IT8726F and SiS950 chips.
> +IT8718F, IT8720F, IT8726F and SiS950 chips.
>
> These chips are 'Super I/O chips', supporting floppy disks, infrared ports,
> joysticks and other miscellaneous stuff. For hardware monitoring, they
> @@ -84,19 +88,19 @@ the IT8716F and late IT8712F have 6. They are shared with other functions
> though, so the functionality may not be available on a given system.
> The driver dumbly assume it is there.
>
> -The IT8718F also features VID inputs (up to 8 pins) but the value is
> -stored in the Super-I/O configuration space. Due to technical limitations,
> +The IT8718F and IT8720F also features VID inputs (up to 8 pins) but the value
> +is stored in the Super-I/O configuration space. Due to technical limitations,
> this value can currently only be read once at initialization time, so
> the driver won't notice and report changes in the VID value. The two
> upper VID bits share their pins with voltage inputs (in5 and in6) so you
> can't have both on a given board.
>
> -The IT8716F, IT8718F and later IT8712F revisions have support for
> +The IT8716F, IT8718F, IT8720F and later IT8712F revisions have support for
> 2 additional fans. The additional fans are supported by the driver.
>
> -The IT8716F and IT8718F, and late IT8712F and IT8705F also have optional
> -16-bit tachometer counters for fans 1 to 3. This is better (no more fan
> -clock divider mess) but not compatible with the older chips and
> +The IT8716F, IT8718F and IT8720F, and late IT8712F and IT8705F also have
> +optional 16-bit tachometer counters for fans 1 to 3. This is better (no more
> +fan clock divider mess) but not compatible with the older chips and
> revisions. The 16-bit tachometer mode is enabled by the driver when one
> of the above chips is detected.
>
> @@ -122,7 +126,7 @@ zero'; this is important for negative voltage measurements. All voltage
> inputs can measure voltages between 0 and 4.08 volts, with a resolution of
> 0.016 volt. The battery voltage in8 does not have limit registers.
>
> -The VID lines (IT8712F/IT8716F/IT8718F) encode the core voltage value:
> +The VID lines (IT8712F/IT8716F/IT8718F/IT8720F) encode the core voltage value:
> the voltage level your processor should work with. This is hardcoded by
> the mainboard and/or processor itself. It is a value in volts.
>
> diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
> index f1af3b1..fbe43c3 100644
> --- a/drivers/hwmon/Kconfig
> +++ b/drivers/hwmon/Kconfig
> @@ -399,7 +399,8 @@ config SENSORS_IT87
> select HWMON_VID
> help
> If you say yes here you get support for ITE IT8705F, IT8712F,
> - IT8716F, IT8718F and IT8726F sensor chips, and the SiS960 clone.
> + IT8716F, IT8718F, IT8720F and IT8726F sensor chips, and the
> + SiS960 clone.
>
> This driver can also be built as a module. If so, the module
> will be called it87.
> diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
> index 7601cc2..4359f17 100644
> --- a/drivers/hwmon/it87.c
> +++ b/drivers/hwmon/it87.c
> @@ -14,6 +14,7 @@
> IT8712F Super I/O chip w/LPC interface
> IT8716F Super I/O chip w/LPC interface
> IT8718F Super I/O chip w/LPC interface
> + IT8720F Super I/O chip w/LPC interface
> IT8726F Super I/O chip w/LPC interface
> Sis950 A clone of the IT8705F
>
> @@ -52,7 +53,7 @@
>
> #define DRVNAME "it87"
>
> -enum chips { it87, it8712, it8716, it8718 };
> +enum chips { it87, it8712, it8716, it8718, it8720 };
>
> static unsigned short force_id;
> module_param(force_id, ushort, 0);
> @@ -64,7 +65,10 @@ static struct platform_device *pdev;
> #define DEV 0x07 /* Register: Logical device select */
> #define VAL 0x2f /* The value to read/write */
> #define PME 0x04 /* The device with the fan registers in it */
> -#define GPIO 0x07 /* The device with the IT8718F VID value in it */
> +
> +/* The device with the IT8718F/IT8720F VID value in it */
> +#define GPIO 0x07
> +
> #define DEVID 0x20 /* Register: Device ID */
> #define DEVREV 0x22 /* Register: Device Revision */
>
> @@ -113,6 +117,7 @@ superio_exit(void)
> #define IT8705F_DEVID 0x8705
> #define IT8716F_DEVID 0x8716
> #define IT8718F_DEVID 0x8718
> +#define IT8720F_DEVID 0x8720
> #define IT8726F_DEVID 0x8726
> #define IT87_ACT_REG 0x30
> #define IT87_BASE_REG 0x60
> @@ -150,8 +155,8 @@ static int fix_pwm_polarity;
> #define IT87_REG_ALARM2 0x02
> #define IT87_REG_ALARM3 0x03
>
> -/* The IT8718F has the VID value in a different register, in Super-I/O
> - configuration space. */
> +/* The IT8718F and IT8720F have the VID value in a different register, in
> + Super-I/O configuration space. */
> #define IT87_REG_VID 0x0a
> /* The IT8705F and IT8712F earlier than revision 0x08 use register 0x0b
> for fan divisors. Later IT8712F revisions must use 16-bit tachometer
> @@ -282,7 +287,8 @@ static inline int has_16bit_fans(const struct it87_data *data)
> return (data->type == it87 && data->revision >= 0x03)
> || (data->type == it8712 && data->revision >= 0x08)
> || data->type == it8716
> - || data->type == it8718;
> + || data->type == it8718
> + || data->type == it8720;
> }
>
> static int it87_probe(struct platform_device *pdev);
> @@ -992,6 +998,9 @@ static int __init it87_find(unsigned short *address,
> case IT8718F_DEVID:
> sio_data->type = it8718;
> break;
> + case IT8720F_DEVID:
> + sio_data->type = it8720;
> + break;
> case 0xffff: /* No device at all */
> goto exit;
> default:
> @@ -1022,7 +1031,8 @@ static int __init it87_find(unsigned short *address,
> int reg;
>
> superio_select(GPIO);
> - if (chip_type == it8718)
> + if ((chip_type == it8718) ||
> + (chip_type == it8720))
> sio_data->vid_value = superio_inb(IT87_SIO_VID_REG);
>
> reg = superio_inb(IT87_SIO_PINX2_REG);
> @@ -1068,6 +1078,7 @@ static int __devinit it87_probe(struct platform_device *pdev)
> "it8712",
> "it8716",
> "it8718",
> + "it8720",
> };
>
> res = platform_get_resource(pdev, IORESOURCE_IO, 0);
> @@ -1226,7 +1237,7 @@ static int __devinit it87_probe(struct platform_device *pdev)
> }
>
> if (data->type == it8712 || data->type == it8716
> - || data->type == it8718) {
> + || data->type == it8718 || data->type == it8720) {
> data->vrm = vid_which_vrm();
> /* VID reading from Super-I/O config space if available */
> data->vid = sio_data->vid_value;
> @@ -1513,7 +1524,8 @@ static struct it87_data *it87_update_device(struct device *dev)
>
> data->sensor = it87_read_value(data, IT87_REG_TEMP_ENABLE);
> /* The 8705 does not have VID capability.
> - The 8718 does not use IT87_REG_VID for the same purpose. */
> + The 8718 and the 8720 don't use IT87_REG_VID for the
> + same purpose. */
> if (data->type == it8712 || data->type == it8716) {
> data->vid = it87_read_value(data, IT87_REG_VID);
> /* The older IT8712F revisions had only 5 VID pins,
> @@ -1608,7 +1620,7 @@ static void __exit sm_it87_exit(void)
>
> MODULE_AUTHOR("Chris Gauthron, "
> "Jean Delvare <khali at linux-fr.org>");
> -MODULE_DESCRIPTION("IT8705F/8712F/8716F/8718F/8726F, SiS950 driver");
> +MODULE_DESCRIPTION("IT8705F/8712F/8716F/8718F/8720F/8726F, SiS950 driver");
> module_param(update_vbat, bool, 0);
> MODULE_PARM_DESC(update_vbat, "Update vbat if set else return powerup value");
> module_param(fix_pwm_polarity, bool, 0);
> --
> 1.5.6.3
Looks good. ACK.
--
----------------------------------------------------------------------
Amit Kucheria, Kernel Engineer || amit at canonical.com
----------------------------------------------------------------------
More information about the kernel-team
mailing list