diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-03-10 16:16:37 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-03-10 16:16:37 -0400 |
commit | dbbdf54c7206bf3f201f9ddaa5f4dd87835271cc (patch) | |
tree | 941dbf0dada73344acdfe891ec1d50a01316566d /drivers/platform/x86/mlx-platform.c | |
parent | 45ba8d5d061b13494c2a7a7652d51b9da3d9e77a (diff) | |
parent | 9c22cc020db637850ba47a14a598d09f706f19ad (diff) |
Merge tag 'platform-drivers-x86-v5.1-1' of git://git.infradead.org/linux-platform-drivers-x86
Pull x86 platform driver updates from Darren Hart:
- use MODULE_DEVICE_TABLE across several wmi drivers, keeping
wmi_device_id and MODULE_ALIAS() declarations in sync
- add several Ideapad models to the no_hw_rfkill list
- add support for new Mellanox platforms, including new fan and LED
functionality
- address Dell keyboard backlight change event and power button release
issues
- update dell_rbu to use appropriate memory allocation mechanisms
- several small fixes and Ice Lake support for intel_pmc_core
- fix a suspend regression for Cherry Trail based devices in
intel_int0002_vgpio
- a few other routine fixes
* tag 'platform-drivers-x86-v5.1-1' of git://git.infradead.org/linux-platform-drivers-x86: (50 commits)
MAINTAINERS: Include mlxreg.h in Mellanox Platform Driver files
platform/x86: ideapad-laptop: Add S130-14IGM to no_hw_rfkill list
platform/x86: mlx-platform: Fix access mode for fan_dir attribute
platform/x86: mlx-platform: Add UID LED for the next generation systems
platform/x86: mlx-platform: Add extra CPLD for next generation systems
platform/x86: wmi-bmof: use MODULE_DEVICE_TABLE() instead of MODULE_ALIAS()
platform/x86: intel-wmi-thunderbolt: use MODULE_DEVICE_TABLE() instead of MODULE_ALIAS()
platform/x86: huawei-wmi: use MODULE_DEVICE_TABLE() instead of MODULE_ALIAS()
platform/x86: dell-wmi: use MODULE_DEVICE_TABLE() instead of MODULE_ALIAS()
platform/x86: dell-wmi-descriptor: use MODULE_DEVICE_TABLE() instead of MODULE_ALIAS()
platform/x86: dell-smbios-wmi: use MODULE_DEVICE_TABLE() instead of MODULE_ALIAS()
platform/x86: wmi: add WMI support to MODULE_DEVICE_TABLE()
platform/x86: wmi: move struct wmi_device_id to mod_devicetable.h
modpost: file2alias: define size of alias
platform/x86: touchscreen_dmi: Add info for the CHUWI Hi10 Air tablet
platform/x86: ideapad-laptop: Add Ideapad 530S-14ARR to no_hw_rfkill list
platform/x86: ideapad-laptop: Add Yoga C930 to no_hw_rfkill_list
platform/x86: intel_pmc_core: Quirk to ignore XTAL shutdown
platform/x86: intel_pmc_core: Add Package cstates residency info
platform/x86: intel_pmc_core: Add ICL platform support
...
Diffstat (limited to 'drivers/platform/x86/mlx-platform.c')
-rw-r--r-- | drivers/platform/x86/mlx-platform.c | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/drivers/platform/x86/mlx-platform.c b/drivers/platform/x86/mlx-platform.c index df3fcd36776a..48fa7573e29b 100644 --- a/drivers/platform/x86/mlx-platform.c +++ b/drivers/platform/x86/mlx-platform.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #define MLXPLAT_CPLD_LPC_REG_CPLD1_VER_OFFSET 0x00 | 25 | #define MLXPLAT_CPLD_LPC_REG_CPLD1_VER_OFFSET 0x00 |
26 | #define MLXPLAT_CPLD_LPC_REG_CPLD2_VER_OFFSET 0x01 | 26 | #define MLXPLAT_CPLD_LPC_REG_CPLD2_VER_OFFSET 0x01 |
27 | #define MLXPLAT_CPLD_LPC_REG_CPLD3_VER_OFFSET 0x02 | 27 | #define MLXPLAT_CPLD_LPC_REG_CPLD3_VER_OFFSET 0x02 |
28 | #define MLXPLAT_CPLD_LPC_REG_CPLD4_VER_OFFSET 0x03 | ||
28 | #define MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET 0x1d | 29 | #define MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET 0x1d |
29 | #define MLXPLAT_CPLD_LPC_REG_RST_CAUSE1_OFFSET 0x1e | 30 | #define MLXPLAT_CPLD_LPC_REG_RST_CAUSE1_OFFSET 0x1e |
30 | #define MLXPLAT_CPLD_LPC_REG_RST_CAUSE2_OFFSET 0x1f | 31 | #define MLXPLAT_CPLD_LPC_REG_RST_CAUSE2_OFFSET 0x1f |
@@ -33,6 +34,7 @@ | |||
33 | #define MLXPLAT_CPLD_LPC_REG_LED3_OFFSET 0x22 | 34 | #define MLXPLAT_CPLD_LPC_REG_LED3_OFFSET 0x22 |
34 | #define MLXPLAT_CPLD_LPC_REG_LED4_OFFSET 0x23 | 35 | #define MLXPLAT_CPLD_LPC_REG_LED4_OFFSET 0x23 |
35 | #define MLXPLAT_CPLD_LPC_REG_LED5_OFFSET 0x24 | 36 | #define MLXPLAT_CPLD_LPC_REG_LED5_OFFSET 0x24 |
37 | #define MLXPLAT_CPLD_LPC_REG_FAN_DIRECTION 0x2a | ||
36 | #define MLXPLAT_CPLD_LPC_REG_GP1_OFFSET 0x30 | 38 | #define MLXPLAT_CPLD_LPC_REG_GP1_OFFSET 0x30 |
37 | #define MLXPLAT_CPLD_LPC_REG_WP1_OFFSET 0x31 | 39 | #define MLXPLAT_CPLD_LPC_REG_WP1_OFFSET 0x31 |
38 | #define MLXPLAT_CPLD_LPC_REG_GP2_OFFSET 0x32 | 40 | #define MLXPLAT_CPLD_LPC_REG_GP2_OFFSET 0x32 |
@@ -67,6 +69,9 @@ | |||
67 | #define MLXPLAT_CPLD_LPC_REG_TACHO10_OFFSET 0xee | 69 | #define MLXPLAT_CPLD_LPC_REG_TACHO10_OFFSET 0xee |
68 | #define MLXPLAT_CPLD_LPC_REG_TACHO11_OFFSET 0xef | 70 | #define MLXPLAT_CPLD_LPC_REG_TACHO11_OFFSET 0xef |
69 | #define MLXPLAT_CPLD_LPC_REG_TACHO12_OFFSET 0xf0 | 71 | #define MLXPLAT_CPLD_LPC_REG_TACHO12_OFFSET 0xf0 |
72 | #define MLXPLAT_CPLD_LPC_REG_FAN_CAP1_OFFSET 0xf5 | ||
73 | #define MLXPLAT_CPLD_LPC_REG_FAN_CAP2_OFFSET 0xf6 | ||
74 | #define MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET 0xf7 | ||
70 | #define MLXPLAT_CPLD_LPC_IO_RANGE 0x100 | 75 | #define MLXPLAT_CPLD_LPC_IO_RANGE 0x100 |
71 | #define MLXPLAT_CPLD_LPC_I2C_CH1_OFF 0xdb | 76 | #define MLXPLAT_CPLD_LPC_I2C_CH1_OFF 0xdb |
72 | #define MLXPLAT_CPLD_LPC_I2C_CH2_OFF 0xda | 77 | #define MLXPLAT_CPLD_LPC_I2C_CH2_OFF 0xda |
@@ -584,36 +589,48 @@ static struct mlxreg_core_data mlxplat_mlxcpld_default_ng_fan_items_data[] = { | |||
584 | .label = "fan1", | 589 | .label = "fan1", |
585 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, | 590 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, |
586 | .mask = BIT(0), | 591 | .mask = BIT(0), |
592 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
593 | .bit = BIT(0), | ||
587 | .hpdev.nr = MLXPLAT_CPLD_NR_NONE, | 594 | .hpdev.nr = MLXPLAT_CPLD_NR_NONE, |
588 | }, | 595 | }, |
589 | { | 596 | { |
590 | .label = "fan2", | 597 | .label = "fan2", |
591 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, | 598 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, |
592 | .mask = BIT(1), | 599 | .mask = BIT(1), |
600 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
601 | .bit = BIT(1), | ||
593 | .hpdev.nr = MLXPLAT_CPLD_NR_NONE, | 602 | .hpdev.nr = MLXPLAT_CPLD_NR_NONE, |
594 | }, | 603 | }, |
595 | { | 604 | { |
596 | .label = "fan3", | 605 | .label = "fan3", |
597 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, | 606 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, |
598 | .mask = BIT(2), | 607 | .mask = BIT(2), |
608 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
609 | .bit = BIT(2), | ||
599 | .hpdev.nr = MLXPLAT_CPLD_NR_NONE, | 610 | .hpdev.nr = MLXPLAT_CPLD_NR_NONE, |
600 | }, | 611 | }, |
601 | { | 612 | { |
602 | .label = "fan4", | 613 | .label = "fan4", |
603 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, | 614 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, |
604 | .mask = BIT(3), | 615 | .mask = BIT(3), |
616 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
617 | .bit = BIT(3), | ||
605 | .hpdev.nr = MLXPLAT_CPLD_NR_NONE, | 618 | .hpdev.nr = MLXPLAT_CPLD_NR_NONE, |
606 | }, | 619 | }, |
607 | { | 620 | { |
608 | .label = "fan5", | 621 | .label = "fan5", |
609 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, | 622 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, |
610 | .mask = BIT(4), | 623 | .mask = BIT(4), |
624 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
625 | .bit = BIT(4), | ||
611 | .hpdev.nr = MLXPLAT_CPLD_NR_NONE, | 626 | .hpdev.nr = MLXPLAT_CPLD_NR_NONE, |
612 | }, | 627 | }, |
613 | { | 628 | { |
614 | .label = "fan6", | 629 | .label = "fan6", |
615 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, | 630 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, |
616 | .mask = BIT(5), | 631 | .mask = BIT(5), |
632 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
633 | .bit = BIT(5), | ||
617 | .hpdev.nr = MLXPLAT_CPLD_NR_NONE, | 634 | .hpdev.nr = MLXPLAT_CPLD_NR_NONE, |
618 | }, | 635 | }, |
619 | }; | 636 | }; |
@@ -816,61 +833,90 @@ static struct mlxreg_core_data mlxplat_mlxcpld_default_ng_led_data[] = { | |||
816 | .label = "fan1:green", | 833 | .label = "fan1:green", |
817 | .reg = MLXPLAT_CPLD_LPC_REG_LED2_OFFSET, | 834 | .reg = MLXPLAT_CPLD_LPC_REG_LED2_OFFSET, |
818 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, | 835 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, |
836 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
837 | .bit = BIT(0), | ||
819 | }, | 838 | }, |
820 | { | 839 | { |
821 | .label = "fan1:orange", | 840 | .label = "fan1:orange", |
822 | .reg = MLXPLAT_CPLD_LPC_REG_LED2_OFFSET, | 841 | .reg = MLXPLAT_CPLD_LPC_REG_LED2_OFFSET, |
823 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, | 842 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, |
843 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
844 | .bit = BIT(0), | ||
824 | }, | 845 | }, |
825 | { | 846 | { |
826 | .label = "fan2:green", | 847 | .label = "fan2:green", |
827 | .reg = MLXPLAT_CPLD_LPC_REG_LED2_OFFSET, | 848 | .reg = MLXPLAT_CPLD_LPC_REG_LED2_OFFSET, |
828 | .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK, | 849 | .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK, |
850 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
851 | .bit = BIT(1), | ||
829 | }, | 852 | }, |
830 | { | 853 | { |
831 | .label = "fan2:orange", | 854 | .label = "fan2:orange", |
832 | .reg = MLXPLAT_CPLD_LPC_REG_LED2_OFFSET, | 855 | .reg = MLXPLAT_CPLD_LPC_REG_LED2_OFFSET, |
833 | .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK, | 856 | .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK, |
857 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
858 | .bit = BIT(1), | ||
834 | }, | 859 | }, |
835 | { | 860 | { |
836 | .label = "fan3:green", | 861 | .label = "fan3:green", |
837 | .reg = MLXPLAT_CPLD_LPC_REG_LED3_OFFSET, | 862 | .reg = MLXPLAT_CPLD_LPC_REG_LED3_OFFSET, |
838 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, | 863 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, |
864 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
865 | .bit = BIT(2), | ||
839 | }, | 866 | }, |
840 | { | 867 | { |
841 | .label = "fan3:orange", | 868 | .label = "fan3:orange", |
842 | .reg = MLXPLAT_CPLD_LPC_REG_LED3_OFFSET, | 869 | .reg = MLXPLAT_CPLD_LPC_REG_LED3_OFFSET, |
843 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, | 870 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, |
871 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
872 | .bit = BIT(2), | ||
844 | }, | 873 | }, |
845 | { | 874 | { |
846 | .label = "fan4:green", | 875 | .label = "fan4:green", |
847 | .reg = MLXPLAT_CPLD_LPC_REG_LED3_OFFSET, | 876 | .reg = MLXPLAT_CPLD_LPC_REG_LED3_OFFSET, |
848 | .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK, | 877 | .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK, |
878 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
879 | .bit = BIT(3), | ||
849 | }, | 880 | }, |
850 | { | 881 | { |
851 | .label = "fan4:orange", | 882 | .label = "fan4:orange", |
852 | .reg = MLXPLAT_CPLD_LPC_REG_LED3_OFFSET, | 883 | .reg = MLXPLAT_CPLD_LPC_REG_LED3_OFFSET, |
853 | .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK, | 884 | .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK, |
885 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
886 | .bit = BIT(3), | ||
854 | }, | 887 | }, |
855 | { | 888 | { |
856 | .label = "fan5:green", | 889 | .label = "fan5:green", |
857 | .reg = MLXPLAT_CPLD_LPC_REG_LED4_OFFSET, | 890 | .reg = MLXPLAT_CPLD_LPC_REG_LED4_OFFSET, |
858 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, | 891 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, |
892 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
893 | .bit = BIT(4), | ||
859 | }, | 894 | }, |
860 | { | 895 | { |
861 | .label = "fan5:orange", | 896 | .label = "fan5:orange", |
862 | .reg = MLXPLAT_CPLD_LPC_REG_LED4_OFFSET, | 897 | .reg = MLXPLAT_CPLD_LPC_REG_LED4_OFFSET, |
863 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, | 898 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, |
899 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
900 | .bit = BIT(4), | ||
864 | }, | 901 | }, |
865 | { | 902 | { |
866 | .label = "fan6:green", | 903 | .label = "fan6:green", |
867 | .reg = MLXPLAT_CPLD_LPC_REG_LED4_OFFSET, | 904 | .reg = MLXPLAT_CPLD_LPC_REG_LED4_OFFSET, |
868 | .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK, | 905 | .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK, |
906 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
907 | .bit = BIT(5), | ||
869 | }, | 908 | }, |
870 | { | 909 | { |
871 | .label = "fan6:orange", | 910 | .label = "fan6:orange", |
872 | .reg = MLXPLAT_CPLD_LPC_REG_LED4_OFFSET, | 911 | .reg = MLXPLAT_CPLD_LPC_REG_LED4_OFFSET, |
873 | .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK, | 912 | .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK, |
913 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET, | ||
914 | .bit = BIT(5), | ||
915 | }, | ||
916 | { | ||
917 | .label = "uid:blue", | ||
918 | .reg = MLXPLAT_CPLD_LPC_REG_LED5_OFFSET, | ||
919 | .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK, | ||
874 | }, | 920 | }, |
875 | }; | 921 | }; |
876 | 922 | ||
@@ -1100,6 +1146,12 @@ static struct mlxreg_core_data mlxplat_mlxcpld_default_ng_regs_io_data[] = { | |||
1100 | .mode = 0444, | 1146 | .mode = 0444, |
1101 | }, | 1147 | }, |
1102 | { | 1148 | { |
1149 | .label = "cpld4_version", | ||
1150 | .reg = MLXPLAT_CPLD_LPC_REG_CPLD4_VER_OFFSET, | ||
1151 | .bit = GENMASK(7, 0), | ||
1152 | .mode = 0444, | ||
1153 | }, | ||
1154 | { | ||
1103 | .label = "reset_long_pb", | 1155 | .label = "reset_long_pb", |
1104 | .reg = MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET, | 1156 | .reg = MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET, |
1105 | .mask = GENMASK(7, 0) & ~BIT(0), | 1157 | .mask = GENMASK(7, 0) & ~BIT(0), |
@@ -1184,6 +1236,12 @@ static struct mlxreg_core_data mlxplat_mlxcpld_default_ng_regs_io_data[] = { | |||
1184 | .bit = 1, | 1236 | .bit = 1, |
1185 | .mode = 0444, | 1237 | .mode = 0444, |
1186 | }, | 1238 | }, |
1239 | { | ||
1240 | .label = "fan_dir", | ||
1241 | .reg = MLXPLAT_CPLD_LPC_REG_FAN_DIRECTION, | ||
1242 | .bit = GENMASK(7, 0), | ||
1243 | .mode = 0444, | ||
1244 | }, | ||
1187 | }; | 1245 | }; |
1188 | 1246 | ||
1189 | static struct mlxreg_core_platform_data mlxplat_default_ng_regs_io_data = { | 1247 | static struct mlxreg_core_platform_data mlxplat_default_ng_regs_io_data = { |
@@ -1201,61 +1259,85 @@ static struct mlxreg_core_data mlxplat_mlxcpld_default_fan_data[] = { | |||
1201 | .label = "tacho1", | 1259 | .label = "tacho1", |
1202 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO1_OFFSET, | 1260 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO1_OFFSET, |
1203 | .mask = GENMASK(7, 0), | 1261 | .mask = GENMASK(7, 0), |
1262 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_CAP1_OFFSET, | ||
1263 | .bit = BIT(0), | ||
1204 | }, | 1264 | }, |
1205 | { | 1265 | { |
1206 | .label = "tacho2", | 1266 | .label = "tacho2", |
1207 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO2_OFFSET, | 1267 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO2_OFFSET, |
1208 | .mask = GENMASK(7, 0), | 1268 | .mask = GENMASK(7, 0), |
1269 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_CAP1_OFFSET, | ||
1270 | .bit = BIT(1), | ||
1209 | }, | 1271 | }, |
1210 | { | 1272 | { |
1211 | .label = "tacho3", | 1273 | .label = "tacho3", |
1212 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO3_OFFSET, | 1274 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO3_OFFSET, |
1213 | .mask = GENMASK(7, 0), | 1275 | .mask = GENMASK(7, 0), |
1276 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_CAP1_OFFSET, | ||
1277 | .bit = BIT(2), | ||
1214 | }, | 1278 | }, |
1215 | { | 1279 | { |
1216 | .label = "tacho4", | 1280 | .label = "tacho4", |
1217 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO4_OFFSET, | 1281 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO4_OFFSET, |
1218 | .mask = GENMASK(7, 0), | 1282 | .mask = GENMASK(7, 0), |
1283 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_CAP1_OFFSET, | ||
1284 | .bit = BIT(3), | ||
1219 | }, | 1285 | }, |
1220 | { | 1286 | { |
1221 | .label = "tacho5", | 1287 | .label = "tacho5", |
1222 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO5_OFFSET, | 1288 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO5_OFFSET, |
1223 | .mask = GENMASK(7, 0), | 1289 | .mask = GENMASK(7, 0), |
1290 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_CAP1_OFFSET, | ||
1291 | .bit = BIT(4), | ||
1224 | }, | 1292 | }, |
1225 | { | 1293 | { |
1226 | .label = "tacho6", | 1294 | .label = "tacho6", |
1227 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO6_OFFSET, | 1295 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO6_OFFSET, |
1228 | .mask = GENMASK(7, 0), | 1296 | .mask = GENMASK(7, 0), |
1297 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_CAP1_OFFSET, | ||
1298 | .bit = BIT(5), | ||
1229 | }, | 1299 | }, |
1230 | { | 1300 | { |
1231 | .label = "tacho7", | 1301 | .label = "tacho7", |
1232 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO7_OFFSET, | 1302 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO7_OFFSET, |
1233 | .mask = GENMASK(7, 0), | 1303 | .mask = GENMASK(7, 0), |
1304 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_CAP1_OFFSET, | ||
1305 | .bit = BIT(6), | ||
1234 | }, | 1306 | }, |
1235 | { | 1307 | { |
1236 | .label = "tacho8", | 1308 | .label = "tacho8", |
1237 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO8_OFFSET, | 1309 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO8_OFFSET, |
1238 | .mask = GENMASK(7, 0), | 1310 | .mask = GENMASK(7, 0), |
1311 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_CAP1_OFFSET, | ||
1312 | .bit = BIT(7), | ||
1239 | }, | 1313 | }, |
1240 | { | 1314 | { |
1241 | .label = "tacho9", | 1315 | .label = "tacho9", |
1242 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO9_OFFSET, | 1316 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO9_OFFSET, |
1243 | .mask = GENMASK(7, 0), | 1317 | .mask = GENMASK(7, 0), |
1318 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_CAP2_OFFSET, | ||
1319 | .bit = BIT(0), | ||
1244 | }, | 1320 | }, |
1245 | { | 1321 | { |
1246 | .label = "tacho10", | 1322 | .label = "tacho10", |
1247 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO10_OFFSET, | 1323 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO10_OFFSET, |
1248 | .mask = GENMASK(7, 0), | 1324 | .mask = GENMASK(7, 0), |
1325 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_CAP2_OFFSET, | ||
1326 | .bit = BIT(1), | ||
1249 | }, | 1327 | }, |
1250 | { | 1328 | { |
1251 | .label = "tacho11", | 1329 | .label = "tacho11", |
1252 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO11_OFFSET, | 1330 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO11_OFFSET, |
1253 | .mask = GENMASK(7, 0), | 1331 | .mask = GENMASK(7, 0), |
1332 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_CAP2_OFFSET, | ||
1333 | .bit = BIT(2), | ||
1254 | }, | 1334 | }, |
1255 | { | 1335 | { |
1256 | .label = "tacho12", | 1336 | .label = "tacho12", |
1257 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO12_OFFSET, | 1337 | .reg = MLXPLAT_CPLD_LPC_REG_TACHO12_OFFSET, |
1258 | .mask = GENMASK(7, 0), | 1338 | .mask = GENMASK(7, 0), |
1339 | .capability = MLXPLAT_CPLD_LPC_REG_FAN_CAP2_OFFSET, | ||
1340 | .bit = BIT(3), | ||
1259 | }, | 1341 | }, |
1260 | }; | 1342 | }; |
1261 | 1343 | ||
@@ -1299,6 +1381,7 @@ static bool mlxplat_mlxcpld_readable_reg(struct device *dev, unsigned int reg) | |||
1299 | case MLXPLAT_CPLD_LPC_REG_CPLD1_VER_OFFSET: | 1381 | case MLXPLAT_CPLD_LPC_REG_CPLD1_VER_OFFSET: |
1300 | case MLXPLAT_CPLD_LPC_REG_CPLD2_VER_OFFSET: | 1382 | case MLXPLAT_CPLD_LPC_REG_CPLD2_VER_OFFSET: |
1301 | case MLXPLAT_CPLD_LPC_REG_CPLD3_VER_OFFSET: | 1383 | case MLXPLAT_CPLD_LPC_REG_CPLD3_VER_OFFSET: |
1384 | case MLXPLAT_CPLD_LPC_REG_CPLD4_VER_OFFSET: | ||
1302 | case MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET: | 1385 | case MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET: |
1303 | case MLXPLAT_CPLD_LPC_REG_RST_CAUSE1_OFFSET: | 1386 | case MLXPLAT_CPLD_LPC_REG_RST_CAUSE1_OFFSET: |
1304 | case MLXPLAT_CPLD_LPC_REG_RST_CAUSE2_OFFSET: | 1387 | case MLXPLAT_CPLD_LPC_REG_RST_CAUSE2_OFFSET: |
@@ -1307,6 +1390,7 @@ static bool mlxplat_mlxcpld_readable_reg(struct device *dev, unsigned int reg) | |||
1307 | case MLXPLAT_CPLD_LPC_REG_LED3_OFFSET: | 1390 | case MLXPLAT_CPLD_LPC_REG_LED3_OFFSET: |
1308 | case MLXPLAT_CPLD_LPC_REG_LED4_OFFSET: | 1391 | case MLXPLAT_CPLD_LPC_REG_LED4_OFFSET: |
1309 | case MLXPLAT_CPLD_LPC_REG_LED5_OFFSET: | 1392 | case MLXPLAT_CPLD_LPC_REG_LED5_OFFSET: |
1393 | case MLXPLAT_CPLD_LPC_REG_FAN_DIRECTION: | ||
1310 | case MLXPLAT_CPLD_LPC_REG_GP1_OFFSET: | 1394 | case MLXPLAT_CPLD_LPC_REG_GP1_OFFSET: |
1311 | case MLXPLAT_CPLD_LPC_REG_WP1_OFFSET: | 1395 | case MLXPLAT_CPLD_LPC_REG_WP1_OFFSET: |
1312 | case MLXPLAT_CPLD_LPC_REG_GP2_OFFSET: | 1396 | case MLXPLAT_CPLD_LPC_REG_GP2_OFFSET: |
@@ -1341,6 +1425,9 @@ static bool mlxplat_mlxcpld_readable_reg(struct device *dev, unsigned int reg) | |||
1341 | case MLXPLAT_CPLD_LPC_REG_TACHO11_OFFSET: | 1425 | case MLXPLAT_CPLD_LPC_REG_TACHO11_OFFSET: |
1342 | case MLXPLAT_CPLD_LPC_REG_TACHO12_OFFSET: | 1426 | case MLXPLAT_CPLD_LPC_REG_TACHO12_OFFSET: |
1343 | case MLXPLAT_CPLD_LPC_REG_PWM_CONTROL_OFFSET: | 1427 | case MLXPLAT_CPLD_LPC_REG_PWM_CONTROL_OFFSET: |
1428 | case MLXPLAT_CPLD_LPC_REG_FAN_CAP1_OFFSET: | ||
1429 | case MLXPLAT_CPLD_LPC_REG_FAN_CAP2_OFFSET: | ||
1430 | case MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET: | ||
1344 | return true; | 1431 | return true; |
1345 | } | 1432 | } |
1346 | return false; | 1433 | return false; |
@@ -1352,6 +1439,7 @@ static bool mlxplat_mlxcpld_volatile_reg(struct device *dev, unsigned int reg) | |||
1352 | case MLXPLAT_CPLD_LPC_REG_CPLD1_VER_OFFSET: | 1439 | case MLXPLAT_CPLD_LPC_REG_CPLD1_VER_OFFSET: |
1353 | case MLXPLAT_CPLD_LPC_REG_CPLD2_VER_OFFSET: | 1440 | case MLXPLAT_CPLD_LPC_REG_CPLD2_VER_OFFSET: |
1354 | case MLXPLAT_CPLD_LPC_REG_CPLD3_VER_OFFSET: | 1441 | case MLXPLAT_CPLD_LPC_REG_CPLD3_VER_OFFSET: |
1442 | case MLXPLAT_CPLD_LPC_REG_CPLD4_VER_OFFSET: | ||
1355 | case MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET: | 1443 | case MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET: |
1356 | case MLXPLAT_CPLD_LPC_REG_RST_CAUSE1_OFFSET: | 1444 | case MLXPLAT_CPLD_LPC_REG_RST_CAUSE1_OFFSET: |
1357 | case MLXPLAT_CPLD_LPC_REG_RST_CAUSE2_OFFSET: | 1445 | case MLXPLAT_CPLD_LPC_REG_RST_CAUSE2_OFFSET: |
@@ -1360,6 +1448,7 @@ static bool mlxplat_mlxcpld_volatile_reg(struct device *dev, unsigned int reg) | |||
1360 | case MLXPLAT_CPLD_LPC_REG_LED3_OFFSET: | 1448 | case MLXPLAT_CPLD_LPC_REG_LED3_OFFSET: |
1361 | case MLXPLAT_CPLD_LPC_REG_LED4_OFFSET: | 1449 | case MLXPLAT_CPLD_LPC_REG_LED4_OFFSET: |
1362 | case MLXPLAT_CPLD_LPC_REG_LED5_OFFSET: | 1450 | case MLXPLAT_CPLD_LPC_REG_LED5_OFFSET: |
1451 | case MLXPLAT_CPLD_LPC_REG_FAN_DIRECTION: | ||
1363 | case MLXPLAT_CPLD_LPC_REG_GP1_OFFSET: | 1452 | case MLXPLAT_CPLD_LPC_REG_GP1_OFFSET: |
1364 | case MLXPLAT_CPLD_LPC_REG_GP2_OFFSET: | 1453 | case MLXPLAT_CPLD_LPC_REG_GP2_OFFSET: |
1365 | case MLXPLAT_CPLD_LPC_REG_AGGR_OFFSET: | 1454 | case MLXPLAT_CPLD_LPC_REG_AGGR_OFFSET: |
@@ -1392,6 +1481,9 @@ static bool mlxplat_mlxcpld_volatile_reg(struct device *dev, unsigned int reg) | |||
1392 | case MLXPLAT_CPLD_LPC_REG_TACHO11_OFFSET: | 1481 | case MLXPLAT_CPLD_LPC_REG_TACHO11_OFFSET: |
1393 | case MLXPLAT_CPLD_LPC_REG_TACHO12_OFFSET: | 1482 | case MLXPLAT_CPLD_LPC_REG_TACHO12_OFFSET: |
1394 | case MLXPLAT_CPLD_LPC_REG_PWM_CONTROL_OFFSET: | 1483 | case MLXPLAT_CPLD_LPC_REG_PWM_CONTROL_OFFSET: |
1484 | case MLXPLAT_CPLD_LPC_REG_FAN_CAP1_OFFSET: | ||
1485 | case MLXPLAT_CPLD_LPC_REG_FAN_CAP2_OFFSET: | ||
1486 | case MLXPLAT_CPLD_LPC_REG_FAN_DRW_CAP_OFFSET: | ||
1395 | return true; | 1487 | return true; |
1396 | } | 1488 | } |
1397 | return false; | 1489 | return false; |
@@ -1614,6 +1706,13 @@ static const struct dmi_system_id mlxplat_dmi_table[] __initconst = { | |||
1614 | }, | 1706 | }, |
1615 | }, | 1707 | }, |
1616 | { | 1708 | { |
1709 | .callback = mlxplat_dmi_qmb7xx_matched, | ||
1710 | .matches = { | ||
1711 | DMI_MATCH(DMI_BOARD_VENDOR, "Mellanox Technologies"), | ||
1712 | DMI_MATCH(DMI_PRODUCT_NAME, "MSN38"), | ||
1713 | }, | ||
1714 | }, | ||
1715 | { | ||
1617 | .callback = mlxplat_dmi_default_matched, | 1716 | .callback = mlxplat_dmi_default_matched, |
1618 | .matches = { | 1717 | .matches = { |
1619 | DMI_MATCH(DMI_BOARD_NAME, "VMOD0001"), | 1718 | DMI_MATCH(DMI_BOARD_NAME, "VMOD0001"), |
@@ -1643,6 +1742,12 @@ static const struct dmi_system_id mlxplat_dmi_table[] __initconst = { | |||
1643 | DMI_MATCH(DMI_BOARD_NAME, "VMOD0005"), | 1742 | DMI_MATCH(DMI_BOARD_NAME, "VMOD0005"), |
1644 | }, | 1743 | }, |
1645 | }, | 1744 | }, |
1745 | { | ||
1746 | .callback = mlxplat_dmi_qmb7xx_matched, | ||
1747 | .matches = { | ||
1748 | DMI_MATCH(DMI_BOARD_NAME, "VMOD0007"), | ||
1749 | }, | ||
1750 | }, | ||
1646 | { } | 1751 | { } |
1647 | }; | 1752 | }; |
1648 | 1753 | ||