* [PATCH hwmon-next v1 1/6] hwmon: (pmbus/core) Add support for vid mode detection per page bases
2020-01-13 15:08 [PATCH hwmon-next v1 0/6] hwmon: (pmbus) Add support for vid mode calculation per page bases Vadim Pasternak
@ 2020-01-13 15:08 ` Vadim Pasternak
2020-01-14 14:06 ` Guenter Roeck
2020-01-13 15:08 ` [PATCH hwmon-next v1 2/6] hwmon: (pmbus/core) Add support for Intel IMVP9 and AMD 6.25mV modes Vadim Pasternak
` (4 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: Vadim Pasternak @ 2020-01-13 15:08 UTC (permalink / raw)
To: linux, robh+dt, vijaykhemka; +Cc: linux-hwmon, devicetree, Vadim Pasternak
Add support for VID protocol detection per page bases, instead of
detecting it based on "PMBU_VOUT" readout from page 0 for all the pages
supported by particular device.
The reason that some devices allows to configure different VID modes
per page within the same device.
Patch modifies the field "vrm_version" within the structure
"pmbus_driver_info" to be per page array.
Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
---
drivers/hwmon/pmbus/max20751.c | 2 +-
drivers/hwmon/pmbus/pmbus.c | 5 +++--
drivers/hwmon/pmbus/pmbus.h | 2 +-
drivers/hwmon/pmbus/pmbus_core.c | 2 +-
drivers/hwmon/pmbus/pxe1610.c | 44 ++++++++++++++++++++++------------------
drivers/hwmon/pmbus/tps53679.c | 44 +++++++++++++++++++++-------------------
6 files changed, 53 insertions(+), 46 deletions(-)
diff --git a/drivers/hwmon/pmbus/max20751.c b/drivers/hwmon/pmbus/max20751.c
index ee5f0cdbde06..da3c38cb9a5c 100644
--- a/drivers/hwmon/pmbus/max20751.c
+++ b/drivers/hwmon/pmbus/max20751.c
@@ -16,7 +16,7 @@ static struct pmbus_driver_info max20751_info = {
.pages = 1,
.format[PSC_VOLTAGE_IN] = linear,
.format[PSC_VOLTAGE_OUT] = vid,
- .vrm_version = vr12,
+ .vrm_version[0] = vr12,
.format[PSC_TEMPERATURE] = linear,
.format[PSC_CURRENT_OUT] = linear,
.format[PSC_POWER] = linear,
diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c
index c0bc43d01018..9109f305ebbb 100644
--- a/drivers/hwmon/pmbus/pmbus.c
+++ b/drivers/hwmon/pmbus/pmbus.c
@@ -115,7 +115,7 @@ static int pmbus_identify(struct i2c_client *client,
}
if (pmbus_check_byte_register(client, 0, PMBUS_VOUT_MODE)) {
- int vout_mode;
+ int vout_mode, i;
vout_mode = pmbus_read_byte_data(client, 0, PMBUS_VOUT_MODE);
if (vout_mode >= 0 && vout_mode != 0xff) {
@@ -124,7 +124,8 @@ static int pmbus_identify(struct i2c_client *client,
break;
case 1:
info->format[PSC_VOLTAGE_OUT] = vid;
- info->vrm_version = vr11;
+ for (i = 0; i < info->pages; i++)
+ info->vrm_version[i] = vr11;
break;
case 2:
info->format[PSC_VOLTAGE_OUT] = direct;
diff --git a/drivers/hwmon/pmbus/pmbus.h b/drivers/hwmon/pmbus/pmbus.h
index d198af3a92b6..2bdebd0ea9c1 100644
--- a/drivers/hwmon/pmbus/pmbus.h
+++ b/drivers/hwmon/pmbus/pmbus.h
@@ -382,7 +382,7 @@ enum vrm_version { vr11 = 0, vr12, vr13 };
struct pmbus_driver_info {
int pages; /* Total number of pages */
enum pmbus_data_format format[PSC_NUM_CLASSES];
- enum vrm_version vrm_version;
+ enum vrm_version vrm_version[PMBUS_PAGES]; /* vrm version per page */
/*
* Support one set of coefficients for each sensor type
* Used for chips providing data in direct mode.
diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
index 8470097907bc..98226e84b351 100644
--- a/drivers/hwmon/pmbus/pmbus_core.c
+++ b/drivers/hwmon/pmbus/pmbus_core.c
@@ -696,7 +696,7 @@ static long pmbus_reg2data_vid(struct pmbus_data *data,
long val = sensor->data;
long rv = 0;
- switch (data->info->vrm_version) {
+ switch (data->info->vrm_version[sensor->page]) {
case vr11:
if (val >= 0x02 && val <= 0xb2)
rv = DIV_ROUND_CLOSEST(160000 - (val - 2) * 625, 100);
diff --git a/drivers/hwmon/pmbus/pxe1610.c b/drivers/hwmon/pmbus/pxe1610.c
index ebe3f023f840..517584cff3de 100644
--- a/drivers/hwmon/pmbus/pxe1610.c
+++ b/drivers/hwmon/pmbus/pxe1610.c
@@ -19,26 +19,30 @@
static int pxe1610_identify(struct i2c_client *client,
struct pmbus_driver_info *info)
{
- if (pmbus_check_byte_register(client, 0, PMBUS_VOUT_MODE)) {
- u8 vout_mode;
- int ret;
-
- /* Read the register with VOUT scaling value.*/
- ret = pmbus_read_byte_data(client, 0, PMBUS_VOUT_MODE);
- if (ret < 0)
- return ret;
-
- vout_mode = ret & GENMASK(4, 0);
-
- switch (vout_mode) {
- case 1:
- info->vrm_version = vr12;
- break;
- case 2:
- info->vrm_version = vr13;
- break;
- default:
- return -ENODEV;
+ int i;
+
+ for (i = 0; i < PXE1610_NUM_PAGES; i++) {
+ if (pmbus_check_byte_register(client, i, PMBUS_VOUT_MODE)) {
+ u8 vout_mode;
+ int ret;
+
+ /* Read the register with VOUT scaling value.*/
+ ret = pmbus_read_byte_data(client, i, PMBUS_VOUT_MODE);
+ if (ret < 0)
+ return ret;
+
+ vout_mode = ret & GENMASK(4, 0);
+
+ switch (vout_mode) {
+ case 1:
+ info->vrm_version[i] = vr12;
+ break;
+ case 2:
+ info->vrm_version[i] = vr13;
+ break;
+ default:
+ return -ENODEV;
+ }
}
}
diff --git a/drivers/hwmon/pmbus/tps53679.c b/drivers/hwmon/pmbus/tps53679.c
index 86bb3aca09ed..163e8c6aaa8e 100644
--- a/drivers/hwmon/pmbus/tps53679.c
+++ b/drivers/hwmon/pmbus/tps53679.c
@@ -24,27 +24,29 @@ static int tps53679_identify(struct i2c_client *client,
struct pmbus_driver_info *info)
{
u8 vout_params;
- int ret;
-
- /* Read the register with VOUT scaling value.*/
- ret = pmbus_read_byte_data(client, 0, PMBUS_VOUT_MODE);
- if (ret < 0)
- return ret;
-
- vout_params = ret & GENMASK(4, 0);
-
- switch (vout_params) {
- case TPS53679_PROT_VR13_10MV:
- case TPS53679_PROT_VR12_5_10MV:
- info->vrm_version = vr13;
- break;
- case TPS53679_PROT_VR13_5MV:
- case TPS53679_PROT_VR12_5MV:
- case TPS53679_PROT_IMVP8_5MV:
- info->vrm_version = vr12;
- break;
- default:
- return -EINVAL;
+ int i, ret;
+
+ for (i = 0; i < TPS53679_PAGE_NUM; i++) {
+ /* Read the register with VOUT scaling value.*/
+ ret = pmbus_read_byte_data(client, i, PMBUS_VOUT_MODE);
+ if (ret < 0)
+ return ret;
+
+ vout_params = ret & GENMASK(4, 0);
+
+ switch (vout_params) {
+ case TPS53679_PROT_VR13_10MV:
+ case TPS53679_PROT_VR12_5_10MV:
+ info->vrm_version[i] = vr13;
+ break;
+ case TPS53679_PROT_VR13_5MV:
+ case TPS53679_PROT_VR12_5MV:
+ case TPS53679_PROT_IMVP8_5MV:
+ info->vrm_version[i] = vr12;
+ break;
+ default:
+ return -EINVAL;
+ }
}
return 0;
--
2.11.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH hwmon-next v1 1/6] hwmon: (pmbus/core) Add support for vid mode detection per page bases
2020-01-13 15:08 ` [PATCH hwmon-next v1 1/6] hwmon: (pmbus/core) Add support for vid mode detection " Vadim Pasternak
@ 2020-01-14 14:06 ` Guenter Roeck
0 siblings, 0 replies; 14+ messages in thread
From: Guenter Roeck @ 2020-01-14 14:06 UTC (permalink / raw)
To: Vadim Pasternak; +Cc: robh+dt, vijaykhemka, linux-hwmon, devicetree
On Mon, Jan 13, 2020 at 03:08:36PM +0000, Vadim Pasternak wrote:
> Add support for VID protocol detection per page bases, instead of
> detecting it based on "PMBU_VOUT" readout from page 0 for all the pages
> supported by particular device.
> The reason that some devices allows to configure different VID modes
> per page within the same device.
> Patch modifies the field "vrm_version" within the structure
> "pmbus_driver_info" to be per page array.
>
> Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Applied to hwmon-next.
Thanks,
Guenter
> ---
> drivers/hwmon/pmbus/max20751.c | 2 +-
> drivers/hwmon/pmbus/pmbus.c | 5 +++--
> drivers/hwmon/pmbus/pmbus.h | 2 +-
> drivers/hwmon/pmbus/pmbus_core.c | 2 +-
> drivers/hwmon/pmbus/pxe1610.c | 44 ++++++++++++++++++++++------------------
> drivers/hwmon/pmbus/tps53679.c | 44 +++++++++++++++++++++-------------------
> 6 files changed, 53 insertions(+), 46 deletions(-)
>
> diff --git a/drivers/hwmon/pmbus/max20751.c b/drivers/hwmon/pmbus/max20751.c
> index ee5f0cdbde06..da3c38cb9a5c 100644
> --- a/drivers/hwmon/pmbus/max20751.c
> +++ b/drivers/hwmon/pmbus/max20751.c
> @@ -16,7 +16,7 @@ static struct pmbus_driver_info max20751_info = {
> .pages = 1,
> .format[PSC_VOLTAGE_IN] = linear,
> .format[PSC_VOLTAGE_OUT] = vid,
> - .vrm_version = vr12,
> + .vrm_version[0] = vr12,
> .format[PSC_TEMPERATURE] = linear,
> .format[PSC_CURRENT_OUT] = linear,
> .format[PSC_POWER] = linear,
> diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c
> index c0bc43d01018..9109f305ebbb 100644
> --- a/drivers/hwmon/pmbus/pmbus.c
> +++ b/drivers/hwmon/pmbus/pmbus.c
> @@ -115,7 +115,7 @@ static int pmbus_identify(struct i2c_client *client,
> }
>
> if (pmbus_check_byte_register(client, 0, PMBUS_VOUT_MODE)) {
> - int vout_mode;
> + int vout_mode, i;
>
> vout_mode = pmbus_read_byte_data(client, 0, PMBUS_VOUT_MODE);
> if (vout_mode >= 0 && vout_mode != 0xff) {
> @@ -124,7 +124,8 @@ static int pmbus_identify(struct i2c_client *client,
> break;
> case 1:
> info->format[PSC_VOLTAGE_OUT] = vid;
> - info->vrm_version = vr11;
> + for (i = 0; i < info->pages; i++)
> + info->vrm_version[i] = vr11;
> break;
> case 2:
> info->format[PSC_VOLTAGE_OUT] = direct;
> diff --git a/drivers/hwmon/pmbus/pmbus.h b/drivers/hwmon/pmbus/pmbus.h
> index d198af3a92b6..2bdebd0ea9c1 100644
> --- a/drivers/hwmon/pmbus/pmbus.h
> +++ b/drivers/hwmon/pmbus/pmbus.h
> @@ -382,7 +382,7 @@ enum vrm_version { vr11 = 0, vr12, vr13 };
> struct pmbus_driver_info {
> int pages; /* Total number of pages */
> enum pmbus_data_format format[PSC_NUM_CLASSES];
> - enum vrm_version vrm_version;
> + enum vrm_version vrm_version[PMBUS_PAGES]; /* vrm version per page */
> /*
> * Support one set of coefficients for each sensor type
> * Used for chips providing data in direct mode.
> diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
> index 8470097907bc..98226e84b351 100644
> --- a/drivers/hwmon/pmbus/pmbus_core.c
> +++ b/drivers/hwmon/pmbus/pmbus_core.c
> @@ -696,7 +696,7 @@ static long pmbus_reg2data_vid(struct pmbus_data *data,
> long val = sensor->data;
> long rv = 0;
>
> - switch (data->info->vrm_version) {
> + switch (data->info->vrm_version[sensor->page]) {
> case vr11:
> if (val >= 0x02 && val <= 0xb2)
> rv = DIV_ROUND_CLOSEST(160000 - (val - 2) * 625, 100);
> diff --git a/drivers/hwmon/pmbus/pxe1610.c b/drivers/hwmon/pmbus/pxe1610.c
> index ebe3f023f840..517584cff3de 100644
> --- a/drivers/hwmon/pmbus/pxe1610.c
> +++ b/drivers/hwmon/pmbus/pxe1610.c
> @@ -19,26 +19,30 @@
> static int pxe1610_identify(struct i2c_client *client,
> struct pmbus_driver_info *info)
> {
> - if (pmbus_check_byte_register(client, 0, PMBUS_VOUT_MODE)) {
> - u8 vout_mode;
> - int ret;
> -
> - /* Read the register with VOUT scaling value.*/
> - ret = pmbus_read_byte_data(client, 0, PMBUS_VOUT_MODE);
> - if (ret < 0)
> - return ret;
> -
> - vout_mode = ret & GENMASK(4, 0);
> -
> - switch (vout_mode) {
> - case 1:
> - info->vrm_version = vr12;
> - break;
> - case 2:
> - info->vrm_version = vr13;
> - break;
> - default:
> - return -ENODEV;
> + int i;
> +
> + for (i = 0; i < PXE1610_NUM_PAGES; i++) {
> + if (pmbus_check_byte_register(client, i, PMBUS_VOUT_MODE)) {
> + u8 vout_mode;
> + int ret;
> +
> + /* Read the register with VOUT scaling value.*/
> + ret = pmbus_read_byte_data(client, i, PMBUS_VOUT_MODE);
> + if (ret < 0)
> + return ret;
> +
> + vout_mode = ret & GENMASK(4, 0);
> +
> + switch (vout_mode) {
> + case 1:
> + info->vrm_version[i] = vr12;
> + break;
> + case 2:
> + info->vrm_version[i] = vr13;
> + break;
> + default:
> + return -ENODEV;
> + }
> }
> }
>
> diff --git a/drivers/hwmon/pmbus/tps53679.c b/drivers/hwmon/pmbus/tps53679.c
> index 86bb3aca09ed..163e8c6aaa8e 100644
> --- a/drivers/hwmon/pmbus/tps53679.c
> +++ b/drivers/hwmon/pmbus/tps53679.c
> @@ -24,27 +24,29 @@ static int tps53679_identify(struct i2c_client *client,
> struct pmbus_driver_info *info)
> {
> u8 vout_params;
> - int ret;
> -
> - /* Read the register with VOUT scaling value.*/
> - ret = pmbus_read_byte_data(client, 0, PMBUS_VOUT_MODE);
> - if (ret < 0)
> - return ret;
> -
> - vout_params = ret & GENMASK(4, 0);
> -
> - switch (vout_params) {
> - case TPS53679_PROT_VR13_10MV:
> - case TPS53679_PROT_VR12_5_10MV:
> - info->vrm_version = vr13;
> - break;
> - case TPS53679_PROT_VR13_5MV:
> - case TPS53679_PROT_VR12_5MV:
> - case TPS53679_PROT_IMVP8_5MV:
> - info->vrm_version = vr12;
> - break;
> - default:
> - return -EINVAL;
> + int i, ret;
> +
> + for (i = 0; i < TPS53679_PAGE_NUM; i++) {
> + /* Read the register with VOUT scaling value.*/
> + ret = pmbus_read_byte_data(client, i, PMBUS_VOUT_MODE);
> + if (ret < 0)
> + return ret;
> +
> + vout_params = ret & GENMASK(4, 0);
> +
> + switch (vout_params) {
> + case TPS53679_PROT_VR13_10MV:
> + case TPS53679_PROT_VR12_5_10MV:
> + info->vrm_version[i] = vr13;
> + break;
> + case TPS53679_PROT_VR13_5MV:
> + case TPS53679_PROT_VR12_5MV:
> + case TPS53679_PROT_IMVP8_5MV:
> + info->vrm_version[i] = vr12;
> + break;
> + default:
> + return -EINVAL;
> + }
> }
>
> return 0;
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH hwmon-next v1 2/6] hwmon: (pmbus/core) Add support for Intel IMVP9 and AMD 6.25mV modes
2020-01-13 15:08 [PATCH hwmon-next v1 0/6] hwmon: (pmbus) Add support for vid mode calculation per page bases Vadim Pasternak
2020-01-13 15:08 ` [PATCH hwmon-next v1 1/6] hwmon: (pmbus/core) Add support for vid mode detection " Vadim Pasternak
@ 2020-01-13 15:08 ` Vadim Pasternak
2020-01-14 14:06 ` Guenter Roeck
2020-01-13 15:08 ` [PATCH hwmon-next v1 3/6] hwmon: (pmbus/tps53679) Extend device list supported by driver Vadim Pasternak
` (3 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: Vadim Pasternak @ 2020-01-13 15:08 UTC (permalink / raw)
To: linux, robh+dt, vijaykhemka; +Cc: linux-hwmon, devicetree, Vadim Pasternak
Extend "vrm_version" with the type for Intel IMVP9 and AMD 6.25mV VID
modes.
Add calculation for those types.
Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
---
drivers/hwmon/pmbus/pmbus.h | 2 +-
drivers/hwmon/pmbus/pmbus_core.c | 8 ++++++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/hwmon/pmbus/pmbus.h b/drivers/hwmon/pmbus/pmbus.h
index 2bdebd0ea9c1..a7f90e18119c 100644
--- a/drivers/hwmon/pmbus/pmbus.h
+++ b/drivers/hwmon/pmbus/pmbus.h
@@ -377,7 +377,7 @@ enum pmbus_sensor_classes {
#define PMBUS_PAGE_VIRTUAL BIT(31)
enum pmbus_data_format { linear = 0, direct, vid };
-enum vrm_version { vr11 = 0, vr12, vr13 };
+enum vrm_version { vr11 = 0, vr12, vr13, imvp9, amd625mv };
struct pmbus_driver_info {
int pages; /* Total number of pages */
diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
index 98226e84b351..811819e41a72 100644
--- a/drivers/hwmon/pmbus/pmbus_core.c
+++ b/drivers/hwmon/pmbus/pmbus_core.c
@@ -709,6 +709,14 @@ static long pmbus_reg2data_vid(struct pmbus_data *data,
if (val >= 0x01)
rv = 500 + (val - 1) * 10;
break;
+ case imvp9:
+ if (val >= 0x01)
+ rv = 200 + (val - 1) * 10;
+ break;
+ case amd625mv:
+ if (val >= 0x0 && val <= 0xd8)
+ rv = DIV_ROUND_CLOSEST(155000 - val * 625, 100);
+ break;
}
return rv;
}
--
2.11.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH hwmon-next v1 2/6] hwmon: (pmbus/core) Add support for Intel IMVP9 and AMD 6.25mV modes
2020-01-13 15:08 ` [PATCH hwmon-next v1 2/6] hwmon: (pmbus/core) Add support for Intel IMVP9 and AMD 6.25mV modes Vadim Pasternak
@ 2020-01-14 14:06 ` Guenter Roeck
0 siblings, 0 replies; 14+ messages in thread
From: Guenter Roeck @ 2020-01-14 14:06 UTC (permalink / raw)
To: Vadim Pasternak; +Cc: robh+dt, vijaykhemka, linux-hwmon, devicetree
On Mon, Jan 13, 2020 at 03:08:37PM +0000, Vadim Pasternak wrote:
> Extend "vrm_version" with the type for Intel IMVP9 and AMD 6.25mV VID
> modes.
> Add calculation for those types.
>
> Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Applied to hwmon-next.
Thanks,
Guenter
> ---
> drivers/hwmon/pmbus/pmbus.h | 2 +-
> drivers/hwmon/pmbus/pmbus_core.c | 8 ++++++++
> 2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/hwmon/pmbus/pmbus.h b/drivers/hwmon/pmbus/pmbus.h
> index 2bdebd0ea9c1..a7f90e18119c 100644
> --- a/drivers/hwmon/pmbus/pmbus.h
> +++ b/drivers/hwmon/pmbus/pmbus.h
> @@ -377,7 +377,7 @@ enum pmbus_sensor_classes {
> #define PMBUS_PAGE_VIRTUAL BIT(31)
>
> enum pmbus_data_format { linear = 0, direct, vid };
> -enum vrm_version { vr11 = 0, vr12, vr13 };
> +enum vrm_version { vr11 = 0, vr12, vr13, imvp9, amd625mv };
>
> struct pmbus_driver_info {
> int pages; /* Total number of pages */
> diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
> index 98226e84b351..811819e41a72 100644
> --- a/drivers/hwmon/pmbus/pmbus_core.c
> +++ b/drivers/hwmon/pmbus/pmbus_core.c
> @@ -709,6 +709,14 @@ static long pmbus_reg2data_vid(struct pmbus_data *data,
> if (val >= 0x01)
> rv = 500 + (val - 1) * 10;
> break;
> + case imvp9:
> + if (val >= 0x01)
> + rv = 200 + (val - 1) * 10;
> + break;
> + case amd625mv:
> + if (val >= 0x0 && val <= 0xd8)
> + rv = DIV_ROUND_CLOSEST(155000 - val * 625, 100);
> + break;
> }
> return rv;
> }
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH hwmon-next v1 3/6] hwmon: (pmbus/tps53679) Extend device list supported by driver
2020-01-13 15:08 [PATCH hwmon-next v1 0/6] hwmon: (pmbus) Add support for vid mode calculation per page bases Vadim Pasternak
2020-01-13 15:08 ` [PATCH hwmon-next v1 1/6] hwmon: (pmbus/core) Add support for vid mode detection " Vadim Pasternak
2020-01-13 15:08 ` [PATCH hwmon-next v1 2/6] hwmon: (pmbus/core) Add support for Intel IMVP9 and AMD 6.25mV modes Vadim Pasternak
@ 2020-01-13 15:08 ` Vadim Pasternak
2020-01-14 14:07 ` Guenter Roeck
2020-01-13 15:08 ` [PATCH hwmon-next v1 4/6] hwmon: (pmbus) Add support for Infineon Multi-phase xdpe122 family controllers Vadim Pasternak
` (2 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: Vadim Pasternak @ 2020-01-13 15:08 UTC (permalink / raw)
To: linux, robh+dt, vijaykhemka; +Cc: linux-hwmon, devicetree, Vadim Pasternak
Extends driver with support of the additional devices:
Texas Instruments Dual channel DCAP+ multiphase controllers: TPS53688.
Extend Kconfig with added device.
Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
---
drivers/hwmon/pmbus/Kconfig | 4 ++--
drivers/hwmon/pmbus/tps53679.c | 2 ++
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
index 59859979571d..0dd30b07bf18 100644
--- a/drivers/hwmon/pmbus/Kconfig
+++ b/drivers/hwmon/pmbus/Kconfig
@@ -200,10 +200,10 @@ config SENSORS_TPS40422
be called tps40422.
config SENSORS_TPS53679
- tristate "TI TPS53679"
+ tristate "TI TPS53679, TPS53688"
help
If you say yes here you get hardware monitoring support for TI
- TPS53679.
+ TPS53679, TPS53688
This driver can also be built as a module. If so, the module will
be called tps53679.
diff --git a/drivers/hwmon/pmbus/tps53679.c b/drivers/hwmon/pmbus/tps53679.c
index 163e8c6aaa8e..9c22e9013dd7 100644
--- a/drivers/hwmon/pmbus/tps53679.c
+++ b/drivers/hwmon/pmbus/tps53679.c
@@ -85,6 +85,7 @@ static int tps53679_probe(struct i2c_client *client,
static const struct i2c_device_id tps53679_id[] = {
{"tps53679", 0},
+ {"tps53688", 0},
{}
};
@@ -92,6 +93,7 @@ MODULE_DEVICE_TABLE(i2c, tps53679_id);
static const struct of_device_id __maybe_unused tps53679_of_match[] = {
{.compatible = "ti,tps53679"},
+ {.compatible = "ti,tps53688"},
{}
};
MODULE_DEVICE_TABLE(of, tps53679_of_match);
--
2.11.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH hwmon-next v1 3/6] hwmon: (pmbus/tps53679) Extend device list supported by driver
2020-01-13 15:08 ` [PATCH hwmon-next v1 3/6] hwmon: (pmbus/tps53679) Extend device list supported by driver Vadim Pasternak
@ 2020-01-14 14:07 ` Guenter Roeck
0 siblings, 0 replies; 14+ messages in thread
From: Guenter Roeck @ 2020-01-14 14:07 UTC (permalink / raw)
To: Vadim Pasternak; +Cc: robh+dt, vijaykhemka, linux-hwmon, devicetree
On Mon, Jan 13, 2020 at 03:08:38PM +0000, Vadim Pasternak wrote:
> Extends driver with support of the additional devices:
> Texas Instruments Dual channel DCAP+ multiphase controllers: TPS53688.
>
> Extend Kconfig with added device.
>
> Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Applied to hwmon-next.
Thanks,
Guenter
> ---
> drivers/hwmon/pmbus/Kconfig | 4 ++--
> drivers/hwmon/pmbus/tps53679.c | 2 ++
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
> index 59859979571d..0dd30b07bf18 100644
> --- a/drivers/hwmon/pmbus/Kconfig
> +++ b/drivers/hwmon/pmbus/Kconfig
> @@ -200,10 +200,10 @@ config SENSORS_TPS40422
> be called tps40422.
>
> config SENSORS_TPS53679
> - tristate "TI TPS53679"
> + tristate "TI TPS53679, TPS53688"
> help
> If you say yes here you get hardware monitoring support for TI
> - TPS53679.
> + TPS53679, TPS53688
>
> This driver can also be built as a module. If so, the module will
> be called tps53679.
> diff --git a/drivers/hwmon/pmbus/tps53679.c b/drivers/hwmon/pmbus/tps53679.c
> index 163e8c6aaa8e..9c22e9013dd7 100644
> --- a/drivers/hwmon/pmbus/tps53679.c
> +++ b/drivers/hwmon/pmbus/tps53679.c
> @@ -85,6 +85,7 @@ static int tps53679_probe(struct i2c_client *client,
>
> static const struct i2c_device_id tps53679_id[] = {
> {"tps53679", 0},
> + {"tps53688", 0},
> {}
> };
>
> @@ -92,6 +93,7 @@ MODULE_DEVICE_TABLE(i2c, tps53679_id);
>
> static const struct of_device_id __maybe_unused tps53679_of_match[] = {
> {.compatible = "ti,tps53679"},
> + {.compatible = "ti,tps53688"},
> {}
> };
> MODULE_DEVICE_TABLE(of, tps53679_of_match);
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH hwmon-next v1 4/6] hwmon: (pmbus) Add support for Infineon Multi-phase xdpe122 family controllers
2020-01-13 15:08 [PATCH hwmon-next v1 0/6] hwmon: (pmbus) Add support for vid mode calculation per page bases Vadim Pasternak
` (2 preceding siblings ...)
2020-01-13 15:08 ` [PATCH hwmon-next v1 3/6] hwmon: (pmbus/tps53679) Extend device list supported by driver Vadim Pasternak
@ 2020-01-13 15:08 ` Vadim Pasternak
2020-01-14 14:08 ` Guenter Roeck
2020-01-13 15:08 ` [PATCH hwmon-next v1 5/6] dt-bindings: Add TI and Infineon VR Controllers as trivial devices Vadim Pasternak
2020-01-13 15:08 ` [PATCH hwmon-next v1 6/6] docs: hwmon: Include 'xdpe12284.rst' into docs Vadim Pasternak
5 siblings, 1 reply; 14+ messages in thread
From: Vadim Pasternak @ 2020-01-13 15:08 UTC (permalink / raw)
To: linux, robh+dt, vijaykhemka; +Cc: linux-hwmon, devicetree, Vadim Pasternak
Add support for devices XDPE12254, XDPE12284.
All these device support two pages.
The below lists of VOUT_MODE command readout with their related VID
protocols, Digital to Analog Converter steps, supported by these
devices:
VR12.0 mode, 5-mV DAC - 0x01;
VR12.5 mode, 10-mV DAC - 0x02;
IMVP9 mode, 5-mV DAC - 0x03;
AMD mode 6.25mV - 0x10.
Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
---
RFC-v1:
Changes added by Vadim:
- Add format for current in;
- Extend functions for both pages with "PMBUS_HAVE_IIN",
"PMBUS_HAVE_PIN" and "PMBUS_HAVE_STATUS_INPUT".
- Drop others than xdpe12284, xdpe12254 devices, since there is not
clear confirmation from Infineon regarding availability of the
others.
---
drivers/hwmon/pmbus/Kconfig | 9 ++++
drivers/hwmon/pmbus/Makefile | 1 +
drivers/hwmon/pmbus/xdpe12284.c | 116 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 126 insertions(+)
create mode 100644 drivers/hwmon/pmbus/xdpe12284.c
diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
index 0dd30b07bf18..128e91de5209 100644
--- a/drivers/hwmon/pmbus/Kconfig
+++ b/drivers/hwmon/pmbus/Kconfig
@@ -228,6 +228,15 @@ config SENSORS_UCD9200
This driver can also be built as a module. If so, the module will
be called ucd9200.
+config SENSORS_XDPE122
+ tristate "Infineon XDPE122 family"
+ help
+ If you say yes here you get hardware monitoring support for Infineon
+ XDPE12254, XDPE12284, device.
+
+ This driver can also be built as a module. If so, the module will
+ be called xdpe12284.
+
config SENSORS_ZL6100
tristate "Intersil ZL6100 and compatibles"
help
diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
index 3f8c1014938b..5421fcc0a01c 100644
--- a/drivers/hwmon/pmbus/Makefile
+++ b/drivers/hwmon/pmbus/Makefile
@@ -26,4 +26,5 @@ obj-$(CONFIG_SENSORS_TPS40422) += tps40422.o
obj-$(CONFIG_SENSORS_TPS53679) += tps53679.o
obj-$(CONFIG_SENSORS_UCD9000) += ucd9000.o
obj-$(CONFIG_SENSORS_UCD9200) += ucd9200.o
+obj-$(CONFIG_SENSORS_XDPE122) += xdpe12284.o
obj-$(CONFIG_SENSORS_ZL6100) += zl6100.o
diff --git a/drivers/hwmon/pmbus/xdpe12284.c b/drivers/hwmon/pmbus/xdpe12284.c
new file mode 100644
index 000000000000..cb03ce30a527
--- /dev/null
+++ b/drivers/hwmon/pmbus/xdpe12284.c
@@ -0,0 +1,116 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Hardware monitoring driver for Infineon Multi-phase Digital VR Controllers
+ *
+ * Copyright (c) 2020 Mellanox Technologies. All rights reserved.
+ */
+
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include "pmbus.h"
+
+#define XDPE122_PROT_VR12_5MV 0x01 /* VR12.0 mode, 5-mV DAC */
+#define XDPE122_PROT_VR12_5_10MV 0x02 /* VR12.5 mode, 10-mV DAC */
+#define XDPE122_PROT_IMVP9_10MV 0x03 /* IMVP9 mode, 10-mV DAC */
+#define XDPE122_AMD_625MV 0x10 /* AMD mode 6.25mV */
+#define XDPE122_PAGE_NUM 2
+
+static int xdpe122_identify(struct i2c_client *client,
+ struct pmbus_driver_info *info)
+{
+ u8 vout_params;
+ int i, ret;
+
+ for (i = 0; i < XDPE122_PAGE_NUM; i++) {
+ /* Read the register with VOUT scaling value.*/
+ ret = pmbus_read_byte_data(client, i, PMBUS_VOUT_MODE);
+ if (ret < 0)
+ return ret;
+
+ vout_params = ret & GENMASK(4, 0);
+
+ switch (vout_params) {
+ case XDPE122_PROT_VR12_5_10MV:
+ info->vrm_version[i] = vr13;
+ break;
+ case XDPE122_PROT_VR12_5MV:
+ info->vrm_version[i] = vr12;
+ break;
+ case XDPE122_PROT_IMVP9_10MV:
+ info->vrm_version[i] = imvp9;
+ case XDPE122_AMD_625MV:
+ info->vrm_version[i] = amd625mv;
+ break;
+ default:
+ return -EINVAL;
+ }
+ }
+
+ return 0;
+}
+
+static struct pmbus_driver_info xdpe122_info = {
+ .pages = XDPE122_PAGE_NUM,
+ .format[PSC_VOLTAGE_IN] = linear,
+ .format[PSC_VOLTAGE_OUT] = vid,
+ .format[PSC_TEMPERATURE] = linear,
+ .format[PSC_CURRENT_IN] = linear,
+ .format[PSC_CURRENT_OUT] = linear,
+ .format[PSC_POWER] = linear,
+ .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |
+ PMBUS_HAVE_IIN | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |
+ PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP |
+ PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT,
+ .func[1] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |
+ PMBUS_HAVE_IIN | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |
+ PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP |
+ PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT,
+ .identify = xdpe122_identify,
+};
+
+static int xdpe122_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
+{
+ struct pmbus_driver_info *info;
+
+ info = devm_kmemdup(&client->dev, &xdpe122_info, sizeof(*info),
+ GFP_KERNEL);
+ if (!info)
+ return -ENOMEM;
+
+ return pmbus_do_probe(client, id, info);
+}
+
+static const struct i2c_device_id xdpe122_id[] = {
+ {"xdpe12254", 0},
+ {"xdpe12284", 0},
+ {}
+};
+
+MODULE_DEVICE_TABLE(i2c, xdpe122_id);
+
+static const struct of_device_id __maybe_unused xdpe122_of_match[] = {
+ {.compatible = "infineon, xdpe12254"},
+ {.compatible = "infineon, xdpe12284"},
+ {}
+};
+MODULE_DEVICE_TABLE(of, xdpe122_of_match);
+
+static struct i2c_driver xdpe122_driver = {
+ .driver = {
+ .name = "xdpe12284",
+ .of_match_table = of_match_ptr(xdpe122_of_match),
+ },
+ .probe = xdpe122_probe,
+ .remove = pmbus_do_remove,
+ .id_table = xdpe122_id,
+};
+
+module_i2c_driver(xdpe122_driver);
+
+MODULE_AUTHOR("Vadim Pasternak <vadimp@mellanox.com>");
+MODULE_DESCRIPTION("PMBus driver for Infineon XDPE122 family");
+MODULE_LICENSE("GPL");
--
2.11.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH hwmon-next v1 4/6] hwmon: (pmbus) Add support for Infineon Multi-phase xdpe122 family controllers
2020-01-13 15:08 ` [PATCH hwmon-next v1 4/6] hwmon: (pmbus) Add support for Infineon Multi-phase xdpe122 family controllers Vadim Pasternak
@ 2020-01-14 14:08 ` Guenter Roeck
0 siblings, 0 replies; 14+ messages in thread
From: Guenter Roeck @ 2020-01-14 14:08 UTC (permalink / raw)
To: Vadim Pasternak; +Cc: robh+dt, vijaykhemka, linux-hwmon, devicetree
On Mon, Jan 13, 2020 at 03:08:39PM +0000, Vadim Pasternak wrote:
> Add support for devices XDPE12254, XDPE12284.
>
> All these device support two pages.
> The below lists of VOUT_MODE command readout with their related VID
> protocols, Digital to Analog Converter steps, supported by these
> devices:
> VR12.0 mode, 5-mV DAC - 0x01;
> VR12.5 mode, 10-mV DAC - 0x02;
> IMVP9 mode, 5-mV DAC - 0x03;
> AMD mode 6.25mV - 0x10.
>
> Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Applied to hwmon-next (with fix applied - see below).
Thanks,
Guenter
> ---
> RFC-v1:
> Changes added by Vadim:
> - Add format for current in;
> - Extend functions for both pages with "PMBUS_HAVE_IIN",
> "PMBUS_HAVE_PIN" and "PMBUS_HAVE_STATUS_INPUT".
> - Drop others than xdpe12284, xdpe12254 devices, since there is not
> clear confirmation from Infineon regarding availability of the
> others.
> ---
> drivers/hwmon/pmbus/Kconfig | 9 ++++
> drivers/hwmon/pmbus/Makefile | 1 +
> drivers/hwmon/pmbus/xdpe12284.c | 116 ++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 126 insertions(+)
> create mode 100644 drivers/hwmon/pmbus/xdpe12284.c
>
> diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
> index 0dd30b07bf18..128e91de5209 100644
> --- a/drivers/hwmon/pmbus/Kconfig
> +++ b/drivers/hwmon/pmbus/Kconfig
> @@ -228,6 +228,15 @@ config SENSORS_UCD9200
> This driver can also be built as a module. If so, the module will
> be called ucd9200.
>
> +config SENSORS_XDPE122
> + tristate "Infineon XDPE122 family"
> + help
> + If you say yes here you get hardware monitoring support for Infineon
> + XDPE12254, XDPE12284, device.
> +
> + This driver can also be built as a module. If so, the module will
> + be called xdpe12284.
> +
> config SENSORS_ZL6100
> tristate "Intersil ZL6100 and compatibles"
> help
> diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
> index 3f8c1014938b..5421fcc0a01c 100644
> --- a/drivers/hwmon/pmbus/Makefile
> +++ b/drivers/hwmon/pmbus/Makefile
> @@ -26,4 +26,5 @@ obj-$(CONFIG_SENSORS_TPS40422) += tps40422.o
> obj-$(CONFIG_SENSORS_TPS53679) += tps53679.o
> obj-$(CONFIG_SENSORS_UCD9000) += ucd9000.o
> obj-$(CONFIG_SENSORS_UCD9200) += ucd9200.o
> +obj-$(CONFIG_SENSORS_XDPE122) += xdpe12284.o
> obj-$(CONFIG_SENSORS_ZL6100) += zl6100.o
> diff --git a/drivers/hwmon/pmbus/xdpe12284.c b/drivers/hwmon/pmbus/xdpe12284.c
> new file mode 100644
> index 000000000000..cb03ce30a527
> --- /dev/null
> +++ b/drivers/hwmon/pmbus/xdpe12284.c
> @@ -0,0 +1,116 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Hardware monitoring driver for Infineon Multi-phase Digital VR Controllers
> + *
> + * Copyright (c) 2020 Mellanox Technologies. All rights reserved.
> + */
> +
> +#include <linux/err.h>
> +#include <linux/i2c.h>
> +#include <linux/init.h>
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include "pmbus.h"
> +
> +#define XDPE122_PROT_VR12_5MV 0x01 /* VR12.0 mode, 5-mV DAC */
> +#define XDPE122_PROT_VR12_5_10MV 0x02 /* VR12.5 mode, 10-mV DAC */
> +#define XDPE122_PROT_IMVP9_10MV 0x03 /* IMVP9 mode, 10-mV DAC */
> +#define XDPE122_AMD_625MV 0x10 /* AMD mode 6.25mV */
> +#define XDPE122_PAGE_NUM 2
> +
> +static int xdpe122_identify(struct i2c_client *client,
> + struct pmbus_driver_info *info)
> +{
> + u8 vout_params;
> + int i, ret;
> +
> + for (i = 0; i < XDPE122_PAGE_NUM; i++) {
> + /* Read the register with VOUT scaling value.*/
> + ret = pmbus_read_byte_data(client, i, PMBUS_VOUT_MODE);
> + if (ret < 0)
> + return ret;
> +
> + vout_params = ret & GENMASK(4, 0);
> +
> + switch (vout_params) {
> + case XDPE122_PROT_VR12_5_10MV:
> + info->vrm_version[i] = vr13;
> + break;
> + case XDPE122_PROT_VR12_5MV:
> + info->vrm_version[i] = vr12;
> + break;
> + case XDPE122_PROT_IMVP9_10MV:
> + info->vrm_version[i] = imvp9;
break;
> + case XDPE122_AMD_625MV:
> + info->vrm_version[i] = amd625mv;
> + break;
> + default:
> + return -EINVAL;
> + }
> + }
> +
> + return 0;
> +}
> +
> +static struct pmbus_driver_info xdpe122_info = {
> + .pages = XDPE122_PAGE_NUM,
> + .format[PSC_VOLTAGE_IN] = linear,
> + .format[PSC_VOLTAGE_OUT] = vid,
> + .format[PSC_TEMPERATURE] = linear,
> + .format[PSC_CURRENT_IN] = linear,
> + .format[PSC_CURRENT_OUT] = linear,
> + .format[PSC_POWER] = linear,
> + .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |
> + PMBUS_HAVE_IIN | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |
> + PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP |
> + PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT,
> + .func[1] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |
> + PMBUS_HAVE_IIN | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |
> + PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP |
> + PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT,
> + .identify = xdpe122_identify,
> +};
> +
> +static int xdpe122_probe(struct i2c_client *client,
> + const struct i2c_device_id *id)
> +{
> + struct pmbus_driver_info *info;
> +
> + info = devm_kmemdup(&client->dev, &xdpe122_info, sizeof(*info),
> + GFP_KERNEL);
> + if (!info)
> + return -ENOMEM;
> +
> + return pmbus_do_probe(client, id, info);
> +}
> +
> +static const struct i2c_device_id xdpe122_id[] = {
> + {"xdpe12254", 0},
> + {"xdpe12284", 0},
> + {}
> +};
> +
> +MODULE_DEVICE_TABLE(i2c, xdpe122_id);
> +
> +static const struct of_device_id __maybe_unused xdpe122_of_match[] = {
> + {.compatible = "infineon, xdpe12254"},
> + {.compatible = "infineon, xdpe12284"},
> + {}
> +};
> +MODULE_DEVICE_TABLE(of, xdpe122_of_match);
> +
> +static struct i2c_driver xdpe122_driver = {
> + .driver = {
> + .name = "xdpe12284",
> + .of_match_table = of_match_ptr(xdpe122_of_match),
> + },
> + .probe = xdpe122_probe,
> + .remove = pmbus_do_remove,
> + .id_table = xdpe122_id,
> +};
> +
> +module_i2c_driver(xdpe122_driver);
> +
> +MODULE_AUTHOR("Vadim Pasternak <vadimp@mellanox.com>");
> +MODULE_DESCRIPTION("PMBus driver for Infineon XDPE122 family");
> +MODULE_LICENSE("GPL");
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH hwmon-next v1 5/6] dt-bindings: Add TI and Infineon VR Controllers as trivial devices
2020-01-13 15:08 [PATCH hwmon-next v1 0/6] hwmon: (pmbus) Add support for vid mode calculation per page bases Vadim Pasternak
` (3 preceding siblings ...)
2020-01-13 15:08 ` [PATCH hwmon-next v1 4/6] hwmon: (pmbus) Add support for Infineon Multi-phase xdpe122 family controllers Vadim Pasternak
@ 2020-01-13 15:08 ` Vadim Pasternak
2020-01-14 14:04 ` Guenter Roeck
2020-01-15 16:05 ` Rob Herring
2020-01-13 15:08 ` [PATCH hwmon-next v1 6/6] docs: hwmon: Include 'xdpe12284.rst' into docs Vadim Pasternak
5 siblings, 2 replies; 14+ messages in thread
From: Vadim Pasternak @ 2020-01-13 15:08 UTC (permalink / raw)
To: linux, robh+dt, vijaykhemka; +Cc: linux-hwmon, devicetree, Vadim Pasternak
Add Texas Instruments Dual channel DCAP+ multiphase controllers:
TPS53679, TPS53688, and Infineon Multi-phase Digital VR controllers
XDPE12284, XDPE12254 as trivial devices.
Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
---
RFC-v1:
Changes added by Vadim:
- Drop others than xdpe12284, xdpe12254 devices, since there is not
clear confirmation from Infineon regarding availability of the
others.
---
Documentation/devicetree/bindings/trivial-devices.yaml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Documentation/devicetree/bindings/trivial-devices.yaml
index 765fd1c170df..dfe22e0a82eb 100644
--- a/Documentation/devicetree/bindings/trivial-devices.yaml
+++ b/Documentation/devicetree/bindings/trivial-devices.yaml
@@ -104,6 +104,10 @@ properties:
- infineon,slb9645tt
# Infineon TLV493D-A1B6 I2C 3D Magnetic Sensor
- infineon,tlv493d-a1b6
+ # Infineon Multi-phase Digital VR Controller xdpe12254
+ - infineon,xdpe12254
+ # Infineon Multi-phase Digital VR Controller xdpe12284
+ - infineon,xdpe12284
# Inspur Power System power supply unit version 1
- inspur,ipsps1
# Intersil ISL29028 Ambient Light and Proximity Sensor
@@ -354,6 +358,10 @@ properties:
- ti,tmp103
# Digital Temperature Sensor
- ti,tmp275
+ # TI Dual channel DCAP+ multiphase controller TPS53679
+ - ti,tps53679
+ # TI Dual channel DCAP+ multiphase controller TPS53688
+ - ti,tps53688
# Winbond/Nuvoton H/W Monitor
- winbond,w83793
# i2c trusted platform module (TPM)
--
2.11.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH hwmon-next v1 5/6] dt-bindings: Add TI and Infineon VR Controllers as trivial devices
2020-01-13 15:08 ` [PATCH hwmon-next v1 5/6] dt-bindings: Add TI and Infineon VR Controllers as trivial devices Vadim Pasternak
@ 2020-01-14 14:04 ` Guenter Roeck
2020-01-15 16:05 ` Rob Herring
1 sibling, 0 replies; 14+ messages in thread
From: Guenter Roeck @ 2020-01-14 14:04 UTC (permalink / raw)
To: Vadim Pasternak; +Cc: robh+dt, vijaykhemka, linux-hwmon, devicetree
On Mon, Jan 13, 2020 at 03:08:40PM +0000, Vadim Pasternak wrote:
> Add Texas Instruments Dual channel DCAP+ multiphase controllers:
> TPS53679, TPS53688, and Infineon Multi-phase Digital VR controllers
> XDPE12284, XDPE12254 as trivial devices.
>
> Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
I assume this patch will be pushed through the devicetree branch. If not,
let me know and I'll apply it to hwmon-next.
> ---
> RFC-v1:
> Changes added by Vadim:
> - Drop others than xdpe12284, xdpe12254 devices, since there is not
> clear confirmation from Infineon regarding availability of the
> others.
> ---
> Documentation/devicetree/bindings/trivial-devices.yaml | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Documentation/devicetree/bindings/trivial-devices.yaml
> index 765fd1c170df..dfe22e0a82eb 100644
> --- a/Documentation/devicetree/bindings/trivial-devices.yaml
> +++ b/Documentation/devicetree/bindings/trivial-devices.yaml
> @@ -104,6 +104,10 @@ properties:
> - infineon,slb9645tt
> # Infineon TLV493D-A1B6 I2C 3D Magnetic Sensor
> - infineon,tlv493d-a1b6
> + # Infineon Multi-phase Digital VR Controller xdpe12254
> + - infineon,xdpe12254
> + # Infineon Multi-phase Digital VR Controller xdpe12284
> + - infineon,xdpe12284
> # Inspur Power System power supply unit version 1
> - inspur,ipsps1
> # Intersil ISL29028 Ambient Light and Proximity Sensor
> @@ -354,6 +358,10 @@ properties:
> - ti,tmp103
> # Digital Temperature Sensor
> - ti,tmp275
> + # TI Dual channel DCAP+ multiphase controller TPS53679
> + - ti,tps53679
> + # TI Dual channel DCAP+ multiphase controller TPS53688
> + - ti,tps53688
> # Winbond/Nuvoton H/W Monitor
> - winbond,w83793
> # i2c trusted platform module (TPM)
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH hwmon-next v1 5/6] dt-bindings: Add TI and Infineon VR Controllers as trivial devices
2020-01-13 15:08 ` [PATCH hwmon-next v1 5/6] dt-bindings: Add TI and Infineon VR Controllers as trivial devices Vadim Pasternak
2020-01-14 14:04 ` Guenter Roeck
@ 2020-01-15 16:05 ` Rob Herring
1 sibling, 0 replies; 14+ messages in thread
From: Rob Herring @ 2020-01-15 16:05 UTC (permalink / raw)
To: Vadim Pasternak
Cc: linux, robh+dt, vijaykhemka, linux-hwmon, devicetree, Vadim Pasternak
On Mon, 13 Jan 2020 15:08:40 +0000, Vadim Pasternak wrote:
> Add Texas Instruments Dual channel DCAP+ multiphase controllers:
> TPS53679, TPS53688, and Infineon Multi-phase Digital VR controllers
> XDPE12284, XDPE12254 as trivial devices.
>
> Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
> ---
> RFC-v1:
> Changes added by Vadim:
> - Drop others than xdpe12284, xdpe12254 devices, since there is not
> clear confirmation from Infineon regarding availability of the
> others.
> ---
> Documentation/devicetree/bindings/trivial-devices.yaml | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
Applied, thanks.
Rob
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH hwmon-next v1 6/6] docs: hwmon: Include 'xdpe12284.rst' into docs
2020-01-13 15:08 [PATCH hwmon-next v1 0/6] hwmon: (pmbus) Add support for vid mode calculation per page bases Vadim Pasternak
` (4 preceding siblings ...)
2020-01-13 15:08 ` [PATCH hwmon-next v1 5/6] dt-bindings: Add TI and Infineon VR Controllers as trivial devices Vadim Pasternak
@ 2020-01-13 15:08 ` Vadim Pasternak
2020-01-14 14:08 ` Guenter Roeck
5 siblings, 1 reply; 14+ messages in thread
From: Vadim Pasternak @ 2020-01-13 15:08 UTC (permalink / raw)
To: linux, robh+dt, vijaykhemka; +Cc: linux-hwmon, devicetree, Vadim Pasternak
Add documentation for 'xdpe122' devices.
Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
---
Documentation/hwmon/xdpe12284.rst | 101 ++++++++++++++++++++++++++++++++++++++
1 file changed, 101 insertions(+)
create mode 100644 Documentation/hwmon/xdpe12284.rst
diff --git a/Documentation/hwmon/xdpe12284.rst b/Documentation/hwmon/xdpe12284.rst
new file mode 100644
index 000000000000..6b7ae98cc536
--- /dev/null
+++ b/Documentation/hwmon/xdpe12284.rst
@@ -0,0 +1,101 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+Kernel driver xdpe122
+=====================
+
+Supported chips:
+
+ * Infineon XDPE12254
+
+ Prefix: 'xdpe12254'
+
+ * Infineon XDPE12284
+
+ Prefix: 'xdpe12284'
+
+Authors:
+
+ Vadim Pasternak <vadimp@mellanox.com>
+
+Description
+-----------
+
+This driver implements support for Infineon Multi-phase XDPE122 family
+dual loop voltage regulators.
+The family includes XDPE12284 and XDPE12254 devices.
+The devices from this family complaint with:
+- Intel VR13 and VR13HC rev 1.3, IMVP8 rev 1.2 and IMPVP9 rev 1.3 DC-DC
+ converter specification.
+- Intel SVID rev 1.9. protocol.
+- PMBus rev 1.3 interface.
+
+Devices support linear format for reading input voltage, input and output current,
+input and output power and temperature.
+Device supports VID format for reading output voltage. The below modes are
+supported:
+- VR12.0 mode, 5-mV DAC - 0x01.
+- VR12.5 mode, 10-mV DAC - 0x02.
+- IMVP9 mode, 5-mV DAC - 0x03.
+- AMD mode 6.25mV - 0x10.
+
+Devices support two pages for telemetry.
+
+The driver provides for current: input, maximum and critical thresholds
+and maximum and critical alarms. Critical thresholds and critical alarm are
+supported only for current output.
+The driver exports the following attributes for via the sysfs files, where
+indexes 1, 2 are for "iin" and 3, 4 for "iout":
+
+**curr[3-4]_crit**
+
+**curr[3-4]_crit_alarm**
+
+**curr[1-4]_input**
+
+**curr[1-4]_label**
+
+**curr[1-4]_max**
+
+**curr[1-4]_max_alarm**
+
+The driver provides for voltage: input, critical and low critical thresholds
+and critical and low critical alarms.
+The driver exports the following attributes for via the sysfs files, where
+indexes 1, 2 are for "vin" and 3, 4 for "vout":
+
+**in[1-4]_crit**
+
+**in[1-4_crit_alarm**
+
+**in[1-4]_input**
+
+**in[1-4_label**
+
+**in[1-4]_lcrit**
+
+**in[1-41_lcrit_alarm**
+
+The driver provides for power: input and alarms. Power alarm is supported only
+for power input.
+The driver exports the following attributes for via the sysfs files, where
+indexes 1, 2 are for "pin" and 3, 4 for "pout":
+
+**power[1-2]_alarm**
+
+**power[1-4]_input**
+
+**power[1-4]_label**
+
+The driver provides for temperature: input, maximum and critical thresholds
+and maximum and critical alarms.
+The driver exports the following attributes for via the sysfs files:
+
+**temp[1-2]_crit**
+
+**temp[1-2]_crit_alarm**
+
+**temp[1-2]_input**
+
+**temp[1-2]_max**
+
+**temp[1-2]_max_alarm**
--
2.11.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH hwmon-next v1 6/6] docs: hwmon: Include 'xdpe12284.rst' into docs
2020-01-13 15:08 ` [PATCH hwmon-next v1 6/6] docs: hwmon: Include 'xdpe12284.rst' into docs Vadim Pasternak
@ 2020-01-14 14:08 ` Guenter Roeck
0 siblings, 0 replies; 14+ messages in thread
From: Guenter Roeck @ 2020-01-14 14:08 UTC (permalink / raw)
To: Vadim Pasternak; +Cc: robh+dt, vijaykhemka, linux-hwmon, devicetree
On Mon, Jan 13, 2020 at 03:08:41PM +0000, Vadim Pasternak wrote:
> Add documentation for 'xdpe122' devices.
>
> Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Applied to hwmon-next (and added to index.rst).
Thanks,
Guenter
> ---
> Documentation/hwmon/xdpe12284.rst | 101 ++++++++++++++++++++++++++++++++++++++
> 1 file changed, 101 insertions(+)
> create mode 100644 Documentation/hwmon/xdpe12284.rst
>
> diff --git a/Documentation/hwmon/xdpe12284.rst b/Documentation/hwmon/xdpe12284.rst
> new file mode 100644
> index 000000000000..6b7ae98cc536
> --- /dev/null
> +++ b/Documentation/hwmon/xdpe12284.rst
> @@ -0,0 +1,101 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +
> +Kernel driver xdpe122
> +=====================
> +
> +Supported chips:
> +
> + * Infineon XDPE12254
> +
> + Prefix: 'xdpe12254'
> +
> + * Infineon XDPE12284
> +
> + Prefix: 'xdpe12284'
> +
> +Authors:
> +
> + Vadim Pasternak <vadimp@mellanox.com>
> +
> +Description
> +-----------
> +
> +This driver implements support for Infineon Multi-phase XDPE122 family
> +dual loop voltage regulators.
> +The family includes XDPE12284 and XDPE12254 devices.
> +The devices from this family complaint with:
> +- Intel VR13 and VR13HC rev 1.3, IMVP8 rev 1.2 and IMPVP9 rev 1.3 DC-DC
> + converter specification.
> +- Intel SVID rev 1.9. protocol.
> +- PMBus rev 1.3 interface.
> +
> +Devices support linear format for reading input voltage, input and output current,
> +input and output power and temperature.
> +Device supports VID format for reading output voltage. The below modes are
> +supported:
> +- VR12.0 mode, 5-mV DAC - 0x01.
> +- VR12.5 mode, 10-mV DAC - 0x02.
> +- IMVP9 mode, 5-mV DAC - 0x03.
> +- AMD mode 6.25mV - 0x10.
> +
> +Devices support two pages for telemetry.
> +
> +The driver provides for current: input, maximum and critical thresholds
> +and maximum and critical alarms. Critical thresholds and critical alarm are
> +supported only for current output.
> +The driver exports the following attributes for via the sysfs files, where
> +indexes 1, 2 are for "iin" and 3, 4 for "iout":
> +
> +**curr[3-4]_crit**
> +
> +**curr[3-4]_crit_alarm**
> +
> +**curr[1-4]_input**
> +
> +**curr[1-4]_label**
> +
> +**curr[1-4]_max**
> +
> +**curr[1-4]_max_alarm**
> +
> +The driver provides for voltage: input, critical and low critical thresholds
> +and critical and low critical alarms.
> +The driver exports the following attributes for via the sysfs files, where
> +indexes 1, 2 are for "vin" and 3, 4 for "vout":
> +
> +**in[1-4]_crit**
> +
> +**in[1-4_crit_alarm**
> +
> +**in[1-4]_input**
> +
> +**in[1-4_label**
> +
> +**in[1-4]_lcrit**
> +
> +**in[1-41_lcrit_alarm**
> +
> +The driver provides for power: input and alarms. Power alarm is supported only
> +for power input.
> +The driver exports the following attributes for via the sysfs files, where
> +indexes 1, 2 are for "pin" and 3, 4 for "pout":
> +
> +**power[1-2]_alarm**
> +
> +**power[1-4]_input**
> +
> +**power[1-4]_label**
> +
> +The driver provides for temperature: input, maximum and critical thresholds
> +and maximum and critical alarms.
> +The driver exports the following attributes for via the sysfs files:
> +
> +**temp[1-2]_crit**
> +
> +**temp[1-2]_crit_alarm**
> +
> +**temp[1-2]_input**
> +
> +**temp[1-2]_max**
> +
> +**temp[1-2]_max_alarm**
^ permalink raw reply [flat|nested] 14+ messages in thread