# Kconfig - shared_irq configuration options

#
# Copyright (c) 2015 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

config SHARED_IRQ
	bool
	prompt "Shared interrupt driver"
	default n
	help
	 Include shared interrupt support in system. Shared interrupt
	 support is NOT required in most systems. If in doubt answer no.

config SHARED_IRQ_NUM_CLIENTS
	int
	depends on SHARED_IRQ
	prompt "The number of clients per instance"
	default 5
	help
	 Configures the maximum nuber of clients allowed per shared
	 instance of the shared interrupt driver. To conserve RAM set
	 this value to the lowest practical value.

config SHARED_IRQ_INIT_PRIORITY
	int
	depends on SHARED_IRQ
	default 50
	prompt "Shared IRQ init priority"
	help
	 Shared IRQ are initialized on SECONDARY init level. They
	 have to be initialized before any device that uses them.

config SHARED_IRQ_0
	bool "Shared interrupt instance 0"
	depends on SHARED_IRQ
	help
	 Provide an instance of the shared interrupt driver when system
	 configuration requires that multiple devices share an interrupt.

config SHARED_IRQ_0_NAME
	string "Select a name for the device"
	depends on SHARED_IRQ_0
	default "SHARED_IRQ0"

config SHARED_IRQ_0_IRQ
	int "instance 0 interrupt"
	depends on SHARED_IRQ_0
	help
	 System interrupt number to be handled by this instance of the driver.

config SHARED_IRQ_0_PRI
	int "instance 0 interrupt priority"
	default 2
	depends on SHARED_IRQ_0
	help
	 Prioity of shared interrupt handler for the configured interrupt

choice
	depends on SHARED_IRQ_0
	prompt "Shared IRQ #0 Trigger Condition"
	default SHARED_IRQ_0_RISING_EDGE

config SHARED_IRQ_0_FALLING_EDGE
	bool "Falling Edge"
	help
	  Interrupt triggers on falling edge.

config SHARED_IRQ_0_RISING_EDGE
	bool "Rising Edge"
	help
	  Interrupt triggers on rising edge.

config SHARED_IRQ_0_LEVEL_HIGH
	bool "Level High"
	help
	  Interrupt triggers when level is high.

config SHARED_IRQ_0_LEVEL_LOW
	bool "Level Low"
	help
	  Interrupt triggers when level is low.

endchoice

config SHARED_IRQ_1
	bool "Shared interrupt instance 1"
	select SHARED_IRQ
	help
	 Provide an instance of the shared interrupt driver when system
	 configuration requires that multiple devices share an interrupt.

config SHARED_IRQ_1_NAME
	string "Select a name for the device"
	depends on SHARED_IRQ_1
	default "SHARED_IRQ1"

config SHARED_IRQ_1_IRQ
	int "instance 1 interrupt"
	depends on SHARED_IRQ_1
	help
	 System interrupt number to be handled by this instance of the driver.

config SHARED_IRQ_1_PRI
	int "instance 1 interrupt priority"
	default 2
	depends on SHARED_IRQ_1
	help
	 Prioity of shared interrupt handler for the configured interrupt

choice
	depends on SHARED_IRQ_1
	prompt "Shared IRQ #1 Trigger Condition"
	default SHARED_IRQ_1_RISING_EDGE

config SHARED_IRQ_1_FALLING_EDGE
	bool "Falling Edge"
	help
	  Interrupt triggers on falling edge.

config SHARED_IRQ_1_RISING_EDGE
	bool "Rising Edge"
	help
	  Interrupt triggers on rising edge.

config SHARED_IRQ_1_LEVEL_HIGH
	bool "Level High"
	help
	  Interrupt triggers when level is high.

config SHARED_IRQ_1_LEVEL_LOW
	bool "Level Low"
	help
	  Interrupt triggers when level is low.

endchoice
