2021-04-15 13:39:52

by Paul Fertser

[permalink] [raw]
Subject: [PATCH] hwmon: pmbus: pxe1610: don't bail out when not all pages are active

Certain VRs might be configured to use only the first output channel and
so the mode for the second will be 0. Handle this gracefully.

Fixes: b9fa0a3acfd8 ("hwmon: (pmbus/core) Add support for vid mode detection per page bases")
Signed-off-by: Paul Fertser <[email protected]>
---
drivers/hwmon/pmbus/pxe1610.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/hwmon/pmbus/pxe1610.c b/drivers/hwmon/pmbus/pxe1610.c
index 517584cff3de..ff6f6e05923b 100644
--- a/drivers/hwmon/pmbus/pxe1610.c
+++ b/drivers/hwmon/pmbus/pxe1610.c
@@ -41,7 +41,16 @@ static int pxe1610_identify(struct i2c_client *client,
info->vrm_version[i] = vr13;
break;
default:
- return -ENODEV;
+ /*
+ * If prior pages are available limit operation
+ * to them
+ */
+ if (i != 0) {
+ info->pages = i;
+ return 0;
+ } else {
+ return -ENODEV;
+ }
}
}
}
--
2.17.1


2021-04-15 15:23:02

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH] hwmon: pmbus: pxe1610: don't bail out when not all pages are active

On 4/15/21 6:34 AM, Paul Fertser wrote:
> Certain VRs might be configured to use only the first output channel and
> so the mode for the second will be 0. Handle this gracefully.
>
> Fixes: b9fa0a3acfd8 ("hwmon: (pmbus/core) Add support for vid mode detection per page bases")
> Signed-off-by: Paul Fertser <[email protected]>
> ---
> drivers/hwmon/pmbus/pxe1610.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/hwmon/pmbus/pxe1610.c b/drivers/hwmon/pmbus/pxe1610.c
> index 517584cff3de..ff6f6e05923b 100644
> --- a/drivers/hwmon/pmbus/pxe1610.c
> +++ b/drivers/hwmon/pmbus/pxe1610.c
> @@ -41,7 +41,16 @@ static int pxe1610_identify(struct i2c_client *client,
> info->vrm_version[i] = vr13;
> break;
> default:
> - return -ENODEV;
> + /*
> + * If prior pages are available limit operation
> + * to them
> + */
> + if (i != 0) {
> + info->pages = i;
> + return 0;
> + } else {
> + return -ENODEV;
> + }

else after return is unnecessary.

Thanks,
Guenter

2021-04-16 10:56:26

by Paul Fertser

[permalink] [raw]
Subject: [PATCH v2] hwmon: pmbus: pxe1610: don't bail out when not all pages are active

Certain VRs might be configured to use only the first output channel and
so the mode for the second will be 0. Handle this gracefully.

Fixes: b9fa0a3acfd8 ("hwmon: (pmbus/core) Add support for vid mode detection per page bases")
Signed-off-by: Paul Fertser <[email protected]>
---

Notes:
Changes for v2:
- Use more imperative style

drivers/hwmon/pmbus/pxe1610.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/drivers/hwmon/pmbus/pxe1610.c b/drivers/hwmon/pmbus/pxe1610.c
index da27ce34ee3f..eb4a06003b7f 100644
--- a/drivers/hwmon/pmbus/pxe1610.c
+++ b/drivers/hwmon/pmbus/pxe1610.c
@@ -41,6 +41,15 @@ static int pxe1610_identify(struct i2c_client *client,
info->vrm_version[i] = vr13;
break;
default:
+ /*
+ * If prior pages are available limit operation
+ * to them
+ */
+ if (i != 0) {
+ info->pages = i;
+ return 0;
+ }
+
return -ENODEV;
}
}
--
2.20.1

2021-04-16 14:30:05

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v2] hwmon: pmbus: pxe1610: don't bail out when not all pages are active

On Fri, Apr 16, 2021 at 01:29:04PM +0300, Paul Fertser wrote:
> Certain VRs might be configured to use only the first output channel and
> so the mode for the second will be 0. Handle this gracefully.
>
> Fixes: b9fa0a3acfd8 ("hwmon: (pmbus/core) Add support for vid mode detection per page bases")
> Signed-off-by: Paul Fertser <[email protected]>

Applied.

Thanks,
Guenter

> ---
>
> Notes:
> Changes for v2:
> - Use more imperative style
>
> drivers/hwmon/pmbus/pxe1610.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/hwmon/pmbus/pxe1610.c b/drivers/hwmon/pmbus/pxe1610.c
> index da27ce34ee3f..eb4a06003b7f 100644
> --- a/drivers/hwmon/pmbus/pxe1610.c
> +++ b/drivers/hwmon/pmbus/pxe1610.c
> @@ -41,6 +41,15 @@ static int pxe1610_identify(struct i2c_client *client,
> info->vrm_version[i] = vr13;
> break;
> default:
> + /*
> + * If prior pages are available limit operation
> + * to them
> + */
> + if (i != 0) {
> + info->pages = i;
> + return 0;
> + }
> +
> return -ENODEV;
> }
> }
> --
> 2.20.1
>