Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: at91: debug: use DEBUG_UART_VIRT

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>

+7 -14
+6 -5
arch/arm/Kconfig.debug
··· 117 117 their output to the serial port on atmel devices. 118 118 119 119 SOC DEBUG_UART_PHYS DEBUG_UART_VIRT PORT 120 - rm9200, 9260/9g20, 0xfffff200 0xfefff200 DBGU 120 + rm9200, 9260/9g20, 0xfffff200 0xf8fff200 DBGU 121 121 9261/9g10, 9rl 122 - 9263, 9g45, sama5d3 0xffffee00 0xfeffee00 DBGU 122 + 9263, 9g45, sama5d3 0xffffee00 0xf8ffee00 DBGU 123 123 sama5d4 0xfc00c000 0xfb00c000 USART3 124 124 sama5d4 0xfc069000 0xfb069000 DBGU 125 125 sama5d2 0xf8020000 0xf7020000 UART1 126 126 127 - Please adjust DEBUG_UART_PHYS configuration options based on 128 - your needs. 127 + Please adjust DEBUG_UART_PHYS and DEBUG_UART_VIRT 128 + configuration options based on your needs. 129 129 130 130 config DEBUG_BCM2835 131 131 bool "Kernel low-level debugging on BCM2835 PL011 UART" ··· 1627 1627 DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \ 1628 1628 DEBUG_S3C64XX_UART || \ 1629 1629 DEBUG_BCM63XX_UART || DEBUG_ASM9260_UART || \ 1630 - DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 1630 + DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 || \ 1631 + DEBUG_AT91_UART 1631 1632 1632 1633 config DEBUG_UART_8250_SHIFT 1633 1634 int "Register offset shift for the 8250 debug UART"
+1 -9
arch/arm/include/debug/at91.S
··· 9 9 * 10 10 */ 11 11 12 - #ifdef CONFIG_MMU 13 - #define AT91_IO_P2V(x) ((x) - 0x01000000) 14 - #else 15 - #define AT91_IO_P2V(x) (x) 16 - #endif 17 - 18 - #define AT91_DEBUG_UART_VIRT AT91_IO_P2V(CONFIG_DEBUG_UART_PHYS) 19 - 20 12 #define AT91_DBGU_SR (0x14) /* Status Register */ 21 13 #define AT91_DBGU_THR (0x1c) /* Transmitter Holding Register */ 22 14 #define AT91_DBGU_TXRDY (1 << 1) /* Transmitter Ready */ ··· 16 24 17 25 .macro addruart, rp, rv, tmp 18 26 ldr \rp, =CONFIG_DEBUG_UART_PHYS @ System peripherals (phys address) 19 - ldr \rv, =AT91_DEBUG_UART_VIRT @ System peripherals (virt address) 27 + ldr \rv, =CONFIG_DEBUG_UART_VIRT @ System peripherals (virt address) 20 28 .endm 21 29 22 30 .macro senduart,rd,rx