On Thu, Oct 10, 2019 at 8:17 PM Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx> wrote: > > On Thu, Oct 10, 2019 at 5:19 AM Candle Sun <candlesea@xxxxxxxxx> wrote: > > > > On Thu, Oct 10, 2019 at 2:00 AM Jiri Kosina <jikos@xxxxxxxxxx> wrote: > > > > > > On Wed, 9 Oct 2019, Nicolas Saenz Julienne wrote: > > > > > > > > diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c > > > > > index 3eaee2c..3394222 100644 > > > > > --- a/drivers/hid/hid-core.c > > > > > +++ b/drivers/hid/hid-core.c > > > > > @@ -35,6 +35,8 @@ > > > > > > > > > > #include "hid-ids.h" > > > > > > > > > > +#define GET_COMPLETE_USAGE(page, id) (((page) << 16) + ((id) & 0xffff)) > > > > > > > > Not sure I like the macro. I'd rather have the explicit code. That said, lets > > > > see what Benjamin has to say. > > > > > > Not sure about Benjamin :) but I personally would ask for putting it > > > somewhere into hid.h as static inline. > > > > > > And even if it's for some reason insisted on this staying macro, please at > > > least put it as close to the place(s) it's being used as possible, in > > > order to maintain some code sanity. > > > > > > Thanks, > > > > > > -- > > > Jiri Kosina > > > SUSE Labs > > > > > > > Thanks Nicolas and Jiri, > > If macro is not good, I will change it to static function. But the > > funciton is only used in hid-core.c, > > maybe placing it into hid.h is not good? > > I would rather use a function too (in hid-core.c, as it's not reused > anywhere else), and we can make it simpler from the caller point of > view (if I am not mistaken): > --- > static void concatenate_usage_page(struct hid_parser *parser, int index) > { > parser->local.usage[index] &= 0xFFFF; > parser->local.usage[index] |= (parser->global.usage_page & 0xFFFF) << 16; > } > > // Which can then be called as: > + parser->local.usage[parser->local.usage_index] = usage; > + if (size <= 2) > + concatenate_usage_page(parser, parser->local.usage_index); > + > > // And > for (i = 0; i < parser->local.usage_index; i++) > - if (parser->local.usage_size[i] <= 2) > - parser->local.usage[i] += > parser->global.usage_page << 16; > + if (parser->local.usage_size[i] <= 2) { > + concatenate_usage_page(parser, i); > + } > } > --- > > And now that I have written this, the check on the size could also be > very well integrated in concatenate_usage_page(). > > Cheers, > Benjamin > Thanks Benjamin's detailed directions. I will amend the patch. Candle > > > > Regards, > > Candle >