Re: [PATCH 2/5] power: supply: bd71828: Fix current direction

Matti Vaittinen <[email protected]>
Newsgroups org.kernel.vger.linux-pm,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On 12/08/2026 12:30, Andy Shevchenko wrote:
> On Wed, Aug 12, 2026 at 10:25:36AM +0200, Andreas Kemnade wrote:
>> On Wed, 12 Aug 2026 11:17:36 +0300
>> Andy Shevchenko <[email protected]> wrote:
>>> On Wed, Aug 12, 2026 at 10:10:50AM +0200, Andreas Kemnade wrote:
>>>> On Mon, 10 Aug 2026 13:09:07 +0300
>>>> Matti Vaittinen <[email protected]> wrote:
> 
> ...
> 
>>>> That code is complicated. What about a generic 16bit non_2complemented sign
>>>> to 2-complemented sign function/macro. Such would have prevented the error
>>>> in the first places. So &vals[i] = signbit_to_2complement(be16_to_cpu(tmp_curr), 15) * pwr->curr_factor
>>>
>>> Do you mean existing sign_extend32() from bitops.h?
>>>
>>
>> I don't think it does what is needed. Here we have
>>
>> 0000 0000 0000 0001 -> 1
>> Usually we have
>>
>> 1111 1111 1111 1111 -> -1
>>
>> but here
>>
>> 1000 0000 0000 0001 -> -1
> 
> I see, wouldn't this be then as simple as
> 
> 	sign = $REGVAL & BIT(15 /* sign bit */);
> 	if (sign)
> 		$REGVAL = sign - $REGVAL;

I find this more confusing than the current idea, which effectively is:

if (sign)
    val = val_without_sign * -1;
else
    val = val_without_sign (* 1);

(I can't straight away say if "$REGVAL = sign - $REGVAL;" yields same 
result.)

Yours,
   -- Matti

-- 
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland

~~ When things go utterly wrong vim users can always type :help! ~~
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.