Skip to content

Commit 08f12b4

Browse files
prabhakarladMarc Zyngier
authored andcommitted
gpio: gpiolib: Allow free() callback to be overridden
Allow free() callback to be overridden from irq_domain_ops for hierarchical chips. This allows drivers to free up resources which are allocated during child_to_parent_hwirq()/populate_parent_alloc_arg() callbacks. On Renesas RZ/G2L platform a bitmap is maintained for TINT slots, a slot is allocated in child_to_parent_hwirq() callback which is freed up in free callback hence this override. Signed-off-by: Lad Prabhakar <[email protected]> Reviewed-by: Geert Uytterhoeven <[email protected]> Acked-by: Bartosz Golaszewski <[email protected]> Signed-off-by: Marc Zyngier <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 3fed095 commit 08f12b4

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

drivers/gpio/gpiolib.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1181,15 +1181,18 @@ static void gpiochip_hierarchy_setup_domain_ops(struct irq_domain_ops *ops)
11811181
ops->activate = gpiochip_irq_domain_activate;
11821182
ops->deactivate = gpiochip_irq_domain_deactivate;
11831183
ops->alloc = gpiochip_hierarchy_irq_domain_alloc;
1184-
ops->free = irq_domain_free_irqs_common;
11851184

11861185
/*
1187-
* We only allow overriding the translate() function for
1186+
* We only allow overriding the translate() and free() functions for
11881187
* hierarchical chips, and this should only be done if the user
1189-
* really need something other than 1:1 translation.
1188+
* really need something other than 1:1 translation for translate()
1189+
* callback and free if user wants to free up any resources which
1190+
* were allocated during callbacks, for example populate_parent_alloc_arg.
11901191
*/
11911192
if (!ops->translate)
11921193
ops->translate = gpiochip_hierarchy_irq_domain_translate;
1194+
if (!ops->free)
1195+
ops->free = irq_domain_free_irqs_common;
11931196
}
11941197

11951198
static int gpiochip_hierarchy_add_domain(struct gpio_chip *gc)

0 commit comments

Comments
 (0)