Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 67f462b2 authored by Nicolas Pitre's avatar Nicolas Pitre Committed by Nicolas Pitre
Browse files

ARM: mach-davinci: clean up debug-macro.S



This achieves two goals:

1) Get rid of davinci_uart_v2p() and davinci_uart_p2v() which were the
   last users of PLAT_PHYS_OFFSET.

2) Remove the probing of the M bit in the CP15 control reg and make
   the access to the .data variables completely position independent.

Signed-off-by: default avatarNicolas Pitre <nicolas.pitre@linaro.org>
Reviewed-by: default avatarKevin Hilman <khilman@ti.com>
Tested-by: default avatarKevin Hilman <khilman@ti.com>
parent e020fe34
Loading
Loading
Loading
Loading
+19 −24
Original line number Diff line number Diff line
@@ -18,15 +18,10 @@

#include <linux/serial_reg.h>

#include <asm/memory.h>

#include <mach/serial.h>

#define UART_SHIFT	2

#define davinci_uart_v2p(x)	((x) - PAGE_OFFSET + PLAT_PHYS_OFFSET)
#define davinci_uart_p2v(x)	((x) - PLAT_PHYS_OFFSET + PAGE_OFFSET)

		.pushsection .data
davinci_uart_phys:	.word	0
davinci_uart_virt:	.word	0
@@ -35,38 +30,38 @@ davinci_uart_virt: .word 0
		.macro addruart, rp, rv, tmp

		/* Use davinci_uart_phys/virt if already configured */
10:		mrc	p15, 0, \rp, c1, c0
		tst	\rp, #1			@ MMU enabled?
		ldreq	\rp, =davinci_uart_v2p(davinci_uart_phys)
		ldrne	\rp, =davinci_uart_phys
		add	\rv, \rp, #4		@ davinci_uart_virt
		ldr	\rp, [\rp, #0]
		ldr	\rv, [\rv, #0]
10:		adr	\rp, 99f		@ get effective addr of 99f
		ldr	\rv, [\rp]		@ get absolute addr of 99f
		sub	\rv, \rv, \rp		@ offset between the two
		ldr	\rp, [\rp, #4]		@ abs addr of omap_uart_phys
		sub	\tmp, \rp, \rv		@ make it effective
		ldr	\rp, [\tmp, #0]		@ davinci_uart_phys
		ldr	\rv, [\tmp, #4]		@ davinci_uart_virt
		cmp	\rp, #0			@ is port configured?
		cmpne	\rv, #0
		bne	99f			@ already configured
		bne	100f			@ already configured

		/* Check the debug UART address set in uncompress.h */
		mrc	p15, 0, \rp, c1, c0
		tst	\rp, #1			@ MMU enabled?

		and	\rp, pc, #0xff000000
		ldr	\rv, =DAVINCI_UART_INFO_OFS
		add	\rp, \rp, \rv

		ldreq	\rv, =davinci_uart_v2p(davinci_uart_phys)
		ldrne	\rv, =davinci_uart_phys

		/* Copy uart phys address from decompressor uart info */
		ldr	\tmp, [\rp, #0]
		str	\tmp, [\rv, #0]
		ldr	\rv, [\rp, #0]
		str	\rv, [\tmp, #0]

		/* Copy uart virt address from decompressor uart info */
		ldr	\tmp, [\rp, #4]
		str	\tmp, [\rv, #4]
		ldr	\rv, [\rp, #4]
		str	\rv, [\tmp, #4]

		b	10b
99:

		.align
99:		.word	.
		.word	davinci_uart_phys
		.ltorg

100:
		.endm

		.macro	senduart,rd,rx