Commit ea541c18 authored by Erik Rosen's avatar Erik Rosen Committed by Guenter Roeck
Browse files

hwmon: (pmbus) Add support for additional Flex BMR converters to pmbus



Add support for Flex BMR310, BMR456, BMR457, BMR458, BMR480, BMR490,
BMR491 and BMR492 to the pmbus driver

Signed-off-by: default avatarErik Rosen <erik.rosen@metormote.com>
Link: https://lore.kernel.org/r/20210507194023.61138-4-erik.rosen@metormote.com


[groeck: Fixed minor whitespace error]
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent b976760d
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -3,15 +3,18 @@ Kernel driver pmbus

Supported chips:

  * Ericsson BMR453, BMR454
  * Flex BMR310, BMR453, BMR454, BMR456, BMR457, BMR458, BMR480,
    BMR490, BMR491, BMR492

    Prefixes: 'bmr453', 'bmr454'
    Prefixes: 'bmr310', 'bmr453', 'bmr454', 'bmr456', 'bmr457', 'bmr458', 'bmr480',
    'bmr490', 'bmr491', 'bmr492'

    Addresses scanned: -

    Datasheet:
    Datasheets:

	https://flexpowermodules.com/products

 http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146395

  * ON Semiconductor ADP4000, NCP4200, NCP4208

+4 −3
Original line number Diff line number Diff line
@@ -19,9 +19,10 @@ config SENSORS_PMBUS
	default y
	help
	  If you say yes here you get hardware monitoring support for generic
	  PMBus devices, including but not limited to ADP4000, BMR453, BMR454,
	  MAX20796, MDT040, NCP4200, NCP4208, PDT003, PDT006, PDT012, TPS40400,
	  TPS544B20, TPS544B25, TPS544C20, TPS544C25, and UDT020.
	  PMBus devices, including but not limited to ADP4000, BMR310, BMR453,
	  BMR454, BMR456, BMR457, BMR458, BMR480, BMR490, BMR491, BMR492,
	  MAX20796, MDT040, NCP4200, NCP4208, PDT003, PDT006, PDT012,
	  TPS40400, TPS544B20, TPS544B25, TPS544C20, TPS544C25, and UDT020.

	  This driver can also be built as a module. If so, the module will
	  be called pmbus.
+17 −2
Original line number Diff line number Diff line
@@ -173,13 +173,13 @@ static int pmbus_probe(struct i2c_client *client)
		return -ENOMEM;

	device_info = (struct pmbus_device_info *)i2c_match_id(pmbus_id, client)->driver_data;
	if (device_info->flags & PMBUS_SKIP_STATUS_CHECK) {
	if (device_info->flags) {
		pdata = devm_kzalloc(dev, sizeof(struct pmbus_platform_data),
				     GFP_KERNEL);
		if (!pdata)
			return -ENOMEM;

		pdata->flags = PMBUS_SKIP_STATUS_CHECK;
		pdata->flags = device_info->flags;
	}

	info->pages = device_info->pages;
@@ -193,22 +193,37 @@ static const struct pmbus_device_info pmbus_info_one = {
	.pages = 1,
	.flags = 0
};

static const struct pmbus_device_info pmbus_info_zero = {
	.pages = 0,
	.flags = 0
};

static const struct pmbus_device_info pmbus_info_one_skip = {
	.pages = 1,
	.flags = PMBUS_SKIP_STATUS_CHECK
};

static const struct pmbus_device_info pmbus_info_one_status = {
	.pages = 1,
	.flags = PMBUS_READ_STATUS_AFTER_FAILED_CHECK
};

/*
 * Use driver_data to set the number of pages supported by the chip.
 */
static const struct i2c_device_id pmbus_id[] = {
	{"adp4000", (kernel_ulong_t)&pmbus_info_one},
	{"bmr310", (kernel_ulong_t)&pmbus_info_one_status},
	{"bmr453", (kernel_ulong_t)&pmbus_info_one},
	{"bmr454", (kernel_ulong_t)&pmbus_info_one},
	{"bmr456", (kernel_ulong_t)&pmbus_info_one},
	{"bmr457", (kernel_ulong_t)&pmbus_info_one},
	{"bmr458", (kernel_ulong_t)&pmbus_info_one_status},
	{"bmr480", (kernel_ulong_t)&pmbus_info_one_status},
	{"bmr490", (kernel_ulong_t)&pmbus_info_one_status},
	{"bmr491", (kernel_ulong_t)&pmbus_info_one_status},
	{"bmr492", (kernel_ulong_t)&pmbus_info_one},
	{"dps460", (kernel_ulong_t)&pmbus_info_one_skip},
	{"dps650ab", (kernel_ulong_t)&pmbus_info_one_skip},
	{"dps800", (kernel_ulong_t)&pmbus_info_one_skip},