From patchwork Fri Mar 6 17:42:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anthony PERARD X-Patchwork-Id: 184296 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp7689473ile; Fri, 6 Mar 2020 09:44:17 -0800 (PST) X-Google-Smtp-Source: ADFU+vvxSQPttgHEUzgeMm/Xrqqf05sQpZCYDYeay3F7YGYYRLNSn3IBlyjbzUU4R7BFLMs+DSw9 X-Received: by 2002:a02:c84a:: with SMTP id r10mr4186145jao.105.1583516657684; Fri, 06 Mar 2020 09:44:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583516657; cv=none; d=google.com; s=arc-20160816; b=isU3ibbNlkannHaRU650rvN/wlDYeKSN9a5nn7ZoPtMwubO2waw5U+xCLvSWdmbIYA 1Zk3vWdJ600agQ5NWeC8Kw4aaP5Eh2tVad8XRK1E3CwHT6zdcLQzDV0KMmcJSLo+1ZUc OHGf5KtXNR+mq7OeXjH7C1ePnYsNjVaeify2b/UfQIN+hfiAwJrlf4GSSUkyTKulAMPY b88LUaXcznovRtG58TGBY9L6G6qSzXX3YhBPyFB0KR+0mekpE25mf/EUd0GD5QYdnkmF 9Y8uh0c3Nyu3mQpaCuzVRJpUaoeGLDb7aHU66U/iUmKe9hee4z3fFhB/HFlC4VU8wSMJ U8Zg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:list-subscribe :list-help:list-post:list-unsubscribe:list-id:precedence:subject :mime-version:references:in-reply-to:message-id:date:to:from :ironport-sdr:dkim-signature; bh=+IeEXVvoFmLrO/TLnDGJM5u0McvauN5hEVvjP4DbQ+o=; b=L0/NBsml4O4qMlaYoHlcJap2yb5D5VoSEgj89SmXr1JjrVZI5esMFa941jp/pcGBQ5 ca7QvsrUeWiA15EoKBxZOqUeV6X5TcqH7u90sn9INDSCz+YSc1XeFlZiLfSEOS6UNb8z cJtxTNRFJRrcpwOH5VMrhfWyBdLbFqFDjI5GL+DtNki/+FrV+aC3lEn1dkvJeBaxFc06 EUN0LyVNLWUlEfjv4SACkb6UWrXUouMecCMVXCTikZd6sk/Lb7fRq176ZwGrGDFKd186 ZN03uei9596NZUIRdr32M8iCX04Pr36qC4FNgjXXsj+InnfZVvVzXzy+q5kN8S/GNLDN 52Iw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@citrix.com header.s=securemail header.b=gYzpd9Vk; spf=pass (google.com: best guess record for domain of xen-devel-bounces@lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=citrix.com Return-Path: Received: from lists.xenproject.org (lists.xenproject.org. [192.237.175.120]) by mx.google.com with ESMTPS id f21si2741374ild.122.2020.03.06.09.44.17 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 06 Mar 2020 09:44:17 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of xen-devel-bounces@lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@citrix.com header.s=securemail header.b=gYzpd9Vk; spf=pass (google.com: best guess record for domain of xen-devel-bounces@lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=citrix.com Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jAH04-0003QI-1c; Fri, 06 Mar 2020 17:43:04 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jAH02-0003Q9-6G for xen-devel@lists.xenproject.org; Fri, 06 Mar 2020 17:43:02 +0000 X-Inumbo-ID: ea399394-5fd1-11ea-a854-12813bfff9fa Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id ea399394-5fd1-11ea-a854-12813bfff9fa; Fri, 06 Mar 2020 17:42:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1583516577; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=SOdzdE4czPZS+7ij8CMw1+lOSWSeilhNVWwltMQ72c0=; b=gYzpd9VkOHxlhVITjNWyt2KFSgmeIw9e/LRWC2R5v3sjNKEuV16/NuDj ybS2skJwFlIZZqrNX2btGAaJKb+hDv7du4+PCjAfcdDadV53oOGwB6nHO K4EiiRh45bxOQ6lHs9ZFyXFq0FxWN+dI3JaiiemjvLzRYVkVxtTWpXupA Q=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=anthony.perard@citrix.com; spf=Pass smtp.mailfrom=anthony.perard@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa3.hc3370-68.iphmx.com: no sender authenticity information available from domain of anthony.perard@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa3.hc3370-68.iphmx.com: domain of anthony.perard@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa3.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: SqoMDk17lHAl3ekcpZ9KhFKuHSvOBZxTHRpJxl70R2zC9ksLbuwtGY1eeiEUWhbzNQLqsss6By jwc5qUYmR6fTdGFeh734dD5NjtrAAn94pKzd47shdleYj3kNGQ9LQ+YjoS0LTPEG1EW341+1uo a6W7N0yopS+lmIFHkAV0O9mvQEbDhN7OjNo9HcE9R4Jo0Is7rZxvh0taF5OeYIhfGs85Ftc9mu p2bvz/M0cmapeB0I7Fe3juAiGyZqOOp8VtIIEUCTGgB6QMC+OlcU9zN2wHT8iSOA8YHrLB7Xmt 7ww= X-SBRS: 2.7 X-MesageID: 13522057 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.70,522,1574139600"; d="scan'208";a="13522057" From: Anthony PERARD To: Date: Fri, 6 Mar 2020 17:42:50 +0000 Message-ID: <20200306174250.291503-3-anthony.perard@citrix.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200306174250.291503-1-anthony.perard@citrix.com> References: <20200306174250.291503-1-anthony.perard@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [XEN PATCH v2 2/2] xen/arm: Configure early printk via Kconfig X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Julien Grall , Wei Liu , Andrew Cooper , Ian Jackson , George Dunlap , Julien Grall , Jan Beulich , Anthony PERARD , Volodymyr Babchuk , =?utf-8?q?Roger_Pau_Monn=C3=A9?= Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" From: Julien Grall At the moment, early printk can only be configured on the make command line. It is not very handy because a user has to remove the option everytime it is using another command other than compiling the hypervisor. Furthermore, early printk is one of the few odds one that are not using Kconfig. So this is about time to move it to Kconfig. The new kconfigs options allow a user to eather select a UART driver to use at boot time, and set the parameters, or it is still possible to select a platform which will set the parameters. If a UART driver has been selected, the choice to select a platform won't be possible. Signed-off-by: Julien Grall Signed-off-by: Anthony PERARD Tested-by: Stefano Stabellini --- Original patch: [PATCH for-4.13] xen/arm: Add Skeleton for using configuring early printk using Kconfig <20190913103953.8182-1-julien.grall@arm.com> --- docs/misc/arm/early-printk.txt | 50 ++++---- xen/Kconfig.debug | 2 + xen/arch/arm/Kconfig.debug | 208 +++++++++++++++++++++++++++++++++ xen/arch/arm/Rules.mk | 72 ------------ xen/arch/x86/Kconfig.debug | 0 5 files changed, 234 insertions(+), 98 deletions(-) create mode 100644 xen/arch/arm/Kconfig.debug create mode 100644 xen/arch/x86/Kconfig.debug diff --git a/xen/arch/x86/Kconfig.debug b/xen/arch/x86/Kconfig.debug new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt index 89e081e51eaf..7dff6c314549 100644 --- a/docs/misc/arm/early-printk.txt +++ b/docs/misc/arm/early-printk.txt @@ -1,42 +1,40 @@ How to enable early printk -Early printk can only be enabled if debug=y. You may want to enable it if -you are debbuging code that executes before the console is initialized. +Early printk can only be enabled if CONFIG_DEBUG=y. You may want to enable +it if you are debbuging code that executes before the console is +initialized. Note that selecting this option will limit Xen to a single UART definition. Attempting to boot Xen image on a different platform *will not work*, so this option should not be enable for Xens that are intended to be portable. -CONFIG_EARLY_PRINTK=,, +Select one of the "UART drivers for early printk" in the "Debugging options" of +Kconfig. You will then need to set other options, which depends on the drivers +selected. - and are mandatory arguments: +CONFIG_EARLY_UART_BASE_ADDRESS is a mandatory arguments, it is the base +physical address of the UART to use. - - is the name of the driver, see xen/arch/arm/arm{32,64}/debug-*.inc - (where corresponds to the wildcarded *). - - is the base physical address of the UART to use +Other options depends on the driver selected: + - 8250 + - CONFIG_EARLY_UART_8250_REG_SHIFT is, optionally, the left-shift to + apply to the register offsets within the uart. + - pl011 + - CONFIG_EARLY_UART_BAUD_RATE is, optionally a baud rate which should + be used to configure the UART at start of day. - varies depending on : + Select CONFIG_EARLY_UART_INIT to have the option, if that's set to N + then the code will not try to initialize the UART, so that bootloader + or firmware settings can be used for maximum compatibility. + - scif + - CONFIG_EARLY_UART_SCIF_VERSION is, optionally, the interface version + of the UART. Default to version NONE. - - 8250,, - - is, optionally, the left-shift to apply to the - register offsets within the uart. - - pl011,, - - is, optionally a baud rate which should be used to - configure the UART at start of day. - - If is not given then the code will not try to - initialize the UART, so that bootloader or firmware settings can - be used for maximum compatibility. - - scif,, - - SCIF is, optionally, the interface version of the UART. - - If is not given then the default interface version (SCIF) - will be used. - For all other uarts there are no additional options. As a convenience it is also possible to select from a list of -predefined configurations using CONFIG_EARLY_PRINTK=mach where mach is -the name of the machine: +predefined configurations via "Enable early printk for a specific platform +(deprecated)". - brcm: printk with 8250 on Broadcom 7445D0 boards with A15 processors. - dra7: printk with 8250 on DRA7 platform @@ -58,7 +56,7 @@ the name of the machine: - xgene-storm: printk with 820 on Xgene storm platform - zynqmp: printk with Cadence UART for Xilinx ZynqMP SoCs -These settings are is hardcoded in xen/arch/arm/Rules.mk, +These settings are is hardcoded in xen/arch/arm/Kconfig.debug, see there when adding support for new machines. By default early printk is disabled. diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug index b3511e81a275..ee6ee33b69be 100644 --- a/xen/Kconfig.debug +++ b/xen/Kconfig.debug @@ -128,6 +128,8 @@ config XMEM_POOL_POISON Poison free blocks with 0xAA bytes and verify them when a block is allocated in order to spot use-after-free issues. +source "arch/$(SRCARCH)/Kconfig.debug" + endif # DEBUG || EXPERT endmenu diff --git a/xen/arch/arm/Kconfig.debug b/xen/arch/arm/Kconfig.debug new file mode 100644 index 000000000000..5111f89043ca --- /dev/null +++ b/xen/arch/arm/Kconfig.debug @@ -0,0 +1,208 @@ +choice + bool "UART drivers for early printk" + optional + help + Choose one of the UART driver, then you'll have to specifie the + parameters, like the base address. + + Alternatively, there are platform specific options + config EARLY_UART_CHOICE_8250 + select EARLY_UART_8250 + bool "8250 driver" + config EARLY_UART_CHOICE_CADENCE + select EARLY_UART_CADENCE + depends on ARM_64 + bool "Enable early printk via Cadence UART" + config EARLY_UART_CHOICE_EXYNOS4210 + select EARLY_UART_EXYNOS4210 + depends on ARM_32 + bool "exynos 4210 driver" + config EARLY_UART_CHOICE_MESON + select EARLY_UART_MESON + depends on ARM_64 + bool "meson driver" + config EARLY_UART_CHOICE_MVEBU + select EARLY_UART_MVEBU + depends on ARM_64 + bool "mvebu driver" + config EARLY_UART_CHOICE_PL011 + select EARLY_UART_PL011 + bool "pl011 driver" + config EARLY_UART_CHOICE_SCIF + select EARLY_UART_SCIF + bool "scif driver" +endchoice + + +choice + bool "Enable early printk for a specific platform (deprecated)" + depends on !(EARLY_UART_CHOICE_8250 || EARLY_UART_CHOICE_CADENCE || EARLY_UART_CHOICE_EXYNOS4210 || EARLY_UART_CHOICE_MESON || EARLY_UART_CHOICE_MVEBU || EARLY_UART_CHOICE_PL011 || EARLY_UART_CHOICE_SCIF) + optional + help + Those are platform specific options for early printk. This are + deprecated and will soon be removed. + + Select a UART driver instead. + + config EARLY_PRINTK_BRCM + bool "printk with 8250 on Broadcom 7445D0 boards with A15 processors" + select EARLY_UART_8250 + config EARLY_PRINTK_DRA7 + bool "printk with 8250 on DRA7 platform" + select EARLY_UART_8250 + config EARLY_PRINTK_EXYNOS5250 + bool "printk with the second UART on Exynos5250" + select EARLY_UART_EXYNOS4210 + depends on ARM_32 + config EARLY_PRINTK_FASTMODEL + bool "printk on ARM Fastmodel software emulators" + select EARLY_UART_PL011 + config EARLY_PRINTK_HIKEY960 + bool "printk with pl011 with Hikey 960" + select EARLY_UART_PL011 + config EARLY_PRINTK_JUNO + bool "printk with pl011 on Juno platform" + select EARLY_UART_PL011 + config EARLY_PRINTK_LAGER + bool "printk with SCIF0 on Renesas Lager board (R-Car H2 processor)" + select EARLY_UART_SCIF + config EARLY_PRINTK_MIDWAY + bool "printk with the pl011 on Calxeda Midway processors" + select EARLY_UART_PL011 + config EARLY_PRINTK_MVEBU + bool "printk with the MVEBU for Marvell Armada 3700 SoCs" + select EARLY_UART_MVEBU + depends on ARM_64 + config EARLY_PRINTK_OMAP5432 + bool "printk with UART3 on TI OMAP5432 processors" + select EARLY_UART_8250 + config EARLY_PRINTK_RCAR3 + bool "printk with SCIF2 on Renesas R-Car Gen3 processors" + select EARLY_UART_SCIF + config EARLY_PRINTK_SEATTLE + bool "printk with pl011 for AMD Seattle processor" + select EARLY_UART_PL011 + config EARLY_PRINTK_SUN6I + bool "printk with 8250 on Allwinner A31 processors" + select EARLY_UART_8250 + config EARLY_PRINTK_SUN7I + bool "printk with 8250 on Allwinner A20 processors" + select EARLY_UART_8250 + config EARLY_PRINTK_THUNDERX + bool "printk with pl011 for Cavium ThunderX processor" + select EARLY_UART_PL011 + config EARLY_PRINTK_VEXPRESS + bool "printk with pl011 for versatile express" + select EARLY_UART_PL011 + config EARLY_PRINTK_XGENE_MCDIVITT + bool "printk with 820 on Xgene mcdivitt platform" + select EARLY_UART_8250 + config EARLY_PRINTK_XGENE_STORM + bool "printk with 820 on Xgene storm platform" + select EARLY_UART_8250 + config EARLY_PRINTK_ZYNQMP + bool "printk with Cadence UART for Xilinx ZynqMP SoCs" + select EARLY_UART_CADENCE + depends on ARM_64 + help + Say Y here if you want the early printk support on Xilinx + ZynQMP platform. + +endchoice + + +config EARLY_UART_8250 + bool +config EARLY_UART_CADENCE + bool +config EARLY_UART_EXYNOS4210 + bool +config EARLY_UART_MESON + bool +config EARLY_UART_MVEBU + bool +config EARLY_UART_PL011 + bool +config EARLY_UART_SCIF + bool + +config EARLY_PRINTK + depends on EARLY_UART_8250 || EARLY_UART_CADENCE || EARLY_UART_EXYNOS4210 || EARLY_UART_MESON || EARLY_UART_MVEBU || EARLY_UART_PL011 || EARLY_UART_SCIF + def_bool y + +config EARLY_UART_BASE_ADDRESS + depends on EARLY_UART_8250 || EARLY_UART_CADENCE || EARLY_UART_EXYNOS4210 || EARLY_UART_MESON || EARLY_UART_MVEBU || EARLY_UART_PL011 || EARLY_UART_SCIF + hex "Physical base address of debug UART" + default 0xF040AB00 if EARLY_PRINTK_BRCM + default 0x4806A000 if EARLY_PRINTK_DRA7 + default 0x1c090000 if EARLY_PRINTK_FASTMODEL + default 0x12c20000 if EARLY_PRINTK_EXYNOS5250 + default 0xfff32000 if EARLY_PRINTK_HIKEY960 + default 0x7ff80000 if EARLY_PRINTK_JUNO + default 0xe6e60000 if EARLY_PRINTK_LAGER + default 0xfff36000 if EARLY_PRINTK_MIDWAY + default 0xd0012000 if EARLY_PRINTK_MVEBU + default 0x48020000 if EARLY_PRINTK_OMAP5432 + default 0xe6e88000 if EARLY_PRINTK_RCAR3 + default 0xe1010000 if EARLY_PRINTK_SEATTLE + default 0x01c28000 if EARLY_PRINTK_SUN6I + default 0x01c28000 if EARLY_PRINTK_SUN7I + default 0x87e024000000 if EARLY_PRINTK_THUNDERX + default 0x1c090000 if EARLY_PRINTK_VEXPRESS + default 0x1c021000 if EARLY_PRINTK_XGENE_MCDIVITT + default 0x1c020000 if EARLY_PRINTK_XGENE_STORM + default 0xff000000 if EARLY_PRINTK_ZYNQMP + +config EARLY_UART_INIT + depends on EARLY_UART_PL011 + bool "Initialize UART early" + default y if EARLY_PRINTK_FASTMODEL + help + Select N to keep the settings that the bootloader or firmware + have selected, for maximum compatibility. + + Select Y to initialize the UART with a new baud rate. + +config EARLY_UART_BAUD_RATE + depends on EARLY_UART_PL011 && EARLY_UART_INIT + int "Early printk UART baud rate" + help + Sets the baud rate which should be used to configure the UART + at start of day. + + To avoid initialize the UART and reuse the bootloader or + firmware settings, set CONFIG_EARLY_UART_INIT to N (for maximum + compatibility). + default 115200 if EARLY_PRINTK_FASTMODEL + +config EARLY_UART_8250_REG_SHIFT + depends on EARLY_UART_8250 + int "left-shift to apply to the register offsets within the uart" + default 2 if EARLY_PRINTK_BRCM + default 2 if EARLY_PRINTK_DRA7 + default 2 if EARLY_PRINTK_OMAP5432 + default 2 if EARLY_PRINTK_SUN6I + default 2 if EARLY_PRINTK_SUN7I + default 2 if EARLY_PRINTK_XGENE_MCDIVITT + default 2 if EARLY_PRINTK_XGENE_STORM + default 0 + +choice EARLY_UART_SCIF_VERSION + prompt "UART SCIF interface version" + depends on EARLY_UART_SCIF + default EARLY_UART_SCIF_VERSION_NONE + config EARLY_UART_SCIF_VERSION_NONE + bool "default scif interface" + config EARLY_UART_SCIF_VERSION_A + bool "SCIF interface version A" +endchoice + +config EARLY_PRINTK_INC + string + default "debug-8250.inc" if EARLY_UART_8250 + default "debug-cadence.inc" if EARLY_UART_CADENCE + default "debug-exynos4210.inc" if EARLY_UART_EXYNOS4210 + default "debug-meson.inc" if EARLY_UART_MESON + default "debug-mvebu.inc" if EARLY_UART_MVEBU + default "debug-pl011.inc" if EARLY_UART_PL011 + default "debug-scif.inc" if EARLY_UART_SCIF diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk index 85f8a4c6f914..43f6f3d38b9b 100644 --- a/xen/arch/arm/Rules.mk +++ b/xen/arch/arm/Rules.mk @@ -17,75 +17,3 @@ CFLAGS-$(CONFIG_ARM_32) += -mcpu=cortex-a15 CFLAGS-$(CONFIG_ARM_64) += -mcpu=generic CFLAGS-$(CONFIG_ARM_64) += -mgeneral-regs-only # No fp registers etc - -ifeq ($(CONFIG_DEBUG),y) - -# See docs/misc/arm/early-printk.txt for syntax - -EARLY_PRINTK_brcm := 8250,0xF040AB00,2 -EARLY_PRINTK_dra7 := 8250,0x4806A000,2 -EARLY_PRINTK_fastmodel := pl011,0x1c090000,115200 -EARLY_PRINTK_exynos5250 := exynos4210,0x12c20000 -EARLY_PRINTK_hikey960 := pl011,0xfff32000 -EARLY_PRINTK_juno := pl011,0x7ff80000 -EARLY_PRINTK_lager := scif,0xe6e60000 -EARLY_PRINTK_midway := pl011,0xfff36000 -EARLY_PRINTK_mvebu := mvebu,0xd0012000 -EARLY_PRINTK_omap5432 := 8250,0x48020000,2 -EARLY_PRINTK_rcar3 := scif,0xe6e88000 -EARLY_PRINTK_seattle := pl011,0xe1010000 -EARLY_PRINTK_sun6i := 8250,0x01c28000,2 -EARLY_PRINTK_sun7i := 8250,0x01c28000,2 -EARLY_PRINTK_thunderx := pl011,0x87e024000000 -EARLY_PRINTK_vexpress := pl011,0x1c090000 -EARLY_PRINTK_xgene-mcdivitt := 8250,0x1c021000,2 -EARLY_PRINTK_xgene-storm := 8250,0x1c020000,2 -EARLY_PRINTK_zynqmp := cadence,0xff000000 - -ifneq ($(EARLY_PRINTK_$(CONFIG_EARLY_PRINTK)),) -EARLY_PRINTK_CFG := $(subst $(comma), ,$(EARLY_PRINTK_$(CONFIG_EARLY_PRINTK))) -else -EARLY_PRINTK_CFG := $(subst $(comma), ,$(CONFIG_EARLY_PRINTK)) -endif - -# Extract configuration from string -EARLY_PRINTK_INC := $(word 1,$(EARLY_PRINTK_CFG)) -EARLY_UART_BASE_ADDRESS := $(word 2,$(EARLY_PRINTK_CFG)) - -# UART specific options -ifeq ($(EARLY_PRINTK_INC),8250) -EARLY_UART_REG_SHIFT := $(word 3,$(EARLY_PRINTK_CFG)) -endif -ifeq ($(EARLY_PRINTK_INC),pl011) -ifneq ($(word 3,$(EARLY_PRINTK_CFG)),) -EARLY_PRINTK_INIT_UART := y -EARLY_PRINTK_BAUD := $(word 3,$(EARLY_PRINTK_CFG)) -endif -endif -ifeq ($(EARLY_PRINTK_INC),scif) -ifneq ($(word 3,$(EARLY_PRINTK_CFG)),) -CFLAGS-y += -DCONFIG_EARLY_UART_SCIF_VERSION_$(word 3,$(EARLY_PRINTK_CFG)) -else -CFLAGS-y += -DCONFIG_EARLY_UART_SCIF_VERSION_NONE -endif -endif - -ifneq ($(EARLY_PRINTK_INC),) -override CONFIG_EARLY_PRINTK := y -endif - -CFLAGS-$(CONFIG_EARLY_PRINTK) += -DCONFIG_EARLY_PRINTK -CFLAGS-$(EARLY_PRINTK_INIT_UART) += -DCONFIG_EARLY_UART_INIT -CFLAGS-$(CONFIG_EARLY_PRINTK) += -DCONFIG_EARLY_PRINTK_INC=\"debug-$(EARLY_PRINTK_INC).inc\" -CFLAGS-$(CONFIG_EARLY_PRINTK) += -DCONFIG_EARLY_UART_BAUD_RATE=$(EARLY_PRINTK_BAUD) -CFLAGS-$(CONFIG_EARLY_PRINTK) += -DCONFIG_EARLY_UART_BASE_ADDRESS=$(EARLY_UART_BASE_ADDRESS) -CFLAGS-$(CONFIG_EARLY_PRINTK) += -DCONFIG_EARLY_UART_8250_REG_SHIFT=$(EARLY_UART_REG_SHIFT) - -else # !CONFIG_DEBUG - -ifneq ($(CONFIG_EARLY_PRINTK),) -# Early printk is dependant on a debug build. -$(error CONFIG_EARLY_PRINTK enabled for non-debug build) -endif - -endif