Thread (13 messages) 13 messages, 4 authors, 2018-03-02

Re: [PATCH v2 3/3] gpio: Add Spreadtrum PMIC EIC driver support

From: Baolin Wang <hidden>
Date: 2018-02-28 02:22:11
Also in: linux-gpio, lkml

On 27 February 2018 at 23:54, Andy Shevchenko [off-list ref] wrote:
On Tue, Feb 27, 2018 at 4:35 AM, Baolin Wang [off-list ref] wrote:
quoted
On 26 February 2018 at 20:02, Andy Shevchenko [off-list ref] wrote:
quoted
On Mon, Feb 26, 2018 at 5:01 AM, Baolin Wang [off-list ref] wrote:
quoted
On 25 February 2018 at 20:19, Andy Shevchenko [off-list ref] wrote:
quoted
quoted
quoted
quoted
quoted
+       for (n = 0; n < chip->ngpio; n++) {
+               if (!(BIT(n) & val))
for_each_set_bit().

At some point you may need just to go across lib/ in the kernel and
see what we have there.
I've considered the for_each_set_bit(), it need one 'unsigned long'
type parameter, but we get the value from regmap is 'u32' type. So we
need one extra conversion from 'u32' to 'unsigned long' like:

unsigned long reg = val;

for_each_set_bit(n, &reg, chip->ngpio) {
        .......
}

If you like this conversion, then I can change to use
for_each_set_bit(). Thanks.
Wouldn't it work like

unsigned long val;

...regmap_read(..., &val);

?
It can not work, regmap_read() expects 'unsigned int *'.
Ah, OK, than the temporary variable is a left approach.
quoted
But I can
convert it like this:

for_each_set_bit(n, (unsigned long *)&val, chip->ngpio) {
         .......
}
No, this is a boilerplate for static analyzers and definitely UB.
OK. Thanks for pointing this issue out.

-- 
Baolin.wang
Best Regards
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help