| 1 | /* SPDX-License-Identifier: GPL-2.0-only */
|
| 2 | /*
|
| 3 | * Debugging macro include header
|
| 4 | *
|
| 5 | * Copyright (C) 1994-1999 Russell King
|
| 6 | * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
|
| 7 | */
|
| 8 |
|
| 9 | |
| 10 |
|
| 11 | /* External port on Zoom2/3 */
|
| 12 | |
| 13 | |
| 14 |
|
| 15 | |
| 16 | |
| 17 |
|
| 18 | |
| 19 |
|
| 20 | .pushsection .data
|
| 21 | .align 2
|
| 22 | omap_uart_phys: .word 0
|
| 23 | omap_uart_virt: .word 0
|
| 24 | omap_uart_lsr: .word 0
|
| 25 | .popsection
|
| 26 |
|
| 27 | .macro addruart, rp, rv, tmp
|
| 28 |
|
| 29 | /* Use omap_uart_phys/virt if already configured */
|
| 30 | 10: adr \rp, 99f @ get effective addr of 99f
|
| 31 | ldr \rv, [\rp] @ get absolute addr of 99f
|
| 32 | sub \rv, \rv, \rp @ offset between the two
|
| 33 | ldr \rp, [\rp, |
| 34 | sub \tmp, \rp, \rv @ make it effective
|
| 35 | ldr \rp, [\tmp, |
| 36 | ldr \rv, [\tmp, |
| 37 | cmp \rp, |
| 38 | cmpne \rv, |
| 39 | bne 100f @ already configured
|
| 40 |
|
| 41 | /* Configure the UART offset from the phys/virt base */
|
| 42 | |
| 43 | ldr \rp, =ZOOM_UART_BASE
|
| 44 | str \rp, [\tmp, |
| 45 | ldr \rp, =ZOOM_UART_VIRT
|
| 46 | str \rp, [\tmp, |
| 47 | mov \rp, |
| 48 | str \rp, [\tmp, |
| 49 | |
| 50 | b 10b
|
| 51 |
|
| 52 | .align
|
| 53 | 99: .word .
|
| 54 | .word omap_uart_phys
|
| 55 | .ltorg
|
| 56 |
|
| 57 | 100: /* Pass the UART_LSR reg address */
|
| 58 | ldr \tmp, [\tmp, |
| 59 | add \rp, \rp, \tmp
|
| 60 | add \rv, \rv, \tmp
|
| 61 | .endm
|
| 62 |
|
| 63 | .macro senduart,rd,rx
|
| 64 | orr \rd, \rd, \rx, lsl |
| 65 | bic \rx, \rx, |
| 66 | strb \rd, [\rx] @ send lower byte of rd
|
| 67 | orr \rx, \rx, \rd, lsr |
| 68 | bic \rd, \rd, |
| 69 | .endm
|
| 70 |
|
| 71 | .macro busyuart,rd,rx
|
| 72 | 1001: ldrb \rd, [\rx] @ rx contains UART_LSR address
|
| 73 | and \rd, \rd, |
| 74 | teq \rd, |
| 75 | bne 1001b
|
| 76 | .endm
|
| 77 |
|
| 78 | .macro waituartcts,rd,rx
|
| 79 | .endm
|
| 80 |
|
| 81 | .macro waituarttxrdy,rd,rx
|
| 82 | .endm
|