config FIQ_DEBUGGER
	bool "FIQ Mode Serial Debugger"
	default n
	depends on ARM || ARM64
	help
	  The FIQ serial debugger can accept commands even when the
	  kernel is unresponsive due to being stuck with interrupts
	  disabled.

config FIQ_DEBUGGER_NO_SLEEP
	bool "Keep serial debugger active"
	depends on FIQ_DEBUGGER
	default n
	help
	  Enables the serial debugger at boot. Passing
	  fiq_debugger.no_sleep on the kernel commandline will
	  override this config option.

config FIQ_DEBUGGER_WAKEUP_IRQ_ALWAYS_ON
	bool "Don't disable wakeup IRQ when debugger is active"
	depends on FIQ_DEBUGGER
	default n
	help
	  Don't disable the wakeup irq when enabling the uart clock.  This will
	  cause extra interrupts, but it makes the serial debugger usable with
	  on some MSM radio builds that ignore the uart clock request in power
	  collapse.

config FIQ_DEBUGGER_CONSOLE
	bool "Console on FIQ Serial Debugger port"
	depends on FIQ_DEBUGGER
	default n
	help
	  Enables a console so that printk messages are displayed on
	  the debugger serial port as the occur.

config FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE
	bool "Put the FIQ debugger into console mode by default"
	depends on FIQ_DEBUGGER_CONSOLE
	default n
	help
	  If enabled, this puts the fiq debugger into console mode by default.
	  Otherwise, the fiq debugger will start out in debug mode.

config FIQ_DEBUGGER_UART_OVERLAY
	bool "Install uart DT overlay"
	depends on FIQ_DEBUGGER
	select OF_OVERLAY
	default n
	help
	  If enabled, fiq debugger is calling fiq_debugger_uart_overlay()
	  that will apply overlay uart_overlay@0 to disable proper uart.

config FIQ_WATCHDOG
	bool
	select FIQ_DEBUGGER
	select PSTORE_RAM
	default n
