[U-Boot-Users] [PATCH] serial_sh: Add support for SH7720

Yoshihiro Shimoda shimoda.yoshihiro at renesas.com
Mon Dec 3 14:58:47 CET 2007


Add support for SH7720 in serial_sh driver.

Signed-off-by: Yoshihiro Shimoda <shimoda.yoshihiro at renesas.com>
CC: Nobuhiro Iwamatsu <iwamatsu at nigauri.org>
---
 drivers/serial_sh.c |   26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

--- a/drivers/serial_sh.c	2007-11-14 21:06:34.000000000 +0900
+++ b/drivers/serial_sh.c	2007-12-03 22:27:15.000000000 +0900
@@ -30,6 +30,17 @@
 #error "Default SCIF doesn't set....."
 #endif

+#if defined(CONFIG_SH3)
+/* There are SH7720's register */
+#define SCSMR 	(volatile unsigned short *)(SCIF_BASE + 0x0)
+#define SCBRR 	(volatile unsigned char  *)(SCIF_BASE + 0x4)
+#define SCSCR 	(volatile unsigned short *)(SCIF_BASE + 0x8)
+#define SCFSR 	(volatile unsigned short *)(SCIF_BASE + 0x14)	/* SCSSR */
+#define SCFCR 	(volatile unsigned short *)(SCIF_BASE + 0x18)
+#define SCFDR 	(volatile unsigned short *)(SCIF_BASE + 0x1C)
+#define SCFTDR 	(volatile unsigned char  *)(SCIF_BASE + 0x20)
+#define SCFRDR 	(volatile unsigned char  *)(SCIF_BASE + 0x24)
+#else
 #define SCSMR 	(volatile unsigned short *)(SCIF_BASE + 0x0)
 #define SCBRR 	(volatile unsigned char  *)(SCIF_BASE + 0x4)
 #define SCSCR 	(volatile unsigned short *)(SCIF_BASE + 0x8)
@@ -38,16 +49,21 @@
 #define SCFRDR 	(volatile unsigned char  *)(SCIF_BASE + 0x14)
 #define SCFCR 	(volatile unsigned short *)(SCIF_BASE + 0x18)
 #define SCFDR 	(volatile unsigned short *)(SCIF_BASE + 0x1C)
+#endif
+
 #if defined(CONFIG_SH4A)
 #define SCRFDR	(volatile unsigned short *)(SCIF_BASE + 0x20)
 #define SCSPTR	(volatile unsigned short *)(SCIF_BASE + 0x24)
 #define SCLSR   (volatile unsigned short *)(SCIF_BASE + 0x28)
 #define SCRER	(volatile unsigned short *)(SCIF_BASE + 0x2C)
+#define LSR_ORER        1
 #elif defined (CONFIG_SH4)
 #define SCSPTR 	(volatile unsigned short *)(SCIF_BASE + 0x20)
 #define SCLSR 	(volatile unsigned short *)(SCIF_BASE + 0x24)
+#define LSR_ORER        1
 #elif defined (CONFIG_SH3)
-#define SCLSR 	(volatile unsigned short *)(SCIF_BASE + 0x24)
+#define SCLSR 	SCFSR	/* SCSSR */
+#define LSR_ORER	0x0200
 #endif

 #define SCR_RE 		(1 << 4)
@@ -67,10 +83,17 @@
 void serial_setbrg (void)
 {
 	DECLARE_GLOBAL_DATA_PTR;
+#if defined(CONFIG_CPU_SH7720)
+	int divisor = gd->baudrate * 16;
+
+	*SCBRR = (CONFIG_SYS_CLK_FREQ * 2 + (divisor / 2)) /
+						(gd->baudrate * 32) - 1;
+#else
 	int divisor = gd->baudrate * 32;

 	*SCBRR = (CONFIG_SYS_CLK_FREQ + (divisor / 2)) /
 						(gd->baudrate * 32) - 1;
+#endif
 }

 int serial_init (void)
@@ -133,7 +156,6 @@ int serial_tstc (void)

 #define FSR_ERR_CLEAR   0x0063
 #define RDRF_CLEAR      0x00fc
-#define LSR_ORER        1
 void handle_error( void ){

 	(void)*SCFSR ;





More information about the U-Boot mailing list