Commit 68b6f958 authored by Cedric Encarnacion's avatar Cedric Encarnacion Committed by Guenter Roeck
Browse files

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: default avatarCedric Encarnacion <cedricjustine.encarnacion@analog.com>
Link: https://lore.kernel.org/r/20250124-ltm4673-v1-2-a2c6aa37c903@analog.com


Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 8dfd7e08
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -151,6 +151,14 @@ Supported chips:

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

   * Linear Technology LTM4673

    Prefix: 'ltm4673'

    Addresses scanned: -

    Datasheet: https://www.analog.com/en/products/ltm4673

   * Linear Technology LTM4675

    Prefix: 'ltm4675'
+2 −2
Original line number Diff line number Diff line
@@ -234,8 +234,8 @@ config SENSORS_LTC2978_REGULATOR
	help
	  If you say yes here you get regulator support for Linear Technology
	  LTC3880, LTC3883, LTC3884, LTC3886, LTC3887, LTC3889, LTC7841,
	  LTC7880, LTM4644, LTM4675, LTM4676, LTM4677, LTM4678, LTM4680,
	  LTM4686, and LTM4700.
	  LTC7880, LTM4644, LTM4673, LTM4675, LTM4676, LTM4677, LTM4678,
	  LTM4680, LTM4686, and LTM4700.

config SENSORS_LTC3815
	tristate "Linear Technologies LTC3815"
+23 −2
Original line number Diff line number Diff line
@@ -26,8 +26,8 @@ enum chips {
	ltc3880, ltc3882, ltc3883, ltc3884, ltc3886, ltc3887, ltc3889, ltc7132,
	ltc7841, ltc7880,
	/* Modules */
	ltm2987, ltm4664, ltm4675, ltm4676, ltm4677, ltm4678, ltm4680, ltm4686,
	ltm4700,
	ltm2987, ltm4664, ltm4673, ltm4675, ltm4676, ltm4677, ltm4678, ltm4680,
	ltm4686, ltm4700,
};

/* Common for all chips */
@@ -86,6 +86,8 @@ enum chips {
#define LTM2987_ID_A			0x8010	/* A/B for two die IDs */
#define LTM2987_ID_B			0x8020
#define LTM4664_ID			0x4120
#define LTM4673_ID_REV1			0x0230
#define LTM4673_ID			0x4480
#define LTM4675_ID			0x47a0
#define LTM4676_ID_REV1			0x4400
#define LTM4676_ID_REV2			0x4480
@@ -554,6 +556,7 @@ static const struct i2c_device_id ltc2978_id[] = {
	{"ltc7880", ltc7880},
	{"ltm2987", ltm2987},
	{"ltm4664", ltm4664},
	{"ltm4673", ltm4673},
	{"ltm4675", ltm4675},
	{"ltm4676", ltm4676},
	{"ltm4677", ltm4677},
@@ -665,6 +668,8 @@ static int ltc2978_get_id(struct i2c_client *client)
		return ltm2987;
	else if (chip_id == LTM4664_ID)
		return ltm4664;
	else if (chip_id == LTM4673_ID || chip_id == LTM4673_ID_REV1)
		return ltm4673;
	else if (chip_id == LTM4675_ID)
		return ltm4675;
	else if (chip_id == LTM4676_ID_REV1 || chip_id == LTM4676_ID_REV2 ||
@@ -869,6 +874,21 @@ static int ltc2978_probe(struct i2c_client *client)
		  | PMBUS_HAVE_IOUT
		  | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP;
		break;
	case ltm4673:
		data->features |= FEAT_NEEDS_POLLING;
		info->read_word_data = ltc2975_read_word_data;
		info->pages = LTC2974_NUM_PAGES;
		info->func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT
		  | PMBUS_HAVE_TEMP2;
		for (i = 0; i < info->pages; i++) {
			info->func[i] |= PMBUS_HAVE_IIN
			  | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT
			  | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT
			  | PMBUS_HAVE_PIN
			  | PMBUS_HAVE_POUT
			  | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP;
		}
		break;
	default:
		return -ENODEV;
	}
@@ -926,6 +946,7 @@ static const struct of_device_id ltc2978_of_match[] = {
	{ .compatible = "lltc,ltc7880" },
	{ .compatible = "lltc,ltm2987" },
	{ .compatible = "lltc,ltm4664" },
	{ .compatible = "lltc,ltm4673" },
	{ .compatible = "lltc,ltm4675" },
	{ .compatible = "lltc,ltm4676" },
	{ .compatible = "lltc,ltm4677" },