Browse Source

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>
main
Rob Herring 3 years ago committed by David Gibson
parent
commit
8fd24744e3
  1. 14
      checks.c

14
checks.c

@ -1573,14 +1573,20 @@ static void check_interrupt_provider(struct check *c,
struct node *node) struct node *node)
{ {
struct property *prop; struct property *prop;
bool irq_provider = node_is_interrupt_provider(node);


if (!node_is_interrupt_provider(node)) prop = get_property(node, "#interrupt-cells");
if (irq_provider && !prop) {
FAIL(c, dti, node,
"Missing '#interrupt-cells' in interrupt provider");
return; return;
}


prop = get_property(node, "#interrupt-cells"); if (!irq_provider && prop) {
if (!prop)
FAIL(c, dti, node, FAIL(c, dti, node,
"Missing #interrupt-cells in interrupt provider"); "'#interrupt-cells' found, but node is not an interrupt provider");
return;
}
} }
WARNING(interrupt_provider, check_interrupt_provider, NULL, &interrupts_extended_is_cell); WARNING(interrupt_provider, check_interrupt_provider, NULL, &interrupts_extended_is_cell);



Loading…
Cancel
Save