Skip to content

Commit

Permalink
irqchip: atmel-aic: Define irq fixups for atmel SoCs
Browse files Browse the repository at this point in the history
Define SoCs that need irq fixups before enabling the AIC irqchip.

At the moment we're only fixing irq generated by the RTC block, but other
fixups will be added later on.

Signed-off-by: Boris BREZILLON <boris.brezillon@free-electrons.com>
Link: https://lkml.kernel.org/r/1405016741-2407-4-git-send-email-boris.brezillon@free-electrons.com
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
  • Loading branch information
Boris BREZILLON authored and Jason Cooper committed Jul 17, 2014
1 parent 3d61467 commit 6704d12
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
15 changes: 15 additions & 0 deletions drivers/irqchip/irq-atmel-aic.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,19 @@ static const struct irq_domain_ops aic_irq_ops = {
.xlate = aic_irq_domain_xlate,
};

static void __init at91sam9_aic_irq_fixup(struct device_node *root)
{
aic_common_rtc_irq_fixup(root);
}

static const struct of_device_id __initdata aic_irq_fixups[] = {
{ .compatible = "atmel,at91sam9g45", .data = at91sam9_aic_irq_fixup },
{ .compatible = "atmel,at91sam9n12", .data = at91sam9_aic_irq_fixup },
{ .compatible = "atmel,at91sam9rl", .data = at91sam9_aic_irq_fixup },
{ .compatible = "atmel,at91sam9x5", .data = at91sam9_aic_irq_fixup },
{ /* sentinel */ },
};

static int __init aic_of_init(struct device_node *node,
struct device_node *parent)
{
Expand All @@ -225,6 +238,8 @@ static int __init aic_of_init(struct device_node *node,
if (IS_ERR(domain))
return PTR_ERR(domain);

aic_common_irq_fixup(aic_irq_fixups);

aic_domain = domain;
gc = irq_get_domain_generic_chip(domain, 0);

Expand Down
12 changes: 12 additions & 0 deletions drivers/irqchip/irq-atmel-aic5.c
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,16 @@ static const struct irq_domain_ops aic5_irq_ops = {
.xlate = aic5_irq_domain_xlate,
};

static void __init sama5d3_aic_irq_fixup(struct device_node *root)
{
aic_common_rtc_irq_fixup(root);
}

static const struct of_device_id __initdata aic5_irq_fixups[] = {
{ .compatible = "atmel,sama5d3", .data = sama5d3_aic_irq_fixup },
{ /* sentinel */ },
};

static int __init aic5_of_init(struct device_node *node,
struct device_node *parent,
int nirqs)
Expand All @@ -310,6 +320,8 @@ static int __init aic5_of_init(struct device_node *node,
if (IS_ERR(domain))
return PTR_ERR(domain);

aic_common_irq_fixup(aic5_irq_fixups);

aic5_domain = domain;
nchips = aic5_domain->revmap_size / 32;
for (i = 0; i < nchips; i++) {
Expand Down

0 comments on commit 6704d12

Please sign in to comment.