checks: Ensure '#interrupt-cells' only exists in interrupt providers

The interrupt provider check currently checks if an interrupt provider
has #interrupt-cells, but not whether #interrupt-cells is present
outside of interrupt-providers. Rework the check to cover the latter
case.

Cc: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rob Herring <robh@kernel.org>
Message-Id: <20211011191245.1009682-4-robh@kernel.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
Rob Herring 2021-10-11 14:12:44 -05:00 committed by David Gibson
parent d8d1a9a778
commit 8fd24744e3

View file

@ -1573,14 +1573,20 @@ static void check_interrupt_provider(struct check *c,
struct node *node)
{
struct property *prop;
if (!node_is_interrupt_provider(node))
return;
bool irq_provider = node_is_interrupt_provider(node);
prop = get_property(node, "#interrupt-cells");
if (!prop)
if (irq_provider && !prop) {
FAIL(c, dti, node,
"Missing #interrupt-cells in interrupt provider");
"Missing '#interrupt-cells' in interrupt provider");
return;
}
if (!irq_provider && prop) {
FAIL(c, dti, node,
"'#interrupt-cells' found, but node is not an interrupt provider");
return;
}
}
WARNING(interrupt_provider, check_interrupt_provider, NULL, &interrupts_extended_is_cell);