Commit 62be72bd authored by Peng Fan's avatar Peng Fan Committed by Bartosz Golaszewski
Browse files

gpio: davinci: Update irq chip data



Use "struct davinci_gpio_controller *chips" as irq chip data to prepare
for immutable irq chip, then it will be easy to get gpio_chip pointer in
irq mask/unmask.

No functional change.

Signed-off-by: default avatarPeng Fan <peng.fan@nxp.com>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250509-gpio-v1-5-639377c98288@nxp.com


Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
parent 7688a54d
Loading
Loading
Loading
Loading
+7 −13
Original line number Diff line number Diff line
@@ -68,15 +68,6 @@ static inline u32 __gpio_mask(unsigned gpio)
	return 1 << (gpio % 32);
}

static inline struct davinci_gpio_regs __iomem *irq2regs(struct irq_data *d)
{
	struct davinci_gpio_regs __iomem *g;

	g = (__force struct davinci_gpio_regs __iomem *)irq_data_get_irq_chip_data(d);

	return g;
}

static int davinci_gpio_irq_setup(struct platform_device *pdev);

/*--------------------------------------------------------------------------*/
@@ -255,7 +246,9 @@ static int davinci_gpio_probe(struct platform_device *pdev)

static void gpio_irq_mask(struct irq_data *d)
{
	struct davinci_gpio_regs __iomem *g = irq2regs(d);
	struct davinci_gpio_controller *chips = irq_data_get_irq_chip_data(d);
	irq_hw_number_t hwirq = irqd_to_hwirq(d);
	struct davinci_gpio_regs __iomem *g = chips->regs[hwirq / 32];
	uintptr_t mask = (uintptr_t)irq_data_get_irq_handler_data(d);

	writel_relaxed(mask, &g->clr_falling);
@@ -264,7 +257,9 @@ static void gpio_irq_mask(struct irq_data *d)

static void gpio_irq_unmask(struct irq_data *d)
{
	struct davinci_gpio_regs __iomem *g = irq2regs(d);
	struct davinci_gpio_controller *chips = irq_data_get_irq_chip_data(d);
	irq_hw_number_t hwirq = irqd_to_hwirq(d);
	struct davinci_gpio_regs __iomem *g = chips->regs[hwirq / 32];
	uintptr_t mask = (uintptr_t)irq_data_get_irq_handler_data(d);
	unsigned status = irqd_get_trigger_type(d);

@@ -399,12 +394,11 @@ davinci_gpio_irq_map(struct irq_domain *d, unsigned int irq,
{
	struct davinci_gpio_controller *chips =
				(struct davinci_gpio_controller *)d->host_data;
	struct davinci_gpio_regs __iomem *g = chips->regs[hw / 32];

	irq_set_chip_and_handler_name(irq, &gpio_irqchip, handle_simple_irq,
				"davinci_gpio");
	irq_set_irq_type(irq, IRQ_TYPE_NONE);
	irq_set_chip_data(irq, (__force void *)g);
	irq_set_chip_data(irq, (__force void *)chips);
	irq_set_handler_data(irq, (void *)(uintptr_t)__gpio_mask(hw));

	return 0;