diff mbox

[v3,2/2] ARM: add lolevel debug support for asm9260

Message ID 1415024052-12351-3-git-send-email-linux@rempel-privat.de (mailing list archive)
State New, archived
Headers show

Commit Message

Oleksij Rempel Nov. 3, 2014, 2:14 p.m. UTC
Since there is no public documentation, this patch also provide register
offsets for different UART units on this SoC.

Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
---
 arch/arm/Kconfig.debug           | 31 ++++++++++++++++++++++++++++---
 arch/arm/include/debug/asm9260.S | 31 +++++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+), 3 deletions(-)
 create mode 100644 arch/arm/include/debug/asm9260.S

Comments

Rob Herring Nov. 3, 2014, 2:46 p.m. UTC | #1
On Mon, Nov 3, 2014 at 10:14 PM, Oleksij Rempel <linux@rempel-privat.de> wrote:
> Since there is no public documentation, this patch also provide register
> offsets for different UART units on this SoC.
>
> Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
> ---
>  arch/arm/Kconfig.debug           | 31 ++++++++++++++++++++++++++++---
>  arch/arm/include/debug/asm9260.S | 31 +++++++++++++++++++++++++++++++
>  2 files changed, 59 insertions(+), 3 deletions(-)
>  create mode 100644 arch/arm/include/debug/asm9260.S
>
> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> index d8f6a2e..66c29db 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -93,6 +93,27 @@ choice
>         prompt "Kernel low-level debugging port"
>         depends on DEBUG_LL
>
> +       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 AT91_DEBUG_LL_DBGU0
>                 bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl"
>                 depends on HAVE_AT91_DBGU0
> @@ -1042,6 +1063,7 @@ config DEBUG_STI_UART
>  config DEBUG_LL_INCLUDE
>         string
>         default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250
> +       default "debug/asm9260.S" if DEBUG_ASM9260_UART
>         default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2
>         default "debug/meson.S" if DEBUG_MESON_UARTAO
>         default "debug/pl01x.S" if DEBUG_LL_UART_PL01X || DEBUG_UART_PL01X
> @@ -1135,6 +1157,7 @@ config DEBUG_UART_PHYS
>         default 0x78000000 if DEBUG_CNS3XXX
>         default 0x7c0003f8 if FOOTBRIDGE
>         default 0x78000000 if DEBUG_CNS3XXX
> +       default 0x80010000 if DEBUG_ASM9260_UART
>         default 0x80070000 if DEBUG_IMX23_UART
>         default 0x80074000 if DEBUG_IMX28_UART
>         default 0x80230000 if DEBUG_PICOXCELL_UART
> @@ -1171,13 +1194,14 @@ config DEBUG_UART_PHYS
>                 DEBUG_LL_UART_EFM32 || \
>                 DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
>                 DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
> -               DEBUG_UART_BCM63XX
> +               DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART
>
>  config DEBUG_UART_VIRT
>         hex "Virtual base address of debug UART"
>         default 0xe0010fe0 if ARCH_RPC
>         default 0xe1000000 if DEBUG_MSM_UART
>         default 0xf0000be0 if ARCH_EBSA110
> +       default 0xf0010000 if DEBUG_ASM9260_UART
>         default 0xf01fb000 if DEBUG_NOMADIK_UART
>         default 0xf0201000 if DEBUG_BCM2835
>         default 0xf1000300 if DEBUG_BCM_5301X
> @@ -1244,7 +1268,7 @@ config DEBUG_UART_VIRT
>         depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
>                 DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
>                 DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
> -               DEBUG_UART_BCM63XX
> +               DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART
>
>  config DEBUG_UART_8250_SHIFT
>         int "Register offset shift for the 8250 debug UART"
> @@ -1286,7 +1310,8 @@ config DEBUG_UNCOMPRESS
>  config UNCOMPRESS_INCLUDE
>         string
>         default "debug/uncompress.h" if ARCH_MULTIPLATFORM || ARCH_MSM || \
> -                                       PLAT_SAMSUNG || ARCH_EFM32
> +                                       PLAT_SAMSUNG || ARCH_EFM32 || \
> +                                       MACH_ASM9260

This should not be needed as multi-platform is enabled.

>         default "mach/uncompress.h"
>
>  config EARLY_PRINTK
> diff --git a/arch/arm/include/debug/asm9260.S b/arch/arm/include/debug/asm9260.S
> new file mode 100644
> index 0000000..c70d51f
> --- /dev/null
> +++ b/arch/arm/include/debug/asm9260.S
> @@ -0,0 +1,31 @@
> +/* arch/arm/mach-imx/include/mach/debug-macro.S

Wrong filename. Just remove this.

> + *
> + * Debugging macro include header
> + *
> + *  Copyright (C) 1994-1999 Russell King
> + *  Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
> + *  Modified for ASM9260 by Oleksij Remepl <linux@rempel-privat.de>
> + *
> + * 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.
> + *
> + */
> +
> +               .macro  addruart, rp, rv, tmp
> +               ldr     \rp, = CONFIG_DEBUG_UART_PHYS
> +               ldr     \rv, = CONFIG_DEBUG_UART_VIRT
> +               .endm
> +
> +               .macro  waituart,rd,rx
> +               .endm
> +
> +               .macro  senduart,rd,rx
> +               str     \rd, [\rx, #0x50]       @ TXDATA
> +               .endm
> +
> +               .macro  busyuart,rd,rx
> +1002:          ldr     \rd, [\rx, #0x60]       @ STAT
> +               tst     \rd, #1 << 27           @ TXEMPTY
> +               beq     1002b                   @ wait until transmit done
> +               .endm
> --
> 1.9.1
>
Oleksij Rempel Nov. 5, 2014, 7:13 a.m. UTC | #2
Should i resend complete patchset, or it is enough to send only updated
patch?

Am 03.11.2014 um 15:46 schrieb Rob Herring:
> On Mon, Nov 3, 2014 at 10:14 PM, Oleksij Rempel <linux@rempel-privat.de> wrote:
>> Since there is no public documentation, this patch also provide register
>> offsets for different UART units on this SoC.
>>
>> Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
>> ---
>>  arch/arm/Kconfig.debug           | 31 ++++++++++++++++++++++++++++---
>>  arch/arm/include/debug/asm9260.S | 31 +++++++++++++++++++++++++++++++
>>  2 files changed, 59 insertions(+), 3 deletions(-)
>>  create mode 100644 arch/arm/include/debug/asm9260.S
>>
>> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
>> index d8f6a2e..66c29db 100644
>> --- a/arch/arm/Kconfig.debug
>> +++ b/arch/arm/Kconfig.debug
>> @@ -93,6 +93,27 @@ choice
>>         prompt "Kernel low-level debugging port"
>>         depends on DEBUG_LL
>>
>> +       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 AT91_DEBUG_LL_DBGU0
>>                 bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl"
>>                 depends on HAVE_AT91_DBGU0
>> @@ -1042,6 +1063,7 @@ config DEBUG_STI_UART
>>  config DEBUG_LL_INCLUDE
>>         string
>>         default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250
>> +       default "debug/asm9260.S" if DEBUG_ASM9260_UART
>>         default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2
>>         default "debug/meson.S" if DEBUG_MESON_UARTAO
>>         default "debug/pl01x.S" if DEBUG_LL_UART_PL01X || DEBUG_UART_PL01X
>> @@ -1135,6 +1157,7 @@ config DEBUG_UART_PHYS
>>         default 0x78000000 if DEBUG_CNS3XXX
>>         default 0x7c0003f8 if FOOTBRIDGE
>>         default 0x78000000 if DEBUG_CNS3XXX
>> +       default 0x80010000 if DEBUG_ASM9260_UART
>>         default 0x80070000 if DEBUG_IMX23_UART
>>         default 0x80074000 if DEBUG_IMX28_UART
>>         default 0x80230000 if DEBUG_PICOXCELL_UART
>> @@ -1171,13 +1194,14 @@ config DEBUG_UART_PHYS
>>                 DEBUG_LL_UART_EFM32 || \
>>                 DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
>>                 DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
>> -               DEBUG_UART_BCM63XX
>> +               DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART
>>
>>  config DEBUG_UART_VIRT
>>         hex "Virtual base address of debug UART"
>>         default 0xe0010fe0 if ARCH_RPC
>>         default 0xe1000000 if DEBUG_MSM_UART
>>         default 0xf0000be0 if ARCH_EBSA110
>> +       default 0xf0010000 if DEBUG_ASM9260_UART
>>         default 0xf01fb000 if DEBUG_NOMADIK_UART
>>         default 0xf0201000 if DEBUG_BCM2835
>>         default 0xf1000300 if DEBUG_BCM_5301X
>> @@ -1244,7 +1268,7 @@ config DEBUG_UART_VIRT
>>         depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
>>                 DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
>>                 DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
>> -               DEBUG_UART_BCM63XX
>> +               DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART
>>
>>  config DEBUG_UART_8250_SHIFT
>>         int "Register offset shift for the 8250 debug UART"
>> @@ -1286,7 +1310,8 @@ config DEBUG_UNCOMPRESS
>>  config UNCOMPRESS_INCLUDE
>>         string
>>         default "debug/uncompress.h" if ARCH_MULTIPLATFORM || ARCH_MSM || \
>> -                                       PLAT_SAMSUNG || ARCH_EFM32
>> +                                       PLAT_SAMSUNG || ARCH_EFM32 || \
>> +                                       MACH_ASM9260
> 
> This should not be needed as multi-platform is enabled.
> 
>>         default "mach/uncompress.h"
>>
>>  config EARLY_PRINTK
>> diff --git a/arch/arm/include/debug/asm9260.S b/arch/arm/include/debug/asm9260.S
>> new file mode 100644
>> index 0000000..c70d51f
>> --- /dev/null
>> +++ b/arch/arm/include/debug/asm9260.S
>> @@ -0,0 +1,31 @@
>> +/* arch/arm/mach-imx/include/mach/debug-macro.S
> 
> Wrong filename. Just remove this.
> 
>> + *
>> + * Debugging macro include header
>> + *
>> + *  Copyright (C) 1994-1999 Russell King
>> + *  Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
>> + *  Modified for ASM9260 by Oleksij Remepl <linux@rempel-privat.de>
>> + *
>> + * 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.
>> + *
>> + */
>> +
>> +               .macro  addruart, rp, rv, tmp
>> +               ldr     \rp, = CONFIG_DEBUG_UART_PHYS
>> +               ldr     \rv, = CONFIG_DEBUG_UART_VIRT
>> +               .endm
>> +
>> +               .macro  waituart,rd,rx
>> +               .endm
>> +
>> +               .macro  senduart,rd,rx
>> +               str     \rd, [\rx, #0x50]       @ TXDATA
>> +               .endm
>> +
>> +               .macro  busyuart,rd,rx
>> +1002:          ldr     \rd, [\rx, #0x60]       @ STAT
>> +               tst     \rd, #1 << 27           @ TXEMPTY
>> +               beq     1002b                   @ wait until transmit done
>> +               .endm
>> --
>> 1.9.1
>>
diff mbox

Patch

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index d8f6a2e..66c29db 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -93,6 +93,27 @@  choice
 	prompt "Kernel low-level debugging port"
 	depends on DEBUG_LL
 
+	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 AT91_DEBUG_LL_DBGU0
 		bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl"
 		depends on HAVE_AT91_DBGU0
@@ -1042,6 +1063,7 @@  config DEBUG_STI_UART
 config DEBUG_LL_INCLUDE
 	string
 	default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250
+	default "debug/asm9260.S" if DEBUG_ASM9260_UART
 	default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2
 	default "debug/meson.S" if DEBUG_MESON_UARTAO
 	default "debug/pl01x.S" if DEBUG_LL_UART_PL01X || DEBUG_UART_PL01X
@@ -1135,6 +1157,7 @@  config DEBUG_UART_PHYS
 	default 0x78000000 if DEBUG_CNS3XXX
 	default 0x7c0003f8 if FOOTBRIDGE
 	default 0x78000000 if DEBUG_CNS3XXX
+	default 0x80010000 if DEBUG_ASM9260_UART
 	default 0x80070000 if DEBUG_IMX23_UART
 	default 0x80074000 if DEBUG_IMX28_UART
 	default 0x80230000 if DEBUG_PICOXCELL_UART
@@ -1171,13 +1194,14 @@  config DEBUG_UART_PHYS
 		DEBUG_LL_UART_EFM32 || \
 		DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
 		DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
-		DEBUG_UART_BCM63XX
+		DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART
 
 config DEBUG_UART_VIRT
 	hex "Virtual base address of debug UART"
 	default 0xe0010fe0 if ARCH_RPC
 	default 0xe1000000 if DEBUG_MSM_UART
 	default 0xf0000be0 if ARCH_EBSA110
+	default 0xf0010000 if DEBUG_ASM9260_UART
 	default 0xf01fb000 if DEBUG_NOMADIK_UART
 	default 0xf0201000 if DEBUG_BCM2835
 	default 0xf1000300 if DEBUG_BCM_5301X
@@ -1244,7 +1268,7 @@  config DEBUG_UART_VIRT
 	depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
 		DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
 		DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
-		DEBUG_UART_BCM63XX
+		DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART
 
 config DEBUG_UART_8250_SHIFT
 	int "Register offset shift for the 8250 debug UART"
@@ -1286,7 +1310,8 @@  config DEBUG_UNCOMPRESS
 config UNCOMPRESS_INCLUDE
 	string
 	default "debug/uncompress.h" if ARCH_MULTIPLATFORM || ARCH_MSM || \
-					PLAT_SAMSUNG || ARCH_EFM32
+					PLAT_SAMSUNG || ARCH_EFM32 || \
+					MACH_ASM9260
 	default "mach/uncompress.h"
 
 config EARLY_PRINTK
diff --git a/arch/arm/include/debug/asm9260.S b/arch/arm/include/debug/asm9260.S
new file mode 100644
index 0000000..c70d51f
--- /dev/null
+++ b/arch/arm/include/debug/asm9260.S
@@ -0,0 +1,31 @@ 
+/* arch/arm/mach-imx/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
+ *  Modified for ASM9260 by Oleksij Remepl <linux@rempel-privat.de>
+ *
+ * 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.
+ *
+ */
+
+		.macro	addruart, rp, rv, tmp
+		ldr	\rp, = CONFIG_DEBUG_UART_PHYS
+		ldr	\rv, = CONFIG_DEBUG_UART_VIRT
+		.endm
+
+		.macro	waituart,rd,rx
+		.endm
+
+		.macro	senduart,rd,rx
+		str	\rd, [\rx, #0x50]	@ TXDATA
+		.endm
+
+		.macro	busyuart,rd,rx
+1002:		ldr	\rd, [\rx, #0x60]	@ STAT
+		tst	\rd, #1 << 27		@ TXEMPTY
+		beq	1002b			@ wait until transmit done
+		.endm