linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCHv3 0/2] MSM8660/8960 DEBUG_LL support and cleanups
@ 2011-11-08 18:33 Stephen Boyd
  2011-11-08 18:33 ` [PATCHv3 1/2] ARM: msm: Consolidate and move DEBUG_LL to DEBUG_LL choice Stephen Boyd
  2011-11-08 18:33 ` [PATCHv3 2/2] msm: Support DEBUG_LL on MSM8660 and MSM8960 Stephen Boyd
  0 siblings, 2 replies; 10+ messages in thread
From: Stephen Boyd @ 2011-11-08 18:33 UTC (permalink / raw)
  To: David Brown; +Cc: linux-kernel, linux-arm-msm, linux-arm-kernel

These changes are based on 3.2-rc1.

Changes since v2:
 * Don't use readl/writel directly in uncompress.h as that's
   kernel functionality and not decompress functionality

Stephen Boyd (2):
  ARM: msm: Consolidate and move DEBUG_LL to DEBUG_LL choice
  msm: Support DEBUG_LL on MSM8660 and MSM8960

 arch/arm/Kconfig.debug                          |   37 ++++++++++++++++
 arch/arm/mach-msm/Kconfig                       |   35 +--------------
 arch/arm/mach-msm/include/mach/debug-macro.S    |   51 ++++++++++++++--------
 arch/arm/mach-msm/include/mach/msm_iomap-7x00.h |   12 -----
 arch/arm/mach-msm/include/mach/msm_iomap-7x30.h |   12 -----
 arch/arm/mach-msm/include/mach/msm_iomap-8960.h |    5 ++
 arch/arm/mach-msm/include/mach/msm_iomap-8x50.h |   12 -----
 arch/arm/mach-msm/include/mach/msm_iomap-8x60.h |    5 ++
 arch/arm/mach-msm/include/mach/msm_iomap.h      |   12 +++++
 arch/arm/mach-msm/include/mach/uncompress.h     |   39 ++++++++++++++----
 arch/arm/mach-msm/io.c                          |   15 +++++-
 11 files changed, 137 insertions(+), 98 deletions(-)

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCHv3 1/2] ARM: msm: Consolidate and move DEBUG_LL to DEBUG_LL choice
  2011-11-08 18:33 [PATCHv3 0/2] MSM8660/8960 DEBUG_LL support and cleanups Stephen Boyd
@ 2011-11-08 18:33 ` Stephen Boyd
  2011-11-08 18:33 ` [PATCHv3 2/2] msm: Support DEBUG_LL on MSM8660 and MSM8960 Stephen Boyd
  1 sibling, 0 replies; 10+ messages in thread
From: Stephen Boyd @ 2011-11-08 18:33 UTC (permalink / raw)
  To: David Brown; +Cc: linux-kernel, linux-arm-msm, linux-arm-kernel

Now that DEBUG_LL is a choice we can move MSM's homegrown choice
menu to DEBUG_LL.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
 arch/arm/Kconfig.debug                          |   21 +++++++++++++++
 arch/arm/mach-msm/Kconfig                       |   32 -----------------------
 arch/arm/mach-msm/include/mach/debug-macro.S    |   19 ++-----------
 arch/arm/mach-msm/include/mach/msm_iomap-7x00.h |   12 --------
 arch/arm/mach-msm/include/mach/msm_iomap-7x30.h |   12 --------
 arch/arm/mach-msm/include/mach/msm_iomap-8x50.h |   12 --------
 arch/arm/mach-msm/include/mach/msm_iomap.h      |   12 ++++++++
 arch/arm/mach-msm/io.c                          |    9 ++++--
 8 files changed, 42 insertions(+), 87 deletions(-)

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index c5213e7..333b6a4 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -247,6 +247,27 @@ choice
 		  their output to the standard serial port on the RealView
 		  PB1176 platform.
 
+	config DEBUG_MSM_UART1
+		bool "Kernel low-level debugging messages via MSM UART1"
+		depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50
+		help
+		  Say Y here if you want the debug print routines to direct
+		  their output to the first serial port on MSM devices.
+
+	config DEBUG_MSM_UART2
+		bool "Kernel low-level debugging messages via MSM UART2"
+		depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50
+		help
+		  Say Y here if you want the debug print routines to direct
+		  their output to the second serial port on MSM devices.
+
+	config DEBUG_MSM_UART3
+		bool "Kernel low-level debugging messages via MSM UART3"
+		depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50
+		help
+		  Say Y here if you want the debug print routines to direct
+		  their output to the third serial port on MSM devices.
+
 endchoice
 
 config EARLY_PRINTK
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
index ebde97f..5b07b61 100644
--- a/arch/arm/mach-msm/Kconfig
+++ b/arch/arm/mach-msm/Kconfig
@@ -13,7 +13,6 @@ config ARCH_MSM7X00A
 	select CPU_V6
 	select GPIO_MSM_V1
 	select MSM_PROC_COMM
-	select HAS_MSM_DEBUG_UART_PHYS
 
 config ARCH_MSM7X30
 	bool "MSM7x30"
@@ -25,7 +24,6 @@ config ARCH_MSM7X30
 	select MSM_GPIOMUX
 	select GPIO_MSM_V1
 	select MSM_PROC_COMM
-	select HAS_MSM_DEBUG_UART_PHYS
 
 config ARCH_QSD8X50
 	bool "QSD8X50"
@@ -37,7 +35,6 @@ config ARCH_QSD8X50
 	select MSM_GPIOMUX
 	select GPIO_MSM_V1
 	select MSM_PROC_COMM
-	select HAS_MSM_DEBUG_UART_PHYS
 
 config ARCH_MSM8X60
 	bool "MSM8X60"
@@ -73,9 +70,6 @@ config  ARCH_MSM_ARM11
 config  ARCH_MSM_SCORPION
 	bool
 
-config HAS_MSM_DEBUG_UART_PHYS
-	bool
-
 config  MSM_VIC
 	bool
 
@@ -152,32 +146,6 @@ config MACH_MSM8960_RUMI3
 
 endmenu
 
-config MSM_DEBUG_UART
-	int
-	default 1 if MSM_DEBUG_UART1
-	default 2 if MSM_DEBUG_UART2
-	default 3 if MSM_DEBUG_UART3
-
-if HAS_MSM_DEBUG_UART_PHYS
-choice
-	prompt "Debug UART"
-
-	default MSM_DEBUG_UART_NONE
-
-	config MSM_DEBUG_UART_NONE
-		bool "None"
-
-	config MSM_DEBUG_UART1
-		bool "UART1"
-
-	config MSM_DEBUG_UART2
-		bool "UART2"
-
-	config MSM_DEBUG_UART3
-		bool "UART3"
-endchoice
-endif
-
 config MSM_SMD_PKG3
 	bool
 
diff --git a/arch/arm/mach-msm/include/mach/debug-macro.S b/arch/arm/mach-msm/include/mach/debug-macro.S
index 2dc73cc..db1f228 100644
--- a/arch/arm/mach-msm/include/mach/debug-macro.S
+++ b/arch/arm/mach-msm/include/mach/debug-macro.S
@@ -1,4 +1,4 @@
-/* arch/arm/mach-msm7200/include/mach/debug-macro.S
+/*
  *
  * Copyright (C) 2007 Google, Inc.
  * Author: Brian Swetland <swetland@google.com>
@@ -14,15 +14,14 @@
  *
  */
 
-
-
 #include <mach/hardware.h>
 #include <mach/msm_iomap.h>
 
-#if defined(CONFIG_HAS_MSM_DEBUG_UART_PHYS) && !defined(CONFIG_MSM_DEBUG_UART_NONE)
 	.macro	addruart, rp, rv, tmp
+#ifdef MSM_DEBUG_UART_PHYS
 	ldr	\rp, =MSM_DEBUG_UART_PHYS
 	ldr	\rv, =MSM_DEBUG_UART_BASE
+#endif
 	.endm
 
 	.macro	senduart,rd,rx
@@ -36,18 +35,6 @@
 	tst	\rd, #0x04
 	beq	1001b
 	.endm
-#else
-	.macro  addruart, rp, rv, tmp
-	mov	\rv, #0xff000000
-	orr	\rv, \rv, #0x00f00000
-	.endm
-
-	.macro	senduart,rd,rx
-	.endm
-
-	.macro	waituart,rd,rx
-	.endm
-#endif
 
 	.macro	busyuart,rd,rx
 	.endm
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-7x00.h b/arch/arm/mach-msm/include/mach/msm_iomap-7x00.h
index 94fe9fe..8af4612 100644
--- a/arch/arm/mach-msm/include/mach/msm_iomap-7x00.h
+++ b/arch/arm/mach-msm/include/mach/msm_iomap-7x00.h
@@ -78,18 +78,6 @@
 #define MSM_UART3_PHYS        0xA9C00000
 #define MSM_UART3_SIZE        SZ_4K
 
-#ifdef CONFIG_MSM_DEBUG_UART
-#define MSM_DEBUG_UART_BASE   0xE1000000
-#if CONFIG_MSM_DEBUG_UART == 1
-#define MSM_DEBUG_UART_PHYS   MSM_UART1_PHYS
-#elif CONFIG_MSM_DEBUG_UART == 2
-#define MSM_DEBUG_UART_PHYS   MSM_UART2_PHYS
-#elif CONFIG_MSM_DEBUG_UART == 3
-#define MSM_DEBUG_UART_PHYS   MSM_UART3_PHYS
-#endif
-#define MSM_DEBUG_UART_SIZE   SZ_4K
-#endif
-
 #define MSM_SDC1_PHYS         0xA0400000
 #define MSM_SDC1_SIZE         SZ_4K
 
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-7x30.h b/arch/arm/mach-msm/include/mach/msm_iomap-7x30.h
index 3769444..198202c 100644
--- a/arch/arm/mach-msm/include/mach/msm_iomap-7x30.h
+++ b/arch/arm/mach-msm/include/mach/msm_iomap-7x30.h
@@ -89,18 +89,6 @@
 #define MSM_UART3_PHYS        0xACC00000
 #define MSM_UART3_SIZE        SZ_4K
 
-#ifdef CONFIG_MSM_DEBUG_UART
-#define MSM_DEBUG_UART_BASE   0xE1000000
-#if CONFIG_MSM_DEBUG_UART == 1
-#define MSM_DEBUG_UART_PHYS   MSM_UART1_PHYS
-#elif CONFIG_MSM_DEBUG_UART == 2
-#define MSM_DEBUG_UART_PHYS   MSM_UART2_PHYS
-#elif CONFIG_MSM_DEBUG_UART == 3
-#define MSM_DEBUG_UART_PHYS   MSM_UART3_PHYS
-#endif
-#define MSM_DEBUG_UART_SIZE   SZ_4K
-#endif
-
 #define MSM_MDC_BASE	      IOMEM(0xE0200000)
 #define MSM_MDC_PHYS	      0xAA500000
 #define MSM_MDC_SIZE	      SZ_1M
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-8x50.h b/arch/arm/mach-msm/include/mach/msm_iomap-8x50.h
index d67cd73..0faa894 100644
--- a/arch/arm/mach-msm/include/mach/msm_iomap-8x50.h
+++ b/arch/arm/mach-msm/include/mach/msm_iomap-8x50.h
@@ -83,18 +83,6 @@
 #define MSM_UART3_PHYS        0xA9C00000
 #define MSM_UART3_SIZE        SZ_4K
 
-#ifdef CONFIG_MSM_DEBUG_UART
-#define MSM_DEBUG_UART_BASE   0xE1000000
-#if CONFIG_MSM_DEBUG_UART == 1
-#define MSM_DEBUG_UART_PHYS   MSM_UART1_PHYS
-#elif CONFIG_MSM_DEBUG_UART == 2
-#define MSM_DEBUG_UART_PHYS   MSM_UART2_PHYS
-#elif CONFIG_MSM_DEBUG_UART == 3
-#define MSM_DEBUG_UART_PHYS   MSM_UART3_PHYS
-#endif
-#define MSM_DEBUG_UART_SIZE   SZ_4K
-#endif
-
 #define MSM_MDC_BASE	      IOMEM(0xE0200000)
 #define MSM_MDC_PHYS	      0xAA500000
 #define MSM_MDC_SIZE	      SZ_1M
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap.h b/arch/arm/mach-msm/include/mach/msm_iomap.h
index 4ded152..90682f4 100644
--- a/arch/arm/mach-msm/include/mach/msm_iomap.h
+++ b/arch/arm/mach-msm/include/mach/msm_iomap.h
@@ -55,6 +55,18 @@
 
 #include "msm_iomap-8960.h"
 
+#define MSM_DEBUG_UART_SIZE	SZ_4K
+#if defined(CONFIG_DEBUG_MSM_UART1)
+#define MSM_DEBUG_UART_BASE	0xE1000000
+#define MSM_DEBUG_UART_PHYS	MSM_UART1_PHYS
+#elif defined(CONFIG_DEBUG_MSM_UART2)
+#define MSM_DEBUG_UART_BASE	0xE1000000
+#define MSM_DEBUG_UART_PHYS	MSM_UART2_PHYS
+#elif defined(CONFIG_DEBUG_MSM_UART3)
+#define MSM_DEBUG_UART_BASE	0xE1000000
+#define MSM_DEBUG_UART_PHYS	MSM_UART3_PHYS
+#endif
+
 /* Virtual addresses shared across all MSM targets. */
 #define MSM_CSR_BASE		IOMEM(0xE0001000)
 #define MSM_QGIC_DIST_BASE	IOMEM(0xF0000000)
diff --git a/arch/arm/mach-msm/io.c b/arch/arm/mach-msm/io.c
index 8759ecf..03036af 100644
--- a/arch/arm/mach-msm/io.c
+++ b/arch/arm/mach-msm/io.c
@@ -47,7 +47,8 @@ static struct map_desc msm_io_desc[] __initdata = {
 	MSM_CHIP_DEVICE(GPIO1, MSM7X00),
 	MSM_CHIP_DEVICE(GPIO2, MSM7X00),
 	MSM_DEVICE(CLK_CTL),
-#ifdef CONFIG_MSM_DEBUG_UART
+#if defined(CONFIG_DEBUG_MSM_UART1) || defined(CONFIG_DEBUG_MSM_UART2) || \
+	defined(CONFIG_DEBUG_MSM_UART3)
 	MSM_DEVICE(DEBUG_UART),
 #endif
 #ifdef CONFIG_ARCH_MSM7X30
@@ -84,7 +85,8 @@ static struct map_desc qsd8x50_io_desc[] __initdata = {
 	MSM_DEVICE(SCPLL),
 	MSM_DEVICE(AD5),
 	MSM_DEVICE(MDC),
-#ifdef CONFIG_MSM_DEBUG_UART
+#if defined(CONFIG_DEBUG_MSM_UART1) || defined(CONFIG_DEBUG_MSM_UART2) || \
+	defined(CONFIG_DEBUG_MSM_UART3)
 	MSM_DEVICE(DEBUG_UART),
 #endif
 	{
@@ -146,7 +148,8 @@ static struct map_desc msm7x30_io_desc[] __initdata = {
 	MSM_DEVICE(SAW),
 	MSM_DEVICE(GCC),
 	MSM_DEVICE(TCSR),
-#ifdef CONFIG_MSM_DEBUG_UART
+#if defined(CONFIG_DEBUG_MSM_UART1) || defined(CONFIG_DEBUG_MSM_UART2) || \
+	defined(CONFIG_DEBUG_MSM_UART3)
 	MSM_DEVICE(DEBUG_UART),
 #endif
 	{
-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCHv3 2/2] msm: Support DEBUG_LL on MSM8660 and MSM8960
  2011-11-08 18:33 [PATCHv3 0/2] MSM8660/8960 DEBUG_LL support and cleanups Stephen Boyd
  2011-11-08 18:33 ` [PATCHv3 1/2] ARM: msm: Consolidate and move DEBUG_LL to DEBUG_LL choice Stephen Boyd
@ 2011-11-08 18:33 ` Stephen Boyd
  2011-11-08 19:08   ` Nicolas Pitre
  1 sibling, 1 reply; 10+ messages in thread
From: Stephen Boyd @ 2011-11-08 18:33 UTC (permalink / raw)
  To: David Brown; +Cc: linux-kernel, linux-arm-msm, linux-arm-kernel, Nicolas Pitre

Add support for DEBUG_LL on the 8660 and 8960 development boards.
While we're here cleanup the uncompress.h code a bit. Avoid
the use of readl/writel as those are Linux specific APIs that
aren't guaranteed to work in the decompressor.

Cc: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---

Changes since v2:
 * Don't use readl/writel in uncompress.h
 * Fix 8660 help text

 arch/arm/Kconfig.debug                          |   16 +++++++++
 arch/arm/mach-msm/Kconfig                       |    3 ++
 arch/arm/mach-msm/include/mach/debug-macro.S    |   32 +++++++++++++++++--
 arch/arm/mach-msm/include/mach/msm_iomap-8960.h |    5 +++
 arch/arm/mach-msm/include/mach/msm_iomap-8x60.h |    5 +++
 arch/arm/mach-msm/include/mach/uncompress.h     |   39 ++++++++++++++++++-----
 arch/arm/mach-msm/io.c                          |    6 +++
 7 files changed, 95 insertions(+), 11 deletions(-)

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 333b6a4..4c1eb7d 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -268,6 +268,22 @@ choice
 		  Say Y here if you want the debug print routines to direct
 		  their output to the third serial port on MSM devices.
 
+	config DEBUG_MSM8660_UART
+		bool "Kernel low-level debugging messages via MSM 8660 UART"
+		depends on ARCH_MSM8X60
+		select MSM_HAS_DEBUG_UART_HS
+		help
+		  Say Y here if you want the debug print routines to direct
+		  their output to the serial port on MSM 8660 devices.
+
+	config DEBUG_MSM8960_UART
+		bool "Kernel low-level debugging messages via MSM 8960 UART"
+		depends on ARCH_MSM8960
+		select MSM_HAS_DEBUG_UART_HS
+		help
+		  Say Y here if you want the debug print routines to direct
+		  their output to the serial port on MSM 8960 devices.
+
 endchoice
 
 config EARLY_PRINTK
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
index 5b07b61..000ddf0 100644
--- a/arch/arm/mach-msm/Kconfig
+++ b/arch/arm/mach-msm/Kconfig
@@ -60,6 +60,9 @@ config ARCH_MSM8960
 
 endchoice
 
+config MSM_HAS_DEBUG_UART_HS
+	bool
+
 config MSM_SOC_REV_A
 	bool
 config  ARCH_MSM_SCORPIONMP
diff --git a/arch/arm/mach-msm/include/mach/debug-macro.S b/arch/arm/mach-msm/include/mach/debug-macro.S
index db1f228..3ffd866 100644
--- a/arch/arm/mach-msm/include/mach/debug-macro.S
+++ b/arch/arm/mach-msm/include/mach/debug-macro.S
@@ -1,6 +1,7 @@
 /*
  *
  * Copyright (C) 2007 Google, Inc.
+ * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
  * Author: Brian Swetland <swetland@google.com>
  *
  * This software is licensed under the terms of the GNU General Public
@@ -24,17 +25,42 @@
 #endif
 	.endm
 
-	.macro	senduart,rd,rx
+	.macro	senduart, rd, rx
+#ifdef CONFIG_MSM_HAS_DEBUG_UART_HS
+	@ Write the 1 character to UARTDM_TF
+	str	\rd, [\rx, #0x70]
+#else
 	teq	\rx, #0
 	strne	\rd, [\rx, #0x0C]
+#endif
 	.endm
 
-	.macro	waituart,rd,rx
+	.macro	waituart, rd, rx
+#ifdef CONFIG_MSM_HAS_DEBUG_UART_HS
+	@ check for TX_EMT in UARTDM_SR
+	ldr	\rd, [\rx, #0x08]
+	tst	\rd, #0x08
+	bne	1002f
+	@ wait for TXREADY in UARTDM_ISR
+1001:	ldr	\rd, [\rx, #0x14]
+	tst	\rd, #0x80
+	beq 	1001b
+1002:
+	@ Clear TX_READY by writing to the UARTDM_CR register
+	mov	\rd, #0x300
+	str	\rd, [\rx, #0x10]
+	@ Write 0x1 to NCF register
+	mov 	\rd, #0x1
+	str	\rd, [\rx, #0x40]
+	@ UARTDM reg. Read to induce delay
+	ldr	\rd, [\rx, #0x08]
+#else
 	@ wait for TX_READY
 1001:	ldr	\rd, [\rx, #0x08]
 	tst	\rd, #0x04
 	beq	1001b
+#endif
 	.endm
 
-	.macro	busyuart,rd,rx
+	.macro	busyuart, rd, rx
 	.endm
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-8960.h b/arch/arm/mach-msm/include/mach/msm_iomap-8960.h
index 3c9d960..800b557 100644
--- a/arch/arm/mach-msm/include/mach/msm_iomap-8960.h
+++ b/arch/arm/mach-msm/include/mach/msm_iomap-8960.h
@@ -45,4 +45,9 @@
 #define MSM8960_TMR0_PHYS	0x0208A000
 #define MSM8960_TMR0_SIZE	SZ_4K
 
+#ifdef CONFIG_DEBUG_MSM8960_UART
+#define MSM_DEBUG_UART_BASE	0xE1040000
+#define MSM_DEBUG_UART_PHYS	0x16440000
+#endif
+
 #endif
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h b/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h
index 3b19b8f..54e12ca 100644
--- a/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h
+++ b/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h
@@ -62,4 +62,9 @@
 #define MSM8X60_TMR0_PHYS	0x02040000
 #define MSM8X60_TMR0_SIZE	SZ_4K
 
+#ifdef CONFIG_DEBUG_MSM8660_UART
+#define MSM_DEBUG_UART_BASE	0xE1040000
+#define MSM_DEBUG_UART_PHYS	0x19C40000
+#endif
+
 #endif
diff --git a/arch/arm/mach-msm/include/mach/uncompress.h b/arch/arm/mach-msm/include/mach/uncompress.h
index d94292c..169a840 100644
--- a/arch/arm/mach-msm/include/mach/uncompress.h
+++ b/arch/arm/mach-msm/include/mach/uncompress.h
@@ -1,6 +1,6 @@
-/* arch/arm/mach-msm/include/mach/uncompress.h
- *
+/*
  * Copyright (C) 2007 Google, Inc.
+ * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
  *
  * This software is licensed under the terms of the GNU General Public
  * License version 2, as published by the Free Software Foundation, and
@@ -14,17 +14,40 @@
  */
 
 #ifndef __ASM_ARCH_MSM_UNCOMPRESS_H
+#define __ASM_ARCH_MSM_UNCOMPRESS_H
+
+#include <asm/processor.h>
+#include <mach/msm_iomap.h>
+
+#define UART_CSR      (*(volatile uint32_t *)(MSM_DEBUG_UART_PHYS + 0x08))
+#define UART_TF       (*(volatile uint32_t *)(MSM_DEBUG_UART_PHYS + 0x0c))
 
-#include "hardware.h"
-#include "linux/io.h"
-#include "mach/msm_iomap.h"
+#define UART_DM_SR    (*((volatile uint32_t *)(MSM_DEBUG_UART_PHYS + 0x08)))
+#define UART_DM_CR    (*((volatile uint32_t *)(MSM_DEBUG_UART_PHYS + 0x10)))
+#define UART_DM_ISR   (*((volatile uint32_t *)(MSM_DEBUG_UART_PHYS + 0x14)))
+#define UART_DM_NCHAR (*((volatile uint32_t *)(MSM_DEBUG_UART_PHYS + 0x40)))
+#define UART_DM_TF    (*((volatile uint32_t *)(MSM_DEBUG_UART_PHYS + 0x70)))
 
 static void putc(int c)
 {
 #if defined(MSM_DEBUG_UART_PHYS)
-	unsigned base = MSM_DEBUG_UART_PHYS;
-	while (!(readl(base + 0x08) & 0x04)) ;
-	writel(c, base + 0x0c);
+#ifdef CONFIG_MSM_HAS_DEBUG_UART_HS
+	/*
+	 * Wait for TX_READY to be set; but skip it if we have a
+	 * TX underrun.
+	 */
+	if (UART_DM_SR & 0x08)
+		while (!(UART_DM_ISR & 0x80))
+			cpu_relax();
+
+	UART_DM_CR = 0x300;
+	UART_DM_NCHAR = 0x1;
+	UART_DM_TF = c;
+#else
+	while (!(UART_CSR & 0x04))
+		cpu_relax();
+	UART_TF = c;
+#endif
 #endif
 }
 
diff --git a/arch/arm/mach-msm/io.c b/arch/arm/mach-msm/io.c
index 03036af..578b04e 100644
--- a/arch/arm/mach-msm/io.c
+++ b/arch/arm/mach-msm/io.c
@@ -111,6 +111,9 @@ static struct map_desc msm8x60_io_desc[] __initdata = {
 	MSM_CHIP_DEVICE(TMR0, MSM8X60),
 	MSM_DEVICE(ACC),
 	MSM_DEVICE(GCC),
+#ifdef CONFIG_DEBUG_MSM8660_UART
+	MSM_DEVICE(DEBUG_UART),
+#endif
 };
 
 void __init msm_map_msm8x60_io(void)
@@ -125,6 +128,9 @@ static struct map_desc msm8960_io_desc[] __initdata = {
 	MSM_CHIP_DEVICE(QGIC_CPU, MSM8960),
 	MSM_CHIP_DEVICE(TMR, MSM8960),
 	MSM_CHIP_DEVICE(TMR0, MSM8960),
+#ifdef CONFIG_DEBUG_MSM8960_UART
+	MSM_DEVICE(DEBUG_UART),
+#endif
 };
 
 void __init msm_map_msm8960_io(void)
-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCHv3 2/2] msm: Support DEBUG_LL on MSM8660 and MSM8960
  2011-11-08 18:33 ` [PATCHv3 2/2] msm: Support DEBUG_LL on MSM8660 and MSM8960 Stephen Boyd
@ 2011-11-08 19:08   ` Nicolas Pitre
  2011-11-08 19:14     ` Stephen Boyd
  2011-11-09  4:11     ` Stephen Boyd
  0 siblings, 2 replies; 10+ messages in thread
From: Nicolas Pitre @ 2011-11-08 19:08 UTC (permalink / raw)
  To: Stephen Boyd; +Cc: David Brown, linux-kernel, linux-arm-msm, linux-arm-kernel

On Tue, 8 Nov 2011, Stephen Boyd wrote:

> Add support for DEBUG_LL on the 8660 and 8960 development boards.
> While we're here cleanup the uncompress.h code a bit. Avoid
> the use of readl/writel as those are Linux specific APIs that
> aren't guaranteed to work in the decompressor.
> 
> Cc: Nicolas Pitre <nico@fluxnic.net>
> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>

Acked-by: Nicolas Pitre <nico@linaro.org>

Independently from this patch, I was wondering about this code:

> +	.macro	senduart, rd, rx
> +#ifdef CONFIG_MSM_HAS_DEBUG_UART_HS
> +	@ Write the 1 character to UARTDM_TF
> +	str	\rd, [\rx, #0x70]
> +#else
>  	teq	\rx, #0
>  	strne	\rd, [\rx, #0x0C]
> +#endif
>  	.endm

Why testing for zero in the #else part?  The upper level code should 
never call this macro with a null byte.


Nicolas

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCHv3 2/2] msm: Support DEBUG_LL on MSM8660 and MSM8960
  2011-11-08 19:08   ` Nicolas Pitre
@ 2011-11-08 19:14     ` Stephen Boyd
  2011-11-08 19:59       ` David Brown
  2011-11-09  4:11     ` Stephen Boyd
  1 sibling, 1 reply; 10+ messages in thread
From: Stephen Boyd @ 2011-11-08 19:14 UTC (permalink / raw)
  To: Nicolas Pitre; +Cc: David Brown, linux-kernel, linux-arm-msm, linux-arm-kernel

On 11/08/11 11:08, Nicolas Pitre wrote:
> Independently from this patch, I was wondering about this code:
>
>> +	.macro	senduart, rd, rx
>> +#ifdef CONFIG_MSM_HAS_DEBUG_UART_HS
>> +	@ Write the 1 character to UARTDM_TF
>> +	str	\rd, [\rx, #0x70]
>> +#else
>>  	teq	\rx, #0
>>  	strne	\rd, [\rx, #0x0C]
>> +#endif
>>  	.endm
> Why testing for zero in the #else part?  The upper level code should 
> never call this macro with a null byte.
>

I was wondering the same thing, I don't know why that test for null is
there. I will dust off the old 7201a (literally) and see what I can find
out. It certainly looks unnecessary.

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCHv3 2/2] msm: Support DEBUG_LL on MSM8660 and MSM8960
  2011-11-08 19:14     ` Stephen Boyd
@ 2011-11-08 19:59       ` David Brown
  2011-11-08 20:22         ` Nicolas Pitre
  0 siblings, 1 reply; 10+ messages in thread
From: David Brown @ 2011-11-08 19:59 UTC (permalink / raw)
  To: Stephen Boyd
  Cc: Nicolas Pitre, David Brown, linux-kernel, linux-arm-msm,
	linux-arm-kernel

On Tue, Nov 08, 2011 at 11:14:11AM -0800, Stephen Boyd wrote:
> On 11/08/11 11:08, Nicolas Pitre wrote:
> > Independently from this patch, I was wondering about this code:
> >
> >> +	.macro	senduart, rd, rx
> >> +#ifdef CONFIG_MSM_HAS_DEBUG_UART_HS
> >> +	@ Write the 1 character to UARTDM_TF
> >> +	str	\rd, [\rx, #0x70]
> >> +#else
> >>  	teq	\rx, #0
> >>  	strne	\rd, [\rx, #0x0C]
> >> +#endif
> >>  	.endm
> > Why testing for zero in the #else part?  The upper level code should 
> > never call this macro with a null byte.
> 
> I was wondering the same thing, I don't know why that test for null is
> there. I will dust off the old 7201a (literally) and see what I can find
> out. It certainly looks unnecessary.

Perhaps this is a better fix?  Google removed the 7201a code from
their tree quite a while back.  I don't have any more working hardware
to test things with.

David

>From b4a76f1561d35d043f9266f8fe47725389ea7ba9 Mon Sep 17 00:00:00 2001
From: David Brown <davidb@codeaurora.org>
Date: Tue, 8 Nov 2011 11:44:05 -0800
Subject: [PATCH] ARM: msm: Mark 720x targets as broken

The 720x code is bitrotting.  These have only been compile tested for
quite some time.  Mark as broken now so they can be removed after a
while.

Signed-off-by: David Brown <davidb@codeaurora.org>
---
 arch/arm/mach-msm/Kconfig |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
index 000ddf0..0ce4b33 100644
--- a/arch/arm/mach-msm/Kconfig
+++ b/arch/arm/mach-msm/Kconfig
@@ -81,6 +81,7 @@ menu "Qualcomm MSM Board Type"
 config MACH_HALIBUT
 	depends on ARCH_MSM
 	depends on ARCH_MSM7X00A
+	depends on BROKEN
 	bool "Halibut Board (QCT SURF7201A)"
 	help
 	  Support for the Qualcomm SURF7201A eval board.
@@ -88,6 +89,7 @@ config MACH_HALIBUT
 config MACH_TROUT
 	depends on ARCH_MSM
 	depends on ARCH_MSM7X00A
+	depends on BROKEN
 	bool "HTC Dream (aka trout)"
 	help
 	  Support for the HTC Dream, T-Mobile G1, Android ADP1 devices.
-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.


-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCHv3 2/2] msm: Support DEBUG_LL on MSM8660 and MSM8960
  2011-11-08 19:59       ` David Brown
@ 2011-11-08 20:22         ` Nicolas Pitre
  0 siblings, 0 replies; 10+ messages in thread
From: Nicolas Pitre @ 2011-11-08 20:22 UTC (permalink / raw)
  To: David Brown; +Cc: Stephen Boyd, linux-kernel, linux-arm-msm, linux-arm-kernel

On Tue, 8 Nov 2011, David Brown wrote:

> On Tue, Nov 08, 2011 at 11:14:11AM -0800, Stephen Boyd wrote:
> > On 11/08/11 11:08, Nicolas Pitre wrote:
> > > Independently from this patch, I was wondering about this code:
> > >
> > >> +	.macro	senduart, rd, rx
> > >> +#ifdef CONFIG_MSM_HAS_DEBUG_UART_HS
> > >> +	@ Write the 1 character to UARTDM_TF
> > >> +	str	\rd, [\rx, #0x70]
> > >> +#else
> > >>  	teq	\rx, #0
> > >>  	strne	\rd, [\rx, #0x0C]
> > >> +#endif
> > >>  	.endm
> > > Why testing for zero in the #else part?  The upper level code should 
> > > never call this macro with a null byte.
> > 
> > I was wondering the same thing, I don't know why that test for null is
> > there. I will dust off the old 7201a (literally) and see what I can find
> > out. It certainly looks unnecessary.
> 
> Perhaps this is a better fix?  Google removed the 7201a code from
> their tree quite a while back.  I don't have any more working hardware
> to test things with.
> 
> David
> 
> >From b4a76f1561d35d043f9266f8fe47725389ea7ba9 Mon Sep 17 00:00:00 2001
> From: David Brown <davidb@codeaurora.org>
> Date: Tue, 8 Nov 2011 11:44:05 -0800
> Subject: [PATCH] ARM: msm: Mark 720x targets as broken
> 
> The 720x code is bitrotting.  These have only been compile tested for
> quite some time.  Mark as broken now so they can be removed after a
> while.
> 
> Signed-off-by: David Brown <davidb@codeaurora.org>

I certainly have no problem with that.  Keeping unused code in the tree 
just increases maintenance costs for no gain.


Nicolas

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCHv3 2/2] msm: Support DEBUG_LL on MSM8660 and MSM8960
  2011-11-08 19:08   ` Nicolas Pitre
  2011-11-08 19:14     ` Stephen Boyd
@ 2011-11-09  4:11     ` Stephen Boyd
  2011-12-05 18:27       ` [PATCHv3 3/2] ARM: msm: Drop useless teq from DEBUG_LL support Stephen Boyd
  1 sibling, 1 reply; 10+ messages in thread
From: Stephen Boyd @ 2011-11-09  4:11 UTC (permalink / raw)
  To: Nicolas Pitre; +Cc: David Brown, linux-kernel, linux-arm-msm, linux-arm-kernel

On 11/08/11 11:08, Nicolas Pitre wrote:
>> +	.macro	senduart, rd, rx
>> +#ifdef CONFIG_MSM_HAS_DEBUG_UART_HS
>> +	@ Write the 1 character to UARTDM_TF
>> +	str	\rd, [\rx, #0x70]
>> +#else
>>  	teq	\rx, #0
>>  	strne	\rd, [\rx, #0x0C]
>> +#endif
>>  	.endm
> Why testing for zero in the #else part?  The upper level code should 
> never call this macro with a null byte.
>

Ok I poked into the git logs (thanks Bryan). It was first introduced in
bcc0f6a ([ARM] msm: clean up iomap and devices, 2008-09-10). It seems
that debug_ll support on MSM at the time had to remove the virtual
mapping for the uart base. Thus when the MMU was enabled the addruart
macro returned 0 and the senduart macro would test for 0 so that
senduart could disable debug_ll when the MMU was enabled. Something
about "problems with the peripheral window".

Later on, the virtual mapping was added back in 6339f66 (msm: make
debugging UART (for DEBUG_LL) configurable, 2009-11-02) but the patch
forgot to remove the teq. So as it stands the teq has been useless for
two years.

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCHv3 3/2] ARM: msm: Drop useless teq from DEBUG_LL support
  2011-11-09  4:11     ` Stephen Boyd
@ 2011-12-05 18:27       ` Stephen Boyd
  2011-12-05 18:40         ` Nicolas Pitre
  0 siblings, 1 reply; 10+ messages in thread
From: Stephen Boyd @ 2011-12-05 18:27 UTC (permalink / raw)
  To: linux-arm-msm; +Cc: linux-kernel, linux-arm-kernel, David Brown, Nicolas Pitre

This teq was first introduced in bcc0f6a ([ARM] msm: clean up
iomap and devices, 2008-09-10). It seems that DEBUG_LL support on
MSM at the time had to remove the virtual mapping for the uart
base. Thus when the MMU was enabled the addruart macro returned 0
and the senduart macro would test for 0 and do nothing. It was a
simple way to turn off DEBUG_LL when the MMU was enabled.

The virtual mapping was added back in 6339f66 (msm: make
debugging UART (for DEBUG_LL) configurable, 2009-11-02) but the
patch forgot to remove the teq here. So as it stands the teq has
been useless for two years and DEBUG_LL works fine without it.

Cc: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
 arch/arm/mach-msm/include/mach/debug-macro.S |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-msm/include/mach/debug-macro.S b/arch/arm/mach-msm/include/mach/debug-macro.S
index 3ffd866..0e05f88 100644
--- a/arch/arm/mach-msm/include/mach/debug-macro.S
+++ b/arch/arm/mach-msm/include/mach/debug-macro.S
@@ -30,8 +30,7 @@
 	@ Write the 1 character to UARTDM_TF
 	str	\rd, [\rx, #0x70]
 #else
-	teq	\rx, #0
-	strne	\rd, [\rx, #0x0C]
+	str	\rd, [\rx, #0x0C]
 #endif
 	.endm
 
-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCHv3 3/2] ARM: msm: Drop useless teq from DEBUG_LL support
  2011-12-05 18:27       ` [PATCHv3 3/2] ARM: msm: Drop useless teq from DEBUG_LL support Stephen Boyd
@ 2011-12-05 18:40         ` Nicolas Pitre
  0 siblings, 0 replies; 10+ messages in thread
From: Nicolas Pitre @ 2011-12-05 18:40 UTC (permalink / raw)
  To: Stephen Boyd; +Cc: linux-arm-msm, linux-kernel, linux-arm-kernel, David Brown

On Mon, 5 Dec 2011, Stephen Boyd wrote:

> This teq was first introduced in bcc0f6a ([ARM] msm: clean up
> iomap and devices, 2008-09-10). It seems that DEBUG_LL support on
> MSM at the time had to remove the virtual mapping for the uart
> base. Thus when the MMU was enabled the addruart macro returned 0
> and the senduart macro would test for 0 and do nothing. It was a
> simple way to turn off DEBUG_LL when the MMU was enabled.
> 
> The virtual mapping was added back in 6339f66 (msm: make
> debugging UART (for DEBUG_LL) configurable, 2009-11-02) but the
> patch forgot to remove the teq here. So as it stands the teq has
> been useless for two years and DEBUG_LL works fine without it.
> 
> Cc: Nicolas Pitre <nico@fluxnic.net>
> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>

Acked-by: Nicolas Pitre <nico@linaro.org>


> ---
>  arch/arm/mach-msm/include/mach/debug-macro.S |    3 +--
>  1 files changed, 1 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/mach-msm/include/mach/debug-macro.S b/arch/arm/mach-msm/include/mach/debug-macro.S
> index 3ffd866..0e05f88 100644
> --- a/arch/arm/mach-msm/include/mach/debug-macro.S
> +++ b/arch/arm/mach-msm/include/mach/debug-macro.S
> @@ -30,8 +30,7 @@
>  	@ Write the 1 character to UARTDM_TF
>  	str	\rd, [\rx, #0x70]
>  #else
> -	teq	\rx, #0
> -	strne	\rd, [\rx, #0x0C]
> +	str	\rd, [\rx, #0x0C]
>  #endif
>  	.endm
>  
> -- 
> Sent by an employee of the Qualcomm Innovation Center, Inc.
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2011-12-05 18:40 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-08 18:33 [PATCHv3 0/2] MSM8660/8960 DEBUG_LL support and cleanups Stephen Boyd
2011-11-08 18:33 ` [PATCHv3 1/2] ARM: msm: Consolidate and move DEBUG_LL to DEBUG_LL choice Stephen Boyd
2011-11-08 18:33 ` [PATCHv3 2/2] msm: Support DEBUG_LL on MSM8660 and MSM8960 Stephen Boyd
2011-11-08 19:08   ` Nicolas Pitre
2011-11-08 19:14     ` Stephen Boyd
2011-11-08 19:59       ` David Brown
2011-11-08 20:22         ` Nicolas Pitre
2011-11-09  4:11     ` Stephen Boyd
2011-12-05 18:27       ` [PATCHv3 3/2] ARM: msm: Drop useless teq from DEBUG_LL support Stephen Boyd
2011-12-05 18:40         ` Nicolas Pitre

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).