Skip to content

Commit 62be72b

Browse files
MrVanBartosz Golaszewski
authored andcommitted
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: Peng Fan <[email protected]> Reviewed-by: Linus Walleij <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Bartosz Golaszewski <[email protected]>
1 parent 7688a54 commit 62be72b

File tree

1 file changed

+7
-13
lines changed

1 file changed

+7
-13
lines changed

drivers/gpio/gpio-davinci.c

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,6 @@ static inline u32 __gpio_mask(unsigned gpio)
6868
return 1 << (gpio % 32);
6969
}
7070

71-
static inline struct davinci_gpio_regs __iomem *irq2regs(struct irq_data *d)
72-
{
73-
struct davinci_gpio_regs __iomem *g;
74-
75-
g = (__force struct davinci_gpio_regs __iomem *)irq_data_get_irq_chip_data(d);
76-
77-
return g;
78-
}
79-
8071
static int davinci_gpio_irq_setup(struct platform_device *pdev);
8172

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

256247
static void gpio_irq_mask(struct irq_data *d)
257248
{
258-
struct davinci_gpio_regs __iomem *g = irq2regs(d);
249+
struct davinci_gpio_controller *chips = irq_data_get_irq_chip_data(d);
250+
irq_hw_number_t hwirq = irqd_to_hwirq(d);
251+
struct davinci_gpio_regs __iomem *g = chips->regs[hwirq / 32];
259252
uintptr_t mask = (uintptr_t)irq_data_get_irq_handler_data(d);
260253

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

265258
static void gpio_irq_unmask(struct irq_data *d)
266259
{
267-
struct davinci_gpio_regs __iomem *g = irq2regs(d);
260+
struct davinci_gpio_controller *chips = irq_data_get_irq_chip_data(d);
261+
irq_hw_number_t hwirq = irqd_to_hwirq(d);
262+
struct davinci_gpio_regs __iomem *g = chips->regs[hwirq / 32];
268263
uintptr_t mask = (uintptr_t)irq_data_get_irq_handler_data(d);
269264
unsigned status = irqd_get_trigger_type(d);
270265

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

404398
irq_set_chip_and_handler_name(irq, &gpio_irqchip, handle_simple_irq,
405399
"davinci_gpio");
406400
irq_set_irq_type(irq, IRQ_TYPE_NONE);
407-
irq_set_chip_data(irq, (__force void *)g);
401+
irq_set_chip_data(irq, (__force void *)chips);
408402
irq_set_handler_data(irq, (void *)(uintptr_t)__gpio_mask(hw));
409403

410404
return 0;

0 commit comments

Comments
 (0)