diff options
Diffstat (limited to 'arch/arm/mach-msm/include')
| -rw-r--r-- | arch/arm/mach-msm/include/mach/debug-macro.S | 51 | ||||
| -rw-r--r-- | arch/arm/mach-msm/include/mach/msm_iomap-7x00.h | 12 | ||||
| -rw-r--r-- | arch/arm/mach-msm/include/mach/msm_iomap-7x30.h | 12 | ||||
| -rw-r--r-- | arch/arm/mach-msm/include/mach/msm_iomap-8960.h | 5 | ||||
| -rw-r--r-- | arch/arm/mach-msm/include/mach/msm_iomap-8x50.h | 12 | ||||
| -rw-r--r-- | arch/arm/mach-msm/include/mach/msm_iomap-8x60.h | 5 | ||||
| -rw-r--r-- | arch/arm/mach-msm/include/mach/msm_iomap.h | 12 | ||||
| -rw-r--r-- | arch/arm/mach-msm/include/mach/uncompress.h | 39 | 
8 files changed, 85 insertions, 63 deletions
diff --git a/arch/arm/mach-msm/include/mach/debug-macro.S b/arch/arm/mach-msm/include/mach/debug-macro.S index 2dc73ccddb1..3ffd8668c9a 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 @@ -/* arch/arm/mach-msm7200/include/mach/debug-macro.S +/*   *   * 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 @@ -14,40 +15,52 @@   *   */ - -  #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 +	.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 -	.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 +	.endm -	.macro	busyuart,rd,rx +	.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 94fe9fe6feb..8af46123dab 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 37694442d1b..198202c267c 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-8960.h b/arch/arm/mach-msm/include/mach/msm_iomap-8960.h index 3c9d9602a31..800b55767e6 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-8x50.h b/arch/arm/mach-msm/include/mach/msm_iomap-8x50.h index d67cd73316f..0faa894729b 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-8x60.h b/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h index 3b19b8f244b..54e12caa8d8 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/msm_iomap.h b/arch/arm/mach-msm/include/mach/msm_iomap.h index 4ded15238b6..90682f4599d 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/include/mach/uncompress.h b/arch/arm/mach-msm/include/mach/uncompress.h index d94292c29d8..169a8400745 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  }  |