Lines 35-40
static const char * const nct6775_sio_names[] __initconst = {
Link Here
|
35 |
"NCT6796D", |
35 |
"NCT6796D", |
36 |
"NCT6797D", |
36 |
"NCT6797D", |
37 |
"NCT6798D", |
37 |
"NCT6798D", |
|
|
38 |
"NCT6799D", |
38 |
}; |
39 |
}; |
39 |
|
40 |
|
40 |
static unsigned short force_id; |
41 |
static unsigned short force_id; |
Lines 85-90
MODULE_PARM_DESC(fan_debounce, "Enable debouncing for fan RPM signal");
Link Here
|
85 |
#define SIO_NCT6796_ID 0xd420 |
86 |
#define SIO_NCT6796_ID 0xd420 |
86 |
#define SIO_NCT6797_ID 0xd450 |
87 |
#define SIO_NCT6797_ID 0xd450 |
87 |
#define SIO_NCT6798_ID 0xd428 |
88 |
#define SIO_NCT6798_ID 0xd428 |
|
|
89 |
#define SIO_NCT6799_ID 0xd800 |
88 |
#define SIO_ID_MASK 0xFFF8 |
90 |
#define SIO_ID_MASK 0xFFF8 |
89 |
|
91 |
|
90 |
/* |
92 |
/* |
Lines 97-102
struct nct6775_sio_data {
Link Here
|
97 |
int ld; |
99 |
int ld; |
98 |
enum kinds kind; |
100 |
enum kinds kind; |
99 |
enum sensor_access access; |
101 |
enum sensor_access access; |
|
|
102 |
acpi_handle acpi_wmi_mutex; |
100 |
|
103 |
|
101 |
/* superio_() callbacks */ |
104 |
/* superio_() callbacks */ |
102 |
void (*sio_outb)(struct nct6775_sio_data *sio_data, int reg, int val); |
105 |
void (*sio_outb)(struct nct6775_sio_data *sio_data, int reg, int val); |
Lines 149-155
static int nct6775_asuswmi_evaluate_method(u32 method_id, u8 bank, u8 reg, u8 va
Link Here
|
149 |
return -EIO; |
152 |
return -EIO; |
150 |
|
153 |
|
151 |
if (retval) |
154 |
if (retval) |
152 |
*retval = (u32)result & 0xFFFFFFFF; |
155 |
*retval = result; |
153 |
|
156 |
|
154 |
return 0; |
157 |
return 0; |
155 |
#else |
158 |
#else |
Lines 374-380
static int nct6775_suspend(struct device *dev)
Link Here
|
374 |
if (IS_ERR(data)) |
377 |
if (IS_ERR(data)) |
375 |
return PTR_ERR(data); |
378 |
return PTR_ERR(data); |
376 |
|
379 |
|
377 |
mutex_lock(&data->update_lock); |
380 |
err = data->lock(data); |
|
|
381 |
if (err) |
382 |
return err; |
383 |
|
378 |
err = nct6775_read_value(data, data->REG_VBAT, &tmp); |
384 |
err = nct6775_read_value(data, data->REG_VBAT, &tmp); |
379 |
if (err) |
385 |
if (err) |
380 |
goto out; |
386 |
goto out; |
Lines 391-397
static int nct6775_suspend(struct device *dev)
Link Here
|
391 |
data->fandiv2 = tmp; |
397 |
data->fandiv2 = tmp; |
392 |
} |
398 |
} |
393 |
out: |
399 |
out: |
394 |
mutex_unlock(&data->update_lock); |
400 |
data->unlock(data, dev); |
395 |
|
401 |
|
396 |
return err; |
402 |
return err; |
397 |
} |
403 |
} |
Lines 403-409
static int nct6775_resume(struct device *dev)
Link Here
|
403 |
int i, j, err = 0; |
409 |
int i, j, err = 0; |
404 |
u8 reg; |
410 |
u8 reg; |
405 |
|
411 |
|
406 |
mutex_lock(&data->update_lock); |
412 |
err = data->lock(data); |
|
|
413 |
if (err) |
414 |
return err; |
415 |
|
407 |
data->bank = 0xff; /* Force initial bank selection */ |
416 |
data->bank = 0xff; /* Force initial bank selection */ |
408 |
|
417 |
|
409 |
err = sio_data->sio_enter(sio_data); |
418 |
err = sio_data->sio_enter(sio_data); |
Lines 418-424
static int nct6775_resume(struct device *dev)
Link Here
|
418 |
if (data->kind == nct6791 || data->kind == nct6792 || |
427 |
if (data->kind == nct6791 || data->kind == nct6792 || |
419 |
data->kind == nct6793 || data->kind == nct6795 || |
428 |
data->kind == nct6793 || data->kind == nct6795 || |
420 |
data->kind == nct6796 || data->kind == nct6797 || |
429 |
data->kind == nct6796 || data->kind == nct6797 || |
421 |
data->kind == nct6798) |
430 |
data->kind == nct6798 || data->kind == nct6799) |
422 |
nct6791_enable_io_mapping(sio_data); |
431 |
nct6791_enable_io_mapping(sio_data); |
423 |
|
432 |
|
424 |
sio_data->sio_exit(sio_data); |
433 |
sio_data->sio_exit(sio_data); |
Lines 472-478
static int nct6775_resume(struct device *dev)
Link Here
|
472 |
abort: |
481 |
abort: |
473 |
/* Force re-reading all values */ |
482 |
/* Force re-reading all values */ |
474 |
data->valid = false; |
483 |
data->valid = false; |
475 |
mutex_unlock(&data->update_lock); |
484 |
data->unlock(data, dev); |
476 |
|
485 |
|
477 |
return err; |
486 |
return err; |
478 |
} |
487 |
} |
Lines 565-571
nct6775_check_fan_inputs(struct nct6775_data *data, struct nct6775_sio_data *sio
Link Here
|
565 |
} else { |
574 |
} else { |
566 |
/* |
575 |
/* |
567 |
* NCT6779D, NCT6791D, NCT6792D, NCT6793D, NCT6795D, NCT6796D, |
576 |
* NCT6779D, NCT6791D, NCT6792D, NCT6793D, NCT6795D, NCT6796D, |
568 |
* NCT6797D, NCT6798D |
577 |
* NCT6797D, NCT6798D, NCT6799D |
569 |
*/ |
578 |
*/ |
570 |
int cr1a = sio_data->sio_inb(sio_data, 0x1a); |
579 |
int cr1a = sio_data->sio_inb(sio_data, 0x1a); |
571 |
int cr1b = sio_data->sio_inb(sio_data, 0x1b); |
580 |
int cr1b = sio_data->sio_inb(sio_data, 0x1b); |
Lines 575-586
nct6775_check_fan_inputs(struct nct6775_data *data, struct nct6775_sio_data *sio
Link Here
|
575 |
int cr2b = sio_data->sio_inb(sio_data, 0x2b); |
584 |
int cr2b = sio_data->sio_inb(sio_data, 0x2b); |
576 |
int cr2d = sio_data->sio_inb(sio_data, 0x2d); |
585 |
int cr2d = sio_data->sio_inb(sio_data, 0x2d); |
577 |
int cr2f = sio_data->sio_inb(sio_data, 0x2f); |
586 |
int cr2f = sio_data->sio_inb(sio_data, 0x2f); |
|
|
587 |
bool vsb_ctl_en = cr2f & BIT(0); |
578 |
bool dsw_en = cr2f & BIT(3); |
588 |
bool dsw_en = cr2f & BIT(3); |
579 |
bool ddr4_en = cr2f & BIT(4); |
589 |
bool ddr4_en = cr2f & BIT(4); |
|
|
590 |
bool as_seq1_en = cr2f & BIT(7); |
580 |
int cre0; |
591 |
int cre0; |
|
|
592 |
int cre6; |
581 |
int creb; |
593 |
int creb; |
582 |
int cred; |
594 |
int cred; |
583 |
|
595 |
|
|
|
596 |
cre6 = sio_data->sio_inb(sio_data, 0xe0); |
597 |
|
584 |
sio_data->sio_select(sio_data, NCT6775_LD_12); |
598 |
sio_data->sio_select(sio_data, NCT6775_LD_12); |
585 |
cre0 = sio_data->sio_inb(sio_data, 0xe0); |
599 |
cre0 = sio_data->sio_inb(sio_data, 0xe0); |
586 |
creb = sio_data->sio_inb(sio_data, 0xeb); |
600 |
creb = sio_data->sio_inb(sio_data, 0xeb); |
Lines 683-688
nct6775_check_fan_inputs(struct nct6775_data *data, struct nct6775_sio_data *sio
Link Here
|
683 |
pwm7pin = !(cr1d & (BIT(2) | BIT(3))); |
697 |
pwm7pin = !(cr1d & (BIT(2) | BIT(3))); |
684 |
pwm7pin |= cr2d & BIT(7); |
698 |
pwm7pin |= cr2d & BIT(7); |
685 |
pwm7pin |= creb & BIT(2); |
699 |
pwm7pin |= creb & BIT(2); |
|
|
700 |
break; |
701 |
case nct6799: |
702 |
fan4pin = cr1c & BIT(6); |
703 |
fan5pin = cr1c & BIT(7); |
704 |
|
705 |
fan6pin = !(cr1b & BIT(0)) && (cre0 & BIT(3)); |
706 |
fan6pin |= cre6 & BIT(5); |
707 |
fan6pin |= creb & BIT(5); |
708 |
fan6pin |= !as_seq1_en && (cr2a & BIT(4)); |
709 |
|
710 |
fan7pin = cr1b & BIT(5); |
711 |
fan7pin |= !vsb_ctl_en && !(cr2b & BIT(2)); |
712 |
fan7pin |= creb & BIT(3); |
713 |
|
714 |
pwm6pin = !(cr1b & BIT(0)) && (cre0 & BIT(4)); |
715 |
pwm6pin |= !as_seq1_en && !(cred & BIT(2)) && (cr2a & BIT(3)); |
716 |
pwm6pin |= (creb & BIT(4)) && !(cr2a & BIT(0)); |
717 |
pwm6pin |= cre6 & BIT(3); |
718 |
|
719 |
pwm7pin = !vsb_ctl_en && !(cr1d & (BIT(2) | BIT(3))); |
720 |
pwm7pin |= creb & BIT(2); |
721 |
pwm7pin |= cr2d & BIT(7); |
722 |
|
686 |
break; |
723 |
break; |
687 |
default: /* NCT6779D */ |
724 |
default: /* NCT6779D */ |
688 |
break; |
725 |
break; |
Lines 729-735
clear_caseopen(struct device *dev, struct device_attribute *attr,
Link Here
|
729 |
if (kstrtoul(buf, 10, &val) || val != 0) |
766 |
if (kstrtoul(buf, 10, &val) || val != 0) |
730 |
return -EINVAL; |
767 |
return -EINVAL; |
731 |
|
768 |
|
732 |
mutex_lock(&data->update_lock); |
769 |
ret = data->lock(data); |
|
|
770 |
if (ret) |
771 |
return ret; |
733 |
|
772 |
|
734 |
/* |
773 |
/* |
735 |
* Use CR registers to clear caseopen status. |
774 |
* Use CR registers to clear caseopen status. |
Lines 752-758
clear_caseopen(struct device *dev, struct device_attribute *attr,
Link Here
|
752 |
|
791 |
|
753 |
data->valid = false; /* Force cache refresh */ |
792 |
data->valid = false; /* Force cache refresh */ |
754 |
error: |
793 |
error: |
755 |
mutex_unlock(&data->update_lock); |
794 |
data->unlock(data, dev); |
756 |
return count; |
795 |
return count; |
757 |
} |
796 |
} |
758 |
|
797 |
|
Lines 838-843
static int nct6775_platform_probe_init(struct nct6775_data *data)
Link Here
|
838 |
case nct6796: |
877 |
case nct6796: |
839 |
case nct6797: |
878 |
case nct6797: |
840 |
case nct6798: |
879 |
case nct6798: |
|
|
880 |
case nct6799: |
841 |
break; |
881 |
break; |
842 |
} |
882 |
} |
843 |
|
883 |
|
Lines 876-881
static int nct6775_platform_probe_init(struct nct6775_data *data)
Link Here
|
876 |
case nct6796: |
916 |
case nct6796: |
877 |
case nct6797: |
917 |
case nct6797: |
878 |
case nct6798: |
918 |
case nct6798: |
|
|
919 |
case nct6799: |
879 |
tmp |= 0x7e; |
920 |
tmp |= 0x7e; |
880 |
break; |
921 |
break; |
881 |
} |
922 |
} |
Lines 923-928
static int nct6775_platform_probe(struct platform_device *pdev)
Link Here
|
923 |
if (!data) |
964 |
if (!data) |
924 |
return -ENOMEM; |
965 |
return -ENOMEM; |
925 |
|
966 |
|
|
|
967 |
data->acpi_wmi_mutex = sio_data->acpi_wmi_mutex; |
926 |
data->kind = sio_data->kind; |
968 |
data->kind = sio_data->kind; |
927 |
data->sioreg = sio_data->sioreg; |
969 |
data->sioreg = sio_data->sioreg; |
928 |
|
970 |
|
Lines 1005-1010
static int __init nct6775_find(int sioaddr, struct nct6775_sio_data *sio_data)
Link Here
|
1005 |
case SIO_NCT6798_ID: |
1047 |
case SIO_NCT6798_ID: |
1006 |
sio_data->kind = nct6798; |
1048 |
sio_data->kind = nct6798; |
1007 |
break; |
1049 |
break; |
|
|
1050 |
case SIO_NCT6799_ID: |
1051 |
sio_data->kind = nct6799; |
1052 |
break; |
1008 |
default: |
1053 |
default: |
1009 |
if (val != 0xffff) |
1054 |
if (val != 0xffff) |
1010 |
pr_debug("unsupported chip ID: 0x%04x\n", val); |
1055 |
pr_debug("unsupported chip ID: 0x%04x\n", val); |
Lines 1033-1039
static int __init nct6775_find(int sioaddr, struct nct6775_sio_data *sio_data)
Link Here
|
1033 |
if (sio_data->kind == nct6791 || sio_data->kind == nct6792 || |
1078 |
if (sio_data->kind == nct6791 || sio_data->kind == nct6792 || |
1034 |
sio_data->kind == nct6793 || sio_data->kind == nct6795 || |
1079 |
sio_data->kind == nct6793 || sio_data->kind == nct6795 || |
1035 |
sio_data->kind == nct6796 || sio_data->kind == nct6797 || |
1080 |
sio_data->kind == nct6796 || sio_data->kind == nct6797 || |
1036 |
sio_data->kind == nct6798) |
1081 |
sio_data->kind == nct6798 || sio_data->kind == nct6799) |
1037 |
nct6791_enable_io_mapping(sio_data); |
1082 |
nct6791_enable_io_mapping(sio_data); |
1038 |
|
1083 |
|
1039 |
sio_data->sio_exit(sio_data); |
1084 |
sio_data->sio_exit(sio_data); |
Lines 1052-1084
static int __init nct6775_find(int sioaddr, struct nct6775_sio_data *sio_data)
Link Here
|
1052 |
static struct platform_device *pdev[2]; |
1097 |
static struct platform_device *pdev[2]; |
1053 |
|
1098 |
|
1054 |
static const char * const asus_wmi_boards[] = { |
1099 |
static const char * const asus_wmi_boards[] = { |
1055 |
"PRO H410T", |
1100 |
"B360M-BASALT", |
1056 |
"ProArt B550-CREATOR", |
1101 |
"B360M-D3H", |
1057 |
"ProArt X570-CREATOR WIFI", |
1102 |
"EX-B360M-V", |
1058 |
"ProArt Z490-CREATOR 10G", |
1103 |
"EX-B360M-V3", |
1059 |
"Pro B550M-C", |
1104 |
"EX-B360M-V5", |
1060 |
"Pro WS X570-ACE", |
1105 |
"EX-B460M-V5", |
|
|
1106 |
"EX-H410M-V3", |
1107 |
"PRIME A520M-A", |
1108 |
"PRIME A520M-A II", |
1109 |
"PRIME A520M-E", |
1110 |
"PRIME A520M-K", |
1061 |
"PRIME B360-PLUS", |
1111 |
"PRIME B360-PLUS", |
|
|
1112 |
"PRIME B360M-A", |
1113 |
"PRIME B360M-C", |
1114 |
"PRIME B360M-D", |
1115 |
"PRIME B360M-K", |
1062 |
"PRIME B460-PLUS", |
1116 |
"PRIME B460-PLUS", |
|
|
1117 |
"PRIME B460I-PLUS", |
1118 |
"PRIME B460M-A", |
1119 |
"PRIME B460M-A R2.0", |
1120 |
"PRIME B460M-K", |
1063 |
"PRIME B550-PLUS", |
1121 |
"PRIME B550-PLUS", |
|
|
1122 |
"PRIME B550-PLUS AC-HES", |
1064 |
"PRIME B550M-A", |
1123 |
"PRIME B550M-A", |
1065 |
"PRIME B550M-A (WI-FI)", |
1124 |
"PRIME B550M-A (WI-FI)", |
|
|
1125 |
"PRIME B550M-A AC", |
1126 |
"PRIME B550M-A WIFI II", |
1127 |
"PRIME B550M-K", |
1128 |
"PRIME H310-PLUS", |
1129 |
"PRIME H310I-PLUS", |
1130 |
"PRIME H310M-A", |
1131 |
"PRIME H310M-C", |
1132 |
"PRIME H310M-D", |
1133 |
"PRIME H310M-DASH", |
1134 |
"PRIME H310M-E", |
1135 |
"PRIME H310M-E/BR", |
1136 |
"PRIME H310M-F", |
1137 |
"PRIME H310M-K", |
1138 |
"PRIME H310T", |
1139 |
"PRIME H370-A", |
1140 |
"PRIME H370-PLUS", |
1141 |
"PRIME H370M-PLUS", |
1142 |
"PRIME H410I-PLUS", |
1143 |
"PRIME H410M-A", |
1144 |
"PRIME H410M-D", |
1145 |
"PRIME H410M-E", |
1146 |
"PRIME H410M-F", |
1147 |
"PRIME H410M-K", |
1148 |
"PRIME H410M-K R2.0", |
1066 |
"PRIME H410M-R", |
1149 |
"PRIME H410M-R", |
|
|
1150 |
"PRIME H470-PLUS", |
1151 |
"PRIME H470M-PLUS", |
1152 |
"PRIME H510M-K R2.0", |
1153 |
"PRIME Q370M-C", |
1067 |
"PRIME X570-P", |
1154 |
"PRIME X570-P", |
1068 |
"PRIME X570-PRO", |
1155 |
"PRIME X570-PRO", |
|
|
1156 |
"PRIME Z390-A", |
1157 |
"PRIME Z390-A/H10", |
1158 |
"PRIME Z390-P", |
1159 |
"PRIME Z390M-PLUS", |
1160 |
"PRIME Z490-A", |
1161 |
"PRIME Z490-P", |
1162 |
"PRIME Z490-V", |
1163 |
"PRIME Z490M-PLUS", |
1164 |
"PRO B460M-C", |
1165 |
"PRO H410M-C", |
1166 |
"PRO H410T", |
1167 |
"PRO Q470M-C", |
1168 |
"Pro A520M-C", |
1169 |
"Pro A520M-C II", |
1170 |
"Pro B550M-C", |
1171 |
"Pro WS X570-ACE", |
1172 |
"ProArt B550-CREATOR", |
1173 |
"ProArt X570-CREATOR WIFI", |
1174 |
"ProArt Z490-CREATOR 10G", |
1069 |
"ROG CROSSHAIR VIII DARK HERO", |
1175 |
"ROG CROSSHAIR VIII DARK HERO", |
1070 |
"ROG CROSSHAIR VIII EXTREME", |
1176 |
"ROG CROSSHAIR VIII EXTREME", |
1071 |
"ROG CROSSHAIR VIII FORMULA", |
1177 |
"ROG CROSSHAIR VIII FORMULA", |
1072 |
"ROG CROSSHAIR VIII HERO", |
1178 |
"ROG CROSSHAIR VIII HERO", |
1073 |
"ROG CROSSHAIR VIII HERO (WI-FI)", |
1179 |
"ROG CROSSHAIR VIII HERO (WI-FI)", |
1074 |
"ROG CROSSHAIR VIII IMPACT", |
1180 |
"ROG CROSSHAIR VIII IMPACT", |
|
|
1181 |
"ROG MAXIMUS XI APEX", |
1182 |
"ROG MAXIMUS XI CODE", |
1183 |
"ROG MAXIMUS XI EXTREME", |
1184 |
"ROG MAXIMUS XI FORMULA", |
1185 |
"ROG MAXIMUS XI GENE", |
1186 |
"ROG MAXIMUS XI HERO", |
1187 |
"ROG MAXIMUS XI HERO (WI-FI)", |
1188 |
"ROG MAXIMUS XII APEX", |
1189 |
"ROG MAXIMUS XII EXTREME", |
1190 |
"ROG MAXIMUS XII FORMULA", |
1191 |
"ROG MAXIMUS XII HERO (WI-FI)", |
1192 |
"ROG STRIX B360-F GAMING", |
1193 |
"ROG STRIX B360-G GAMING", |
1194 |
"ROG STRIX B360-H GAMING", |
1195 |
"ROG STRIX B360-H GAMING/OPTANE", |
1196 |
"ROG STRIX B360-I GAMING", |
1197 |
"ROG STRIX B460-F GAMING", |
1198 |
"ROG STRIX B460-G GAMING", |
1199 |
"ROG STRIX B460-H GAMING", |
1200 |
"ROG STRIX B460-I GAMING", |
1075 |
"ROG STRIX B550-A GAMING", |
1201 |
"ROG STRIX B550-A GAMING", |
1076 |
"ROG STRIX B550-E GAMING", |
1202 |
"ROG STRIX B550-E GAMING", |
1077 |
"ROG STRIX B550-F GAMING", |
1203 |
"ROG STRIX B550-F GAMING", |
1078 |
"ROG STRIX B550-F GAMING (WI-FI)", |
1204 |
"ROG STRIX B550-F GAMING (WI-FI)", |
1079 |
"ROG STRIX B550-F GAMING WIFI II", |
1205 |
"ROG STRIX B550-F GAMING WIFI II", |
1080 |
"ROG STRIX B550-I GAMING", |
1206 |
"ROG STRIX B550-I GAMING", |
1081 |
"ROG STRIX B550-XE GAMING (WI-FI)", |
1207 |
"ROG STRIX B550-XE GAMING WIFI", |
|
|
1208 |
"ROG STRIX H370-F GAMING", |
1209 |
"ROG STRIX H370-I GAMING", |
1210 |
"ROG STRIX H470-I GAMING", |
1082 |
"ROG STRIX X570-E GAMING", |
1211 |
"ROG STRIX X570-E GAMING", |
1083 |
"ROG STRIX X570-E GAMING WIFI II", |
1212 |
"ROG STRIX X570-E GAMING WIFI II", |
1084 |
"ROG STRIX X570-F GAMING", |
1213 |
"ROG STRIX X570-F GAMING", |
Lines 1094-1158
static const char * const asus_wmi_boards[] = {
Link Here
|
1094 |
"ROG STRIX Z490-G GAMING (WI-FI)", |
1223 |
"ROG STRIX Z490-G GAMING (WI-FI)", |
1095 |
"ROG STRIX Z490-H GAMING", |
1224 |
"ROG STRIX Z490-H GAMING", |
1096 |
"ROG STRIX Z490-I GAMING", |
1225 |
"ROG STRIX Z490-I GAMING", |
|
|
1226 |
"TUF B360-PLUS GAMING", |
1227 |
"TUF B360-PRO GAMING", |
1228 |
"TUF B360-PRO GAMING (WI-FI)", |
1229 |
"TUF B360M-E GAMING", |
1230 |
"TUF B360M-PLUS GAMING", |
1231 |
"TUF B360M-PLUS GAMING S", |
1232 |
"TUF B360M-PLUS GAMING/BR", |
1233 |
"TUF GAMING A520M-PLUS", |
1234 |
"TUF GAMING A520M-PLUS II", |
1235 |
"TUF GAMING A520M-PLUS WIFI", |
1236 |
"TUF GAMING B460-PLUS", |
1237 |
"TUF GAMING B460-PRO (WI-FI)", |
1238 |
"TUF GAMING B460M-PLUS", |
1239 |
"TUF GAMING B460M-PLUS (WI-FI)", |
1240 |
"TUF GAMING B460M-PRO", |
1241 |
"TUF GAMING B550-PLUS", |
1242 |
"TUF GAMING B550-PLUS (WI-FI)", |
1243 |
"TUF GAMING B550-PLUS WIFI II", |
1244 |
"TUF GAMING B550-PRO", |
1245 |
"TUF GAMING B550M ZAKU (WI-FI)", |
1097 |
"TUF GAMING B550M-E", |
1246 |
"TUF GAMING B550M-E", |
1098 |
"TUF GAMING B550M-E (WI-FI)", |
1247 |
"TUF GAMING B550M-E WIFI", |
1099 |
"TUF GAMING B550M-PLUS", |
1248 |
"TUF GAMING B550M-PLUS", |
1100 |
"TUF GAMING B550M-PLUS (WI-FI)", |
1249 |
"TUF GAMING B550M-PLUS (WI-FI)", |
1101 |
"TUF GAMING B550M-PLUS WIFI II", |
1250 |
"TUF GAMING B550M-PLUS WIFI II", |
1102 |
"TUF GAMING B550-PLUS", |
1251 |
"TUF GAMING H470-PRO", |
1103 |
"TUF GAMING B550-PLUS WIFI II", |
1252 |
"TUF GAMING H470-PRO (WI-FI)", |
1104 |
"TUF GAMING B550-PRO", |
|
|
1105 |
"TUF GAMING X570-PLUS", |
1253 |
"TUF GAMING X570-PLUS", |
1106 |
"TUF GAMING X570-PLUS (WI-FI)", |
1254 |
"TUF GAMING X570-PLUS (WI-FI)", |
|
|
1255 |
"TUF GAMING X570-PLUS_BR", |
1107 |
"TUF GAMING X570-PRO (WI-FI)", |
1256 |
"TUF GAMING X570-PRO (WI-FI)", |
|
|
1257 |
"TUF GAMING X570-PRO WIFI II", |
1108 |
"TUF GAMING Z490-PLUS", |
1258 |
"TUF GAMING Z490-PLUS", |
1109 |
"TUF GAMING Z490-PLUS (WI-FI)", |
1259 |
"TUF GAMING Z490-PLUS (WI-FI)", |
|
|
1260 |
"TUF H310-PLUS GAMING", |
1261 |
"TUF H310M-PLUS GAMING", |
1262 |
"TUF H310M-PLUS GAMING/BR", |
1263 |
"TUF H370-PRO GAMING", |
1264 |
"TUF H370-PRO GAMING (WI-FI)", |
1265 |
"TUF Z390-PLUS GAMING", |
1266 |
"TUF Z390-PLUS GAMING (WI-FI)", |
1267 |
"TUF Z390-PRO GAMING", |
1268 |
"TUF Z390M-PRO GAMING", |
1269 |
"TUF Z390M-PRO GAMING (WI-FI)", |
1270 |
"WS Z390 PRO", |
1271 |
"Z490-GUNDAM (WI-FI)", |
1110 |
}; |
1272 |
}; |
1111 |
|
1273 |
|
1112 |
static const char * const asus_msi_boards[] = { |
1274 |
static const char * const asus_msi_boards[] = { |
|
|
1275 |
"B560M-P", |
1276 |
"EX-B560M-V5", |
1277 |
"EX-B660M-V5 D4", |
1113 |
"EX-B660M-V5 PRO D4", |
1278 |
"EX-B660M-V5 PRO D4", |
|
|
1279 |
"EX-B760M-V5 D4", |
1280 |
"EX-H510M-V3", |
1281 |
"EX-H610M-V3 D4", |
1282 |
"PRIME A620M-A", |
1283 |
"PRIME B560-PLUS", |
1284 |
"PRIME B560-PLUS AC-HES", |
1285 |
"PRIME B560M-A", |
1286 |
"PRIME B560M-A AC", |
1287 |
"PRIME B560M-K", |
1114 |
"PRIME B650-PLUS", |
1288 |
"PRIME B650-PLUS", |
1115 |
"PRIME B650M-A", |
1289 |
"PRIME B650M-A", |
1116 |
"PRIME B650M-A AX", |
1290 |
"PRIME B650M-A AX", |
|
|
1291 |
"PRIME B650M-A AX II", |
1117 |
"PRIME B650M-A II", |
1292 |
"PRIME B650M-A II", |
1118 |
"PRIME B650M-A WIFI", |
1293 |
"PRIME B650M-A WIFI", |
1119 |
"PRIME B650M-A WIFI II", |
1294 |
"PRIME B650M-A WIFI II", |
|
|
1295 |
"PRIME B660-PLUS D4", |
1296 |
"PRIME B660M-A AC D4", |
1120 |
"PRIME B660M-A D4", |
1297 |
"PRIME B660M-A D4", |
1121 |
"PRIME B660M-A WIFI D4", |
1298 |
"PRIME B660M-A WIFI D4", |
|
|
1299 |
"PRIME B760-PLUS", |
1300 |
"PRIME B760-PLUS D4", |
1301 |
"PRIME B760M-A", |
1302 |
"PRIME B760M-A AX D4", |
1303 |
"PRIME B760M-A D4", |
1304 |
"PRIME B760M-A WIFI", |
1305 |
"PRIME B760M-A WIFI D4", |
1306 |
"PRIME B760M-AJ D4", |
1307 |
"PRIME B760M-K D4", |
1308 |
"PRIME H510M-A", |
1309 |
"PRIME H510M-A WIFI", |
1310 |
"PRIME H510M-D", |
1311 |
"PRIME H510M-E", |
1312 |
"PRIME H510M-F", |
1313 |
"PRIME H510M-K", |
1314 |
"PRIME H510M-R", |
1315 |
"PRIME H510T2/CSM", |
1316 |
"PRIME H570-PLUS", |
1317 |
"PRIME H570M-PLUS", |
1318 |
"PRIME H610I-PLUS D4", |
1319 |
"PRIME H610M-A D4", |
1320 |
"PRIME H610M-A WIFI D4", |
1321 |
"PRIME H610M-D D4", |
1322 |
"PRIME H610M-E D4", |
1323 |
"PRIME H610M-F D4", |
1324 |
"PRIME H610M-K D4", |
1325 |
"PRIME H610M-R D4", |
1326 |
"PRIME H670-PLUS D4", |
1327 |
"PRIME H770-PLUS D4", |
1122 |
"PRIME X670-P", |
1328 |
"PRIME X670-P", |
1123 |
"PRIME X670-P WIFI", |
1329 |
"PRIME X670-P WIFI", |
1124 |
"PRIME X670E-PRO WIFI", |
1330 |
"PRIME X670E-PRO WIFI", |
1125 |
"Pro B660M-C-D4", |
1331 |
"PRIME Z590-A", |
|
|
1332 |
"PRIME Z590-P", |
1333 |
"PRIME Z590-P WIFI", |
1334 |
"PRIME Z590-V", |
1335 |
"PRIME Z590M-PLUS", |
1336 |
"PRIME Z690-A", |
1337 |
"PRIME Z690-P", |
1338 |
"PRIME Z690-P D4", |
1339 |
"PRIME Z690-P WIFI", |
1340 |
"PRIME Z690-P WIFI D4", |
1341 |
"PRIME Z690M-PLUS D4", |
1342 |
"PRIME Z790-A WIFI", |
1343 |
"PRIME Z790-P", |
1344 |
"PRIME Z790-P D4", |
1345 |
"PRIME Z790-P WIFI", |
1346 |
"PRIME Z790-P WIFI D4", |
1347 |
"PRIME Z790M-PLUS", |
1348 |
"PRIME Z790M-PLUS D4", |
1349 |
"Pro B560M-C", |
1350 |
"Pro B560M-CT", |
1351 |
"Pro B660M-C", |
1352 |
"Pro B660M-C D4", |
1353 |
"Pro B760M-C", |
1354 |
"Pro B760M-CT", |
1355 |
"Pro H510M-C", |
1356 |
"Pro H510M-CT", |
1357 |
"Pro H610M-C", |
1358 |
"Pro H610M-C D4", |
1359 |
"Pro H610M-CT D4", |
1360 |
"Pro H610T D4", |
1361 |
"Pro Q670M-C", |
1362 |
"Pro WS W680-ACE", |
1363 |
"Pro WS W680-ACE IPMI", |
1364 |
"Pro WS W790-ACE", |
1365 |
"Pro WS W790E-SAGE SE", |
1366 |
"ProArt B650-CREATOR", |
1126 |
"ProArt B660-CREATOR D4", |
1367 |
"ProArt B660-CREATOR D4", |
|
|
1368 |
"ProArt B760-CREATOR D4", |
1127 |
"ProArt X670E-CREATOR WIFI", |
1369 |
"ProArt X670E-CREATOR WIFI", |
|
|
1370 |
"ProArt Z690-CREATOR WIFI", |
1371 |
"ProArt Z790-CREATOR WIFI", |
1128 |
"ROG CROSSHAIR X670E EXTREME", |
1372 |
"ROG CROSSHAIR X670E EXTREME", |
1129 |
"ROG CROSSHAIR X670E GENE", |
1373 |
"ROG CROSSHAIR X670E GENE", |
1130 |
"ROG CROSSHAIR X670E HERO", |
1374 |
"ROG CROSSHAIR X670E HERO", |
|
|
1375 |
"ROG MAXIMUS XIII APEX", |
1376 |
"ROG MAXIMUS XIII EXTREME", |
1131 |
"ROG MAXIMUS XIII EXTREME GLACIAL", |
1377 |
"ROG MAXIMUS XIII EXTREME GLACIAL", |
|
|
1378 |
"ROG MAXIMUS XIII HERO", |
1379 |
"ROG MAXIMUS Z690 APEX", |
1132 |
"ROG MAXIMUS Z690 EXTREME", |
1380 |
"ROG MAXIMUS Z690 EXTREME", |
1133 |
"ROG MAXIMUS Z690 EXTREME GLACIAL", |
1381 |
"ROG MAXIMUS Z690 EXTREME GLACIAL", |
|
|
1382 |
"ROG MAXIMUS Z690 FORMULA", |
1383 |
"ROG MAXIMUS Z690 HERO", |
1384 |
"ROG MAXIMUS Z690 HERO EVA", |
1385 |
"ROG MAXIMUS Z790 APEX", |
1386 |
"ROG MAXIMUS Z790 EXTREME", |
1387 |
"ROG MAXIMUS Z790 HERO", |
1388 |
"ROG STRIX B560-A GAMING WIFI", |
1389 |
"ROG STRIX B560-E GAMING WIFI", |
1390 |
"ROG STRIX B560-F GAMING WIFI", |
1391 |
"ROG STRIX B560-G GAMING WIFI", |
1392 |
"ROG STRIX B560-I GAMING WIFI", |
1134 |
"ROG STRIX B650-A GAMING WIFI", |
1393 |
"ROG STRIX B650-A GAMING WIFI", |
1135 |
"ROG STRIX B650E-E GAMING WIFI", |
1394 |
"ROG STRIX B650E-E GAMING WIFI", |
1136 |
"ROG STRIX B650E-F GAMING WIFI", |
1395 |
"ROG STRIX B650E-F GAMING WIFI", |
1137 |
"ROG STRIX B650E-I GAMING WIFI", |
1396 |
"ROG STRIX B650E-I GAMING WIFI", |
|
|
1397 |
"ROG STRIX B660-A GAMING WIFI", |
1138 |
"ROG STRIX B660-A GAMING WIFI D4", |
1398 |
"ROG STRIX B660-A GAMING WIFI D4", |
1139 |
"ROG STRIX B660-F GAMING WIFI", |
1399 |
"ROG STRIX B660-F GAMING WIFI", |
1140 |
"ROG STRIX B660-G GAMING WIFI", |
1400 |
"ROG STRIX B660-G GAMING WIFI", |
1141 |
"ROG STRIX B660-I GAMING WIFI", |
1401 |
"ROG STRIX B660-I GAMING WIFI", |
|
|
1402 |
"ROG STRIX B760-A GAMING WIFI", |
1403 |
"ROG STRIX B760-A GAMING WIFI D4", |
1404 |
"ROG STRIX B760-F GAMING WIFI", |
1405 |
"ROG STRIX B760-G GAMING WIFI", |
1406 |
"ROG STRIX B760-G GAMING WIFI D4", |
1407 |
"ROG STRIX B760-I GAMING WIFI", |
1142 |
"ROG STRIX X670E-A GAMING WIFI", |
1408 |
"ROG STRIX X670E-A GAMING WIFI", |
1143 |
"ROG STRIX X670E-E GAMING WIFI", |
1409 |
"ROG STRIX X670E-E GAMING WIFI", |
1144 |
"ROG STRIX X670E-F GAMING WIFI", |
1410 |
"ROG STRIX X670E-F GAMING WIFI", |
1145 |
"ROG STRIX X670E-I GAMING WIFI", |
1411 |
"ROG STRIX X670E-I GAMING WIFI", |
|
|
1412 |
"ROG STRIX Z590-A GAMING WIFI", |
1146 |
"ROG STRIX Z590-A GAMING WIFI II", |
1413 |
"ROG STRIX Z590-A GAMING WIFI II", |
|
|
1414 |
"ROG STRIX Z590-E GAMING WIFI", |
1415 |
"ROG STRIX Z590-F GAMING WIFI", |
1416 |
"ROG STRIX Z590-I GAMING WIFI", |
1417 |
"ROG STRIX Z690-A GAMING WIFI", |
1147 |
"ROG STRIX Z690-A GAMING WIFI D4", |
1418 |
"ROG STRIX Z690-A GAMING WIFI D4", |
|
|
1419 |
"ROG STRIX Z690-E GAMING WIFI", |
1420 |
"ROG STRIX Z690-F GAMING WIFI", |
1421 |
"ROG STRIX Z690-G GAMING WIFI", |
1422 |
"ROG STRIX Z690-I GAMING WIFI", |
1423 |
"ROG STRIX Z790-A GAMING WIFI", |
1424 |
"ROG STRIX Z790-A GAMING WIFI D4", |
1425 |
"ROG STRIX Z790-E GAMING WIFI", |
1426 |
"ROG STRIX Z790-F GAMING WIFI", |
1427 |
"ROG STRIX Z790-H GAMING WIFI", |
1428 |
"ROG STRIX Z790-I GAMING WIFI", |
1429 |
"TUF GAMING A620M-PLUS", |
1430 |
"TUF GAMING A620M-PLUS WIFI", |
1431 |
"TUF GAMING B560-PLUS WIFI", |
1432 |
"TUF GAMING B560M-E", |
1433 |
"TUF GAMING B560M-PLUS", |
1434 |
"TUF GAMING B560M-PLUS WIFI", |
1148 |
"TUF GAMING B650-PLUS", |
1435 |
"TUF GAMING B650-PLUS", |
1149 |
"TUF GAMING B650-PLUS WIFI", |
1436 |
"TUF GAMING B650-PLUS WIFI", |
1150 |
"TUF GAMING B650M-PLUS", |
1437 |
"TUF GAMING B650M-PLUS", |
1151 |
"TUF GAMING B650M-PLUS WIFI", |
1438 |
"TUF GAMING B650M-PLUS WIFI", |
|
|
1439 |
"TUF GAMING B660-PLUS WIFI D4", |
1440 |
"TUF GAMING B660M-E D4", |
1441 |
"TUF GAMING B660M-PLUS D4", |
1152 |
"TUF GAMING B660M-PLUS WIFI", |
1442 |
"TUF GAMING B660M-PLUS WIFI", |
|
|
1443 |
"TUF GAMING B660M-PLUS WIFI D4", |
1444 |
"TUF GAMING B760-PLUS WIFI", |
1445 |
"TUF GAMING B760-PLUS WIFI D4", |
1446 |
"TUF GAMING B760M-BTF WIFI D4", |
1447 |
"TUF GAMING B760M-E D4", |
1448 |
"TUF GAMING B760M-PLUS", |
1449 |
"TUF GAMING B760M-PLUS D4", |
1450 |
"TUF GAMING B760M-PLUS WIFI", |
1451 |
"TUF GAMING B760M-PLUS WIFI D4", |
1452 |
"TUF GAMING H570-PRO", |
1453 |
"TUF GAMING H570-PRO WIFI", |
1454 |
"TUF GAMING H670-PRO WIFI D4", |
1455 |
"TUF GAMING H770-PRO WIFI", |
1153 |
"TUF GAMING X670E-PLUS", |
1456 |
"TUF GAMING X670E-PLUS", |
1154 |
"TUF GAMING X670E-PLUS WIFI", |
1457 |
"TUF GAMING X670E-PLUS WIFI", |
|
|
1458 |
"TUF GAMING Z590-PLUS", |
1155 |
"TUF GAMING Z590-PLUS WIFI", |
1459 |
"TUF GAMING Z590-PLUS WIFI", |
|
|
1460 |
"TUF GAMING Z690-PLUS", |
1461 |
"TUF GAMING Z690-PLUS D4", |
1462 |
"TUF GAMING Z690-PLUS WIFI", |
1463 |
"TUF GAMING Z690-PLUS WIFI D4", |
1464 |
"TUF GAMING Z790-PLUS D4", |
1465 |
"TUF GAMING Z790-PLUS WIFI", |
1466 |
"TUF GAMING Z790-PLUS WIFI D4", |
1467 |
"Z590 WIFI GUNDAM EDITION", |
1156 |
}; |
1468 |
}; |
1157 |
|
1469 |
|
1158 |
#if IS_ENABLED(CONFIG_ACPI) |
1470 |
#if IS_ENABLED(CONFIG_ACPI) |
Lines 1194-1199
static enum sensor_access nct6775_determine_access(const char *device_uid)
Link Here
|
1194 |
return access_direct; |
1506 |
return access_direct; |
1195 |
} |
1507 |
} |
1196 |
|
1508 |
|
|
|
1509 |
struct acpi_board_info { |
1510 |
char *acpi_mutex_path; |
1511 |
}; |
1512 |
|
1513 |
#define DMI_ASUS_BOARD_INFO(name, mutex_path) \ |
1514 |
static struct acpi_board_info name = { \ |
1515 |
.acpi_mutex_path = mutex_path, \ |
1516 |
} |
1517 |
|
1518 |
DMI_ASUS_BOARD_INFO(acpi_board_ILPC_MUTEX, "\\_SB.PCI0.LPCB.SIO1.MUT0"); |
1519 |
DMI_ASUS_BOARD_INFO(acpi_board_SBRG_MUTEX, "\\_SB.PCI0.SBRG.SIO1.MUT0"); |
1520 |
DMI_ASUS_BOARD_INFO(acpi_board_LPC0_MUTEX, "\\_SB_.PCI0.LPC0.SIO1.MUT0"); |
1521 |
|
1522 |
#define DMI_MATCH_ASUS_WMI_BOARD(name, info) { \ |
1523 |
.matches = { \ |
1524 |
DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."), \ |
1525 |
DMI_EXACT_MATCH(DMI_BOARD_NAME, name), \ |
1526 |
}, \ |
1527 |
.driver_data = info, \ |
1528 |
} |
1529 |
|
1530 |
#define DMI_MATCH_ASUS_NONWMI_BOARD(name, info) { \ |
1531 |
.matches = { \ |
1532 |
DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), \ |
1533 |
DMI_EXACT_MATCH(DMI_BOARD_NAME, name), \ |
1534 |
}, \ |
1535 |
.driver_data = info, \ |
1536 |
} |
1537 |
|
1538 |
#define DMI_MATCH_ASROCK_WMI_BOARD(name, info) { \ |
1539 |
.matches = { \ |
1540 |
DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "ASRock"), \ |
1541 |
DMI_EXACT_MATCH(DMI_BOARD_NAME, name), \ |
1542 |
}, \ |
1543 |
.driver_data = info, \ |
1544 |
} |
1545 |
|
1546 |
static const struct dmi_system_id asus_wmi_info_table[] = { |
1547 |
DMI_MATCH_ASUS_WMI_BOARD("B150 PRO GAMING", &acpi_board_ILPC_MUTEX), |
1548 |
DMI_MATCH_ASUS_WMI_BOARD("B150 PRO GAMING D3", &acpi_board_ILPC_MUTEX), |
1549 |
DMI_MATCH_ASUS_WMI_BOARD("B150M PRO GAMING", &acpi_board_ILPC_MUTEX), |
1550 |
DMI_MATCH_ASROCK_WMI_BOARD("B365M Pro4-F", &acpi_board_ILPC_MUTEX), |
1551 |
DMI_MATCH_ASROCK_WMI_BOARD("B450M Pro4", &acpi_board_SBRG_MUTEX), |
1552 |
DMI_MATCH_ASROCK_WMI_BOARD("B650E PG Riptide WiFi", &acpi_board_SBRG_MUTEX), |
1553 |
DMI_MATCH_ASUS_WMI_BOARD("EX-B365M-V", &acpi_board_ILPC_MUTEX), |
1554 |
DMI_MATCH_ASUS_WMI_BOARD("EX-B365M-V5", &acpi_board_ILPC_MUTEX), |
1555 |
DMI_MATCH_ASUS_WMI_BOARD("EX-H310M-V3 R2.0", &acpi_board_ILPC_MUTEX), |
1556 |
DMI_MATCH_ASUS_WMI_BOARD("H81M-R", &acpi_board_ILPC_MUTEX), |
1557 |
DMI_MATCH_ASUS_WMI_BOARD("K30AD_M31AD_M51AD_M32AD", &acpi_board_ILPC_MUTEX), |
1558 |
DMI_MATCH_ASUS_WMI_BOARD("MAXIMUS IX APEX", &acpi_board_ILPC_MUTEX), |
1559 |
DMI_MATCH_ASUS_WMI_BOARD("MAXIMUS IX CODE", &acpi_board_ILPC_MUTEX), |
1560 |
DMI_MATCH_ASUS_WMI_BOARD("MAXIMUS IX EXTREME", &acpi_board_ILPC_MUTEX), |
1561 |
DMI_MATCH_ASUS_WMI_BOARD("MAXIMUS IX FORMULA", &acpi_board_ILPC_MUTEX), |
1562 |
DMI_MATCH_ASUS_WMI_BOARD("MAXIMUS IX HERO", &acpi_board_ILPC_MUTEX), |
1563 |
DMI_MATCH_ASUS_WMI_BOARD("MAXIMUS VII HERO", &acpi_board_ILPC_MUTEX), |
1564 |
DMI_MATCH_ASUS_WMI_BOARD("MAXIMUS VIII FORMULA", &acpi_board_ILPC_MUTEX), |
1565 |
DMI_MATCH_ASUS_WMI_BOARD("P8H61-M LX R2.0", &acpi_board_ILPC_MUTEX), |
1566 |
DMI_MATCH_ASUS_WMI_BOARD("P8H67", &acpi_board_ILPC_MUTEX), |
1567 |
DMI_MATCH_ASUS_NONWMI_BOARD("P8Z68-V LX", &acpi_board_ILPC_MUTEX), |
1568 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME B250M-C", &acpi_board_ILPC_MUTEX), |
1569 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME B365-PLUS", &acpi_board_ILPC_MUTEX), |
1570 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME B365M-A", &acpi_board_ILPC_MUTEX), |
1571 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME B365M-C", &acpi_board_ILPC_MUTEX), |
1572 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME B365M-K", &acpi_board_ILPC_MUTEX), |
1573 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310-PLUS R2.0", &acpi_board_ILPC_MUTEX), |
1574 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310I-PLUS R2.0", &acpi_board_ILPC_MUTEX), |
1575 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310M-A R2.0", &acpi_board_ILPC_MUTEX), |
1576 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310M-C R2.0", &acpi_board_ILPC_MUTEX), |
1577 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310M-C/PS R2.0", &acpi_board_ILPC_MUTEX), |
1578 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310M-CS R2.0", &acpi_board_ILPC_MUTEX), |
1579 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310M-D R2.0", &acpi_board_ILPC_MUTEX), |
1580 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310M-DASH R2.0", &acpi_board_ILPC_MUTEX), |
1581 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310M-E R2.0", &acpi_board_ILPC_MUTEX), |
1582 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310M-E R2.0/BR", &acpi_board_ILPC_MUTEX), |
1583 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310M-F R2.0", &acpi_board_ILPC_MUTEX), |
1584 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310M-K R2.0", &acpi_board_ILPC_MUTEX), |
1585 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME H310M-R R2.0", &acpi_board_ILPC_MUTEX), |
1586 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME X399-A", &acpi_board_SBRG_MUTEX), |
1587 |
DMI_MATCH_ASUS_WMI_BOARD("PRIME Z270-A", &acpi_board_ILPC_MUTEX), |
1588 |
DMI_MATCH_ASUS_WMI_BOARD("PRO H310M-R R2.0 WI-FI", &acpi_board_ILPC_MUTEX), |
1589 |
DMI_MATCH_ASUS_WMI_BOARD("Pro WS C422-ACE", &acpi_board_ILPC_MUTEX), |
1590 |
DMI_MATCH_ASUS_WMI_BOARD("Pro WS WRX80E-SAGE SE WIFI", &acpi_board_SBRG_MUTEX), |
1591 |
DMI_MATCH_ASUS_WMI_BOARD("Pro WS WRX80E-SAGE SE WIFI II", &acpi_board_SBRG_MUTEX), |
1592 |
DMI_MATCH_ASUS_WMI_BOARD("ROG MAXIMUS X HERO", &acpi_board_ILPC_MUTEX), |
1593 |
DMI_MATCH_ASUS_WMI_BOARD("ROG RAMPAGE VI EXTREME ENCORE", &acpi_board_ILPC_MUTEX), |
1594 |
DMI_MATCH_ASUS_WMI_BOARD("ROG STRIX B365-F GAMING", &acpi_board_ILPC_MUTEX), |
1595 |
DMI_MATCH_ASUS_WMI_BOARD("ROG STRIX B365-G GAMING", &acpi_board_ILPC_MUTEX), |
1596 |
DMI_MATCH_ASUS_WMI_BOARD("ROG STRIX TRX40-E GAMING", &acpi_board_SBRG_MUTEX), |
1597 |
DMI_MATCH_ASUS_WMI_BOARD("ROG STRIX TRX40-XE GAMING", &acpi_board_SBRG_MUTEX), |
1598 |
DMI_MATCH_ASUS_WMI_BOARD("ROG STRIX Z370-H GAMING", &acpi_board_ILPC_MUTEX), |
1599 |
DMI_MATCH_ASUS_WMI_BOARD("ROG ZENITH II EXTREME", &acpi_board_SBRG_MUTEX), |
1600 |
DMI_MATCH_ASUS_WMI_BOARD("ROG ZENITH II EXTREME ALPHA", &acpi_board_SBRG_MUTEX), |
1601 |
DMI_MATCH_ASUS_WMI_BOARD("STRIX Z270E GAMING", &acpi_board_ILPC_MUTEX), |
1602 |
DMI_MATCH_ASUS_WMI_BOARD("STRIX Z270F GAMING", &acpi_board_ILPC_MUTEX), |
1603 |
DMI_MATCH_ASUS_WMI_BOARD("STRIX Z270G GAMING", &acpi_board_ILPC_MUTEX), |
1604 |
DMI_MATCH_ASUS_WMI_BOARD("STRIX Z270H GAMING", &acpi_board_ILPC_MUTEX), |
1605 |
DMI_MATCH_ASUS_WMI_BOARD("TUF B365-PLUS GAMING", &acpi_board_ILPC_MUTEX), |
1606 |
DMI_MATCH_ASUS_WMI_BOARD("TUF B365M-PLUS GAMING", &acpi_board_ILPC_MUTEX), |
1607 |
DMI_MATCH_ASUS_WMI_BOARD("TUF H310M-PLUS GAMING R2.0", &acpi_board_ILPC_MUTEX), |
1608 |
DMI_MATCH_ASUS_WMI_BOARD("TUF Z270 MARK 1", &acpi_board_ILPC_MUTEX), |
1609 |
DMI_MATCH_ASROCK_WMI_BOARD("X370 Gaming X", &acpi_board_SBRG_MUTEX), |
1610 |
DMI_MATCH_ASROCK_WMI_BOARD("X399 Taichi", &acpi_board_SBRG_MUTEX), |
1611 |
DMI_MATCH_ASROCK_WMI_BOARD("X570 Steel Legend", &acpi_board_SBRG_MUTEX), |
1612 |
DMI_MATCH_ASROCK_WMI_BOARD("X570 Taichi", &acpi_board_SBRG_MUTEX), |
1613 |
DMI_MATCH_ASUS_WMI_BOARD("X99-E WS/USB 3.1", &acpi_board_LPC0_MUTEX), |
1614 |
DMI_MATCH_ASROCK_WMI_BOARD("Z170 Extreme4", &acpi_board_ILPC_MUTEX), |
1615 |
DMI_MATCH_ASUS_WMI_BOARD("Z170 PRO GAMING", &acpi_board_ILPC_MUTEX), |
1616 |
DMI_MATCH_ASUS_WMI_BOARD("Z170 PRO GAMING/AURA", &acpi_board_ILPC_MUTEX), |
1617 |
DMI_MATCH_ASUS_WMI_BOARD("Z170-A", &acpi_board_ILPC_MUTEX), |
1618 |
DMI_MATCH_ASUS_WMI_BOARD("Z170-DELUXE", &acpi_board_ILPC_MUTEX), |
1619 |
DMI_MATCH_ASUS_WMI_BOARD("Z170M-PLUS", &acpi_board_ILPC_MUTEX), |
1620 |
DMI_MATCH_ASUS_WMI_BOARD("Z270-WS", &acpi_board_ILPC_MUTEX), |
1621 |
{} |
1622 |
}; |
1623 |
MODULE_DEVICE_TABLE(dmi, asus_wmi_info_table); |
1624 |
|
1625 |
static const char * const asus_nonconflict_boards[] = { |
1626 |
"H97-PRO GAMER", |
1627 |
}; |
1628 |
|
1197 |
static int __init sensors_nct6775_platform_init(void) |
1629 |
static int __init sensors_nct6775_platform_init(void) |
1198 |
{ |
1630 |
{ |
1199 |
int i, err; |
1631 |
int i, err; |
Lines 1204-1209
static int __init sensors_nct6775_platform_init(void)
Link Here
|
1204 |
int sioaddr[2] = { 0x2e, 0x4e }; |
1636 |
int sioaddr[2] = { 0x2e, 0x4e }; |
1205 |
enum sensor_access access = access_direct; |
1637 |
enum sensor_access access = access_direct; |
1206 |
const char *board_vendor, *board_name; |
1638 |
const char *board_vendor, *board_name; |
|
|
1639 |
const struct dmi_system_id *dmi_id; |
1640 |
struct acpi_board_info *board_info; |
1641 |
acpi_handle acpi_wmi_mutex = NULL; |
1642 |
acpi_status status; |
1207 |
|
1643 |
|
1208 |
err = platform_driver_register(&nct6775_driver); |
1644 |
err = platform_driver_register(&nct6775_driver); |
1209 |
if (err) |
1645 |
if (err) |
Lines 1225-1230
static int __init sensors_nct6775_platform_init(void)
Link Here
|
1225 |
access = nct6775_determine_access(ASUSMSI_DEVICE_UID); |
1661 |
access = nct6775_determine_access(ASUSMSI_DEVICE_UID); |
1226 |
} |
1662 |
} |
1227 |
|
1663 |
|
|
|
1664 |
if (access == access_direct) { |
1665 |
/* Mutext access check */ |
1666 |
dmi_id = dmi_first_match(asus_wmi_info_table); |
1667 |
if (dmi_id && dmi_id->driver_data) { |
1668 |
board_info = dmi_id->driver_data; |
1669 |
if (board_info->acpi_mutex_path) { |
1670 |
status = acpi_get_handle(NULL, board_info->acpi_mutex_path, |
1671 |
&acpi_wmi_mutex); |
1672 |
if (!ACPI_FAILURE(status)) { |
1673 |
pr_info("Using Asus WMI mutex: %s\n", |
1674 |
board_info->acpi_mutex_path); |
1675 |
access = access_direct; |
1676 |
} else { |
1677 |
pr_info("No such ASUS mutex: %s\n", |
1678 |
board_info->acpi_mutex_path); |
1679 |
} |
1680 |
} else { |
1681 |
pr_info("No mutex path\n"); |
1682 |
} |
1683 |
} else { |
1684 |
pr_info("No dmi definition `%s`:`%s`\n", board_name, board_vendor); |
1685 |
} |
1686 |
} |
1687 |
|
1228 |
/* |
1688 |
/* |
1229 |
* initialize sio_data->kind and sio_data->sioreg. |
1689 |
* initialize sio_data->kind and sio_data->sioreg. |
1230 |
* |
1690 |
* |
Lines 1246-1251
static int __init sensors_nct6775_platform_init(void)
Link Here
|
1246 |
found = true; |
1706 |
found = true; |
1247 |
|
1707 |
|
1248 |
sio_data.access = access; |
1708 |
sio_data.access = access; |
|
|
1709 |
sio_data.acpi_wmi_mutex = acpi_wmi_mutex; |
1249 |
|
1710 |
|
1250 |
if (access == access_asuswmi) { |
1711 |
if (access == access_asuswmi) { |
1251 |
sio_data.sio_outb = superio_wmi_outb; |
1712 |
sio_data.sio_outb = superio_wmi_outb; |
Lines 1273-1283
static int __init sensors_nct6775_platform_init(void)
Link Here
|
1273 |
res.end = address + IOREGION_OFFSET + IOREGION_LENGTH - 1; |
1734 |
res.end = address + IOREGION_OFFSET + IOREGION_LENGTH - 1; |
1274 |
res.flags = IORESOURCE_IO; |
1735 |
res.flags = IORESOURCE_IO; |
1275 |
|
1736 |
|
1276 |
err = acpi_check_resource_conflict(&res); |
1737 |
err = match_string(asus_nonconflict_boards, ARRAY_SIZE(asus_nonconflict_boards), |
1277 |
if (err) { |
1738 |
board_name); |
1278 |
platform_device_put(pdev[i]); |
1739 |
if (!acpi_wmi_mutex && err < 0) { |
1279 |
pdev[i] = NULL; |
1740 |
err = acpi_check_resource_conflict(&res); |
1280 |
continue; |
1741 |
if (err) { |
|
|
1742 |
platform_device_put(pdev[i]); |
1743 |
pdev[i] = NULL; |
1744 |
continue; |
1745 |
} |
1281 |
} |
1746 |
} |
1282 |
|
1747 |
|
1283 |
err = platform_device_add_resources(pdev[i], &res, 1); |
1748 |
err = platform_device_add_resources(pdev[i], &res, 1); |