# 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 AMLOGIC_USER_FAULT
        bool "Amlogic user fault helper"
        help
                show more information when catch user fault. Including:
                memory around all registers
                maps with pc/lr
                pfn for all virtual address of regirsters

config 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 && !FUNCTION_GRAPH_TRACER
	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 FRAME_POINTER
	bool

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 DBGU"
		select DEBUG_AT91_UART
		depends on SOC_AT91RM9200 || SOC_AT91SAM9
		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

	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_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_BCM_63XX

	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_CNS3XXX
		bool "Kernel Kernel low-level debugging on Cavium Networks CNS3xxx"
		depends on ARCH_CNS3XXX
		select DEBUG_UART_8250
		help
		  Say Y here if you want the debug print routines to direct
                  their output to the CNS3xxx UART0.

	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_DAVINCI_DMx_UART0
		bool "Kernel low-level debugging on DaVinci DMx using UART0"
		depends on ARCH_DAVINCI_DMx
		select DEBUG_UART_8250
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART0 serial port on DaVinci DMx 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_IMX21_IMX27_UART
		bool "i.MX21 and i.MX27 Debug UART"
		depends on SOC_IMX21 || SOC_IMX27
		help
		  Say Y here if you want kernel low-level debugging support
		  on i.MX21 or 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_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_OMAP7XXUART1
		bool "Kernel low-level debugging via OMAP730 UART1"
		depends on ARCH_OMAP730
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on OMAP730 based platforms on the UART1.

	config DEBUG_OMAP7XXUART2
		bool "Kernel low-level debugging via OMAP730 UART2"
		depends on ARCH_OMAP730
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on OMAP730 based platforms on the UART2.

	config DEBUG_OMAP7XXUART3
		bool "Kernel low-level debugging via OMAP730 UART3"
		depends on ARCH_OMAP730
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on OMAP730 based platforms on the UART3.

	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_PICOXCELL_UART
		depends on ARCH_PICOXCELL
		bool "Use PicoXcell UART for low-level debug"
		select DEBUG_UART_8250
		help
		  Say Y here if you want kernel low-level debugging support
		  on PicoXcell based platforms.

	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_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
		select DEBUG_EXYNOS_UART if ARCH_EXYNOS
		select DEBUG_S3C24XX_UART if ARCH_S3C24XX
		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
		select DEBUG_EXYNOS_UART if ARCH_EXYNOS
		select DEBUG_S3C24XX_UART if ARCH_S3C24XX
		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
		select DEBUG_EXYNOS_UART if ARCH_EXYNOS
		select DEBUG_S3C24XX_UART if ARCH_S3C24XX
		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 PLAT_SAMSUNG && (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_S3C2410_UART0
		depends on ARCH_S3C24XX
		select DEBUG_S3C2410_UART
		bool "Use S3C2410/S3C2412 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_S3C2410_UART1
		depends on ARCH_S3C24XX
		select DEBUG_S3C2410_UART
		bool "Use S3C2410/S3C2412 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_S3C2410_UART2
		depends on ARCH_S3C24XX
		select DEBUG_S3C2410_UART
		bool "Use S3C2410/S3C2412 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_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_SOCFPGA_UART0
		depends on ARCH_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_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_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_SIRFPRIMA2_UART1
		bool "Kernel low-level debugging messages via SiRFprimaII UART1"
		depends on ARCH_PRIMA2
		select DEBUG_SIRFSOC_UART
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the uart1 port on SiRFprimaII devices.

	config DEBUG_SIRFATLAS7_UART0
		bool "Kernel low-level debugging messages via SiRFatlas7 UART0"
		depends on ARCH_ATLAS7
		select DEBUG_SIRFSOC_UART
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the uart0 port on SiRFATLAS7 devices.The uart0
		  is used on SiRFATLAS7 as a extra debug port.sometimes an extra
		  debug port can be very useful.

	config DEBUG_SIRFATLAS7_UART1
		bool "Kernel low-level debugging messages via SiRFatlas7 UART1"
		depends on ARCH_ATLAS7
		select DEBUG_SIRFSOC_UART
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the uart1 port on SiRFATLAS7 devices.

	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 STIH41X_DEBUG_ASC2
		bool "Use StiH415/416 ASC2 UART for low-level debug"
		depends on ARCH_STI
		select DEBUG_STI_UART
		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 STIH41X_DEBUG_SBC_ASC1
		bool "Use StiH415/416 SBC ASC1 UART for low-level debug"
		depends on ARCH_STI
		select DEBUG_STI_UART
		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 STM32F4_DEBUG_UART
		bool "Use STM32F4 UART for low-level debug"
		depends on ARCH_STM32
		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.

		  If unsure, say N.

	config STM32F7_DEBUG_UART
		bool "Use STM32F7 UART for low-level debug"
		depends on ARCH_STM32
		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.

		  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_U300_UART
		bool "Kernel low-level debugging messages via U300 UART0"
		depends on ARCH_U300
		select DEBUG_UART_PL01X
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the uart port on U300 devices.

	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_ZTE_ZX
		bool "Use ZTE ZX UART"
		select DEBUG_UART_PL01X
		depends on ARCH_ZX
		help
		  Say Y here if you are enabling ZTE ZX296702 SOC and need
		  debug uart support.

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

	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_EFM32
		bool "Kernel low-level debugging via efm32 UART"
		depends on ARCH_EFM32
		help
		  Say Y here if you want the debug print routines to direct
		  their output to an UART or USART port on efm32 based
		  machines. Use the following addresses for DEBUG_UART_PHYS:

		    0x4000c000 | USART0
		    0x4000c400 | USART1
		    0x4000c800 | USART2
		    0x4000e000 | UART0
		    0x4000e400 | UART1

	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_S3C2410_UART
	bool
	select DEBUG_S3C24XX_UART

config DEBUG_S3C24XX_UART
	bool

config DEBUG_S3C64XX_UART
	bool

config DEBUG_S5PV210_UART
	bool

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_IMX21_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_STI_UART
	bool
	depends on ARCH_STI

config DEBUG_STM32_UART
	bool
	depends on ARCH_STM32

config DEBUG_SIRFSOC_UART
	bool
	depends on ARCH_SIRF

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/efm32.S" if DEBUG_LL_UART_EFM32
	default "debug/icedcc.S" if DEBUG_ICEDCC
	default "debug/imx.S" if DEBUG_IMX1_UART || \
				 DEBUG_IMX25_UART || \
				 DEBUG_IMX21_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_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_S3C24XX_UART || DEBUG_S3C64XX_UART
	default "debug/s5pv210.S" if DEBUG_S5PV210_UART
	default "debug/sirf.S" if DEBUG_SIRFSOC_UART
	default "debug/sti.S" if DEBUG_STI_UART
	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_EBSA110 || ARCH_IOP32X || ARCH_IXP4XX || ARCH_RPC

config DEBUG_UART_PHYS
	hex "Physical base address of debug UART"
	default 0x01c20000 if DEBUG_DAVINCI_DMx_UART0
	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 0x09405000 if DEBUG_ZTE_ZX
	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 0x18000300 if DEBUG_BCM_5301X
	default 0x18000400 if DEBUG_BCM_HR2
	default 0x18010000 if DEBUG_SIRFATLAS7_UART0
	default 0x18020000 if DEBUG_SIRFATLAS7_UART1
	default 0x18023000 if DEBUG_BCM_IPROC_UART3
	default 0x1c090000 if DEBUG_VEXPRESS_UART0_RS1
	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 0x4000e400 if DEBUG_LL_UART_EFM32
	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 || DEBUG_OMAP3UART1 || \
				DEBUG_OMAP4UART1 || DEBUG_OMAP5UART1
	default 0x4806c000 if DEBUG_OMAP2UART2 || DEBUG_OMAP3UART2 || \
				DEBUG_OMAP4UART2 || DEBUG_OMAP5UART2
	default 0x4806e000 if DEBUG_OMAP2UART3 || DEBUG_OMAP4UART4
	default 0x49020000 if DEBUG_OMAP3UART3
	default 0x49042000 if DEBUG_OMAP3UART4
	default 0x50000000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART0 || \
				DEBUG_S3C2410_UART0)
	default 0x50004000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART1 || \
				DEBUG_S3C2410_UART1)
	default 0x50008000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART2 || \
				DEBUG_S3C2410_UART2)
	default 0x78000000 if DEBUG_CNS3XXX
	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 0x80230000 if DEBUG_PICOXCELL_UART
	default 0x808c0000 if DEBUG_EP93XX || ARCH_EP93XX
	default 0x90020000 if DEBUG_NSPIRE_CLASSIC_UART || DEBUG_NSPIRE_CX_UART
	default 0xb0060000 if DEBUG_SIRFPRIMA2_UART1
	default 0xb0090000 if DEBUG_VEXPRESS_UART0_CRX
	default 0xc0013000 if DEBUG_U300_UART
	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 0xe4007000 if DEBUG_HIP04_UART
	default 0xe6c40000 if DEBUG_RMOBILE_SCIFA0
	default 0xe6c50000 if DEBUG_RMOBILE_SCIFA1
	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 0xf0000be0 if ARCH_EBSA110
	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 0xfe800000 if ARCH_IOP32X
	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 || DEBUG_OMAP7XXUART1
	default 0xfffb0800 if DEBUG_OMAP1UART2 || DEBUG_OMAP7XXUART2
	default 0xfffb9800 if DEBUG_OMAP1UART3 || DEBUG_OMAP7XXUART3
	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_LL_UART_EFM32 || \
		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_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \
		DEBUG_RMOBILE_SCIFA4 || DEBUG_S3C24XX_UART || \
		DEBUG_S3C64XX_UART || \
		DEBUG_BCM63XX_UART || DEBUG_ASM9260_UART || \
		DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 || \
		DEBUG_AT91_UART

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 0xf0000be0 if ARCH_EBSA110
	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 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 0xf7000000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART0 || \
				DEBUG_S3C2410_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 0xf7004000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART1 || \
				DEBUG_S3C2410_UART1)
	default 0xf7008000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART2 || \
				DEBUG_S3C2410_UART2)
	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 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 || DEBUG_OMAP3UART1 || \
				DEBUG_OMAP4UART1 || DEBUG_OMAP5UART1
	default 0xfa06c000 if DEBUG_OMAP2UART2 || DEBUG_OMAP3UART2 || \
				DEBUG_OMAP4UART2 || DEBUG_OMAP5UART2
	default 0xfa06e000 if DEBUG_OMAP2UART3 || DEBUG_OMAP4UART4
	default 0xfa71e000 if DEBUG_QCOM_UARTDM
	default 0xfb002000 if DEBUG_CNS3XXX
	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 0xfc705000 if DEBUG_ZTE_ZX
	default 0xfcfe8600 if DEBUG_BCM63XX_UART
	default 0xfd000000 if DEBUG_SPEAR3XX || DEBUG_SPEAR13XX
	default 0xfd883000 if DEBUG_ALPINE_UART0
	default 0xfe017000 if DEBUG_MMP_UART2
	default 0xfe018000 if DEBUG_MMP_UART3
	default 0xfe100000 if DEBUG_IMX23_UART || DEBUG_IMX28_UART
	default 0xfe230000 if DEBUG_PICOXCELL_UART
	default 0xfe300000 if DEBUG_BCM_KONA_UART
	default 0xfe800000 if ARCH_IOP32X
	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 0xfec10000 if DEBUG_SIRFATLAS7_UART0
	default 0xfec20000 if DEBUG_DAVINCI_DMx_UART0
	default 0xfec20000 if DEBUG_SIRFATLAS7_UART1
	default 0xfec60000 if DEBUG_SIRFPRIMA2_UART1
	default 0xfec90000 if DEBUG_RK32_UART2
	default 0xfed0c000 if DEBUG_DAVINCI_DA8XX_UART1
	default 0xfed0d000 if DEBUG_DAVINCI_DA8XX_UART2
	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 0xfef00000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN
	default 0xfef00003 if ARCH_IXP4XX && CPU_BIG_ENDIAN
	default 0xfef36000 if DEBUG_HIGHBANK_UART
	default 0xfefb0000 if DEBUG_OMAP1UART1 || DEBUG_OMAP7XXUART1
	default 0xfefb0800 if DEBUG_OMAP1UART2 || DEBUG_OMAP7XXUART2
	default 0xfefb9800 if DEBUG_OMAP1UART3 || DEBUG_OMAP7XXUART3
	default 0xff003000 if DEBUG_U300_UART
	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_S3C24XX_UART || \
		DEBUG_S3C64XX_UART || \
		DEBUG_BCM63XX_UART || DEBUG_ASM9260_UART || \
		DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 || \
		DEBUG_AT91_UART

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 || ARCH_IOP32X || DEBUG_BCM_5301X || \
		DEBUG_BCM_HR2 || DEBUG_OMAP7XXUART1 || DEBUG_OMAP7XXUART2 || \
		DEBUG_OMAP7XXUART3
	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_PICOXCELL_UART || \
		DEBUG_SOCFPGA_UART0 || DEBUG_SOCFPGA_ARRIA10_UART1 || \
		DEBUG_SOCFPGA_CYCLONE5_UART1 || DEBUG_KEYSTONE_UART0 || \
		DEBUG_KEYSTONE_UART1 || DEBUG_ALPINE_UART0 || \
		DEBUG_DAVINCI_DMx_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_UART_8250_FLOW_CONTROL
	bool "Enable flow control for 8250 UART"
	depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
	default y if ARCH_EBSA110 || DEBUG_FOOTBRIDGE_COM1 || DEBUG_GEMINI || ARCH_RPC

config DEBUG_UNCOMPRESS
	bool "Enable decompressor debugging via DEBUG_LL output"
	depends on ARCH_MULTIPLATFORM || PLAT_SAMSUNG || ARM_SINGLE_ARMV7M
	depends on DEBUG_LL && !DEBUG_OMAP2PLUS_UART && \
		     (!DEBUG_TEGRA_UART || !ZBOOT_ROM) && \
		     !DEBUG_BRCMSTB_UART
	help
	  This option influences the normal decompressor output for
	  multiplatform kernels.  Normally, multiplatform kernels disable
	  decompressor output because it is not possible to know where to
	  send the decompressor output.

	  When this option is set, the selected DEBUG_LL output method
	  will be re-used for normal decompressor output on multiplatform
	  kernels.
	  

config UNCOMPRESS_INCLUDE
	string
	default "debug/uncompress.h" if ARCH_MULTIPLATFORM || ARCH_MSM || \
					PLAT_SAMSUNG || ARM_SINGLE_ARMV7M
	default "mach/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"
