linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] debug-8250: add a 32 bit mode
@ 2010-11-22 14:51 Jamie Iles
  2011-01-06 13:16 ` Jamie Iles
  0 siblings, 1 reply; 2+ messages in thread
From: Jamie Iles @ 2010-11-22 14:51 UTC (permalink / raw)
  To: linux-arm-kernel

Some platforms such as picoChip picoXCell devices can only do 32 bit
accesses to APB peripherals. If the platform defines
DEBUG_8250_ACCESS_32 before including debug-8250.S in debug-macros.S
then use 32-bit accesses for senduart, busyuart and waituart. If not
defined, use 8-bit accesses.

Signed-off-by: Jamie Iles <jamie@jamieiles.com>
---

Note: for the TTY support we also need
[8250: add a UPIO_DWAPB32 for 32 bit accesses (v2)] at
http://marc.info/?l=linux-serial&m=129043658715199&w=2

 arch/arm/include/asm/hardware/debug-8250.S |   21 ++++++++++++++++++---
 1 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/arch/arm/include/asm/hardware/debug-8250.S b/arch/arm/include/asm/hardware/debug-8250.S
index 22c6892..71f0839 100644
--- a/arch/arm/include/asm/hardware/debug-8250.S
+++ b/arch/arm/include/asm/hardware/debug-8250.S
@@ -9,12 +9,26 @@
  */
 #include <linux/serial_reg.h>
 
+/*
+ * Some platforms may only be able to perform 32-bit accesses to peripherals
+ * on an APB bus. If this is the case, define DEBUG_8250_ACCESS_32 before
+ * including this file.
+ */
+#ifdef DEBUG_8250_ACCESS_32
+# define ldr_uart    ldr
+# define str_uart    str
+#else /* DEBUG_8250_ACCESS_32 */
+# define ldr_uart    ldrb
+# define str_uart    strb
+#endif /* DEBUG_8250_ACCESS_32 */
+
 		.macro	senduart,rd,rx
-		strb	\rd, [\rx, #UART_TX << UART_SHIFT]
+                and     \rd, \rd, #0xff
+		str_uart    \rd, [\rx, #UART_TX << UART_SHIFT]
 		.endm
 
 		.macro	busyuart,rd,rx
-1002:		ldrb	\rd, [\rx, #UART_LSR << UART_SHIFT]
+1002:		ldr_uart    \rd, [\rx, #UART_LSR << UART_SHIFT]
 		and	\rd, \rd, #UART_LSR_TEMT | UART_LSR_THRE
 		teq	\rd, #UART_LSR_TEMT | UART_LSR_THRE
 		bne	1002b
@@ -22,7 +36,8 @@
 
 		.macro	waituart,rd,rx
 #ifdef FLOW_CONTROL
-1001:		ldrb	\rd, [\rx, #UART_MSR << UART_SHIFT]
+1001:		ldr_uart    \rd, [\rx, #UART_MSR << UART_SHIFT]
+                and     \rd, \rd, 0xff
 		tst	\rd, #UART_MSR_CTS
 		beq	1001b
 #endif
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-01-06 13:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-22 14:51 [PATCH] debug-8250: add a 32 bit mode Jamie Iles
2011-01-06 13:16 ` Jamie Iles

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).