ARM: digicolor: add low level debug support
authorBaruch Siach <baruch@tkos.co.il>
Wed, 14 Jan 2015 08:40:31 +0000 (10:40 +0200)
committerOlof Johansson <olof@lixom.net>
Tue, 27 Jan 2015 23:11:51 +0000 (15:11 -0800)
Use the USART peripheral as UART for low level debug. Only the UA0 port is
currently supported.

Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Olof Johansson <olof@lixom.net>
arch/arm/Kconfig.debug
arch/arm/include/debug/digicolor.S [new file with mode: 0644]

index 453ae2f..b6a073d 100644 (file)
@@ -247,6 +247,13 @@ choice
                  Say Y here if you want the debug print routines to direct
                  their output to the serial port in the DC21285 (Footbridge).
 
+       config DEBUG_DIGICOLOR_UA0
+               bool "Kernel low-level debugging messages via Digicolor UA0"
+               depends on ARCH_DIGICOLOR
+               help
+                 Say Y here if you want the debug print routines to direct
+                 their output to the UA0 serial port in the CX92755.
+
        config DEBUG_FOOTBRIDGE_COM1
                bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1"
                depends on FOOTBRIDGE
@@ -1255,6 +1262,7 @@ config DEBUG_LL_INCLUDE
        default "debug/vt8500.S" if DEBUG_VT8500_UART0
        default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1
        default "debug/bcm63xx.S" if DEBUG_UART_BCM63XX
+       default "debug/digicolor.S" if DEBUG_DIGICOLOR_UA0
        default "mach/debug-macro.S"
 
 # Compatibility options for PL01x
@@ -1377,7 +1385,7 @@ config DEBUG_UART_PHYS
                DEBUG_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \
                DEBUG_RMOBILE_SCIFA4 || DEBUG_S3C24XX_UART || \
                DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \
-               DEBUG_SIRFSOC_UART
+               DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0
 
 config DEBUG_UART_VIRT
        hex "Virtual base address of debug UART"
@@ -1460,7 +1468,8 @@ 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_ASM9260_UART || DEBUG_SIRFSOC_UART
+               DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \
+               DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0
 
 config DEBUG_UART_8250_SHIFT
        int "Register offset shift for the 8250 debug UART"
diff --git a/arch/arm/include/debug/digicolor.S b/arch/arm/include/debug/digicolor.S
new file mode 100644 (file)
index 0000000..c951715
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Debugging macro include header for Conexant Digicolor USART
+ *
+ * Copyright (C) 2014 Paradox Innovation Ltd.
+ *
+ * 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 UA0_STATUS     0x0742
+#define UA0_EMI_REC    0x0744
+
+#define UA0_STATUS_TX_READY    0x40
+
+#ifdef CONFIG_DEBUG_UART_PHYS
+               .macro  addruart, rp, rv, tmp
+               ldr     \rp, =CONFIG_DEBUG_UART_PHYS
+               ldr     \rv, =CONFIG_DEBUG_UART_VIRT
+               .endm
+#endif
+
+               .macro  senduart,rd,rx
+               strb    \rd, [\rx, #UA0_EMI_REC]
+               .endm
+
+               .macro  waituart,rd,rx
+               .endm
+
+       .macro  busyuart,rd,rx
+1001:          ldrb    \rd, [\rx, #UA0_STATUS]
+               tst     \rd, #UA0_STATUS_TX_READY
+               beq     1001b
+               .endm