[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241003131642.472298-1-prabhakar.mahadev-lad.rj@bp.renesas.com>
Date: Thu, 3 Oct 2024 14:16:41 +0100
From: Prabhakar <prabhakar.csengg@...il.com>
To: Linus Walleij <linus.walleij@...aro.org>,
Geert Uytterhoeven <geert+renesas@...der.be>
Cc: linux-gpio@...r.kernel.org,
linux-kernel@...r.kernel.org,
linux-renesas-soc@...r.kernel.org,
Prabhakar <prabhakar.csengg@...il.com>,
Biju Das <biju.das.jz@...renesas.com>,
Fabrizio Castro <fabrizio.castro.jz@...esas.com>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@...renesas.com>
Subject: [PATCH] pinctrl: renesas: rzg2l: Always call rzg2l_gpio_request() for interrupt pins
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@...renesas.com>
Ensure that rzg2l_gpio_request() is called for GPIO pins configured as
interrupts, regardless of whether they are muxed in u-boot. This
guarantees that the pinctrl core is aware of the GPIO pin usage via
pinctrl_gpio_request(), which is invoked through rzg2l_gpio_request().
Fixes: 2fd4fe19d0150 ("pinctrl: renesas: rzg2l: Configure interrupt input mode")
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@...renesas.com>
---
Output before this patch on G2L/SMARC:
root@...rc-rzg2l:~# cat /sys/kernel/debug/pinctrl/11030000.pinctrl-pinctrl-rzg2l/pinmux-pins | grep P2_1
pin 17 (P2_1): UNCLAIMED
Output after this patch G2L/SMARC:
root@...rc-rzg2l:~# cat /sys/kernel/debug/pinctrl/11030000.pinctrl-pinctrl-rzg2l/pinmux-pins | grep P2_1
pin 17 (P2_1): GPIO 11030000.pinctrl:529
---
drivers/pinctrl/renesas/pinctrl-rzg2l.c | 15 +++------------
1 file changed, 3 insertions(+), 12 deletions(-)
diff --git a/drivers/pinctrl/renesas/pinctrl-rzg2l.c b/drivers/pinctrl/renesas/pinctrl-rzg2l.c
index 60ef20ca3ccf..1dceaf8290ea 100644
--- a/drivers/pinctrl/renesas/pinctrl-rzg2l.c
+++ b/drivers/pinctrl/renesas/pinctrl-rzg2l.c
@@ -2368,20 +2368,11 @@ static const struct irq_chip rzg2l_gpio_irqchip = {
static int rzg2l_gpio_interrupt_input_mode(struct gpio_chip *chip, unsigned int offset)
{
- struct rzg2l_pinctrl *pctrl = gpiochip_get_data(chip);
- const struct pinctrl_pin_desc *pin_desc = &pctrl->desc.pins[offset];
- u64 *pin_data = pin_desc->drv_data;
- u32 off = RZG2L_PIN_CFG_TO_PORT_OFFSET(*pin_data);
- u8 bit = RZG2L_PIN_ID_TO_PIN(offset);
- u8 reg8;
int ret;
- reg8 = readb(pctrl->base + PMC(off));
- if (reg8 & BIT(bit)) {
- ret = rzg2l_gpio_request(chip, offset);
- if (ret)
- return ret;
- }
+ ret = rzg2l_gpio_request(chip, offset);
+ if (ret)
+ return ret;
return rzg2l_gpio_direction_input(chip, offset);
}
--
2.43.0
Powered by blists - more mailing lists