rockchip: Fix GICv2 interrupts
authorAntonio Nino Diaz <antonio.ninodiaz@arm.com>
Mon, 28 Jan 2019 14:35:40 +0000 (14:35 +0000)
committerAntonio Nino Diaz <antonio.ninodiaz@arm.com>
Mon, 28 Jan 2019 14:35:50 +0000 (14:35 +0000)
After the removal of deprecated interfaces in TF 2.0 the migration to
the new GIC driver interfaces was done incorrectly in rk3328 and rk3368:
2d6f1f01b141 ("rockchip: Migrate to new interfaces").

In the GICv2 driver it is mandated that all interrupts are Group 0
interrupts. This patch simply moves all Group 1 interrupts to Group 0.

Change-Id: I224c0135603eb5b81bd512976361500c0d129a91
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
plat/rockchip/common/rockchip_gicv2.c
plat/rockchip/rk3328/rk3328_def.h
plat/rockchip/rk3368/rk3368_def.h

index 222a88261a9d58338832fdc6be0f19a514a44e8e..8db2b30d1854f4f69f787fc4be458551b9ca9b6b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
 #pragma weak plat_rockchip_gic_pcpu_init
 
 /******************************************************************************
- * On a GICv2 system, the Group 1 secure interrupts are treated as Group 0
- * interrupts.
+ * List of interrupts.
  *****************************************************************************/
 static const interrupt_prop_t g0_interrupt_props[] = {
-       PLAT_RK_GICV2_G1S_IRQS
+       PLAT_RK_GICV2_G0_IRQS
 };
 
 /*
index 4704a72edb50a3c168e6136cd0c464e67aa3c0f8..0ce13ad129d615f8223de8b71db124505d287441 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2017-2019, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
 #define RK_IRQ_SEC_SGI_7       15
 
 /*
- * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3
- * terminology. On a GICv2 system or mode, the lists will be merged and treated
- * as Group 0 interrupts.
+ * Define a list of Group 0 interrupts.
  */
-#define PLAT_RK_GICV2_G1S_IRQS                                         \
+#define PLAT_RK_GICV2_G0_IRQS                                          \
        INTR_PROP_DESC(RK_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY,  \
-                      GICV2_INTR_GROUP1, GIC_INTR_CFG_LEVEL),          \
+                      GICV2_INTR_GROUP0, GIC_INTR_CFG_LEVEL),          \
        INTR_PROP_DESC(RK_IRQ_SEC_SGI_6, GIC_HIGHEST_SEC_PRIORITY,      \
-                      GICV2_INTR_GROUP1, GIC_INTR_CFG_LEVEL)
+                      GICV2_INTR_GROUP0, GIC_INTR_CFG_LEVEL)
 
 #define SHARE_MEM_BASE          0x100000/* [1MB, 1MB+60K]*/
 #define SHARE_MEM_PAGE_NUM      15
index a7be7c367d8fee54f8763cc2ceb2cc14a2d16abc..10ac77b1ed349777004101fab5442a666968a95a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
 #define RK_IRQ_SEC_SGI_7       15
 
 /*
- * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3
- * terminology. On a GICv2 system or mode, the lists will be merged and treated
- * as Group 0 interrupts.
+ * Define a list of Group 0 interrupts.
  */
-#define PLAT_RK_GICV2_G1S_IRQS                                         \
+#define PLAT_RK_GICV2_G0_IRQS                                          \
        INTR_PROP_DESC(RK_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY,  \
-                      GICV2_INTR_GROUP1, GIC_INTR_CFG_LEVEL)
+                      GICV2_INTR_GROUP0, GIC_INTR_CFG_LEVEL)
 
 #endif /* RK3368_DEF_H */