Commit c1e48dce authored by Jean Delvare's avatar Jean Delvare

hwmon: (w83627ehf) Add W83627DHG-P support

Add support for the new incarnation of the Winbond/Nuvoton W83627DHG
chip known as W83627DHG-P. It is basically the same as the original
W83627DHG with an additional automatic can speed control mode (not
supported by the driver yet.)
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Tested-by: default avatarMadhu <madhu.chinakonda@gmail.com>
parent cd4e96c5
...@@ -12,6 +12,10 @@ Supported chips: ...@@ -12,6 +12,10 @@ Supported chips:
Addresses scanned: ISA address retrieved from Super I/O registers Addresses scanned: ISA address retrieved from Super I/O registers
Datasheet: Datasheet:
http://www.nuvoton.com.tw/NR/rdonlyres/7885623D-A487-4CF9-A47F-30C5F73D6FE6/0/W83627DHG.pdf http://www.nuvoton.com.tw/NR/rdonlyres/7885623D-A487-4CF9-A47F-30C5F73D6FE6/0/W83627DHG.pdf
* Winbond W83627DHG-P
Prefix: 'w83627dhg'
Addresses scanned: ISA address retrieved from Super I/O registers
Datasheet: not available
* Winbond W83667HG * Winbond W83667HG
Prefix: 'w83667hg' Prefix: 'w83667hg'
Addresses scanned: ISA address retrieved from Super I/O registers Addresses scanned: ISA address retrieved from Super I/O registers
...@@ -28,8 +32,8 @@ Description ...@@ -28,8 +32,8 @@ Description
----------- -----------
This driver implements support for the Winbond W83627EHF, W83627EHG, This driver implements support for the Winbond W83627EHF, W83627EHG,
W83627DHG and W83667HG super I/O chips. We will refer to them collectively W83627DHG, W83627DHG-P and W83667HG super I/O chips. We will refer to them
as Winbond chips. collectively as Winbond chips.
The chips implement three temperature sensors, five fan rotation The chips implement three temperature sensors, five fan rotation
speed sensors, ten analog voltage sensors (only nine for the 627DHG), one speed sensors, ten analog voltage sensors (only nine for the 627DHG), one
...@@ -135,3 +139,6 @@ done in the driver for all register addresses. ...@@ -135,3 +139,6 @@ done in the driver for all register addresses.
The DHG also supports PECI, where the DHG queries Intel CPU temperatures, and The DHG also supports PECI, where the DHG queries Intel CPU temperatures, and
the ICH8 southbridge gets that data via PECI from the DHG, so that the the ICH8 southbridge gets that data via PECI from the DHG, so that the
southbridge drives the fans. And the DHG supports SST, a one-wire serial bus. southbridge drives the fans. And the DHG supports SST, a one-wire serial bus.
The DHG-P has an additional automatic fan speed control mode named Smart Fan
(TM) III+. This mode is not yet supported by the driver.
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
w83627ehf 10 5 4 3 0x8850 0x88 0x5ca3 w83627ehf 10 5 4 3 0x8850 0x88 0x5ca3
0x8860 0xa1 0x8860 0xa1
w83627dhg 9 5 4 3 0xa020 0xc1 0x5ca3 w83627dhg 9 5 4 3 0xa020 0xc1 0x5ca3
w83627dhg-p 9 5 4 3 0xb070 0xc1 0x5ca3
w83667hg 9 5 3 3 0xa510 0xc1 0x5ca3 w83667hg 9 5 3 3 0xa510 0xc1 0x5ca3
*/ */
...@@ -53,12 +54,13 @@ ...@@ -53,12 +54,13 @@
#include <asm/io.h> #include <asm/io.h>
#include "lm75.h" #include "lm75.h"
enum kinds { w83627ehf, w83627dhg, w83667hg }; enum kinds { w83627ehf, w83627dhg, w83627dhg_p, w83667hg };
/* used to set data->name = w83627ehf_device_names[data->sio_kind] */ /* used to set data->name = w83627ehf_device_names[data->sio_kind] */
static const char * w83627ehf_device_names[] = { static const char * w83627ehf_device_names[] = {
"w83627ehf", "w83627ehf",
"w83627dhg", "w83627dhg",
"w83627dhg",
"w83667hg", "w83667hg",
}; };
...@@ -86,6 +88,7 @@ MODULE_PARM_DESC(force_id, "Override the detected device ID"); ...@@ -86,6 +88,7 @@ MODULE_PARM_DESC(force_id, "Override the detected device ID");
#define SIO_W83627EHF_ID 0x8850 #define SIO_W83627EHF_ID 0x8850
#define SIO_W83627EHG_ID 0x8860 #define SIO_W83627EHG_ID 0x8860
#define SIO_W83627DHG_ID 0xa020 #define SIO_W83627DHG_ID 0xa020
#define SIO_W83627DHG_P_ID 0xb070
#define SIO_W83667HG_ID 0xa510 #define SIO_W83667HG_ID 0xa510
#define SIO_ID_MASK 0xFFF0 #define SIO_ID_MASK 0xFFF0
...@@ -1517,6 +1520,7 @@ static int __init w83627ehf_find(int sioaddr, unsigned short *addr, ...@@ -1517,6 +1520,7 @@ static int __init w83627ehf_find(int sioaddr, unsigned short *addr,
static const char __initdata sio_name_W83627EHF[] = "W83627EHF"; static const char __initdata sio_name_W83627EHF[] = "W83627EHF";
static const char __initdata sio_name_W83627EHG[] = "W83627EHG"; static const char __initdata sio_name_W83627EHG[] = "W83627EHG";
static const char __initdata sio_name_W83627DHG[] = "W83627DHG"; static const char __initdata sio_name_W83627DHG[] = "W83627DHG";
static const char __initdata sio_name_W83627DHG_P[] = "W83627DHG-P";
static const char __initdata sio_name_W83667HG[] = "W83667HG"; static const char __initdata sio_name_W83667HG[] = "W83667HG";
u16 val; u16 val;
...@@ -1542,6 +1546,10 @@ static int __init w83627ehf_find(int sioaddr, unsigned short *addr, ...@@ -1542,6 +1546,10 @@ static int __init w83627ehf_find(int sioaddr, unsigned short *addr,
sio_data->kind = w83627dhg; sio_data->kind = w83627dhg;
sio_name = sio_name_W83627DHG; sio_name = sio_name_W83627DHG;
break; break;
case SIO_W83627DHG_P_ID:
sio_data->kind = w83627dhg_p;
sio_name = sio_name_W83627DHG_P;
break;
case SIO_W83667HG_ID: case SIO_W83667HG_ID:
sio_data->kind = w83667hg; sio_data->kind = w83667hg;
sio_name = sio_name_W83667HG; sio_name = sio_name_W83667HG;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment