From 11d0f0a294c44d919d695162f4b67e70d0f8e016 Mon Sep 17 00:00:00 2001 From: Stephanos Ioannidis Date: Thu, 19 Dec 2019 12:41:44 +0900 Subject: [PATCH] drivers: interrupt_controller: Refactor GIC configurations The current GIC configuration scheme is designed to support only one specific type and version of GIC (i.e. GIC-400 that implements the GICv2 interface). This commit adds a set of GIC version configuration symbols that can be selected by the SoC configuration to specify which version of GIC interface is implemented in the SoC. Signed-off-by: Stephanos Ioannidis --- drivers/interrupt_controller/Kconfig | 9 ++---- drivers/interrupt_controller/Kconfig.gic | 39 ++++++++++++++++++++++++ soc/arm/xilinx_zynqmp/Kconfig.soc | 2 +- 3 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 drivers/interrupt_controller/Kconfig.gic diff --git a/drivers/interrupt_controller/Kconfig b/drivers/interrupt_controller/Kconfig index eae6f632ce2..b07c68f0cda 100644 --- a/drivers/interrupt_controller/Kconfig +++ b/drivers/interrupt_controller/Kconfig @@ -39,13 +39,6 @@ config VEXRISCV_LITEX_IRQ help IRQ implementation for LiteX VexRiscv -config GIC - bool "ARM Generic Interrupt Controller (GIC)" - depends on CPU_CORTEX_R - help - The ARM Generic Interrupt Controller works with Cortex-A and - Cortex-R processors. - source "drivers/interrupt_controller/Kconfig.multilevel" source "drivers/interrupt_controller/Kconfig.loapic" @@ -60,4 +53,6 @@ source "drivers/interrupt_controller/Kconfig.rv32m1" source "drivers/interrupt_controller/Kconfig.sam0" +source "drivers/interrupt_controller/Kconfig.gic" + endmenu diff --git a/drivers/interrupt_controller/Kconfig.gic b/drivers/interrupt_controller/Kconfig.gic new file mode 100644 index 00000000000..bff602d7819 --- /dev/null +++ b/drivers/interrupt_controller/Kconfig.gic @@ -0,0 +1,39 @@ +# ARM Generic Interrupt Controller (GIC) configuration + +# Copyright (c) 2019 Stephanos Ioannidis +# SPDX-License-Identifier: Apache-2.0 + +if CPU_CORTEX + +config GIC + bool + +config GIC_V1 + bool + select GIC + help + The ARM Generic Interrupt Controller v1 (e.g. PL390) works with the + ARM Cortex-family processors. + +config GIC_V2 + bool + select GIC + help + The ARM Generic Interrupt Controller v2 (e.g. GIC-400) works with the + ARM Cortex-family processors. + +config GIC_V3 + bool + select GIC + help + The ARM Generic Interrupt Controller v3 (e.g. GIC-500 and GIC-600) + works with the ARM Cortex-family processors. + +config GIC_VER + int + depends on GIC + default 1 if GIC_V1 + default 2 if GIC_V2 + default 3 if GIC_V3 + +endif # CPU_CORTEX diff --git a/soc/arm/xilinx_zynqmp/Kconfig.soc b/soc/arm/xilinx_zynqmp/Kconfig.soc index cb0a41a9be0..9ce2180fac7 100644 --- a/soc/arm/xilinx_zynqmp/Kconfig.soc +++ b/soc/arm/xilinx_zynqmp/Kconfig.soc @@ -4,6 +4,6 @@ config SOC_XILINX_ZYNQMP bool "Xilinx ZynqMP" select CPU_CORTEX_R5 - select GIC + select GIC_V1 select MULTI_LEVEL_INTERRUPTS select 2ND_LEVEL_INTERRUPTS