@@ -1122,6 +1122,8 @@ static int gic_cnt __initdata;
static bool gic_check_eoimode(struct device_node *node, void __iomem **base)
{
struct resource cpuif_res;
+ u32 mask = 0xffff0fff;
+ u32 gic400_id = 0x0202043B;
of_address_to_resource(node, 1, &cpuif_res);
@@ -1137,11 +1139,11 @@ static bool gic_check_eoimode(struct device_node *node, void __iomem **base)
* 64kB by checking the GICC_IIDR register.
*/
val = readl_relaxed(*base + GIC_CPU_IDENT);
- if (val != 0x0202043B)
+ if ((val & mask) != gic400_id)
return false;
val = readl_relaxed(*base + GIC_CPU_IDENT + 0xF000);
- if (val != 0x0202043B)
+ if ((val & mask) != gic400_id)
return false;
/*