[v8,6/9] arm: netx: Migrate DEBUG_LL macros to shared directory

Message ID 1408459715-10151-7-git-send-email-daniel.thompson@linaro.org
State New
Headers show

Commit Message

Daniel Thompson Aug. 19, 2014, 2:48 p.m.
As part of the migration we introduce DEBUG_UART_PHYS/DEBUG_UART_VIRT
which default to UART1 but allow a user to configure UART2 or UART3.
We also introduce symbolic names for the registers and flags.

Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Russell King <linux@arm.linux.org.uk>
Acked-by: Arnd Bergmann <arnd.bergmann@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org
---
 arch/arm/Kconfig.debug                        | 17 +++++++++++--
 arch/arm/include/debug/netx.S                 | 36 +++++++++++++++++++++++++++
 arch/arm/mach-netx/include/mach/debug-macro.S | 36 ---------------------------
 3 files changed, 51 insertions(+), 38 deletions(-)
 create mode 100644 arch/arm/include/debug/netx.S
 delete mode 100644 arch/arm/mach-netx/include/mach/debug-macro.S

Comments

Paul Bolle Sept. 15, 2014, 4:34 p.m. | #1
On Tue, 2014-08-19 at 15:48 +0100, Daniel Thompson wrote:
> As part of the migration we introduce DEBUG_UART_PHYS/DEBUG_UART_VIRT
> which default to UART1 but allow a user to configure UART2 or UART3.
> We also introduce symbolic names for the registers and flags.
> 
> Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
> Cc: Russell King <linux@arm.linux.org.uk>
> Acked-by: Arnd Bergmann <arnd.bergmann@linaro.org>
> Cc: linux-arm-kernel@lists.infradead.org

This patch landed in today's linux-next, as 880fa9b6fd73 ("ARM: 8144/1:
netx: Migrate DEBUG_LL macros to shared directory").

> [...]
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -447,6 +447,14 @@ choice
>  		  Say Y here if you want kernel low-level debugging support
>  		  on Vybrid based platforms.
>  
> +	config DEBUG_NETX_UART
> +		bool "Kernel low-level debugging messages via NetX UART"
> +		depends on ARCH_NETX
> +		select DEBUG_UART_NETX

There's no Kconfig symbol DEBUG_UART_NETX in next-20140915. So in
linux-next this is currently a nop. Is this symbol queued somewhere?

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


Paul Bolle
Daniel Thompson Sept. 15, 2014, 9:47 p.m. | #2
On 15/09/14 17:34, Paul Bolle wrote:
> On Tue, 2014-08-19 at 15:48 +0100, Daniel Thompson wrote:
>> As part of the migration we introduce DEBUG_UART_PHYS/DEBUG_UART_VIRT
>> which default to UART1 but allow a user to configure UART2 or UART3.
>> We also introduce symbolic names for the registers and flags.
>>
>> Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
>> Cc: Russell King <linux@arm.linux.org.uk>
>> Acked-by: Arnd Bergmann <arnd.bergmann@linaro.org>
>> Cc: linux-arm-kernel@lists.infradead.org
> 
> This patch landed in today's linux-next, as 880fa9b6fd73 ("ARM: 8144/1:
> netx: Migrate DEBUG_LL macros to shared directory").
> 
>> [...]
>> --- a/arch/arm/Kconfig.debug
>> +++ b/arch/arm/Kconfig.debug
>> @@ -447,6 +447,14 @@ choice
>>  		  Say Y here if you want kernel low-level debugging support
>>  		  on Vybrid based platforms.
>>  
>> +	config DEBUG_NETX_UART
>> +		bool "Kernel low-level debugging messages via NetX UART"
>> +		depends on ARCH_NETX
>> +		select DEBUG_UART_NETX
> 
> There's no Kconfig symbol DEBUG_UART_NETX in next-20140915. So in
> linux-next this is currently a nop. Is this symbol queued somewhere?

No. The symbol isn't queued anywhere.

DEBUG_UART_NETX is a config value that existed transiently when I wrote
the patch and I didn't clean it up properly. I suspect its visual
similarity to DEBUG_NETX_UART means it didn't jump out when I self reviewed.

Thanks for raising this. I will share a patch to remove this.
Daniel Thompson Sept. 16, 2014, 10:37 p.m. | #3
On 15/09/14 22:47, Daniel Thompson wrote:
> On 15/09/14 17:34, Paul Bolle wrote:
>> On Tue, 2014-08-19 at 15:48 +0100, Daniel Thompson wrote:
>>> As part of the migration we introduce DEBUG_UART_PHYS/DEBUG_UART_VIRT
>>> which default to UART1 but allow a user to configure UART2 or UART3.
>>> We also introduce symbolic names for the registers and flags.
>>>
>>> Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
>>> Cc: Russell King <linux@arm.linux.org.uk>
>>> Acked-by: Arnd Bergmann <arnd.bergmann@linaro.org>
>>> Cc: linux-arm-kernel@lists.infradead.org
>>
>> This patch landed in today's linux-next, as 880fa9b6fd73 ("ARM: 8144/1:
>> netx: Migrate DEBUG_LL macros to shared directory").
>>
>>> [...]
>>> --- a/arch/arm/Kconfig.debug
>>> +++ b/arch/arm/Kconfig.debug
>>> @@ -447,6 +447,14 @@ choice
>>>  		  Say Y here if you want kernel low-level debugging support
>>>  		  on Vybrid based platforms.
>>>  
>>> +	config DEBUG_NETX_UART
>>> +		bool "Kernel low-level debugging messages via NetX UART"
>>> +		depends on ARCH_NETX
>>> +		select DEBUG_UART_NETX
>>
>> There's no Kconfig symbol DEBUG_UART_NETX in next-20140915. So in
>> linux-next this is currently a nop. Is this symbol queued somewhere?
> 
> No. The symbol isn't queued anywhere.
> 
> DEBUG_UART_NETX is a config value that existed transiently when I wrote
> the patch and I didn't clean it up properly. I suspect its visual
> similarity to DEBUG_NETX_UART means it didn't jump out when I self reviewed.
> 
> Thanks for raising this. I will share a patch to remove this.

I was just finalizing this and, since it was on my screen anyway, took
another look at my assembler changes.

They are broken! Rather than initializing \rp and \rv as they are
supposed to they set \rp to two different values leaving \rv uninitialized.

This I will also fix.


Daniel.

Patch

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 01f4ee2..d71427e 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -447,6 +447,14 @@  choice
 		  Say Y here if you want kernel low-level debugging support
 		  on Vybrid based platforms.
 
+	config DEBUG_NETX_UART
+		bool "Kernel low-level debugging messages via NetX UART"
+		depends on ARCH_NETX
+		select DEBUG_UART_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
@@ -1074,6 +1082,7 @@  config DEBUG_LL_INCLUDE
 				 DEBUG_IMX6SX_UART
 	default "debug/ks8695.S" if DEBUG_KS8695_UART
 	default "debug/msm.S" if DEBUG_MSM_UART || DEBUG_QCOM_UARTDM
+	default "debug/netx.S" if DEBUG_NETX_UART
 	default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART
 	default "debug/s3c24xx.S" if DEBUG_S3C24XX_UART
 	default "debug/s5pv210.S" if DEBUG_S5PV210_UART
@@ -1106,6 +1115,7 @@  config DEBUG_UART_8250
 
 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
@@ -1176,10 +1186,12 @@  config DEBUG_UART_PHYS
 	depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
 		DEBUG_LL_UART_EFM32 || \
 		DEBUG_UART_8250 || DEBUG_UART_PL01X || \
-		DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART
+		DEBUG_MSM_UART || DEBUG_NETX_UART || DEBUG_QCOM_UARTDM || \
+		DEBUG_S3C24XX_UART
 
 config DEBUG_UART_VIRT
 	hex "Virtual base address of debug UART"
+	default 0xe0000a00 if DEBUG_NETX_UART
 	default 0xe0010fe0 if ARCH_RPC
 	default 0xe1000000 if DEBUG_MSM_UART
 	default 0xf0000be0 if ARCH_EBSA110
@@ -1247,7 +1259,8 @@  config DEBUG_UART_VIRT
 	default DEBUG_UART_PHYS if !MMU
 	depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
 		DEBUG_UART_8250 || DEBUG_UART_PL01X || \
-		DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART
+		DEBUG_MSM_UART || DEBUG_NETX_UART || DEBUG_QCOM_UARTDM || \
+		DEBUG_S3C24XX_UART
 
 config DEBUG_UART_8250_SHIFT
 	int "Register offset shift for the 8250 debug UART"
diff --git a/arch/arm/include/debug/netx.S b/arch/arm/include/debug/netx.S
new file mode 100644
index 0000000..cf7522a
--- /dev/null
+++ b/arch/arm/include/debug/netx.S
@@ -0,0 +1,36 @@ 
+/*
+ * Debugging macro include header
+ *
+ *  Copyright (C) 1994-1999 Russell King
+ *  Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+*/
+
+#define UART_DATA 0
+#define UART_FLAG 0x18
+#define UART_FLAG_BUSY (1 << 3)
+
+		.macro	addruart, rp, rv, tmp
+		ldr	\rp, =CONFIG_DEBUG_UART_PHYS
+		ldr	\rp, =CONFIG_DEBUG_UART_VIRT
+		.endm
+
+		.macro	senduart,rd,rx
+		str	\rd, [\rx, #UART_DATA]
+		.endm
+
+		.macro	busyuart,rd,rx
+1002:		ldr	\rd, [\rx, #UART_FLAG]
+		tst	\rd, #UART_FLAG_BUSY
+		bne	1002b
+		.endm
+
+		.macro	waituart,rd,rx
+1001:		ldr	\rd, [\rx, #UART_FLAG]
+		tst	\rd, #UART_FLAG_BUSY
+		bne	1001b
+		.endm
diff --git a/arch/arm/mach-netx/include/mach/debug-macro.S b/arch/arm/mach-netx/include/mach/debug-macro.S
deleted file mode 100644
index 247781e..0000000
--- a/arch/arm/mach-netx/include/mach/debug-macro.S
+++ /dev/null
@@ -1,36 +0,0 @@ 
-/* arch/arm/mach-netx/include/mach/debug-macro.S
- *
- * Debugging macro include header
- *
- *  Copyright (C) 1994-1999 Russell King
- *  Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
-*/
-
-#include "hardware.h"
-
-		.macro	addruart, rp, rv, tmp
-		mov	\rp, #0x00000a00
-		orr	\rv, \rp, #io_p2v(0x00100000)	@ virtual
-		orr	\rp, \rp, #0x00100000		@ physical
-		.endm
-
-		.macro	senduart,rd,rx
-		str	\rd, [\rx, #0]
-		.endm
-
-		.macro	busyuart,rd,rx
-1002:		ldr	\rd, [\rx, #0x18]
-		tst	\rd, #(1 << 3)
-		bne	1002b
-		.endm
-
-		.macro	waituart,rd,rx
-1001:		ldr	\rd, [\rx, #0x18]
-		tst	\rd, #(1 << 3)
-		bne	1001b
-		.endm