On Thu, 20 Oct 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.
> 
> Signed-off-by: Stephen Boyd <[email protected]>
> Cc: Nicolas Pitre <[email protected]>

Acked-by: Nicolas Pitre <[email protected]>


> ---
>  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     |   31 ++++++++++++++++-----
>  arch/arm/mach-msm/io.c                          |    6 ++++
>  7 files changed, 87 insertions(+), 11 deletions(-)
> 
> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> index c2db187..07d0e74 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -149,6 +149,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 8960 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 43d62c6..2a9f1df 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 <[email protected]>
>   *
>   * 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..ee906e4 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,32 @@
>   */
>  
>  #ifndef __ASM_ARCH_MSM_UNCOMPRESS_H
> +#define __ASM_ARCH_MSM_UNCOMPRESS_H
>  
> -#include "hardware.h"
> -#include "linux/io.h"
> -#include "mach/msm_iomap.h"
> +#include <linux/io.h>
> +#include <asm/processor.h>
> +#include <mach/msm_iomap.h>
>  
>  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 (readl_relaxed(MSM_DEBUG_UART_PHYS + 0x08) & 0x08)
> +             while (!(readl_relaxed(MSM_DEBUG_UART_PHYS + 0x14) & 0x80))
> +                     cpu_relax();
> +
> +     writel_relaxed(0x300, MSM_DEBUG_UART_PHYS + 0x10);
> +     writel_relaxed(0x1, MSM_DEBUG_UART_PHYS + 0x40);
> +     writel_relaxed(c, MSM_DEBUG_UART_PHYS + 0x70);
> +#else
> +     while (!(readl_relaxed(MSM_DEBUG_UART_PHYS + 0x08) & 0x04))
> +             cpu_relax();
> +     writel_relaxed(c, MSM_DEBUG_UART_PHYS + 0x0c);
> +#endif
>  #endif
>  }
>  
> diff --git a/arch/arm/mach-msm/io.c b/arch/arm/mach-msm/io.c
> index 0bf9502..524d927 100644
> --- a/arch/arm/mach-msm/io.c
> +++ b/arch/arm/mach-msm/io.c
> @@ -110,6 +110,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)
> @@ -124,6 +127,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.
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to