# Multilevel interrupt configuration

# Copyright (c) 2017 Intel Corporation
# Copyright (c) 2018 Foundries.io
# SPDX-License-Identifier: Apache-2.0

config MULTI_LEVEL_INTERRUPTS
	bool "Multi-level interrupt support"
	depends on GEN_SW_ISR_TABLE
	help
	  Multiple levels of interrupts are normally used to increase the
	  number of addressable interrupts in a system. For example, if two
	  levels are used, a second level interrupt aggregator would combine
	  all interrupts routed to it into one IRQ line in the first level
	  interrupt controller. If three levels are used, a third level
	  aggregator combines its input interrupts into one IRQ line at the
	  second level. The number of interrupt levels is usually determined
	  by the hardware. (The term "aggregator" here means "interrupt
	  controller".)

if MULTI_LEVEL_INTERRUPTS
config 1ST_LEVEL_INTERRUPT_BITS
	int "Total number of first level interrupt bits"
	range 1 32
	default 8
	help
	  The number of bits to use of the 32 bit interrupt mask for first
	  tier interrupts.

config MAX_IRQ_PER_AGGREGATOR
	int "Max IRQs per interrupt aggregator"
	default 0

	help
	  The maximum number of interrupt inputs to any aggregator in the
	  system.

config 2ND_LEVEL_INTERRUPTS
	bool "Second-level interrupt support"
	help
	  Second level interrupts are used to increase the number of
	  addressable interrupts in a system.

config 2ND_LVL_ISR_TBL_OFFSET
	int "Offset in _sw_isr_table for level 2 interrupts"
	default 0
	depends on 2ND_LEVEL_INTERRUPTS
	help
	  This is the offset in _sw_isr_table, the generated ISR handler table,
	  where storage for 2nd level interrupt ISRs begins. This is
	  typically allocated after ISRs for level 1 interrupts.

config NUM_2ND_LEVEL_AGGREGATORS
	int "Total number of second level interrupt aggregators"
	range 1 8
	default 1
	depends on 2ND_LEVEL_INTERRUPTS
	help
	  The number of level 2 interrupt aggregators to support. Each
	  aggregator can manage at most MAX_IRQ_PER_AGGREGATOR level 2
	  interrupts.

config 2ND_LEVEL_INTERRUPT_BITS
	int "Total number of second level interrupt bits"
	range 0 31
	default 8
	help
	  The number of bits to use of the 32 bit interrupt mask for second
	  tier interrupts.

prev-level-num = 1
cur-level-num = 2
cur-level = 2ND
aggregator = 0
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 1
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 2
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 3
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 4
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 5
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 6
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 7
rsource "Kconfig.multilevel.aggregator_template"

config 3RD_LEVEL_INTERRUPTS
	bool "Third-level interrupt support"
	depends on 2ND_LEVEL_INTERRUPTS
	help
	  Third level interrupts are used to increase the number of
	  addressable interrupts in a system.

config NUM_3RD_LEVEL_AGGREGATORS
	int "Total number of third level interrupt aggregators"
	range 1 8
	default 1
	depends on 3RD_LEVEL_INTERRUPTS
	help
	  The number of level 3 interrupt aggregators to support. Each
	  aggregator can manage at most MAX_IRQ_PER_AGGREGATOR level 3
	  interrupts.

config 3RD_LVL_ISR_TBL_OFFSET
	int "Offset in _sw_isr_table for level 3 interrupts"
	default 0
	depends on 3RD_LEVEL_INTERRUPTS
	help
	  This is the offset in _sw_isr_table, the generated ISR handler table,
	  where storage for 3rd level interrupt ISRs begins. This is
	  typically allocated after ISRs for level 2 interrupts.

config 3RD_LEVEL_INTERRUPT_BITS
	int "Total number of third level interrupt bits"
	range 0 30
	default 8
	help
	  The number of bits to use of the 32 bit interrupt mask for third
	  tier interrupts.

prev-level-num = 2
cur-level-num = 3
cur-level = 3RD
aggregator = 0
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 1
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 2
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 3
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 4
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 5
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 6
rsource "Kconfig.multilevel.aggregator_template"
aggregator = 7
rsource "Kconfig.multilevel.aggregator_template"

endif
