# SPDX-License-Identifier: GPL-2.0

config ARM_PTDUMP_CORE
	def_bool n

config ARM_PTDUMP_DEBUGFS
	bool "Export kernel pagetable layout to userspace via debugfs"
	depends on DEBUG_KERNEL
	depends on MMU
	select ARM_PTDUMP_CORE
	select DEBUG_FS
	help
	  Say Y here if you want to show the kernel pagetable layout in a
	  debugfs file. This information is only useful for kernel developers
	  who are working in architecture specific areas of the kernel.
	  It is probably not a good idea to enable this feature in a production
	  kernel.
	  If in doubt, say "N"

config ARM_DEBUG_WX
	bool "Warn on W+X mappings at boot"
	depends on MMU
	select ARM_PTDUMP_CORE
	help
		Generate a warning if any W+X mappings are found at boot.

		This is useful for discovering cases where the kernel is leaving
		W+X mappings after applying NX, as such mappings are a security risk.

		Look for a message in dmesg output like this:

			arm/mm: Checked W+X mappings: passed, no W+X pages found.

		or like this, if the check failed:

			arm/mm: Checked W+X mappings: FAILED, <N> W+X pages found.

		Note that even if the check fails, your kernel is possibly
		still fine, as W+X mappings are not a security hole in
		themselves, what they do is that they make the exploitation
		of other unfixed kernel bugs easier.

		There is no runtime or memory usage effect of this option
		once the kernel has booted up - it's a one time check.

		If in doubt, say "Y".

choice
	prompt "Choose kernel unwinder"
	default UNWINDER_ARM if AEABI
	default UNWINDER_FRAME_POINTER if !AEABI
	help
	  This determines which method will be used for unwinding kernel stack
	  traces for panics, oopses, bugs, warnings, perf, /proc/<pid>/stack,
	  livepatch, lockdep, and more.

config UNWINDER_FRAME_POINTER
	bool "Frame pointer unwinder"
	depends on !THUMB2_KERNEL
	select ARCH_WANT_FRAME_POINTERS
	select FRAME_POINTER
	help
	  This option enables the frame pointer unwinder for unwinding
	  kernel stack traces.

config UNWINDER_ARM
	bool "ARM EABI stack unwinder"
	depends on AEABI
	select ARM_UNWIND
	help
	  This option enables stack unwinding support in the kernel
	  using the information automatically generated by the
	  compiler. The resulting kernel image is slightly bigger but
	  the performance is not affected. Currently, this feature
	  only works with EABI compilers.

endchoice

config ARM_UNWIND
	bool

config BACKTRACE_VERBOSE
	bool "Verbose backtrace"
	depends on EXPERT
	help
	  When the kernel produces a warning or oops, the kernel prints a
	  trace of the call chain. This option controls whether we include
	  the numeric addresses or only include the symbolic information.

	  In most cases, say N here, unless you are intending to debug the
	  kernel and have access to the kernel binary image.

config DEBUG_USER
	bool "Verbose user fault messages"
	help
	  When a user program crashes due to an exception, the kernel can
	  print a brief message explaining what the problem was. This is
	  sometimes helpful for debugging but serves no purpose on a
	  production system. Most people should say N here.

	  In addition, you need to pass user_debug=N on the kernel command
	  line to enable this feature.  N consists of the sum of:

	      1 - undefined instruction events
	      2 - system calls
	      4 - invalid data aborts
	      8 - SIGSEGV faults
	     16 - SIGBUS faults

# These options are only for real kernel hackers who want to get their hands dirty.
config DEBUG_LL
	bool "Kernel low-level debugging functions (read help!)"
	depends on DEBUG_KERNEL
	help
	  Say Y here to include definitions of printascii, printch, printhex
	  in the kernel.  This is helpful if you are debugging code that
	  executes before the console is initialized.

	  Note that selecting this option will limit the kernel to a single
	  UART definition, as specified below. Attempting to boot the kernel
	  image on a different platform *will not work*, so this option should
	  not be enabled for kernels that are intended to be portable.

choice
	prompt "Kernel low-level debugging port"
	depends on DEBUG_LL

	config DEBUG_ALPINE_UART0
		bool "Kernel low-level debugging messages via Alpine UART0"
		depends on ARCH_ALPINE
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Alpine based platforms.

	config DEBUG_ASM9260_UART
		bool "Kernel low-level debugging via asm9260 UART"
		depends on MACH_ASM9260
		help
		  Say Y here if you want the debug print routines to direct
		  their output to an UART or USART port on asm9260 based
		  machines.

		    DEBUG_UART_PHYS | DEBUG_UART_VIRT

		    0x80000000      | 0xf0000000     | UART0
		    0x80004000      | 0xf0004000     | UART1
		    0x80008000      | 0xf0008000     | UART2
		    0x8000c000      | 0xf000c000     | UART3
		    0x80010000      | 0xf0010000     | UART4
		    0x80014000      | 0xf0014000     | UART5
		    0x80018000      | 0xf0018000     | UART6
		    0x8001c000      | 0xf001c000     | UART7
		    0x80020000      | 0xf0020000     | UART8
		    0x80024000      | 0xf0024000     | UART9

	config DEBUG_AT91_RM9200_DBGU
		bool "Kernel low-level debugging on AT91RM9200, AT91SAM9, SAM9X60 DBGU"
		select DEBUG_AT91_UART
		depends on SOC_AT91RM9200 || SOC_AT91SAM9 || SOC_SAM9X60
		help
		  Say Y here if you want kernel low-level debugging support
		  on the DBGU port of:
		    at91rm9200, at91sam9260, at91sam9g20, at91sam9261,
		    at91sam9g10, at91sam9n12, at91sam9rl64, at91sam9x5, sam9x60

	config DEBUG_AT91_SAM9263_DBGU
		bool "Kernel low-level debugging on AT91SAM{9263,9G45,A5D3} DBGU"
		select DEBUG_AT91_UART
		depends on SOC_AT91SAM9 || SOC_SAMA5D3
		help
		  Say Y here if you want kernel low-level debugging support
		  on the DBGU port of:
		    at91sam9263, at91sam9g45, at91sam9m10,
		    sama5d3

	config DEBUG_AT91_SAMA5D2_UART1
		bool "Kernel low-level debugging on SAMA5D2 UART1"
		select DEBUG_AT91_UART
		depends on SOC_SAMA5D2
		help
		  Say Y here if you want kernel low-level debugging support
		  on the UART1 port of sama5d2.

	config DEBUG_AT91_SAMA5D4_USART3
		bool "Kernel low-level debugging on SAMA5D4 USART3"
		select DEBUG_AT91_UART
		depends on SOC_SAMA5D4
		help
		  Say Y here if you want kernel low-level debugging support
		  on the USART3 port of sama5d4.

	config DEBUG_AT91_SAMV7_USART1
		bool "Kernel low-level debugging via SAMV7 USART1"
		select DEBUG_AT91_UART
		depends on SOC_SAMV7
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the USART1 port on SAMV7 based
		  machines.

	config DEBUG_AT91_SAMA7G5_FLEXCOM3
		bool "Kernel low-level debugging on SAMA7G5 FLEXCOM3"
		select DEBUG_AT91_UART
		depends on SOC_SAMA7G5
		help
		  Say Y here if you want kernel low-level debugging support
		  on the FLEXCOM3 port of SAMA7G5.

	config DEBUG_AT91_LAN966_FLEXCOM
		bool "Kernel low-level debugging on LAN966 FLEXCOM USART"
		select DEBUG_AT91_UART
		depends on SOC_LAN966
		help
		Say Y here if you want kernel low-level debugging support
		on the FLEXCOM port of LAN966.

		DEBUG_UART_PHYS | DEBUG_UART_VIRT

		0xe0040200      | 0xfd040200     | FLEXCOM0
		0xe0044200      | 0xfd044200     | FLEXCOM1
		0xe0060200      | 0xfd060200     | FLEXCOM2
		0xe0064200      | 0xfd064200     | FLEXCOM3
		0xe0070200      | 0xfd070200     | FLEXCOM4

		By default, enabling FLEXCOM3 port. Based on requirement, use
		DEBUG_UART_PHYS and DEBUG_UART_VIRT configurations from above
		table.

	config DEBUG_BCM2835
		bool "Kernel low-level debugging on BCM2835 PL011 UART"
		depends on ARCH_BCM2835 && ARCH_MULTI_V6
		select DEBUG_UART_PL01X

	config DEBUG_BCM2836
		bool "Kernel low-level debugging on BCM2836 PL011 UART"
		depends on ARCH_BCM2835 && ARCH_MULTI_V7
		select DEBUG_UART_PL01X

	config DEBUG_BCM_5301X
		bool "Kernel low-level debugging on BCM5301X/NSP UART1"
		depends on ARCH_BCM_5301X || ARCH_BCM_NSP
		select DEBUG_UART_8250

	config DEBUG_BCM_HR2
		bool "Kernel low-level debugging on Hurricane 2 UART2"
		depends on ARCH_BCM_HR2
		select DEBUG_UART_8250

	config DEBUG_BCM_IPROC_UART3
		bool "Kernel low-level debugging on BCM IPROC UART3"
		depends on ARCH_BCM_CYGNUS
		select DEBUG_UART_8250
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the third serial port on these devices.

	config DEBUG_BCM_KONA_UART
		bool "Kernel low-level debugging messages via BCM KONA UART"
		depends on ARCH_BCM_MOBILE
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Broadcom SoC platforms.
		  This low level debug works for Broadcom
		  mobile SoCs in the Kona family of chips (e.g. bcm28155,
		  bcm11351, etc...)

	config DEBUG_BCM63XX_UART
		bool "Kernel low-level debugging on BCM63XX UART"
		depends on ARCH_BCMBCA

	config DEBUG_BERLIN_UART
		bool "Marvell Berlin SoC Debug UART"
		depends on ARCH_BERLIN
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Marvell Berlin SoC based platforms.

	config DEBUG_BRCMSTB_UART
		bool "Use BRCMSTB UART for low-level debug"
		depends on ARCH_BRCMSTB
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the first serial port on these devices. The
		  UART physical and virtual address is automatically provided
		  based on the chip identification register value.

		  If you have a Broadcom STB chip and would like early print
		  messages to appear over the UART, select this option.

	config DEBUG_CLPS711X_UART1
		bool "Kernel low-level debugging messages via UART1"
		depends on ARCH_CLPS711X
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the first serial port on these devices.

	config DEBUG_CLPS711X_UART2
		bool "Kernel low-level debugging messages via UART2"
		depends on ARCH_CLPS711X
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the second serial port on these devices.

	config DEBUG_DAVINCI_DA8XX_UART1
		bool "Kernel low-level debugging on DaVinci DA8XX using UART1"
		depends on ARCH_DAVINCI_DA8XX
		select DEBUG_UART_8250
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART1 serial port on DaVinci DA8XX devices.

	config DEBUG_DAVINCI_DA8XX_UART2
		bool "Kernel low-level debugging on DaVinci DA8XX using UART2"
		depends on ARCH_DAVINCI_DA8XX
		select DEBUG_UART_8250
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART2 serial port on DaVinci DA8XX devices.

	config DEBUG_DC21285_PORT
		bool "Kernel low-level debugging messages via footbridge serial port"
		depends on FOOTBRIDGE
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the serial port in the DC21285 (Footbridge).

	config DEBUG_DIGICOLOR_UA0
		bool "Kernel low-level debugging messages via Digicolor UA0"
		depends on ARCH_DIGICOLOR
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the UA0 serial port in the CX92755.

	config DEBUG_EP93XX
		bool "Kernel low-level debugging messages via ep93xx UART"
		depends on ARCH_EP93XX
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want kernel low-level debugging support
		  on Cirrus Logic EP93xx based platforms.

	config DEBUG_FOOTBRIDGE_COM1
		bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1"
		depends on FOOTBRIDGE
		select DEBUG_UART_8250
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the 8250 at PCI COM1.

	config DEBUG_GEMINI
		bool "Kernel low-level debugging messages via Cortina Systems Gemini UART"
		depends on ARCH_GEMINI
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Cortina Gemini based platforms.

	config DEBUG_HI3620_UART
		bool "Hisilicon HI3620 Debug UART"
		depends on ARCH_HI3xxx
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want kernel low-level debugging support
		  on HI3620 UART.

	config DEBUG_HIGHBANK_UART
		bool "Kernel low-level debugging messages via Highbank UART"
		depends on ARCH_HIGHBANK
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the UART on Highbank based devices.

	config DEBUG_HIP01_UART
		bool "Hisilicon Hip01 Debug UART"
		depends on ARCH_HIP01
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on HIP01 UART.

	config DEBUG_HIP04_UART
		bool "Hisilicon HiP04 Debug UART"
		depends on ARCH_HIP04
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on HIP04 UART.

	config DEBUG_HIX5HD2_UART
		bool "Hisilicon Hix5hd2 Debug UART"
		depends on ARCH_HIX5HD2
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want kernel low-level debugging support
		  on Hix5hd2 UART.

	config DEBUG_IMX1_UART
		bool "i.MX1 Debug UART"
		depends on SOC_IMX1
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX1.

	config DEBUG_IMX23_UART
		bool "i.MX23 Debug UART"
		depends on SOC_IMX23
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX23.

	config DEBUG_IMX25_UART
		bool "i.MX25 Debug UART"
		depends on SOC_IMX25
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX25.

	config DEBUG_IMX27_UART
		bool "i.MX27 Debug UART"
		depends on SOC_IMX27
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX27.

	config DEBUG_IMX28_UART
		bool "i.MX28 Debug UART"
		depends on SOC_IMX28
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX28.

	config DEBUG_IMX31_UART
		bool "i.MX31 Debug UART"
		depends on SOC_IMX31
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX31.

	config DEBUG_IMX35_UART
		bool "i.MX35 Debug UART"
		depends on SOC_IMX35
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX35.

	config DEBUG_IMX50_UART
		bool "i.MX50 Debug UART"
		depends on SOC_IMX50
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX50.

	config DEBUG_IMX51_UART
		bool "i.MX51 Debug UART"
		depends on SOC_IMX51
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX51.

	config DEBUG_IMX53_UART
		bool "i.MX53 Debug UART"
		depends on SOC_IMX53
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX53.

	config DEBUG_IMX6Q_UART
		bool "i.MX6Q/DL Debug UART"
		depends on SOC_IMX6Q
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX6Q/DL.

	config DEBUG_IMX6SL_UART
		bool "i.MX6SL Debug UART"
		depends on SOC_IMX6SL
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX6SL.

	config DEBUG_IMX6SX_UART
		bool "i.MX6SX Debug UART"
		depends on SOC_IMX6SX
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX6SX.

	config DEBUG_IMX6UL_UART
		bool "i.MX6UL Debug UART"
		depends on SOC_IMX6UL
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX6UL.

	config DEBUG_IMX7D_UART
		bool "i.MX7D Debug UART"
		depends on SOC_IMX7D
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX7D.

	config DEBUG_INTEGRATOR
		bool "Kernel low-level debugging messages via ARM Integrator UART"
		depends on ARCH_INTEGRATOR
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want kernel low-level debugging support
		  on ARM Integrator platforms.

	config DEBUG_KEYSTONE_UART0
		bool "Kernel low-level debugging on KEYSTONE2 using UART0"
		depends on ARCH_KEYSTONE
		select DEBUG_UART_8250
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART0 serial port on KEYSTONE2 devices.

	config DEBUG_KEYSTONE_UART1
		bool "Kernel low-level debugging on KEYSTONE2 using UART1"
		depends on ARCH_KEYSTONE
		select DEBUG_UART_8250
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART1 serial port on KEYSTONE2 devices.

	config DEBUG_LPC18XX_UART0
		bool "Kernel low-level debugging via LPC18xx/43xx UART0"
		depends on ARCH_LPC18XX
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on NXP LPC18xx/43xx UART0.

	config DEBUG_LPC32XX
		bool "Kernel low-level debugging messages via NXP LPC32xx UART"
		depends on ARCH_LPC32XX
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on NXP LPC32xx based platforms.

	config DEBUG_MESON_UARTAO
		bool "Kernel low-level debugging via Meson6 UARTAO"
		depends on ARCH_MESON
		help
		  Say Y here if you want kernel low-lever debugging support
		  on Amlogic Meson6 based platforms on the UARTAO.

	config DEBUG_MMP_UART2
		bool "Kernel low-level debugging message via MMP UART2"
		depends on ARCH_MMP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on MMP UART2.

	config DEBUG_MMP_UART3
		bool "Kernel low-level debugging message via MMP UART3"
		depends on ARCH_MMP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on MMP UART3.

	config DEBUG_MVEBU_UART0
		bool "Kernel low-level debugging messages via MVEBU UART0 (old bootloaders)"
		depends on ARCH_MVEBU
		depends on ARCH_MVEBU && CPU_V7
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on MVEBU based platforms on UART0.

		  This option should be used with the old bootloaders
		  that left the internal registers mapped at
		  0xd0000000. As of today, this is the case on
		  platforms such as the Globalscale Mirabox or the
		  Plathome OpenBlocks AX3, when using the original
		  bootloader.

		  This option will not work on older Marvell platforms
		  (Kirkwood, Dove, MV78xx0, Orion5x), which should pick
		  the "new bootloader" variant.

		  If the wrong DEBUG_MVEBU_UART* option is selected,
		  when u-boot hands over to the kernel, the system
		  silently crashes, with no serial output at all.

	config DEBUG_MVEBU_UART0_ALTERNATE
		bool "Kernel low-level debugging messages via MVEBU UART0 (new bootloaders)"
		depends on ARCH_MVEBU || ARCH_DOVE || ARCH_MV78XX0 || ARCH_ORION5X
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on MVEBU based platforms on UART0. (Armada XP, Armada 3xx,
		  Kirkwood, Dove, MV78xx0, Orion5x).


		  This option should be used with the new bootloaders
		  that remap the internal registers at 0xf1000000.

		  If the wrong DEBUG_MVEBU_UART* option is selected,
		  when u-boot hands over to the kernel, the system
		  silently crashes, with no serial output at all.

	config DEBUG_MVEBU_UART1_ALTERNATE
		bool "Kernel low-level debugging messages via MVEBU UART1 (new bootloaders)"
		depends on ARCH_MVEBU
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on MVEBU based platforms on UART1. (Armada XP, Armada 3xx,
		  Kirkwood, Dove, MV78xx0, Orion5x).

		  This option should be used with the new bootloaders
		  that remap the internal registers at 0xf1000000.
		  All of the older (pre Armada XP/370) platforms also use
		  this address, regardless of the boot loader version.

		  If the wrong DEBUG_MVEBU_UART* option is selected,
		  when u-boot hands over to the kernel, the system
		  silently crashes, with no serial output at all.

	config DEBUG_MSTARV7_PMUART
		bool "Kernel low-level debugging messages via MSTARV7 PM UART"
		depends on ARCH_MSTARV7
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  for MSTAR ARMv7-based platforms on PM UART.

	config DEBUG_MT6589_UART0
		bool "Mediatek mt6589 UART0"
		depends on ARCH_MEDIATEK
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  for Mediatek mt6589 based platforms on UART0.

	config DEBUG_MT8127_UART0
		bool "Mediatek mt8127/mt6592 UART0"
		depends on ARCH_MEDIATEK
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  for Mediatek mt8127 based platforms on UART0.

	config DEBUG_MT8135_UART3
		bool "Mediatek mt8135 UART3"
		depends on ARCH_MEDIATEK
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  for Mediatek mt8135 based platforms on UART3.

	config DEBUG_NOMADIK_UART
		bool "Kernel low-level debugging messages via NOMADIK UART"
		depends on ARCH_NOMADIK
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want kernel low-level debugging support
		  on NOMADIK based platforms.

	config DEBUG_NSPIRE_CLASSIC_UART
		bool "Kernel low-level debugging via TI-NSPIRE 8250 UART"
		depends on ARCH_NSPIRE
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on TI-NSPIRE classic models.

	config DEBUG_NSPIRE_CX_UART
		bool "Kernel low-level debugging via TI-NSPIRE PL011 UART"
		depends on ARCH_NSPIRE
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want kernel low-level debugging support
		  on TI-NSPIRE CX models.

	config DEBUG_OMAP1UART1
		bool "Kernel low-level debugging via OMAP1 UART1"
		depends on ARCH_OMAP1
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on OMAP1 based platforms (except OMAP730) on the UART1.

	config DEBUG_OMAP1UART2
		bool "Kernel low-level debugging via OMAP1 UART2"
		depends on ARCH_OMAP1
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on OMAP1 based platforms (except OMAP730) on the UART2.

	config DEBUG_OMAP1UART3
		bool "Kernel low-level debugging via OMAP1 UART3"
		depends on ARCH_OMAP1
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on OMAP1 based platforms (except OMAP730) on the UART3.

	config DEBUG_OMAP2UART1
		bool "OMAP2/3/4 UART1 (omap2/3 sdp boards and some omap3 boards)"
		depends on ARCH_OMAP2PLUS
		select DEBUG_UART_8250
		help
		  This covers at least h4, 2430sdp, 3430sdp, 3630sdp,
		  omap3 torpedo and 3530 lv som.

	config DEBUG_OMAP2UART2
		bool "Kernel low-level debugging messages via OMAP2/3/4 UART2"
		depends on ARCH_OMAP2PLUS
		select DEBUG_UART_8250

	config DEBUG_OMAP2UART3
		bool "Kernel low-level debugging messages via OMAP2 UART3 (n8x0)"
		depends on ARCH_OMAP2PLUS
		select DEBUG_UART_8250

	config DEBUG_OMAP3UART3
		bool "Kernel low-level debugging messages via OMAP3 UART3 (most omap3 boards)"
		depends on ARCH_OMAP2PLUS
		select DEBUG_UART_8250
		help
		  This covers at least cm_t3x, beagle, crane, devkit8000,
		  igep00x0, ldp, n900, n9(50), pandora, overo, touchbook,
		  and 3517evm.

	config DEBUG_OMAP4UART3
		bool "Kernel low-level debugging messages via OMAP4/5 UART3 (omap4 blaze, panda, omap5 sevm)"
		depends on ARCH_OMAP2PLUS
		select DEBUG_UART_8250

	config DEBUG_OMAP3UART4
		bool "Kernel low-level debugging messages via OMAP36XX UART4"
		depends on ARCH_OMAP2PLUS
		select DEBUG_UART_8250

	config DEBUG_OMAP4UART4
		bool "Kernel low-level debugging messages via OMAP4/5 UART4"
		depends on ARCH_OMAP2PLUS
		select DEBUG_UART_8250

	config DEBUG_TI81XXUART1
		bool "Kernel low-level debugging messages via TI81XX UART1 (ti8148evm)"
		depends on ARCH_OMAP2PLUS
		select DEBUG_UART_8250

	config DEBUG_TI81XXUART2
		bool "Kernel low-level debugging messages via TI81XX UART2"
		depends on ARCH_OMAP2PLUS
		select DEBUG_UART_8250

	config DEBUG_TI81XXUART3
		bool "Kernel low-level debugging messages via TI81XX UART3 (ti8168evm)"
		depends on ARCH_OMAP2PLUS
		select DEBUG_UART_8250

	config DEBUG_AM33XXUART1
		bool "Kernel low-level debugging messages via AM33XX UART1"
		depends on ARCH_OMAP2PLUS
		select DEBUG_UART_8250

	config DEBUG_ZOOM_UART
		bool "Kernel low-level debugging messages via Zoom2/3 UART"
		depends on ARCH_OMAP2PLUS
		select DEBUG_OMAP2PLUS_UART

	config DEBUG_PXA_UART1
		depends on ARCH_PXA
		bool "Use PXA UART1 for low-level debug"
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on PXA UART1.

	config DEBUG_QCOM_UARTDM
		bool "Kernel low-level debugging messages via QCOM UARTDM"
		depends on ARCH_QCOM
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the serial port on Qualcomm devices.

		  ARCH      DEBUG_UART_PHYS   DEBUG_UART_VIRT
		  APQ8064   0x16640000        0xf0040000
		  APQ8084   0xf995e000        0xfa75e000
		  IPQ4019   0x078af000        0xf78af000
		  MSM8X60   0x19c40000        0xf0040000
		  MSM8960   0x16440000        0xf0040000
		  MSM8974   0xf991e000        0xfa71e000

		  Please adjust DEBUG_UART_PHYS and DEBUG_UART_BASE configuration
		  options based on your needs.

	config DEBUG_REALVIEW_STD_PORT
		bool "RealView Default UART"
		depends on ARCH_REALVIEW
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the serial port on RealView EB, PB11MP, PBA8
		  and PBX platforms.

	config DEBUG_REALVIEW_PB1176_PORT
		bool "RealView PB1176 UART"
		depends on MACH_REALVIEW_PB1176
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the standard serial port on the RealView
		  PB1176 platform.

	config DEBUG_RV1108_UART0
		bool "Kernel low-level debugging messages via Rockchip RV1108 UART0"
		depends on ARCH_ROCKCHIP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
                  on Rockchip RV1108 based platforms.

	config DEBUG_RV1108_UART1
		bool "Kernel low-level debugging messages via Rockchip RV1108 UART1"
		depends on ARCH_ROCKCHIP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Rockchip RV1108 based platforms.

	config DEBUG_RV1108_UART2
		bool "Kernel low-level debugging messages via Rockchip RV1108 UART2"
		depends on ARCH_ROCKCHIP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Rockchip RV1108 based platforms.

	config DEBUG_RK29_UART0
		bool "Kernel low-level debugging messages via Rockchip RK29 UART0"
		depends on ARCH_ROCKCHIP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Rockchip based platforms.

	config DEBUG_RK29_UART1
		bool "Kernel low-level debugging messages via Rockchip RK29 UART1"
		depends on ARCH_ROCKCHIP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Rockchip based platforms.

	config DEBUG_RK29_UART2
		bool "Kernel low-level debugging messages via Rockchip RK29 UART2"
		depends on ARCH_ROCKCHIP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Rockchip based platforms.

	config DEBUG_RK3X_UART0
		bool "Kernel low-level debugging messages via Rockchip RK30/RK31 UART0"
		depends on ARCH_ROCKCHIP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Rockchip based platforms.

	config DEBUG_RK3X_UART1
		bool "Kernel low-level debugging messages via Rockchip RK30/RK31 UART1"
		depends on ARCH_ROCKCHIP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Rockchip based platforms.

	config DEBUG_RK3X_UART2
		bool "Kernel low-level debugging messages via Rockchip RK30/RK31 UART2"
		depends on ARCH_ROCKCHIP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Rockchip based platforms.

	config DEBUG_RK3X_UART3
		bool "Kernel low-level debugging messages via Rockchip RK30/RK31 UART3"
		depends on ARCH_ROCKCHIP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Rockchip based platforms.

	config DEBUG_RK32_UART2
		bool "Kernel low-level debugging messages via Rockchip RK32 UART2"
		depends on ARCH_ROCKCHIP
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Rockchip RK32xx based platforms.

	config DEBUG_R7S72100_SCIF2
		bool "Kernel low-level debugging messages via SCIF2 on R7S72100"
		depends on ARCH_R7S72100
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIF2 on Renesas RZ/A1H (R7S72100).

	config DEBUG_R7S9210_SCIF2
		bool "Kernel low-level debugging messages via SCIF2 on R7S9210"
		depends on ARCH_R7S9210
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIF2 on Renesas RZ/A2M (R7S9210).

	config DEBUG_R7S9210_SCIF4
		bool "Kernel low-level debugging messages via SCIF4 on R7S9210"
		depends on ARCH_R7S9210
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIF4 on Renesas RZ/A2M (R7S9210).

	config DEBUG_RCAR_GEN1_SCIF0
		bool "Kernel low-level debugging messages via SCIF0 on R8A7778"
		depends on ARCH_R8A7778
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIF0 on Renesas R-Car M1A (R8A7778).

	config DEBUG_RCAR_GEN1_SCIF2
		bool "Kernel low-level debugging messages via SCIF2 on R8A7779"
		depends on ARCH_R8A7779
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIF2 on Renesas R-Car H1 (R8A7779).

	config DEBUG_RCAR_GEN2_SCIF0
		bool "Kernel low-level debugging messages via SCIF0 on R-Car Gen2 and RZ/G1"
		depends on ARCH_R8A7743 || ARCH_R8A7744 || ARCH_R8A7790 || \
			ARCH_R8A7791 || ARCH_R8A7792 || ARCH_R8A7793
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIF0 on Renesas RZ/G1M (R8A7743), RZ/G1N (R8A7744),
		  R-Car H2 (R8A7790), M2-W (R8A7791), V2H (R8A7792), or
		  M2-N (R8A7793).

	config DEBUG_RCAR_GEN2_SCIF1
		bool "Kernel low-level debugging messages via SCIF1 on R8A77470"
		depends on ARCH_R8A77470
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIF1 on Renesas RZ/G1C (R8A77470).

	config DEBUG_RCAR_GEN2_SCIF2
		bool "Kernel low-level debugging messages via SCIF2 on R8A7794"
		depends on ARCH_R8A7794
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIF2 on Renesas R-Car E2 (R8A7794).

	config DEBUG_RCAR_GEN2_SCIF4
		bool "Kernel low-level debugging messages via SCIF4 on R8A7745"
		depends on ARCH_R8A7745
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIF4 on Renesas RZ/G1E (R8A7745).

	config DEBUG_RCAR_GEN2_SCIFA2
		bool "Kernel low-level debugging messages via SCIFA2 on R8A7742"
		depends on ARCH_R8A7742
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIFA2 on Renesas RZ/G1H (R8A7742).

	config DEBUG_RMOBILE_SCIFA0
		bool "Kernel low-level debugging messages via SCIFA0 on R8A73A4"
		depends on ARCH_R8A73A4
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIFA0 on Renesas R-Mobile APE6 (R8A73A4).

	config DEBUG_RMOBILE_SCIFA1
		bool "Kernel low-level debugging messages via SCIFA1 on R8A7740"
		depends on ARCH_R8A7740
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIFA1 on Renesas R-Mobile A1 (R8A7740).

	config DEBUG_RMOBILE_SCIFA4
		bool "Kernel low-level debugging messages via SCIFA4 on SH73A0"
		depends on ARCH_SH73A0
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIFA4 on Renesas SH-Mobile AG5 (SH73A0).

	config DEBUG_S3C_UART0
		depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS
		select DEBUG_EXYNOS_UART if ARCH_EXYNOS
		select DEBUG_S3C64XX_UART if ARCH_S3C64XX
		select DEBUG_S5PV210_UART if ARCH_S5PV210
		bool "Use Samsung S3C UART 0 for low-level debug"
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART 0. The port must have been initialised
		  by the boot-loader before use.

	config DEBUG_S3C_UART1
		depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS
		select DEBUG_EXYNOS_UART if ARCH_EXYNOS
		select DEBUG_S3C64XX_UART if ARCH_S3C64XX
		select DEBUG_S5PV210_UART if ARCH_S5PV210
		bool "Use Samsung S3C UART 1 for low-level debug"
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART 1. The port must have been initialised
		  by the boot-loader before use.

	config DEBUG_S3C_UART2
		depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS
		select DEBUG_EXYNOS_UART if ARCH_EXYNOS
		select DEBUG_S3C64XX_UART if ARCH_S3C64XX
		select DEBUG_S5PV210_UART if ARCH_S5PV210
		bool "Use Samsung S3C UART 2 for low-level debug"
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART 2. The port must have been initialised
		  by the boot-loader before use.

	config DEBUG_S3C_UART3
		depends on ARCH_EXYNOS || ARCH_S5PV210
		select DEBUG_EXYNOS_UART if ARCH_EXYNOS
		select DEBUG_S3C64XX_UART if ARCH_S3C64XX
		select DEBUG_S5PV210_UART if ARCH_S5PV210
		bool "Use Samsung S3C UART 3 for low-level debug"
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART 3. The port must have been initialised
		  by the boot-loader before use.

	config DEBUG_SA1100
		depends on ARCH_SA1100
		bool "Use SA1100 UARTs for low-level debug"
		help
		  Say Y here if you want kernel low-level debugging support
		  on SA-11x0 UART ports. The kernel will check for the first
		  enabled UART in a sequence 3-1-2.

	config DEBUG_SD5203_UART
		bool "Hisilicon SD5203 Debug UART"
		depends on ARCH_SD5203
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on SD5203 UART.

	config DEBUG_SOCFPGA_UART0
		depends on ARCH_INTEL_SOCFPGA
		bool "Use SOCFPGA UART0 for low-level debug"
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on SOCFPGA(Cyclone 5 and Arria 5) based platforms.

	config DEBUG_SOCFPGA_ARRIA10_UART1
		depends on ARCH_INTEL_SOCFPGA
		bool "Use SOCFPGA Arria10 UART1 for low-level debug"
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on SOCFPGA(Arria 10) based platforms.

	config DEBUG_SOCFPGA_CYCLONE5_UART1
		depends on ARCH_INTEL_SOCFPGA
		bool "Use SOCFPGA Cyclone 5 UART1 for low-level debug"
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on SOCFPGA(Cyclone 5 and Arria 5) based platforms.

	config DEBUG_SUN9I_UART0
		bool "Kernel low-level debugging messages via sun9i UART0"
		depends on MACH_SUN9I
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Allwinner A80 based platforms on the UART0.

	config DEBUG_SUNXI_UART0
		bool "Kernel low-level debugging messages via sunXi UART0"
		depends on ARCH_SUNXI
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Allwinner A1X based platforms on the UART0.

	config DEBUG_SUNXI_UART1
		bool "Kernel low-level debugging messages via sunXi UART1"
		depends on ARCH_SUNXI
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Allwinner A1X based platforms on the UART1.

	config DEBUG_SUNXI_R_UART
		bool "Kernel low-level debugging messages via sunXi R_UART"
		depends on MACH_SUN6I || MACH_SUN8I
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on Allwinner A31/A23 based platforms on the R_UART.

	config DEBUG_SPEAR3XX
		bool "Kernel low-level debugging messages via ST SPEAr 3xx/6xx UART"
		depends on ARCH_SPEAR3XX || ARCH_SPEAR6XX
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want kernel low-level debugging support
		  on ST SPEAr based platforms.

	config DEBUG_SPEAR13XX
		bool "Kernel low-level debugging messages via ST SPEAr 13xx UART"
		depends on ARCH_SPEAR13XX
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want kernel low-level debugging support
		  on ST SPEAr13xx based platforms.

	config DEBUG_STIH41X_ASC2
		bool "Use StiH415/416 ASC2 UART for low-level debug"
		depends on ARCH_STI
		help
		  Say Y here if you want kernel low-level debugging support
		  on STiH415/416 based platforms like b2000, which has
		  default UART wired up to ASC2.

		  If unsure, say N.

	config DEBUG_STIH41X_SBC_ASC1
		bool "Use StiH415/416 SBC ASC1 UART for low-level debug"
		depends on ARCH_STI
		help
		  Say Y here if you want kernel low-level debugging support
		  on STiH415/416 based platforms like b2020. which has
		  default UART wired up to SBC ASC1.

		  If unsure, say N.

	config DEBUG_STIH418_SBC_ASC0
		bool "Use StiH418 SBC ASC0 UART for low-level debug"
		depends on ARCH_STI
		help
		  Say Y here if you want kernel low-level debugging support
		  on STiH418 based platforms which has default UART wired
		  up to SBC ASC0.

		  If unsure, say N.

	config STM32F4_DEBUG_UART
		bool "Use STM32F4 UART for low-level debug"
		depends on MACH_STM32F429 || MACH_STM32F469
		select DEBUG_STM32_UART
		help
		  Say Y here if you want kernel low-level debugging support
		  on STM32F4 based platforms, which default UART is wired on
		  USART1, but another UART instance can be selected by modifying
		  CONFIG_DEBUG_UART_PHYS.

		  If unsure, say N.

	config STM32F7_DEBUG_UART
		bool "Use STM32F7 UART for low-level debug"
		depends on MACH_STM32F746 || MACH_STM32F769
		select DEBUG_STM32_UART
		help
		  Say Y here if you want kernel low-level debugging support
		  on STM32F7 based platforms, which default UART is wired on
		  USART1, but another UART instance can be selected by modifying
		  CONFIG_DEBUG_UART_PHYS.

		  If unsure, say N.

	config STM32H7_DEBUG_UART
		bool "Use STM32H7 UART for low-level debug"
		depends on MACH_STM32H743
		select DEBUG_STM32_UART
		help
		  Say Y here if you want kernel low-level debugging support
		  on STM32H7 based platforms, which default UART is wired on
		  USART1, but another UART instance can be selected by modifying
		  CONFIG_DEBUG_UART_PHYS.

		  If unsure, say N.

	config STM32MP1_DEBUG_UART
		bool "Use STM32MP1 UART for low-level debug"
		depends on MACH_STM32MP157
		select DEBUG_STM32_UART
		help
		  Say Y here if you want kernel low-level debugging support on
		  STM32MP1-based platforms, where the default UART is wired to
		  UART4, but another UART instance can be selected by modifying
		  CONFIG_DEBUG_UART_PHYS and CONFIG_DEBUG_UART_VIRT.

		  If unsure, say N.

	config TEGRA_DEBUG_UART_AUTO_ODMDATA
		bool "Kernel low-level debugging messages via Tegra UART via ODMDATA"
		depends on ARCH_TEGRA
		select DEBUG_TEGRA_UART
		help
		  Automatically determines which UART to use for low-level
		  debug based on the ODMDATA value. This value is part of
		  the BCT, and is written to the boot memory device using
		  nvflash, or other flashing tool.  When bits 19:18 are 3,
		  then bits 17:15 indicate which UART to use; 0/1/2/3/4
		  are UART A/B/C/D/E.

	config TEGRA_DEBUG_UARTA
		bool "Kernel low-level debugging messages via Tegra UART A"
		depends on ARCH_TEGRA
		select DEBUG_TEGRA_UART
		help
		  Say Y here if you want kernel low-level debugging support
		  on Tegra based platforms.

	config TEGRA_DEBUG_UARTB
		bool "Kernel low-level debugging messages via Tegra UART B"
		depends on ARCH_TEGRA
		select DEBUG_TEGRA_UART
		help
		  Say Y here if you want kernel low-level debugging support
		  on Tegra based platforms.

	config TEGRA_DEBUG_UARTC
		bool "Kernel low-level debugging messages via Tegra UART C"
		depends on ARCH_TEGRA
		select DEBUG_TEGRA_UART
		help
		  Say Y here if you want kernel low-level debugging support
		  on Tegra based platforms.

	config TEGRA_DEBUG_UARTD
		bool "Kernel low-level debugging messages via Tegra UART D"
		depends on ARCH_TEGRA
		select DEBUG_TEGRA_UART
		help
		  Say Y here if you want kernel low-level debugging support
		  on Tegra based platforms.

	config TEGRA_DEBUG_UARTE
		bool "Kernel low-level debugging messages via Tegra UART E"
		depends on ARCH_TEGRA
		select DEBUG_TEGRA_UART
		help
		  Say Y here if you want kernel low-level debugging support
		  on Tegra based platforms.

	config DEBUG_UX500_UART
		depends on ARCH_U8500
		bool "Use Ux500 UART for low-level debug"
		help
		  Say Y here if you want kernel low-level debugging support
		  on Ux500 based platforms.

	config DEBUG_VERSATILE
		bool "Kernel low-level debugging messages via ARM Versatile UART"
		depends on ARCH_VERSATILE
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want kernel low-level debugging support
		  on ARM Versatile platforms.

	config DEBUG_VEXPRESS_UART0_DETECT
		bool "Autodetect UART0 on Versatile Express Cortex-A core tiles"
		depends on ARCH_VEXPRESS && CPU_CP15_MMU
		help
		  This option enables a simple heuristic which tries to determine
		  the motherboard's memory map variant (original or RS1) and then
		  choose the relevant UART0 base address.

		  Note that this will only work with standard A-class core tiles,
		  and may fail with non-standard SMM or custom software models.

	config DEBUG_VEXPRESS_UART0_CA9
		bool "Use PL011 UART0 at 0x10009000 (V2P-CA9 core tile)"
		depends on ARCH_VEXPRESS
		select DEBUG_UART_PL01X
		help
		  This option selects UART0 at 0x10009000. Except for custom models,
		  this applies only to the V2P-CA9 tile.

	config DEBUG_VEXPRESS_UART0_RS1
		bool "Use PL011 UART0 at 0x1c090000 (RS1 complaint tiles)"
		depends on ARCH_VEXPRESS
		select DEBUG_UART_PL01X
		help
		  This option selects UART0 at 0x1c090000. This applies to most
		  of the tiles using the RS1 memory map, including all new A-class
		  core tiles, FPGA-based SMMs and software models.

	config DEBUG_VEXPRESS_UART0_CRX
		bool "Use PL011 UART0 at 0xb0090000 (Cortex-R compliant tiles)"
		depends on ARCH_VEXPRESS && !MMU
		select DEBUG_UART_PL01X
		help
		  This option selects UART0 at 0xb0090000. This is appropriate for
		  Cortex-R series tiles and SMMs, such as Cortex-R5 and Cortex-R7

	config DEBUG_VF_UART
		bool "Vybrid UART"
		depends on SOC_VF610
		help
		  Say Y here if you want kernel low-level debugging support
		  on Vybrid based platforms.

	config DEBUG_VT8500_UART0
		bool "Use UART0 on VIA/Wondermedia SoCs"
		depends on ARCH_VT8500
		help
		  This option selects UART0 on VIA/Wondermedia System-on-a-chip
		  devices, including VT8500, WM8505, WM8650 and WM8850.

	config DEBUG_ZYNQ_UART0
		bool "Kernel low-level debugging on Xilinx Zynq using UART0"
		depends on ARCH_ZYNQ
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART0 on the Zynq platform.

	config DEBUG_ZYNQ_UART1
		bool "Kernel low-level debugging on Xilinx Zynq using UART1"
		depends on ARCH_ZYNQ
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART1 on the Zynq platform.

		  If you have a ZC702 board and want early boot messages to
		  appear on the USB serial adaptor, select this option.

	config DEBUG_ICEDCC
		bool "Kernel low-level debugging via EmbeddedICE DCC channel"
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the EmbeddedICE macrocell's DCC channel using
		  co-processor 14. This is known to work on the ARM9 style ICE
		  channel and on the XScale with the PEEDI.

		  Note that the system will appear to hang during boot if there
		  is nothing connected to read from the DCC.

	config DEBUG_SEMIHOSTING
		bool "Kernel low-level debug output via semihosting I/O"
		help
		  Semihosting enables code running on an ARM target to use
		  the I/O facilities on a host debugger/emulator through a
		  simple SVC call. The host debugger or emulator must have
		  semihosting enabled for the special svc call to be trapped
		  otherwise the kernel will crash.

		  This is known to work with OpenOCD, as well as
		  ARM's Fast Models, or any other controlling environment
		  that implements semihosting.

		  For more details about semihosting, please see
		  chapter 8 of DUI0203I_rvct_developer_guide.pdf from ARM Ltd.

	config DEBUG_LL_UART_8250
		bool "Kernel low-level debugging via 8250 UART"
		help
		  Say Y here if you wish the debug print routes to direct
		  their output to an 8250 UART.  You can use this option
		  to provide the parameters for the 8250 UART rather than
		  selecting one of the platform specific options above if
		  you know the parameters for the port.

		  This option is preferred over the platform specific
		  options; the platform specific options are deprecated
		  and will be soon removed.

	config DEBUG_LL_UART_PL01X
		bool "Kernel low-level debugging via ARM Ltd PL01x Primecell UART"
		help
		  Say Y here if you wish the debug print routes to direct
		  their output to a PL01x Primecell UART.  You can use
		  this option to provide the parameters for the UART
		  rather than selecting one of the platform specific
		  options above if you know the parameters for the port.

		  This option is preferred over the platform specific
		  options; the platform specific options are deprecated
		  and will be soon removed.

endchoice

config DEBUG_AT91_UART
	bool
	depends on ARCH_AT91

config DEBUG_EXYNOS_UART
	bool

config DEBUG_S3C64XX_UART
	bool

config DEBUG_S5PV210_UART
	bool

config DEBUG_S3C_UART
	depends on DEBUG_S3C64XX_UART ||  DEBUG_S5PV210_UART || \
		   DEBUG_EXYNOS_UART
	int
	default "0" if DEBUG_S3C_UART0
	default "1" if DEBUG_S3C_UART1
	default "2" if DEBUG_S3C_UART2
	default "3" if DEBUG_S3C_UART3

config DEBUG_OMAP2PLUS_UART
	bool
	depends on ARCH_OMAP2PLUS

config DEBUG_IMX_UART_PORT
	int "i.MX Debug UART Port Selection"
	depends on DEBUG_IMX1_UART || \
		   DEBUG_IMX25_UART || \
		   DEBUG_IMX27_UART || \
		   DEBUG_IMX31_UART || \
		   DEBUG_IMX35_UART || \
		   DEBUG_IMX50_UART || \
		   DEBUG_IMX51_UART || \
		   DEBUG_IMX53_UART || \
		   DEBUG_IMX6Q_UART || \
		   DEBUG_IMX6SL_UART || \
		   DEBUG_IMX6SX_UART || \
		   DEBUG_IMX6UL_UART || \
		   DEBUG_IMX7D_UART
	default 1
	help
	  Choose UART port on which kernel low-level debug messages
	  should be output.

config DEBUG_VF_UART_PORT
	int "Vybrid Debug UART Port Selection" if DEBUG_VF_UART
	default 1
	range 0 3
	depends on SOC_VF610
	help
	  Choose UART port on which kernel low-level debug messages
	  should be output.

config DEBUG_TEGRA_UART
	bool
	depends on ARCH_TEGRA

config DEBUG_STM32_UART
	bool
	depends on ARCH_STM32

config DEBUG_UART_FLOW_CONTROL
	bool "Enable flow control (CTS) for the debug UART"
	depends on DEBUG_LL
	default y if DEBUG_FOOTBRIDGE_COM1 || DEBUG_GEMINI || ARCH_RPC
	help
	  Some UART ports are connected to terminals that will use modem
	  control signals to indicate whether they are ready to receive text.
	  In practice this means that the terminal is asserting the special
	  control signal CTS (Clear To Send). If your debug UART supports
	  this and your debug terminal will require it, enable this option.

config DEBUG_LL_INCLUDE
	string
	default "debug/sa1100.S" if DEBUG_SA1100
	default "debug/palmchip.S" if DEBUG_UART_8250_PALMCHIP
	default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250
	default "debug/at91.S" if DEBUG_AT91_UART
	default "debug/asm9260.S" if DEBUG_ASM9260_UART
	default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2
	default "debug/dc21285.S" if DEBUG_DC21285_PORT
	default "debug/meson.S" if DEBUG_MESON_UARTAO
	default "debug/pl01x.S" if DEBUG_LL_UART_PL01X || DEBUG_UART_PL01X
	default "debug/exynos.S" if DEBUG_EXYNOS_UART
	default "debug/icedcc.S" if DEBUG_ICEDCC
	default "debug/imx.S" if DEBUG_IMX1_UART || \
				 DEBUG_IMX25_UART || \
				 DEBUG_IMX27_UART || \
				 DEBUG_IMX31_UART || \
				 DEBUG_IMX35_UART || \
				 DEBUG_IMX50_UART || \
				 DEBUG_IMX51_UART || \
				 DEBUG_IMX53_UART || \
				 DEBUG_IMX6Q_UART || \
				 DEBUG_IMX6SL_UART || \
				 DEBUG_IMX6SX_UART || \
				 DEBUG_IMX6UL_UART || \
				 DEBUG_IMX7D_UART
	default "debug/msm.S" if DEBUG_QCOM_UARTDM
	default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART
	default "debug/renesas-scif.S" if DEBUG_R7S72100_SCIF2
	default "debug/renesas-scif.S" if DEBUG_R7S9210_SCIF2
	default "debug/renesas-scif.S" if DEBUG_R7S9210_SCIF4
	default "debug/renesas-scif.S" if DEBUG_RCAR_GEN1_SCIF0
	default "debug/renesas-scif.S" if DEBUG_RCAR_GEN1_SCIF2
	default "debug/renesas-scif.S" if DEBUG_RCAR_GEN2_SCIF0
	default "debug/renesas-scif.S" if DEBUG_RCAR_GEN2_SCIF1
	default "debug/renesas-scif.S" if DEBUG_RCAR_GEN2_SCIF2
	default "debug/renesas-scif.S" if DEBUG_RCAR_GEN2_SCIF4
	default "debug/renesas-scif.S" if DEBUG_RCAR_GEN2_SCIFA2
	default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA0
	default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA1
	default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA4
	default "debug/s3c24xx.S" if DEBUG_S3C64XX_UART
	default "debug/s5pv210.S" if DEBUG_S5PV210_UART
	default "debug/sti.S" if DEBUG_STIH41X_ASC2
	default "debug/sti.S" if DEBUG_STIH41X_SBC_ASC1
	default "debug/sti.S" if DEBUG_STIH418_SBC_ASC0
	default "debug/stm32.S" if DEBUG_STM32_UART
	default "debug/tegra.S" if DEBUG_TEGRA_UART
	default "debug/ux500.S" if DEBUG_UX500_UART
	default "debug/vexpress.S" if DEBUG_VEXPRESS_UART0_DETECT
	default "debug/vf.S" if DEBUG_VF_UART
	default "debug/vt8500.S" if DEBUG_VT8500_UART0
	default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1
	default "debug/bcm63xx.S" if DEBUG_BCM63XX_UART
	default "debug/digicolor.S" if DEBUG_DIGICOLOR_UA0
	default "debug/brcmstb.S" if DEBUG_BRCMSTB_UART
	default "mach/debug-macro.S"

# Compatibility options for PL01x
config DEBUG_UART_PL01X
	bool

# Compatibility options for 8250
config DEBUG_UART_8250
	def_bool ARCH_IXP4XX || ARCH_RPC

config DEBUG_UART_PHYS
	hex "Physical base address of debug UART"
	default 0x01c28000 if DEBUG_SUNXI_UART0
	default 0x01c28400 if DEBUG_SUNXI_UART1
	default 0x01d0c000 if DEBUG_DAVINCI_DA8XX_UART1
	default 0x01d0d000 if DEBUG_DAVINCI_DA8XX_UART2
	default 0x01f02800 if DEBUG_SUNXI_R_UART
	default 0x02530c00 if DEBUG_KEYSTONE_UART0
	default 0x02531000 if DEBUG_KEYSTONE_UART1
	default 0x03010fe0 if ARCH_RPC
	default 0x07000000 if DEBUG_SUN9I_UART0
	default 0x09530000 if DEBUG_STIH418_SBC_ASC0
	default 0x10009000 if DEBUG_REALVIEW_STD_PORT || \
				DEBUG_VEXPRESS_UART0_CA9
	default 0x1010c000 if DEBUG_REALVIEW_PB1176_PORT
	default 0x10124000 if DEBUG_RK3X_UART0
	default 0x10126000 if DEBUG_RK3X_UART1
	default 0x101f1000 if DEBUG_VERSATILE
	default 0x101fb000 if DEBUG_NOMADIK_UART
	default 0x10210000 if DEBUG_RV1108_UART2
	default 0x10220000 if DEBUG_RV1108_UART1
	default 0x10230000 if DEBUG_RV1108_UART0
	default 0x11002000 if DEBUG_MT8127_UART0
	default 0x11006000 if DEBUG_MT6589_UART0
	default 0x11009000 if DEBUG_MT8135_UART3
	default 0x16000000 if DEBUG_INTEGRATOR
	default 0x1600d000 if DEBUG_SD5203_UART
	default 0x18000300 if DEBUG_BCM_5301X
	default 0x18000400 if DEBUG_BCM_HR2
	default 0x18023000 if DEBUG_BCM_IPROC_UART3
	default 0x1c090000 if DEBUG_VEXPRESS_UART0_RS1
	default 0x1f221000 if DEBUG_MSTARV7_PMUART
	default 0x20001000 if DEBUG_HIP01_UART
	default 0x20060000 if DEBUG_RK29_UART0
	default 0x20064000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2
	default 0x20068000 if DEBUG_RK29_UART2 || DEBUG_RK3X_UART3
	default 0x20201000 if DEBUG_BCM2835
	default 0x3e000000 if DEBUG_BCM_KONA_UART
	default 0x3f201000 if DEBUG_BCM2836
	default 0x40010000 if STM32MP1_DEBUG_UART
	default 0x40011000 if STM32F4_DEBUG_UART || STM32F7_DEBUG_UART || \
				STM32H7_DEBUG_UART
	default 0x40028000 if DEBUG_AT91_SAMV7_USART1
	default 0x40081000 if DEBUG_LPC18XX_UART0
	default 0x40090000 if DEBUG_LPC32XX
	default 0x40100000 if DEBUG_PXA_UART1
	default 0x42000000 if DEBUG_GEMINI
	default 0x44e09000 if DEBUG_AM33XXUART1
	default 0x48020000 if DEBUG_OMAP4UART3 || DEBUG_TI81XXUART1
	default 0x48022000 if DEBUG_TI81XXUART2
	default 0x48024000 if DEBUG_TI81XXUART3
	default 0x4806a000 if DEBUG_OMAP2UART1
	default 0x4806c000 if DEBUG_OMAP2UART2
	default 0x4806e000 if DEBUG_OMAP2UART3 || DEBUG_OMAP4UART4
	default 0x49020000 if DEBUG_OMAP3UART3
	default 0x49042000 if DEBUG_OMAP3UART4
	default 0x7c0003f8 if DEBUG_FOOTBRIDGE_COM1
	default 0x7f005000 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART0
	default 0x7f005400 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART1
	default 0x7f005800 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART2
	default 0x7f005c00 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART3
	default 0x80010000 if DEBUG_ASM9260_UART
	default 0x80070000 if DEBUG_IMX23_UART
	default 0x80074000 if DEBUG_IMX28_UART
	default 0x808c0000 if DEBUG_EP93XX || ARCH_EP93XX
	default 0x90020000 if DEBUG_NSPIRE_CLASSIC_UART || DEBUG_NSPIRE_CX_UART
	default 0xb0090000 if DEBUG_VEXPRESS_UART0_CRX
	default 0xc8000000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN
	default 0xc8000003 if ARCH_IXP4XX && CPU_BIG_ENDIAN
	default 0xd0000000 if DEBUG_SPEAR3XX
	default 0xd0012000 if DEBUG_MVEBU_UART0
	default 0xc81004c0 if DEBUG_MESON_UARTAO
	default 0xd4017000 if DEBUG_MMP_UART2
	default 0xd4018000 if DEBUG_MMP_UART3
	default 0xe0000000 if DEBUG_SPEAR13XX
	default 0xe0064200 if DEBUG_AT91_LAN966_FLEXCOM
	default 0xe1824200 if DEBUG_AT91_SAMA7G5_FLEXCOM3
	default 0xe4007000 if DEBUG_HIP04_UART
	default 0xe6c40000 if DEBUG_RMOBILE_SCIFA0
	default 0xe6c50000 if DEBUG_RMOBILE_SCIFA1
	default 0xe6c60000 if DEBUG_RCAR_GEN2_SCIFA2
	default 0xe6c80000 if DEBUG_RMOBILE_SCIFA4
	default 0xe6e58000 if DEBUG_RCAR_GEN2_SCIF2
	default 0xe6e60000 if DEBUG_RCAR_GEN2_SCIF0
	default 0xe6e68000 if DEBUG_RCAR_GEN2_SCIF1
	default 0xe6ee0000 if DEBUG_RCAR_GEN2_SCIF4
	default 0xe8008000 if DEBUG_R7S72100_SCIF2 || DEBUG_R7S9210_SCIF2
	default 0xe8009000 if DEBUG_R7S9210_SCIF4
	default 0xf0000000 if DEBUG_DIGICOLOR_UA0
	default 0xf1012000 if DEBUG_MVEBU_UART0_ALTERNATE
	default 0xf1012100 if DEBUG_MVEBU_UART1_ALTERNATE
	default 0xf7fc9000 if DEBUG_BERLIN_UART
	default 0xf8020000 if DEBUG_AT91_SAMA5D2_UART1
	default 0xf8b00000 if DEBUG_HIX5HD2_UART
	default 0xf991e000 if DEBUG_QCOM_UARTDM
	default 0xfc00c000 if DEBUG_AT91_SAMA5D4_USART3
	default 0xfcb00000 if DEBUG_HI3620_UART
	default 0xfd883000 if DEBUG_ALPINE_UART0
	default 0xfe531000 if DEBUG_STIH41X_SBC_ASC1
	default 0xfed32000 if DEBUG_STIH41X_ASC2
	default 0xff690000 if DEBUG_RK32_UART2
	default 0xffc02000 if DEBUG_SOCFPGA_UART0
	default 0xffc02100 if DEBUG_SOCFPGA_ARRIA10_UART1
	default 0xffc03000 if DEBUG_SOCFPGA_CYCLONE5_UART1
	default 0xffe40000 if DEBUG_RCAR_GEN1_SCIF0
	default 0xffe42000 if DEBUG_RCAR_GEN1_SCIF2
	default 0xfff36000 if DEBUG_HIGHBANK_UART
	default 0xfffb0000 if DEBUG_OMAP1UART1
	default 0xfffb0800 if DEBUG_OMAP1UART2
	default 0xfffb9800 if DEBUG_OMAP1UART3
	default 0xfffe8600 if DEBUG_BCM63XX_UART
	default 0xffffee00 if DEBUG_AT91_SAM9263_DBGU
	default 0xfffff200 if DEBUG_AT91_RM9200_DBGU
	depends on ARCH_EP93XX || \
	        DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
		DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
		DEBUG_QCOM_UARTDM || DEBUG_R7S72100_SCIF2 || \
		DEBUG_R7S9210_SCIF2 || DEBUG_R7S9210_SCIF4 || \
		DEBUG_RCAR_GEN1_SCIF0 || DEBUG_RCAR_GEN1_SCIF2 || \
		DEBUG_RCAR_GEN2_SCIF0 || DEBUG_RCAR_GEN2_SCIF1 || \
		DEBUG_RCAR_GEN2_SCIF2 || DEBUG_RCAR_GEN2_SCIF4 || \
		DEBUG_RCAR_GEN2_SCIFA2 || \
		DEBUG_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \
		DEBUG_RMOBILE_SCIFA4 || \
		DEBUG_S3C64XX_UART || \
		DEBUG_BCM63XX_UART || DEBUG_ASM9260_UART || \
		DEBUG_DIGICOLOR_UA0 || \
		DEBUG_AT91_UART || DEBUG_STM32_UART || \
		DEBUG_STIH41X_ASC2 || DEBUG_STIH41X_SBC_ASC1 || \
		DEBUG_STIH418_SBC_ASC0

config DEBUG_UART_VIRT
	hex "Virtual base address of debug UART"
	default 0xc881f000 if DEBUG_RV1108_UART2
	default 0xc8821000 if DEBUG_RV1108_UART1
	default 0xc8912000 if DEBUG_RV1108_UART0
	default 0xe0010fe0 if ARCH_RPC
	default 0xe0824200 if DEBUG_AT91_SAMA7G5_FLEXCOM3
	default 0xf0010000 if DEBUG_ASM9260_UART
	default 0xf0100000 if DEBUG_DIGICOLOR_UA0
	default 0xf01fb000 if DEBUG_NOMADIK_UART
	default 0xf0201000 if DEBUG_BCM2835 || DEBUG_BCM2836
	default 0xf0221000 if DEBUG_MSTARV7_PMUART
	default 0xf1000300 if DEBUG_BCM_5301X
	default 0xf1000400 if DEBUG_BCM_HR2
	default 0xf1002000 if DEBUG_MT8127_UART0
	default 0xf1006000 if DEBUG_MT6589_UART0
	default 0xf1009000 if DEBUG_MT8135_UART3
	default 0xf1023000 if DEBUG_BCM_IPROC_UART3
	default 0xf11f1000 if DEBUG_VERSATILE
	default 0xf1600000 if DEBUG_INTEGRATOR
	default 0xf1c28000 if DEBUG_SUNXI_UART0
	default 0xf1c28400 if DEBUG_SUNXI_UART1
	default 0xf1f02800 if DEBUG_SUNXI_R_UART
	default 0xf31004c0 if DEBUG_MESON_UARTAO
	default 0xf4090000 if DEBUG_LPC32XX
	default 0xf4200000 if DEBUG_GEMINI
	default 0xf6200000 if DEBUG_PXA_UART1
	default 0xf7000000 if DEBUG_SUN9I_UART0
	default 0xf7000000 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART0
	default 0xf7000400 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART1
	default 0xf7000800 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART2
	default 0xf7000c00 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART3
	default 0xf7020000 if DEBUG_AT91_SAMA5D2_UART1
	default 0xf7fc9000 if DEBUG_BERLIN_UART
	default 0xf8007000 if DEBUG_HIP04_UART
	default 0xf8009000 if DEBUG_VEXPRESS_UART0_CA9
	default 0xf8090000 if DEBUG_VEXPRESS_UART0_RS1
	default 0xf8ffee00 if DEBUG_AT91_SAM9263_DBGU
	default 0xf8fff200 if DEBUG_AT91_RM9200_DBGU
	default 0xf9530000 if DEBUG_STIH418_SBC_ASC0
	default 0xf9e09000 if DEBUG_AM33XXUART1
	default 0xfa020000 if DEBUG_OMAP4UART3 || DEBUG_TI81XXUART1
	default 0xfa022000 if DEBUG_TI81XXUART2
	default 0xfa024000 if DEBUG_TI81XXUART3
	default 0xfa06a000 if DEBUG_OMAP2UART1
	default 0xfa06c000 if DEBUG_OMAP2UART2
	default 0xfa06e000 if DEBUG_OMAP2UART3 || DEBUG_OMAP4UART4
	default 0xfa71e000 if DEBUG_QCOM_UARTDM
	default 0xfb009000 if DEBUG_REALVIEW_STD_PORT
	default 0xfb00c000 if DEBUG_AT91_SAMA5D4_USART3
	default 0xfb020000 if DEBUG_OMAP3UART3
	default 0xfb042000 if DEBUG_OMAP3UART4
	default 0xfb10c000 if DEBUG_REALVIEW_PB1176_PORT
	default 0xfcfe8600 if DEBUG_BCM63XX_UART
	default 0xfd000000 if DEBUG_SPEAR3XX || DEBUG_SPEAR13XX
	default 0xfd064200 if DEBUG_AT91_LAN966_FLEXCOM
	default 0xfd531000 if DEBUG_STIH41X_SBC_ASC1
	default 0xfd883000 if DEBUG_ALPINE_UART0
	default 0xfdd32000 if DEBUG_STIH41X_ASC2
	default 0xfe010000 if STM32MP1_DEBUG_UART
	default 0xfe017000 if DEBUG_MMP_UART2
	default 0xfe018000 if DEBUG_MMP_UART3
	default 0xfe100000 if DEBUG_IMX23_UART || DEBUG_IMX28_UART
	default 0xfe300000 if DEBUG_BCM_KONA_UART
	default 0xfeb00000 if DEBUG_HI3620_UART || DEBUG_HIX5HD2_UART
	default 0xfeb24000 if DEBUG_RK3X_UART0
	default 0xfeb26000 if DEBUG_RK3X_UART1
	default 0xfeb30c00 if DEBUG_KEYSTONE_UART0
	default 0xfeb31000 if DEBUG_KEYSTONE_UART1
	default 0xfec02000 if DEBUG_SOCFPGA_UART0
	default 0xfec02100 if DEBUG_SOCFPGA_ARRIA10_UART1
	default 0xfec03000 if DEBUG_SOCFPGA_CYCLONE5_UART1
	default 0xfec12000 if DEBUG_MVEBU_UART0 || DEBUG_MVEBU_UART0_ALTERNATE
	default 0xfec12100 if DEBUG_MVEBU_UART1_ALTERNATE
	default 0xfec90000 if DEBUG_RK32_UART2
	default 0xfed0c000 if DEBUG_DAVINCI_DA8XX_UART1
	default 0xfed0d000 if DEBUG_DAVINCI_DA8XX_UART2 || DEBUG_SD5203_UART
	default 0xfed60000 if DEBUG_RK29_UART0
	default 0xfed64000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2
	default 0xfed68000 if DEBUG_RK29_UART2 || DEBUG_RK3X_UART3
	default 0xfedc0000 if DEBUG_EP93XX
	default 0xfee003f8 if DEBUG_FOOTBRIDGE_COM1
	default 0xfee20000 if DEBUG_NSPIRE_CLASSIC_UART || DEBUG_NSPIRE_CX_UART
	default 0xfec00000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN
	default 0xfec00003 if ARCH_IXP4XX && CPU_BIG_ENDIAN
	default 0xfef36000 if DEBUG_HIGHBANK_UART
	default 0xff0b0000 if DEBUG_OMAP1UART1
	default 0xff0b0800 if DEBUG_OMAP1UART2
	default 0xff0b9800 if DEBUG_OMAP1UART3
	default 0xffd01000 if DEBUG_HIP01_UART
	default DEBUG_UART_PHYS if !MMU
	depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
		DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
		DEBUG_QCOM_UARTDM || \
		DEBUG_S3C64XX_UART || \
		DEBUG_BCM63XX_UART || DEBUG_ASM9260_UART || \
		DEBUG_DIGICOLOR_UA0 || \
		DEBUG_AT91_UART || DEBUG_STM32_UART || \
		DEBUG_STIH41X_ASC2 || DEBUG_STIH41X_SBC_ASC1 || \
		DEBUG_STIH418_SBC_ASC0

config DEBUG_UART_8250_SHIFT
	int "Register offset shift for the 8250 debug UART"
	depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
	default 0 if DEBUG_FOOTBRIDGE_COM1 || DEBUG_BCM_5301X || \
		DEBUG_BCM_HR2
	default 3 if DEBUG_MSTARV7_PMUART
	default 2

config DEBUG_UART_8250_WORD
	bool "Use 32-bit accesses for 8250 UART"
	depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
	depends on DEBUG_UART_8250_SHIFT >= 2
	default y if DEBUG_SOCFPGA_UART0 || DEBUG_SOCFPGA_ARRIA10_UART1 || \
		DEBUG_SOCFPGA_CYCLONE5_UART1 || DEBUG_KEYSTONE_UART0 || \
		DEBUG_KEYSTONE_UART1 || DEBUG_ALPINE_UART0 || \
		DEBUG_DAVINCI_DA8XX_UART1 || DEBUG_DAVINCI_DA8XX_UART2 || \
		DEBUG_BCM_IPROC_UART3 || DEBUG_BCM_KONA_UART || \
		DEBUG_RK32_UART2

config DEBUG_UART_8250_PALMCHIP
	bool "8250 UART is Palmchip BK-310x"
	depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
	help
	  Palmchip provides a UART implementation compatible with 16550
	  except for having a different register layout.  Say Y here if
	  the debug UART is of this type.

config DEBUG_UNCOMPRESS
	bool "Enable decompressor debugging via DEBUG_LL output"
	depends on !ARCH_MULTIPLATFORM
	depends on !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
	depends on DEBUG_LL && !DEBUG_OMAP2PLUS_UART && \
		     (!DEBUG_TEGRA_UART || !ZBOOT_ROM) && \
		     !DEBUG_BRCMSTB_UART && !DEBUG_SEMIHOSTING
	help
	  Say Y here to enable debug output in the decompressor code, using
	  the selected DEBUG_LL output method.

config UNCOMPRESS_INCLUDE
	string
	default "mach/uncompress.h" if ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100
	default "debug/uncompress.h"

config EARLY_PRINTK
	bool "Early printk"
	depends on DEBUG_LL
	help
	  Say Y here if you want to have an early console using the
	  kernel low-level debugging functions. Add earlyprintk to your
	  kernel parameters to enable this console.

config ARM_KPROBES_TEST
	tristate "Kprobes test module"
	depends on KPROBES && MODULES
	help
	  Perform tests of kprobes API and instruction set simulation.

config PID_IN_CONTEXTIDR
	bool "Write the current PID to the CONTEXTIDR register"
	depends on CPU_COPY_V6
	help
	  Enabling this option causes the kernel to write the current PID to
	  the PROCID field of the CONTEXTIDR register, at the expense of some
	  additional instructions during context switch. Say Y here only if you
	  are planning to use hardware trace tools with this kernel.

source "drivers/hwtracing/coresight/Kconfig"
