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

Commit c633c3cf authored by Jean-Christop PLAGNIOL-VILLARD's avatar Jean-Christop PLAGNIOL-VILLARD Committed by Russell King
Browse files

[ARM] 5412/1: XSCALE: add ice dcc support



SCALE: add ice dcc support

Tested on the ixp425 with the ice PEEDI

Ack-by: default avatarEric Miao <eric.miao@marvell.com>

Signed-off-by: default avatarJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 22b61a11
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ config DEBUG_ICEDCC
	  Say Y here if you want the debug print routines to direct their
	  output to the EmbeddedICE macrocell's DCC channel using
	  co-processor 14. This is known to work on the ARM9 style ICE
	  channel.
	  channel and on the XScale with the PEEDI.

	  It does include a timeout to ensure that the system does not
	  totally freeze when there is nothing connected to read.
+6 −0
Original line number Diff line number Diff line
@@ -27,6 +27,12 @@
		.macro	writeb, ch, rb
		mcr	p14, 0, \ch, c0, c5, 0
		.endm
#elif defined(CONFIG_CPU_XSCALE)
		.macro	loadsp, rb
		.endm
		.macro	writeb, ch, rb
		mcr	p14, 0, \ch, c8, c0, 0
		.endm
#else
		.macro	loadsp, rb
		.endm
+15 −0
Original line number Diff line number Diff line
@@ -46,6 +46,21 @@ static void icedcc_putc(int ch)

	asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch));
}
#elif defined(CONFIG_CPU_XSCALE)

static void icedcc_putc(int ch)
{
	int status, i = 0x4000000;

	do {
		if (--i < 0)
			return;

		asm volatile ("mrc p14, 0, %0, c14, c0, 0" : "=r" (status));
	} while (status & (1 << 28));

	asm("mcr p14, 0, %0, c8, c0, 0" : : "r" (ch));
}

#else

+27 −0
Original line number Diff line number Diff line
@@ -49,6 +49,33 @@
1002:
		.endm

#elif defined(CONFIG_CPU_XSCALE)

		.macro	addruart, rx
		.endm

		.macro	senduart, rd, rx
		mcr	p14, 0, \rd, c8, c0, 0
		.endm

		.macro	busyuart, rd, rx
1001:
		mrc	p14, 0, \rx, c14, c0, 0
		tst	\rx, #0x10000000
		beq	1001b
		.endm

		.macro	waituart, rd, rx
		mov	\rd, #0x10000000
1001:
		subs	\rd, \rd, #1
		bmi	1002f
		mrc	p14, 0, \rx, c14, c0, 0
		tst	\rx, #0x10000000
		bne	1001b
1002:
		.endm

#else

		.macro	addruart, rx