Commit 65da7d19 authored by Marc Zyngier's avatar Marc Zyngier

irqchip/gic-v3: Do not check trigger configuration of partitionned LPIs

We cannot know the trigger of partitionned PPIs ahead of time
(when we instanciate the partitions), so let's not check them
early.
Reported-by: default avatarJeffyChen <jeffy.chen@rock-chips.com>
Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
parent 6ef6386e
...@@ -892,6 +892,8 @@ static int gic_irq_domain_map(struct irq_domain *d, unsigned int irq, ...@@ -892,6 +892,8 @@ static int gic_irq_domain_map(struct irq_domain *d, unsigned int irq,
return 0; return 0;
} }
#define GIC_IRQ_TYPE_PARTITION (GIC_IRQ_TYPE_LPI + 1)
static int gic_irq_domain_translate(struct irq_domain *d, static int gic_irq_domain_translate(struct irq_domain *d,
struct irq_fwspec *fwspec, struct irq_fwspec *fwspec,
unsigned long *hwirq, unsigned long *hwirq,
...@@ -906,6 +908,7 @@ static int gic_irq_domain_translate(struct irq_domain *d, ...@@ -906,6 +908,7 @@ static int gic_irq_domain_translate(struct irq_domain *d,
*hwirq = fwspec->param[1] + 32; *hwirq = fwspec->param[1] + 32;
break; break;
case 1: /* PPI */ case 1: /* PPI */
case GIC_IRQ_TYPE_PARTITION:
*hwirq = fwspec->param[1] + 16; *hwirq = fwspec->param[1] + 16;
break; break;
case GIC_IRQ_TYPE_LPI: /* LPI */ case GIC_IRQ_TYPE_LPI: /* LPI */
...@@ -917,8 +920,12 @@ static int gic_irq_domain_translate(struct irq_domain *d, ...@@ -917,8 +920,12 @@ static int gic_irq_domain_translate(struct irq_domain *d,
*type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK; *type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK;
/* Make it clear that broken DTs are... broken */ /*
WARN_ON(*type == IRQ_TYPE_NONE); * Make it clear that broken DTs are... broken.
* Partitionned PPIs are an unfortunate exception.
*/
WARN_ON(*type == IRQ_TYPE_NONE &&
fwspec->param[0] != GIC_IRQ_TYPE_PARTITION);
return 0; return 0;
} }
...@@ -1176,7 +1183,7 @@ static void __init gic_populate_ppi_partitions(struct device_node *gic_node) ...@@ -1176,7 +1183,7 @@ static void __init gic_populate_ppi_partitions(struct device_node *gic_node)
.fwnode = gic_data.fwnode, .fwnode = gic_data.fwnode,
.param_count = 3, .param_count = 3,
.param = { .param = {
[0] = 1, [0] = GIC_IRQ_TYPE_PARTITION,
[1] = i, [1] = i,
[2] = IRQ_TYPE_NONE, [2] = IRQ_TYPE_NONE,
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment