diff mbox

[v2] ARM: zynq: Allow UART1 to be used as DEBUG_LL console.

Message ID 1351534769-22155-1-git-send-email-nbowler@elliptictech.com (mailing list archive)
State New, archived
Headers show

Commit Message

Nick Bowler Oct. 29, 2012, 6:19 p.m. UTC
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@elliptictech.com>
Tested-by: Josh Cartwright <josh.cartwright@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(-)

Comments

Michal Simek Oct. 30, 2012, 11:27 a.m. UTC | #1
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@elliptictech.com>
> Tested-by: Josh Cartwright <josh.cartwright@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
Nick Bowler Nov. 1, 2012, 6:39 p.m. UTC | #2
On 2012-10-30 12:27 +0100, Michal Simek wrote:
> On 10/29/2012 07:19 PM, Nick Bowler wrote:
> > +#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

I have no strong feeling either way, so I will send v3 with these
changes.

Thanks,
diff mbox

Patch

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
+
 /* The following are intended for the devices that are mapped early */
 
 #define TTC0_BASE			IOMEM(TTC0_VIRT)
 #define SCU_PERIPH_BASE			IOMEM(SCU_PERIPH_VIRT)
 
-#define LL_UART_PADDR	UART0_PHYS
-#define LL_UART_VADDR	UART0_VIRT
-
 #endif