menu "Kernel hacking"

source "lib/Kconfig.debug"

config ARM_PTDUMP
	bool "Export kernel pagetable layout to userspace via debugfs"
	depends on DEBUG_KERNEL
	depends on MMU
	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"

# RMK wants arm kernels compiled with frame pointers or stack unwinding.
# If you know what you are doing and are willing to live without stack
# traces, you can get a slightly smaller kernel by setting this option to
# n, but then RMK will have to kill you ;).
config FRAME_POINTER
	bool
	depends on !THUMB2_KERNEL
	default y if !ARM_UNWIND || FUNCTION_GRAPH_TRACER
	help
	  If you say N here, the resulting kernel will be slightly smaller and
	  faster. However, if neither FRAME_POINTER nor ARM_UNWIND are enabled,
	  when a problem occurs with the kernel, the information that is
	  reported is severely limited.

config ARM_UNWIND
	bool "Enable stack unwinding support (EXPERIMENTAL)"
	depends on AEABI
	default y
	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. If unsure say Y.

config OLD_MCOUNT
	bool
	depends on FUNCTION_TRACER && FRAME_POINTER
	default y

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_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_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_KS8695_UART
		bool "KS8695 Debug UART"
		depends on ARCH_KS8695
		help
		  Say Y here if you want kernel low-level debugging support
		  on KS8695.

	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_NETX_UART
		bool "Kernel low-level debugging messages via NetX UART"
		depends on ARCH_NETX
		help
		  Say Y here if you want kernel low-level debugging support
		  on Hilscher NetX based platforms.

	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_OMAP2PLUS_UART
		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_OMAP2PLUS_UART

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

	config DEBUG_OMAP3UART3
		bool "Kernel low-level debugging messages via OMAP3 UART3 (most omap3 boards)"
		depends on ARCH_OMAP2PLUS
		select DEBUG_OMAP2PLUS_UART
		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_OMAP2PLUS_UART

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

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

	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_OMAP2PLUS_UART

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

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

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

	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
		  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_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_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 R8A7790/R8A7791/R8A7792/R8A7793"
		depends on ARCH_R8A7790 || ARCH_R8A7791 || ARCH_R8A7792 || ARCH_R8A7793
		help
		  Say Y here if you want kernel low-level debugging support
		  via SCIF0 on Renesas R-Car H2 (R8A7790), M2-W (R8A7791), V2H
		  (R8A7792), or M2-N (R8A7793).

	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_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_UART1
		depends on ARCH_SOCFPGA
		bool "Use SOCFPGA 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_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 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" 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 1
	depends on ARCH_MXC
	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_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/ks8695.S" if DEBUG_KS8695_UART
	default "debug/msm.S" if DEBUG_QCOM_UARTDM
	default "debug/netx.S" if DEBUG_NETX_UART
	default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART
	default "debug/renesas-scif.S" if DEBUG_R7S72100_SCIF2
	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_SCIF2
	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/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_IOP13XX || ARCH_IOP32X || ARCH_IOP33X || ARCH_IXP4XX || \
		ARCH_RPC

config DEBUG_UART_PHYS
	hex "Physical base address of debug UART"
	default 0x00100a00 if DEBUG_NETX_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 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 0x18010000 if DEBUG_SIRFATLAS7_UART0
	default 0x18020000 if DEBUG_SIRFATLAS7_UART1
	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 0x3f201000 if DEBUG_BCM2836
	default 0x3e000000 if DEBUG_BCM_KONA_UART
	default 0x4000e400 if DEBUG_LL_UART_EFM32
	default 0x40081000 if DEBUG_LPC18XX_UART0
	default 0x40090000 if DEBUG_LPC32XX
	default 0x40100000 if DEBUG_PXA_UART1
	default 0x42000000 if DEBUG_GEMINI
	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 0xe8008000 if DEBUG_R7S72100_SCIF2
	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_UART1
	default 0xffd82340 if ARCH_IOP13XX
	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
	default 0xfffff700 if ARCH_IOP33X
	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_NETX_UART || \
		DEBUG_QCOM_UARTDM || DEBUG_R7S72100_SCIF2 || \
		DEBUG_RCAR_GEN1_SCIF0 || DEBUG_RCAR_GEN1_SCIF2 || \
		DEBUG_RCAR_GEN2_SCIF0 || DEBUG_RCAR_GEN2_SCIF2 || \
		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 0xe0000a00 if DEBUG_NETX_UART
	default 0xe0010fe0 if ARCH_RPC
	default 0xf0000be0 if ARCH_EBSA110
	default 0xf0010000 if DEBUG_ASM9260_UART
	default 0xf01fb000 if DEBUG_NOMADIK_UART
	default 0xf0201000 if DEBUG_BCM2835 || DEBUG_BCM2836
	default 0xf1000300 if DEBUG_BCM_5301X
	default 0xf1002000 if DEBUG_MT8127_UART0
	default 0xf1006000 if DEBUG_MT6589_UART0
	default 0xf1009000 if DEBUG_MT8135_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 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 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 0xfd012000 if DEBUG_MVEBU_UART0_ALTERNATE && ARCH_MV78XX0
	default 0xfd883000 if DEBUG_ALPINE_UART0
	default 0xfde12000 if DEBUG_MVEBU_UART0_ALTERNATE && ARCH_DOVE
	default 0xfe012000 if DEBUG_MVEBU_UART0_ALTERNATE && ARCH_ORION5X
	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_UART1
	default 0xfec12000 if (DEBUG_MVEBU_UART0 || DEBUG_MVEBU_UART0_ALTERNATE) && ARCH_MVEBU
	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 0xfee82340 if ARCH_IOP13XX
	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 0xfefff700 if ARCH_IOP33X
	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_NETX_UART || \
		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_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_UART1 || \
		DEBUG_KEYSTONE_UART0 || DEBUG_KEYSTONE_UART1 || \
		DEBUG_ALPINE_UART0 || \
		DEBUG_DAVINCI_DMx_UART0 || DEBUG_DAVINCI_DA8XX_UART1 || \
		DEBUG_DAVINCI_DA8XX_UART2 || \
		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
	depends on ARCH_MULTIPLATFORM || PLAT_SAMSUNG || ARM_SINGLE_ARMV7M
	default y if 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"

endmenu
