Thread (6 messages) 6 messages, 4 authors, 2021-12-12

Re: [PATCH v2 5/8] pinctrl: nuvoton: Add driver for WPCM450

From: Zev Weiss <hidden>
Date: 2021-12-09 10:45:31
Also in: linux-gpio, lkml, openbmc

On Wed, Dec 08, 2021 at 05:58:30AM PST, Jonathan Neuschäfer wrote:
Hi,

On Wed, Dec 08, 2021 at 01:24:18PM +0200, Andy Shevchenko wrote:
quoted
On Tuesday, December 7, 2021, Jonathan Neuschäfer [off-list ref]
<snip>
quoted
quoted
+static void wpcm450_gpio_irqhandler(struct irq_desc *desc)
+{
+       struct wpcm450_gpio *gpio = gpiochip_get_data(irq_desc_
get_handler_data(desc));
+       struct wpcm450_pinctrl *pctrl = gpio->pctrl;
+       struct irq_chip *chip = irq_desc_get_chip(desc);
+       unsigned long pending;
+       unsigned long flags;
+       unsigned long ours;
+       unsigned int bit;
+
+       ours = ((1UL << gpio->num_irqs) - 1) << gpio->first_irq_bit;

BIT()
I'll use it, but in this case, I think it doesn't simplify much the
whole expression all that much. Is there perhaps a macro that
constructs a continuous bitmask of N bits, perhaps additionally
left-shifted by M bits?

Maybe somewhere in the bitmap_* API...
There's GENMASK(), though it takes a high bit and low bit rather than a
bit position and count, so it'd require a small bit of arithmetic, e.g.

  lastbit = gpio->first_irq_bit + gpio->num_irqs - 1;
  ours = GENMASK(lastbit, gpio->first_irq_bit);

or a manual shift:

  ours = GENMASK(gpio->num_irqs - 1, 0) << gpio->first_irq_bit;

(I don't have any terribly strong opinions on which of these is best,
personally.)



Zev
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help