[PATCH v2] ARM: zynq: Allow UART1 to be used as DEBUG_LL console.
Michal Simek
monstr at monstr.eu
Tue Oct 30 07:27:45 EDT 2012
On 10/29/2012 07:19 PM, Nick Bowler wrote:
> The main UART on the Xilinx ZC702 board is UART1, located at address
> e0001000. Add a Kconfig option to select this device as the low-level
> debugging port. This allows the really early boot printouts to reach
> the USB serial adaptor on this board.
>
> For consistency's sake, add a choice entry for UART0 even though it is
> the the default if UART1 is not selected.
>
> Signed-off-by: Nick Bowler <nbowler at elliptictech.com>
> Tested-by: Josh Cartwright <josh.cartwright at ni.com>
> ---
> v2: rebase on newest patch series, signoff.
>
> This should apply cleanly on top of Josh Cartwright's v5 "zynq subarch
> cleanups" series.
>
> arch/arm/Kconfig.debug | 17 +++++++++++++++++
> arch/arm/mach-zynq/common.c | 6 +++---
> arch/arm/mach-zynq/include/mach/zynq_soc.h | 16 +++++++++++-----
> 3 files changed, 31 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> index b0f3857b3a4c..7754d51f2b19 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -132,6 +132,23 @@ choice
> their output to UART1 serial port on DaVinci TNETV107X
> devices.
>
> + 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_DC21285_PORT
> bool "Kernel low-level debugging messages via footbridge serial port"
> depends on FOOTBRIDGE
> diff --git a/arch/arm/mach-zynq/common.c b/arch/arm/mach-zynq/common.c
> index ba8d14f78d4d..93b91059faab 100644
> --- a/arch/arm/mach-zynq/common.c
> +++ b/arch/arm/mach-zynq/common.c
> @@ -84,9 +84,9 @@ static struct map_desc io_desc[] __initdata = {
>
> #ifdef CONFIG_DEBUG_LL
> {
> - .virtual = UART0_VIRT,
> - .pfn = __phys_to_pfn(UART0_PHYS),
> - .length = UART0_SIZE,
> + .virtual = LL_UART_VADDR,
> + .pfn = __phys_to_pfn(LL_UART_PADDR),
> + .length = UART_SIZE,
> .type = MT_DEVICE,
> },
> #endif
> diff --git a/arch/arm/mach-zynq/include/mach/zynq_soc.h b/arch/arm/mach-zynq/include/mach/zynq_soc.h
> index 1b8bf0ecbcb0..7f4f38bcada9 100644
> --- a/arch/arm/mach-zynq/include/mach/zynq_soc.h
> +++ b/arch/arm/mach-zynq/include/mach/zynq_soc.h
> @@ -25,8 +25,9 @@
> * address that is known to work.
> */
> #define UART0_PHYS 0xE0000000
> -#define UART0_SIZE SZ_4K
> -#define UART0_VIRT 0xF0001000
> +#define UART1_PHYS 0xE0001000
> +#define UART_SIZE SZ_4K
> +#define UART_VIRT 0xF0001000
>
> #define TTC0_PHYS 0xF8001000
> #define TTC0_SIZE SZ_4K
> @@ -36,12 +37,17 @@
> #define SCU_PERIPH_SIZE SZ_8K
> #define SCU_PERIPH_VIRT (TTC0_VIRT - SCU_PERIPH_SIZE)
>
> +#if IS_ENABLED(CONFIG_DEBUG_ZYNQ_UART1)
> +# define LL_UART_PADDR UART1_PHYS
> +# define LL_UART_VADDR UART_VIRT
> +#else
> +# define LL_UART_PADDR UART0_PHYS
> +# define LL_UART_VADDR UART_VIRT
> +#endif
Probably no reason to setup LL_UART_VADDR on two lines.
It is enough to set it up once.
MINOR: It is just my personal preference to use different coding style.
#if IS_ENABLED(CONFIG_DEBUG_ZYNQ_UART1)
# define LL_UART_PADDR UART1_PHYS
#else
# define LL_UART_PADDR UART0_PHYS
#endif
#define LL_UART_VADDR UART_VIRT
Thanks,
Michal
--
Michal Simek, Ing. (M.Eng)
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian
More information about the linux-arm-kernel
mailing list