]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - drivers/irqchip/irq-gic-v3-its.c
irqchip/gicv3-its: Add HW revision detection and configuration
[mirror_ubuntu-jammy-kernel.git] / drivers / irqchip / irq-gic-v3-its.c
index 549e71670f239f52d6cab8c9ddd395fe273aa3af..82622afc916bbcb39402c821863646e9c6da5432 100644 (file)
@@ -37,6 +37,8 @@
 #include <asm/cputype.h>
 #include <asm/exception.h>
 
+#include "irq-gic-common.h"
+
 #define ITS_FLAGS_CMDQ_NEEDS_FLUSHING          (1 << 0)
 
 #define RDIST_FLAGS_PROPBASE_NEEDS_FLUSHING    (1 << 0)
@@ -1375,6 +1377,18 @@ static int its_force_quiescent(void __iomem *base)
        }
 }
 
+static const struct gic_quirk its_quirks[] = {
+       {
+       }
+};
+
+static void its_enable_quirks(struct its_node *its)
+{
+       u32 iidr = readl_relaxed(its->base + GITS_IIDR);
+
+       gic_enable_quirks(iidr, its_quirks, its);
+}
+
 static int its_probe(struct device_node *node, struct irq_domain *parent)
 {
        struct resource res;
@@ -1433,6 +1447,8 @@ static int its_probe(struct device_node *node, struct irq_domain *parent)
        }
        its->cmd_write = its->cmd_base;
 
+       its_enable_quirks(its);
+
        err = its_alloc_tables(node->full_name, its);
        if (err)
                goto out_free_cmd;