forked from Minki/linux
0b37e9e8dc
AT91 still uses an offset (0x0100 0000) from the physical address to map the debug UART. This is unfortunate as for some platforms (sama5d3 and earlier), it ends up in the PCI zone and PCI is enabled in multi_v7. Switch to DEBUG_UART_VIRT to solve that. Tested on sama5d3 and 9g20. Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
38 lines
1.1 KiB
ArmAsm
38 lines
1.1 KiB
ArmAsm
/*
|
|
* Copyright (C) 2003-2005 SAN People
|
|
*
|
|
* Debugging macro include header
|
|
*
|
|
* 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 AT91_DBGU_SR (0x14) /* Status Register */
|
|
#define AT91_DBGU_THR (0x1c) /* Transmitter Holding Register */
|
|
#define AT91_DBGU_TXRDY (1 << 1) /* Transmitter Ready */
|
|
#define AT91_DBGU_TXEMPTY (1 << 9) /* Transmitter Empty */
|
|
|
|
.macro addruart, rp, rv, tmp
|
|
ldr \rp, =CONFIG_DEBUG_UART_PHYS @ System peripherals (phys address)
|
|
ldr \rv, =CONFIG_DEBUG_UART_VIRT @ System peripherals (virt address)
|
|
.endm
|
|
|
|
.macro senduart,rd,rx
|
|
strb \rd, [\rx, #(AT91_DBGU_THR)] @ Write to Transmitter Holding Register
|
|
.endm
|
|
|
|
.macro waituart,rd,rx
|
|
1001: ldr \rd, [\rx, #(AT91_DBGU_SR)] @ Read Status Register
|
|
tst \rd, #AT91_DBGU_TXRDY @ DBGU_TXRDY = 1 when ready to transmit
|
|
beq 1001b
|
|
.endm
|
|
|
|
.macro busyuart,rd,rx
|
|
1001: ldr \rd, [\rx, #(AT91_DBGU_SR)] @ Read Status Register
|
|
tst \rd, #AT91_DBGU_TXEMPTY @ DBGU_TXEMPTY = 1 when transmission complete
|
|
beq 1001b
|
|
.endm
|
|
|