Skip to content
This repository was archived by the owner on Jan 31, 2023. It is now read-only.

Commit 504b5ca

Browse files
frankcrawfordhannesha
authored andcommitted
Added definition for IT8688E as clone of IT8686E based on online comments.
1 parent d2953ad commit 504b5ca

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

it87.c

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
* IT8655E Super I/O chip w/LPC interface
2323
* IT8665E Super I/O chip w/LPC interface
2424
* IT8686E Super I/O chip w/LPC interface
25+
* IT8688E Super I/O chip w/LPC interface
2526
* IT8705F Super I/O chip w/LPC interface
2627
* IT8712F Super I/O chip w/LPC interface
2728
* IT8716F Super I/O chip w/LPC interface
@@ -83,7 +84,7 @@ enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8732,
8384
it8736, it8738,
8485
it8771, it8772, it8781, it8782, it8783, it8786, it8790,
8586
it8792, it8603, it8606, it8607, it8613, it8620, it8622, it8625,
86-
it8628, it8655, it8665, it8686, it8528 };
87+
it8628, it8655, it8665, it8686, it8528, it8688 };
8788

8889
static unsigned short force_id;
8990
module_param(force_id, ushort, 0000);
@@ -200,6 +201,7 @@ static inline void superio_exit(int ioreg, bool doexit)
200201
#define IT8665E_DEVID 0x8665
201202
#define IT8686E_DEVID 0x8686
202203
#define IT8528E_DEVID 0x8528
204+
#define IT8688E_DEVID 0x8688
203205

204206
/* Logical device 4 (Environmental Monitor) registers */
205207
#define IT87_ACT_REG 0x30
@@ -742,6 +744,18 @@ static const struct it87_devices it87_devices[] = {
742744
.num_temp_map = 7,
743745
.smbus_bitmap = BIT(1) | BIT(2),
744746
},
747+
[it8688] = {
748+
.name = "it8688",
749+
.model = "IT8688E",
750+
.features = FEAT_NEWER_AUTOPWM | FEAT_12MV_ADC | FEAT_16BIT_FANS
751+
| FEAT_SIX_FANS | FEAT_NEW_TEMPMAP
752+
| FEAT_IN7_INTERNAL | FEAT_SIX_PWM | FEAT_PWM_FREQ2
753+
| FEAT_SIX_TEMP | FEAT_BANK_SEL | FEAT_SCALING | FEAT_AVCC3,
754+
.num_temp_limit = 6,
755+
.num_temp_offset = 6,
756+
.num_temp_map = 7,
757+
.smbus_bitmap = BIT(1) | BIT(2),
758+
},
745759
};
746760

747761
#define has_16bit_fans(data) ((data)->features & FEAT_16BIT_FANS)
@@ -1481,6 +1495,7 @@ static int get_temp_type(struct it87_data *data, int index)
14811495

14821496
switch (data->type) {
14831497
case it8686:
1498+
case it8688:
14841499
if (src1 < 9)
14851500
type = temp_types_8686[index][src1];
14861501
break;
@@ -3127,6 +3142,9 @@ static int __init it87_find(int sioaddr, unsigned short *address,
31273142
case IT8686E_DEVID:
31283143
sio_data->type = it8686;
31293144
break;
3145+
case IT8688E_DEVID:
3146+
sio_data->type = it8688;
3147+
break;
31303148
case 0xffff: /* No device at all */
31313149
goto exit;
31323150
default:
@@ -3343,7 +3361,8 @@ static int __init it87_find(int sioaddr, unsigned short *address,
33433361
sio_data->beep_pin = superio_inb(sioaddr,
33443362
IT87_SIO_BEEP_PIN_REG) & 0x3f;
33453363
} else if (sio_data->type == it8620 || sio_data->type == it8628 ||
3346-
sio_data->type == it8686 || sio_data->type == it8528) {
3364+
sio_data->type == it8686 || sio_data->type == it8528 ||
3365+
sio_data->type == it8688) {
33473366
int reg;
33483367

33493368
superio_select(sioaddr, GPIO);
@@ -3388,7 +3407,7 @@ static int __init it87_find(int sioaddr, unsigned short *address,
33883407
reg = superio_inb(sioaddr, IT87_SIO_PINX2_REG);
33893408
if (reg & BIT(0)) {
33903409
/* For it8686, the bit just enables AVCC3 */
3391-
if (sio_data->type != it8686)
3410+
if (sio_data->type != it8686 && sio_data->type != it8688)
33923411
sio_data->internal |= BIT(0);
33933412
} else {
33943413
sio_data->internal &= ~BIT(3);
@@ -3765,6 +3784,7 @@ static void it87_init_regs(struct platform_device *pdev)
37653784
case it8528:
37663785
case it8628:
37673786
case it8686:
3787+
case it8688:
37683788
data->REG_FAN = IT87_REG_FAN;
37693789
data->REG_FANX = IT87_REG_FANX;
37703790
data->REG_FAN_MIN = IT87_REG_FAN_MIN;
@@ -3895,6 +3915,7 @@ static void it87_init_device(struct platform_device *pdev)
38953915
case it8528:
38963916
case it8628:
38973917
case it8686:
3918+
case it8688:
38983919
if (tmp & BIT(2))
38993920
data->has_fan |= BIT(5); /* fan6 enabled */
39003921
break;
@@ -3917,6 +3938,7 @@ static void it87_init_device(struct platform_device *pdev)
39173938
switch (data->type) {
39183939
case it8620:
39193940
case it8686:
3941+
case it8688:
39203942
tmp = data->read(data, IT87_REG_FAN_DIV);
39213943
if (!(tmp & BIT(3)))
39223944
sio_data->skip_pwm |= BIT(5);

0 commit comments

Comments
 (0)