Skip to content

Commit f1bd26a

Browse files
committed
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 <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Guenter Roeck <[email protected]>
1 parent bf3f5a0 commit f1bd26a

File tree

3 files changed

+34
-4
lines changed

3 files changed

+34
-4
lines changed

Documentation/hwmon/ltc2978.rst

+9
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,14 @@ Supported chips:
167167

168168
Datasheet: https://www.analog.com/en/products/ltm4644
169169

170+
* Linear Technology LTM4673
171+
172+
Prefix: 'ltm4673'
173+
174+
Addresses scanned: -
175+
176+
Datasheet: https://www.analog.com/en/products/ltm4673
177+
170178
* Linear Technology LTM4675
171179

172180
Prefix: 'ltm4675'
@@ -245,6 +253,7 @@ Description
245253
- LTM2987 is a 16-channel Power System Manager with two LTC2977 plus
246254
- additional components on a single die. The chip is instantiated and reported
247255
- as two separate chips on two different I2C bus addresses.
256+
- LTM4673 is a dual 12A and dual 5A μModule regulator.
248257
- LTM4675 is a dual 9A or single 18A μModule regulator
249258
- LTM4676 is a dual 13A or single 26A uModule regulator.
250259
- LTM4686 is a dual 10A or single 20A uModule regulator.

drivers/hwmon/pmbus/Kconfig

+2-2
Original file line numberDiff line numberDiff line change
@@ -225,8 +225,8 @@ config SENSORS_LTC2978_REGULATOR
225225
help
226226
If you say yes here you get regulator support for Linear Technology
227227
LT7170, LT7171, LTC3880, LTC3883, LTC3884, LTC3886, LTC3887, LTC3889,
228-
LTC7841, LTC7880, LTM4644, LTM4675, LTM4676, LTM4677, LTM4678, LTM4680,
229-
LTM4686, and LTM4700.
228+
LTC7841, LTC7880, LTM4644, LTM4673, LTM4675, LTM4676, LTM4677, LTM4678,
229+
LTM4680, LTM4686, and LTM4700.
230230

231231
config SENSORS_LTC3815
232232
tristate "Linear Technologies LTC3815"

drivers/hwmon/pmbus/ltc2978.c

+23-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ enum chips {
2626
lt7170, lt7171, ltc3880, ltc3882, ltc3883, ltc3884, ltc3886, ltc3887,
2727
ltc3889, ltc7132, ltc7841, ltc7880,
2828
/* Modules */
29-
ltm2987, ltm4664, ltm4675, ltm4676, ltm4677, ltm4678, ltm4680, ltm4686,
30-
ltm4700,
29+
ltm2987, ltm4664, ltm4673, ltm4675, ltm4676, ltm4677, ltm4678, ltm4680,
30+
ltm4686, ltm4700,
3131
};
3232

3333
/* Common for all chips */
@@ -87,6 +87,8 @@ enum chips {
8787
#define LTM2987_ID_A 0x8010 /* A/B for two die IDs */
8888
#define LTM2987_ID_B 0x8020
8989
#define LTM4664_ID 0x4120
90+
#define LTM4673_ID_REV1 0x0230
91+
#define LTM4673_ID 0x4480
9092
#define LTM4675_ID 0x47a0
9193
#define LTM4676_ID_REV1 0x4400
9294
#define LTM4676_ID_REV2 0x4480
@@ -557,6 +559,7 @@ static const struct i2c_device_id ltc2978_id[] = {
557559
{"ltc7880", ltc7880},
558560
{"ltm2987", ltm2987},
559561
{"ltm4664", ltm4664},
562+
{"ltm4673", ltm4673},
560563
{"ltm4675", ltm4675},
561564
{"ltm4676", ltm4676},
562565
{"ltm4677", ltm4677},
@@ -687,6 +690,8 @@ static int ltc2978_get_id(struct i2c_client *client)
687690
return ltm2987;
688691
else if (chip_id == LTM4664_ID)
689692
return ltm4664;
693+
else if (chip_id == LTM4673_ID || chip_id == LTM4673_ID_REV1)
694+
return ltm4673;
690695
else if (chip_id == LTM4675_ID)
691696
return ltm4675;
692697
else if (chip_id == LTM4676_ID_REV1 || chip_id == LTM4676_ID_REV2 ||
@@ -905,6 +910,21 @@ static int ltc2978_probe(struct i2c_client *client)
905910
| PMBUS_HAVE_IOUT
906911
| PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP;
907912
break;
913+
case ltm4673:
914+
data->features |= FEAT_NEEDS_POLLING;
915+
info->read_word_data = ltc2975_read_word_data;
916+
info->pages = LTC2974_NUM_PAGES;
917+
info->func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT
918+
| PMBUS_HAVE_TEMP2;
919+
for (i = 0; i < info->pages; i++) {
920+
info->func[i] |= PMBUS_HAVE_IIN
921+
| PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT
922+
| PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT
923+
| PMBUS_HAVE_PIN
924+
| PMBUS_HAVE_POUT
925+
| PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP;
926+
}
927+
break;
908928
default:
909929
return -ENODEV;
910930
}
@@ -964,6 +984,7 @@ static const struct of_device_id ltc2978_of_match[] = {
964984
{ .compatible = "lltc,ltc7880" },
965985
{ .compatible = "lltc,ltm2987" },
966986
{ .compatible = "lltc,ltm4664" },
987+
{ .compatible = "lltc,ltm4673" },
967988
{ .compatible = "lltc,ltm4675" },
968989
{ .compatible = "lltc,ltm4676" },
969990
{ .compatible = "lltc,ltm4677" },

0 commit comments

Comments
 (0)