mirror of
https://github.com/torvalds/linux.git
synced 2024-12-23 11:21:33 +00:00
f8c95fe6d9
Extend imx6q DEBUG_LL uart port selection support to cover all i.MX SoCs. The 'range' of the Kconfig option gets dropped, as users looking at the option must know the uart number on his board. The bottom line is that the build system will report an error if an invalid port number is picked for given SoC. The header arch/arm/include/debug/imx-uart.h is created to accommodate all the uart base addresses. And the header will also be used for other low-level debug facility later. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
48 lines
1.2 KiB
ArmAsm
48 lines
1.2 KiB
ArmAsm
/* 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
|
|
*
|
|
* 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.
|
|
*
|
|
*/
|
|
|
|
#include "imx-uart.h"
|
|
|
|
/*
|
|
* FIXME: This is a copy of IMX_IO_P2V in hardware.h, and needs to
|
|
* stay sync with that. It's hard to maintain, and should be fixed
|
|
* globally for multi-platform build to use a fixed virtual address
|
|
* for low-level debug uart port across platforms.
|
|
*/
|
|
#define IMX_IO_P2V(x) ( \
|
|
(((x) & 0x80000000) >> 7) | \
|
|
(0xf4000000 + \
|
|
(((x) & 0x50000000) >> 6) + \
|
|
(((x) & 0x0b000000) >> 4) + \
|
|
(((x) & 0x000fffff))))
|
|
|
|
#define UART_VADDR IMX_IO_P2V(UART_PADDR)
|
|
|
|
.macro addruart, rp, rv, tmp
|
|
ldr \rp, =UART_PADDR @ physical
|
|
ldr \rv, =UART_VADDR @ virtual
|
|
.endm
|
|
|
|
.macro senduart,rd,rx
|
|
str \rd, [\rx, #0x40] @ TXDATA
|
|
.endm
|
|
|
|
.macro waituart,rd,rx
|
|
.endm
|
|
|
|
.macro busyuart,rd,rx
|
|
1002: ldr \rd, [\rx, #0x98] @ SR2
|
|
tst \rd, #1 << 3 @ TXDC
|
|
beq 1002b @ wait until transmit done
|
|
.endm
|