[v3,1/4] hwmon: (pmbus/core): Add status byte to regulator flag map

Message ID 20221130165833.3478555-1-Naresh.Solanki@9elements.com
State New
Headers
Series [v3,1/4] hwmon: (pmbus/core): Add status byte to regulator flag map |

Commit Message

Naresh Solanki Nov. 30, 2022, 4:58 p.m. UTC
  Add PMBus status byte to regulator flag map.

Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>

---
Changes:
- Remove status input
- Add comment for PMBUS status byte.
---
 drivers/hwmon/pmbus/pmbus_core.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)


base-commit: 9494c53e1389b120ba461899207ac8a3aab2632c
  

Comments

Guenter Roeck Nov. 30, 2022, 6:06 p.m. UTC | #1
On Wed, Nov 30, 2022 at 05:58:28PM +0100, Naresh Solanki wrote:
> Add PMBus status byte to regulator flag map.
> 
> Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
> 
> ---
> Changes:
> - Remove status input

Not really.

> - Add comment for PMBUS status byte.
> ---
>  drivers/hwmon/pmbus/pmbus_core.c | 20 +++++++++++---------
>  1 file changed, 11 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
> index 95e95783972a..a7b4ae0f1f3b 100644
> --- a/drivers/hwmon/pmbus/pmbus_core.c
> +++ b/drivers/hwmon/pmbus/pmbus_core.c
> @@ -2751,7 +2751,16 @@ struct pmbus_regulator_status_category {
>  };
>  
>  static const struct pmbus_regulator_status_category pmbus_regulator_flag_map[] = {
> -	{
> +	{	/* STATUS byte is always present. */
> +		.func = -1,
> +		.reg = PMBUS_STATUS_BYTE,
> +		.bits = (const struct pmbus_regulator_status_assoc[]) {
> +			{ PB_STATUS_IOUT_OC,   REGULATOR_ERROR_OVER_CURRENT },
> +			{ PB_STATUS_VOUT_OV,   REGULATOR_ERROR_REGULATION_OUT },
> +			{ PB_STATUS_VIN_UV,    REGULATOR_ERROR_UNDER_VOLTAGE },

Still there.

> +			{ },
> +		},
> +	}, {
>  		.func = PMBUS_HAVE_STATUS_VOUT,
>  		.reg = PMBUS_STATUS_VOUT,
>  		.bits = (const struct pmbus_regulator_status_assoc[]) {
> @@ -2768,6 +2777,7 @@ static const struct pmbus_regulator_status_category pmbus_regulator_flag_map[] =
>  			{ PB_IOUT_OC_WARNING,    REGULATOR_ERROR_OVER_CURRENT_WARN },
>  			{ PB_IOUT_OC_FAULT,      REGULATOR_ERROR_OVER_CURRENT },
>  			{ PB_IOUT_OC_LV_FAULT,   REGULATOR_ERROR_OVER_CURRENT },
> +			{ PB_POUT_OP_FAULT,      REGULATOR_ERROR_FAIL },

Please document your changes in the description. There are two functional
changes hidden under "Add PMBus status byte to regulator flag map".
That is inappropriate. Those, as I have pointed out, should be separate
patches.

Guenter

>  			{ },
>  		},
>  	}, {
> @@ -2834,14 +2844,6 @@ static int pmbus_regulator_get_error_flags(struct regulator_dev *rdev, unsigned
>  		if (status & PB_STATUS_POWER_GOOD_N)
>  			*flags |= REGULATOR_ERROR_REGULATION_OUT;
>  	}
> -	/*
> -	 * Unlike most other status bits, PB_STATUS_{IOUT_OC,VOUT_OV} are
> -	 * defined strictly as fault indicators (not warnings).
> -	 */
> -	if (status & PB_STATUS_IOUT_OC)
> -		*flags |= REGULATOR_ERROR_OVER_CURRENT;
> -	if (status & PB_STATUS_VOUT_OV)
> -		*flags |= REGULATOR_ERROR_REGULATION_OUT;
>  
>  	/*
>  	 * If we haven't discovered any thermal faults or warnings via
> 
> base-commit: 9494c53e1389b120ba461899207ac8a3aab2632c
> -- 
> 2.37.3
>
  
Naresh Solanki Nov. 30, 2022, 6:12 p.m. UTC | #2
Hi,

On 30-11-2022 11:36 pm, Guenter Roeck wrote:
> On Wed, Nov 30, 2022 at 05:58:28PM +0100, Naresh Solanki wrote:
>> Add PMBus status byte to regulator flag map.
>>
>> Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
>>
>> ---
>> Changes:
>> - Remove status input
> 
> Not really.
> 
This was about PMBUS_STATUS_INPUT & not STATUS_BYTE
>> - Add comment for PMBUS status byte.
>> ---
>>   drivers/hwmon/pmbus/pmbus_core.c | 20 +++++++++++---------
>>   1 file changed, 11 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
>> index 95e95783972a..a7b4ae0f1f3b 100644
>> --- a/drivers/hwmon/pmbus/pmbus_core.c
>> +++ b/drivers/hwmon/pmbus/pmbus_core.c
>> @@ -2751,7 +2751,16 @@ struct pmbus_regulator_status_category {
>>   };
>>   
>>   static const struct pmbus_regulator_status_category pmbus_regulator_flag_map[] = {
>> -	{
>> +	{	/* STATUS byte is always present. */
>> +		.func = -1,
>> +		.reg = PMBUS_STATUS_BYTE,
>> +		.bits = (const struct pmbus_regulator_status_assoc[]) {
>> +			{ PB_STATUS_IOUT_OC,   REGULATOR_ERROR_OVER_CURRENT },
>> +			{ PB_STATUS_VOUT_OV,   REGULATOR_ERROR_REGULATION_OUT },
>> +			{ PB_STATUS_VIN_UV,    REGULATOR_ERROR_UNDER_VOLTAGE },
> 
> Still there.
> 
STATUS_INPUT remove & STATUS_BYTE retained.
>> +			{ },
>> +		},
>> +	}, {
>>   		.func = PMBUS_HAVE_STATUS_VOUT,
>>   		.reg = PMBUS_STATUS_VOUT,
>>   		.bits = (const struct pmbus_regulator_status_assoc[]) {
>> @@ -2768,6 +2777,7 @@ static const struct pmbus_regulator_status_category pmbus_regulator_flag_map[] =
>>   			{ PB_IOUT_OC_WARNING,    REGULATOR_ERROR_OVER_CURRENT_WARN },
>>   			{ PB_IOUT_OC_FAULT,      REGULATOR_ERROR_OVER_CURRENT },
>>   			{ PB_IOUT_OC_LV_FAULT,   REGULATOR_ERROR_OVER_CURRENT },
>> +			{ PB_POUT_OP_FAULT,      REGULATOR_ERROR_FAIL },
> 
> Please document your changes in the description. There are two functional
> changes hidden under "Add PMBus status byte to regulator flag map".
> That is inappropriate. Those, as I have pointed out, should be separate
> patches.
My bad. I kept this change in this patch. Will remove this from this patch.
> 
> Guenter
> 
>>   			{ },
>>   		},
>>   	}, {
>> @@ -2834,14 +2844,6 @@ static int pmbus_regulator_get_error_flags(struct regulator_dev *rdev, unsigned
>>   		if (status & PB_STATUS_POWER_GOOD_N)
>>   			*flags |= REGULATOR_ERROR_REGULATION_OUT;
>>   	}
>> -	/*
>> -	 * Unlike most other status bits, PB_STATUS_{IOUT_OC,VOUT_OV} are
>> -	 * defined strictly as fault indicators (not warnings).
>> -	 */
>> -	if (status & PB_STATUS_IOUT_OC)
>> -		*flags |= REGULATOR_ERROR_OVER_CURRENT;
>> -	if (status & PB_STATUS_VOUT_OV)
>> -		*flags |= REGULATOR_ERROR_REGULATION_OUT;
>>   
>>   	/*
>>   	 * If we haven't discovered any thermal faults or warnings via
>>
>> base-commit: 9494c53e1389b120ba461899207ac8a3aab2632c
>> -- 
>> 2.37.3
>>

Regards,
Naresh
  
Guenter Roeck Nov. 30, 2022, 6:19 p.m. UTC | #3
On Wed, Nov 30, 2022 at 11:42:32PM +0530, Naresh Solanki wrote:
> Hi,
> 
> On 30-11-2022 11:36 pm, Guenter Roeck wrote:
> > On Wed, Nov 30, 2022 at 05:58:28PM +0100, Naresh Solanki wrote:
> > > Add PMBus status byte to regulator flag map.
> > > 
> > > Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
> > > 
> > > ---
> > > Changes:
> > > - Remove status input
> > 
> > Not really.
> > 
> This was about PMBUS_STATUS_INPUT & not STATUS_BYTE
> > > - Add comment for PMBUS status byte.
> > > ---
> > >   drivers/hwmon/pmbus/pmbus_core.c | 20 +++++++++++---------
> > >   1 file changed, 11 insertions(+), 9 deletions(-)
> > > 
> > > diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
> > > index 95e95783972a..a7b4ae0f1f3b 100644
> > > --- a/drivers/hwmon/pmbus/pmbus_core.c
> > > +++ b/drivers/hwmon/pmbus/pmbus_core.c
> > > @@ -2751,7 +2751,16 @@ struct pmbus_regulator_status_category {
> > >   };
> > >   static const struct pmbus_regulator_status_category pmbus_regulator_flag_map[] = {
> > > -	{
> > > +	{	/* STATUS byte is always present. */
> > > +		.func = -1,
> > > +		.reg = PMBUS_STATUS_BYTE,
> > > +		.bits = (const struct pmbus_regulator_status_assoc[]) {
> > > +			{ PB_STATUS_IOUT_OC,   REGULATOR_ERROR_OVER_CURRENT },
> > > +			{ PB_STATUS_VOUT_OV,   REGULATOR_ERROR_REGULATION_OUT },
> > > +			{ PB_STATUS_VIN_UV,    REGULATOR_ERROR_UNDER_VOLTAGE },
> > 
> > Still there.
> > 
> STATUS_INPUT remove & STATUS_BYTE retained.

You added a check for PB_STATUS_VIN_UV which reports an input failure
which was not reported before. You do so silently without mentioning the
change in the description. In the change log you claim "Remove status input".
Yet, the above adds reporting on an input voltage error. Maybe the
change log was supposed to refer to the input status register, but that
doesn't mean you can silently add a check for PB_STATUS_VIN_UV.

Guenter

> > > +			{ },
> > > +		},
> > > +	}, {
> > >   		.func = PMBUS_HAVE_STATUS_VOUT,
> > >   		.reg = PMBUS_STATUS_VOUT,
> > >   		.bits = (const struct pmbus_regulator_status_assoc[]) {
> > > @@ -2768,6 +2777,7 @@ static const struct pmbus_regulator_status_category pmbus_regulator_flag_map[] =
> > >   			{ PB_IOUT_OC_WARNING,    REGULATOR_ERROR_OVER_CURRENT_WARN },
> > >   			{ PB_IOUT_OC_FAULT,      REGULATOR_ERROR_OVER_CURRENT },
> > >   			{ PB_IOUT_OC_LV_FAULT,   REGULATOR_ERROR_OVER_CURRENT },
> > > +			{ PB_POUT_OP_FAULT,      REGULATOR_ERROR_FAIL },
> > 
> > Please document your changes in the description. There are two functional
> > changes hidden under "Add PMBus status byte to regulator flag map".
> > That is inappropriate. Those, as I have pointed out, should be separate
> > patches.
> My bad. I kept this change in this patch. Will remove this from this patch.
> > 
> > Guenter
> > 
> > >   			{ },
> > >   		},
> > >   	}, {
> > > @@ -2834,14 +2844,6 @@ static int pmbus_regulator_get_error_flags(struct regulator_dev *rdev, unsigned
> > >   		if (status & PB_STATUS_POWER_GOOD_N)
> > >   			*flags |= REGULATOR_ERROR_REGULATION_OUT;
> > >   	}
> > > -	/*
> > > -	 * Unlike most other status bits, PB_STATUS_{IOUT_OC,VOUT_OV} are
> > > -	 * defined strictly as fault indicators (not warnings).
> > > -	 */
> > > -	if (status & PB_STATUS_IOUT_OC)
> > > -		*flags |= REGULATOR_ERROR_OVER_CURRENT;
> > > -	if (status & PB_STATUS_VOUT_OV)
> > > -		*flags |= REGULATOR_ERROR_REGULATION_OUT;
> > >   	/*
> > >   	 * If we haven't discovered any thermal faults or warnings via
> > > 
> > > base-commit: 9494c53e1389b120ba461899207ac8a3aab2632c
> > > -- 
> > > 2.37.3
> > > 
> 
> Regards,
> Naresh
  
Naresh Solanki Nov. 30, 2022, 6:25 p.m. UTC | #4
Hi,

On 30-11-2022 11:49 pm, Guenter Roeck wrote:
> On Wed, Nov 30, 2022 at 11:42:32PM +0530, Naresh Solanki wrote:
>> Hi,
>>
>> On 30-11-2022 11:36 pm, Guenter Roeck wrote:
>>> On Wed, Nov 30, 2022 at 05:58:28PM +0100, Naresh Solanki wrote:
>>>> Add PMBus status byte to regulator flag map.
>>>>
>>>> Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
>>>>
>>>> ---
>>>> Changes:
>>>> - Remove status input
>>>
>>> Not really.
>>>
>> This was about PMBUS_STATUS_INPUT & not STATUS_BYTE
>>>> - Add comment for PMBUS status byte.
>>>> ---
>>>>    drivers/hwmon/pmbus/pmbus_core.c | 20 +++++++++++---------
>>>>    1 file changed, 11 insertions(+), 9 deletions(-)
>>>>
>>>> diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
>>>> index 95e95783972a..a7b4ae0f1f3b 100644
>>>> --- a/drivers/hwmon/pmbus/pmbus_core.c
>>>> +++ b/drivers/hwmon/pmbus/pmbus_core.c
>>>> @@ -2751,7 +2751,16 @@ struct pmbus_regulator_status_category {
>>>>    };
>>>>    static const struct pmbus_regulator_status_category pmbus_regulator_flag_map[] = {
>>>> -	{
>>>> +	{	/* STATUS byte is always present. */
>>>> +		.func = -1,
>>>> +		.reg = PMBUS_STATUS_BYTE,
>>>> +		.bits = (const struct pmbus_regulator_status_assoc[]) {
>>>> +			{ PB_STATUS_IOUT_OC,   REGULATOR_ERROR_OVER_CURRENT },
>>>> +			{ PB_STATUS_VOUT_OV,   REGULATOR_ERROR_REGULATION_OUT },
>>>> +			{ PB_STATUS_VIN_UV,    REGULATOR_ERROR_UNDER_VOLTAGE },
>>>
>>> Still there.
>>>
>> STATUS_INPUT remove & STATUS_BYTE retained.
> 
> You added a check for PB_STATUS_VIN_UV which reports an input failure
> which was not reported before. You do so silently without mentioning the
> change in the description. In the change log you claim "Remove status input".
> Yet, the above adds reporting on an input voltage error. Maybe the
> change log was supposed to refer to the input status register, but that
> doesn't mean you can silently add a check for PB_STATUS_VIN_UV.
Right. I removed STATUS_INPUT but overlooked VIN in STATUS_BYTE.
Will fix this in next revision.
> 
> Guenter
> 
>>>> +			{ },
>>>> +		},
>>>> +	}, {
>>>>    		.func = PMBUS_HAVE_STATUS_VOUT,
>>>>    		.reg = PMBUS_STATUS_VOUT,
>>>>    		.bits = (const struct pmbus_regulator_status_assoc[]) {
>>>> @@ -2768,6 +2777,7 @@ static const struct pmbus_regulator_status_category pmbus_regulator_flag_map[] =
>>>>    			{ PB_IOUT_OC_WARNING,    REGULATOR_ERROR_OVER_CURRENT_WARN },
>>>>    			{ PB_IOUT_OC_FAULT,      REGULATOR_ERROR_OVER_CURRENT },
>>>>    			{ PB_IOUT_OC_LV_FAULT,   REGULATOR_ERROR_OVER_CURRENT },
>>>> +			{ PB_POUT_OP_FAULT,      REGULATOR_ERROR_FAIL },
>>>
>>> Please document your changes in the description. There are two functional
>>> changes hidden under "Add PMBus status byte to regulator flag map".
>>> That is inappropriate. Those, as I have pointed out, should be separate
>>> patches.
>> My bad. I kept this change in this patch. Will remove this from this patch.
>>>
>>> Guenter
>>>
>>>>    			{ },
>>>>    		},
>>>>    	}, {
>>>> @@ -2834,14 +2844,6 @@ static int pmbus_regulator_get_error_flags(struct regulator_dev *rdev, unsigned
>>>>    		if (status & PB_STATUS_POWER_GOOD_N)
>>>>    			*flags |= REGULATOR_ERROR_REGULATION_OUT;
>>>>    	}
>>>> -	/*
>>>> -	 * Unlike most other status bits, PB_STATUS_{IOUT_OC,VOUT_OV} are
>>>> -	 * defined strictly as fault indicators (not warnings).
>>>> -	 */
>>>> -	if (status & PB_STATUS_IOUT_OC)
>>>> -		*flags |= REGULATOR_ERROR_OVER_CURRENT;
>>>> -	if (status & PB_STATUS_VOUT_OV)
>>>> -		*flags |= REGULATOR_ERROR_REGULATION_OUT;
>>>>    	/*
>>>>    	 * If we haven't discovered any thermal faults or warnings via
>>>>
>>>> base-commit: 9494c53e1389b120ba461899207ac8a3aab2632c
>>>> -- 
>>>> 2.37.3
>>>>
>>
>> Regards,
>> Naresh
Regards,
Naresh
  

Patch

diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
index 95e95783972a..a7b4ae0f1f3b 100644
--- a/drivers/hwmon/pmbus/pmbus_core.c
+++ b/drivers/hwmon/pmbus/pmbus_core.c
@@ -2751,7 +2751,16 @@  struct pmbus_regulator_status_category {
 };
 
 static const struct pmbus_regulator_status_category pmbus_regulator_flag_map[] = {
-	{
+	{	/* STATUS byte is always present. */
+		.func = -1,
+		.reg = PMBUS_STATUS_BYTE,
+		.bits = (const struct pmbus_regulator_status_assoc[]) {
+			{ PB_STATUS_IOUT_OC,   REGULATOR_ERROR_OVER_CURRENT },
+			{ PB_STATUS_VOUT_OV,   REGULATOR_ERROR_REGULATION_OUT },
+			{ PB_STATUS_VIN_UV,    REGULATOR_ERROR_UNDER_VOLTAGE },
+			{ },
+		},
+	}, {
 		.func = PMBUS_HAVE_STATUS_VOUT,
 		.reg = PMBUS_STATUS_VOUT,
 		.bits = (const struct pmbus_regulator_status_assoc[]) {
@@ -2768,6 +2777,7 @@  static const struct pmbus_regulator_status_category pmbus_regulator_flag_map[] =
 			{ PB_IOUT_OC_WARNING,    REGULATOR_ERROR_OVER_CURRENT_WARN },
 			{ PB_IOUT_OC_FAULT,      REGULATOR_ERROR_OVER_CURRENT },
 			{ PB_IOUT_OC_LV_FAULT,   REGULATOR_ERROR_OVER_CURRENT },
+			{ PB_POUT_OP_FAULT,      REGULATOR_ERROR_FAIL },
 			{ },
 		},
 	}, {
@@ -2834,14 +2844,6 @@  static int pmbus_regulator_get_error_flags(struct regulator_dev *rdev, unsigned
 		if (status & PB_STATUS_POWER_GOOD_N)
 			*flags |= REGULATOR_ERROR_REGULATION_OUT;
 	}
-	/*
-	 * Unlike most other status bits, PB_STATUS_{IOUT_OC,VOUT_OV} are
-	 * defined strictly as fault indicators (not warnings).
-	 */
-	if (status & PB_STATUS_IOUT_OC)
-		*flags |= REGULATOR_ERROR_OVER_CURRENT;
-	if (status & PB_STATUS_VOUT_OV)
-		*flags |= REGULATOR_ERROR_REGULATION_OUT;
 
 	/*
 	 * If we haven't discovered any thermal faults or warnings via