This patch adds an 'enable()' callback to cpu capability/feature
detection, allowing features that require some setup or configuration
to get this opportunity once the feature has been detected.
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
        const char *desc;
        u16 capability;
        bool (*matches)(const struct arm64_cpu_capabilities *);
+       void (*enable)(void);
        union {
                struct {        /* To be used for erratum handling only */
                        u32 midr_model;
 
                        pr_info("%s %s\n", info, caps[i].desc);
                cpus_set_cap(caps[i].capability);
        }
+
+       /* second pass allows enable() to consider interacting capabilities */
+       for (i = 0; caps[i].desc; i++) {
+               if (cpus_have_cap(caps[i].capability) && caps[i].enable)
+                       caps[i].enable();
+       }
 }
 
 void check_local_cpu_features(void)