Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

hwmon: (pmbus/ltc2978) add support for ltm4673

Add support for LTM4673. The LTM4673 is a quad output, dual 12A and dual
5A, switching mode DC/DC step-down μModule regulator integrated with
4-channel power system manager.

This adds only the chip id, the checks for the manufacturer special id,
and the relevant attributes for the device's pmbus_driver_info.
The device does not support clear peaks.

Signed-off-by: Cedric Encarnacion <cedricjustine.encarnacion@analog.com>
Link: https://lore.kernel.org/r/20250124-ltm4673-v1-2-a2c6aa37c903@analog.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>

authored by

Cedric Encarnacion and committed by
Guenter Roeck
68b6f958 8dfd7e08

+33 -4
+8
Documentation/hwmon/ltc2978.rst
··· 151 151 152 152 Datasheet: https://www.analog.com/en/products/ltm4644 153 153 154 + * Linear Technology LTM4673 155 + 156 + Prefix: 'ltm4673' 157 + 158 + Addresses scanned: - 159 + 160 + Datasheet: https://www.analog.com/en/products/ltm4673 161 + 154 162 * Linear Technology LTM4675 155 163 156 164 Prefix: 'ltm4675'
+2 -2
drivers/hwmon/pmbus/Kconfig
··· 234 234 help 235 235 If you say yes here you get regulator support for Linear Technology 236 236 LTC3880, LTC3883, LTC3884, LTC3886, LTC3887, LTC3889, LTC7841, 237 - LTC7880, LTM4644, LTM4675, LTM4676, LTM4677, LTM4678, LTM4680, 238 - LTM4686, and LTM4700. 237 + LTC7880, LTM4644, LTM4673, LTM4675, LTM4676, LTM4677, LTM4678, 238 + LTM4680, LTM4686, and LTM4700. 239 239 240 240 config SENSORS_LTC3815 241 241 tristate "Linear Technologies LTC3815"
+23 -2
drivers/hwmon/pmbus/ltc2978.c
··· 26 26 ltc3880, ltc3882, ltc3883, ltc3884, ltc3886, ltc3887, ltc3889, ltc7132, 27 27 ltc7841, ltc7880, 28 28 /* Modules */ 29 - ltm2987, ltm4664, ltm4675, ltm4676, ltm4677, ltm4678, ltm4680, ltm4686, 30 - ltm4700, 29 + ltm2987, ltm4664, ltm4673, ltm4675, ltm4676, ltm4677, ltm4678, ltm4680, 30 + ltm4686, ltm4700, 31 31 }; 32 32 33 33 /* Common for all chips */ ··· 86 86 #define LTM2987_ID_A 0x8010 /* A/B for two die IDs */ 87 87 #define LTM2987_ID_B 0x8020 88 88 #define LTM4664_ID 0x4120 89 + #define LTM4673_ID_REV1 0x0230 90 + #define LTM4673_ID 0x4480 89 91 #define LTM4675_ID 0x47a0 90 92 #define LTM4676_ID_REV1 0x4400 91 93 #define LTM4676_ID_REV2 0x4480 ··· 556 554 {"ltc7880", ltc7880}, 557 555 {"ltm2987", ltm2987}, 558 556 {"ltm4664", ltm4664}, 557 + {"ltm4673", ltm4673}, 559 558 {"ltm4675", ltm4675}, 560 559 {"ltm4676", ltm4676}, 561 560 {"ltm4677", ltm4677}, ··· 668 665 return ltm2987; 669 666 else if (chip_id == LTM4664_ID) 670 667 return ltm4664; 668 + else if (chip_id == LTM4673_ID || chip_id == LTM4673_ID_REV1) 669 + return ltm4673; 671 670 else if (chip_id == LTM4675_ID) 672 671 return ltm4675; 673 672 else if (chip_id == LTM4676_ID_REV1 || chip_id == LTM4676_ID_REV2 || ··· 874 869 | PMBUS_HAVE_IOUT 875 870 | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP; 876 871 break; 872 + case ltm4673: 873 + data->features |= FEAT_NEEDS_POLLING; 874 + info->read_word_data = ltc2975_read_word_data; 875 + info->pages = LTC2974_NUM_PAGES; 876 + info->func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT 877 + | PMBUS_HAVE_TEMP2; 878 + for (i = 0; i < info->pages; i++) { 879 + info->func[i] |= PMBUS_HAVE_IIN 880 + | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT 881 + | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT 882 + | PMBUS_HAVE_PIN 883 + | PMBUS_HAVE_POUT 884 + | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP; 885 + } 886 + break; 877 887 default: 878 888 return -ENODEV; 879 889 } ··· 946 926 { .compatible = "lltc,ltc7880" }, 947 927 { .compatible = "lltc,ltm2987" }, 948 928 { .compatible = "lltc,ltm4664" }, 929 + { .compatible = "lltc,ltm4673" }, 949 930 { .compatible = "lltc,ltm4675" }, 950 931 { .compatible = "lltc,ltm4676" }, 951 932 { .compatible = "lltc,ltm4677" },