xref: /openbmc/linux/arch/arm/include/debug/imx.S (revision 2c50a570)
1d2912cb1SThomas Gleixner/* SPDX-License-Identifier: GPL-2.0-only */
26dde5ac5SShawn Guo/* arch/arm/mach-imx/include/mach/debug-macro.S
36dde5ac5SShawn Guo *
46dde5ac5SShawn Guo * Debugging macro include header
56dde5ac5SShawn Guo *
66dde5ac5SShawn Guo *  Copyright (C) 1994-1999 Russell King
76dde5ac5SShawn Guo *  Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
86dde5ac5SShawn Guo */
949c9e60eSShawn Guo
1026e30c64SJohannes Berg#include <asm/assembler.h>
11f8c95fe6SShawn Guo#include "imx-uart.h"
126dde5ac5SShawn Guo
136dde5ac5SShawn Guo/*
146dde5ac5SShawn Guo * FIXME: This is a copy of IMX_IO_P2V in hardware.h, and needs to
156dde5ac5SShawn Guo * stay sync with that.  It's hard to maintain, and should be fixed
166dde5ac5SShawn Guo * globally for multi-platform build to use a fixed virtual address
176dde5ac5SShawn Guo * for low-level debug uart port across platforms.
186dde5ac5SShawn Guo */
196dde5ac5SShawn Guo#define IMX_IO_P2V(x)	(						\
206dde5ac5SShawn Guo			(((x) & 0x80000000) >> 7) |			\
216dde5ac5SShawn Guo			(0xf4000000 +					\
226dde5ac5SShawn Guo			(((x) & 0x50000000) >> 6) +			\
236dde5ac5SShawn Guo			(((x) & 0x0b000000) >> 4) +			\
246dde5ac5SShawn Guo			(((x) & 0x000fffff))))
256dde5ac5SShawn Guo
266dde5ac5SShawn Guo#define UART_VADDR	IMX_IO_P2V(UART_PADDR)
276dde5ac5SShawn Guo
286dde5ac5SShawn Guo		.macro	addruart, rp, rv, tmp
296dde5ac5SShawn Guo		ldr	\rp, =UART_PADDR	@ physical
306dde5ac5SShawn Guo		ldr	\rv, =UART_VADDR	@ virtual
316dde5ac5SShawn Guo		.endm
326dde5ac5SShawn Guo
336dde5ac5SShawn Guo		.macro	senduart,rd,rx
3426e30c64SJohannes Berg		ARM_BE8(rev \rd, \rd)
356dde5ac5SShawn Guo		str	\rd, [\rx, #0x40]	@ TXDATA
366dde5ac5SShawn Guo		.endm
376dde5ac5SShawn Guo
382c50a570SLinus Walleij		.macro	waituartcts,rd,rx
392c50a570SLinus Walleij		.endm
402c50a570SLinus Walleij
412c50a570SLinus Walleij		.macro	waituarttxrdy,rd,rx
426dde5ac5SShawn Guo		.endm
436dde5ac5SShawn Guo
446dde5ac5SShawn Guo		.macro	busyuart,rd,rx
456dde5ac5SShawn Guo1002:		ldr	\rd, [\rx, #0x98]	@ SR2
4626e30c64SJohannes Berg		ARM_BE8(rev \rd, \rd)
476dde5ac5SShawn Guo		tst	\rd, #1 << 3		@ TXDC
486dde5ac5SShawn Guo		beq	1002b			@ wait until transmit done
496dde5ac5SShawn Guo		.endm
50