Re: [PATCH v4 10/10] gpio: mxc: use BIT() macro for single-bit operations
From: Frank Li
Date: Thu Oct 08 2026 - 16:27:00 EST
On Wed, Oct 07, 2026 at 06:44:25PM +0800, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@xxxxxxx>
>
> Replace open-coded '1 << n' shifts with the BIT() macro throughout
> the driver for consistency and to avoid potential signed-shift issues
> when the bit index is 31 (1 << 31 is implementation-defined for
> signed int).
>
> No functional change.
>
> Reviewed-by: Linus Walleij <linusw@xxxxxxxxxx>
> Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
> ---
Reviewed-by: Frank Li <Frank.Li@xxxxxxx>
> drivers/gpio/gpio-mxc.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
> index 39de616cd434..ad50b602c4a1 100644
> --- a/drivers/gpio/gpio-mxc.c
> +++ b/drivers/gpio/gpio-mxc.c
> @@ -209,7 +209,7 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type)
> int edge;
> void __iomem *reg = port->base;
>
> - port->both_edges &= ~(1 << gpio_idx);
> + port->both_edges &= ~BIT(gpio_idx);
> switch (type) {
> case IRQ_TYPE_EDGE_RISING:
> edge = GPIO_INT_RISE_EDGE;
> @@ -229,7 +229,7 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type)
> edge = GPIO_INT_HIGH_LEV;
> pr_debug("mxc: set GPIO %d to high trigger\n", gpio_idx);
> }
> - port->both_edges |= 1 << gpio_idx;
> + port->both_edges |= BIT(gpio_idx);
> }
> break;
> case IRQ_TYPE_LEVEL_LOW:
> @@ -246,10 +246,10 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type)
> if (GPIO_EDGE_SEL >= 0) {
> val = readl(port->base + GPIO_EDGE_SEL);
> if (edge == GPIO_INT_BOTH_EDGES)
> - writel(val | (1 << gpio_idx),
> + writel(val | BIT(gpio_idx),
> port->base + GPIO_EDGE_SEL);
> else
> - writel(val & ~(1 << gpio_idx),
> + writel(val & ~BIT(gpio_idx),
> port->base + GPIO_EDGE_SEL);
> }
>
> @@ -259,7 +259,7 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type)
> writel(val | field_prep(MXC_ICR_MASK(gpio_idx), edge), reg);
> }
>
> - writel(1 << gpio_idx, port->base + GPIO_ISR);
> + writel(BIT(gpio_idx), port->base + GPIO_ISR);
> port->pad_type[gpio_idx] = type;
> }
>
> @@ -298,12 +298,12 @@ static void mxc_gpio_irq_handler(struct mxc_gpio_port *port, u32 irq_stat)
> while (irq_stat != 0) {
> int irqoffset = fls(irq_stat) - 1;
>
> - if (port->both_edges & (1 << irqoffset))
> + if (port->both_edges & BIT(irqoffset))
> mxc_flip_edge(port, irqoffset);
>
> generic_handle_domain_irq(port->domain, irqoffset);
>
> - irq_stat &= ~(1 << irqoffset);
> + irq_stat &= ~BIT(irqoffset);
> }
> }
>
>
> --
> 2.51.0
>
>