* [U-Boot] [PATCH v2 0/6] Add target board MS7206SE
@ 2014-02-13 14:13 Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 1/6] Add MS7206SE support Yoshinori Sato
` (5 more replies)
0 siblings, 6 replies; 8+ messages in thread
From: Yoshinori Sato @ 2014-02-13 14:13 UTC (permalink / raw)
To: u-boot
Hi.
I updated MS7206SE support.
Please review and comment
Changes v2
cleanup for checkpatch.pl
Yoshinori Sato (6):
Add MS7206SE support
Add MS7206SE ethernet support
Add SH7206 support
SH2A cache support
Module enabler cleanup
Various update
arch/sh/config.mk | 3 +
arch/sh/cpu/sh2/Makefile | 6 ++
arch/sh/cpu/sh2/cache-sh2a.c | 145 +++++++++++++++++++++++++++++++++
arch/sh/cpu/sh2/config.mk | 4 +-
arch/sh/cpu/sh2/cpu.c | 58 +++----------
arch/sh/cpu/sh2/nocache.c | 36 ++++++++
arch/sh/cpu/sh2/start.S | 2 +-
arch/sh/include/asm/cpu_sh2.h | 15 ++--
arch/sh/include/asm/cpu_sh2a.h | 16 ++++
arch/sh/include/asm/cpu_sh7206.h | 75 +++++++++++++++++
board/renesas/ms7206se/Makefile | 10 +++
board/renesas/ms7206se/lowlevel_init.S | 124 ++++++++++++++++++++++++++++
board/renesas/ms7206se/ms7206se.c | 43 ++++++++++
boards.cfg | 1 +
drivers/net/smc91111.h | 31 ++++++-
include/configs/ms7206se.h | 95 +++++++++++++++++++++
16 files changed, 605 insertions(+), 59 deletions(-)
create mode 100644 arch/sh/cpu/sh2/cache-sh2a.c
create mode 100644 arch/sh/cpu/sh2/nocache.c
create mode 100644 arch/sh/include/asm/cpu_sh2a.h
create mode 100644 arch/sh/include/asm/cpu_sh7206.h
create mode 100644 board/renesas/ms7206se/Makefile
create mode 100644 board/renesas/ms7206se/lowlevel_init.S
create mode 100644 board/renesas/ms7206se/ms7206se.c
create mode 100644 include/configs/ms7206se.h
--
1.8.5.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH v2 1/6] Add MS7206SE support
2014-02-13 14:13 [U-Boot] [PATCH v2 0/6] Add target board MS7206SE Yoshinori Sato
@ 2014-02-13 14:13 ` Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 2/6] Add MS7206SE ethernet support Yoshinori Sato
` (4 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Yoshinori Sato @ 2014-02-13 14:13 UTC (permalink / raw)
To: u-boot
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
board/renesas/ms7206se/Makefile | 10 +++
board/renesas/ms7206se/lowlevel_init.S | 124 +++++++++++++++++++++++++++++++++
board/renesas/ms7206se/ms7206se.c | 43 ++++++++++++
boards.cfg | 1 +
include/configs/ms7206se.h | 95 +++++++++++++++++++++++++
5 files changed, 273 insertions(+)
create mode 100644 board/renesas/ms7206se/Makefile
create mode 100644 board/renesas/ms7206se/lowlevel_init.S
create mode 100644 board/renesas/ms7206se/ms7206se.c
create mode 100644 include/configs/ms7206se.h
diff --git a/board/renesas/ms7206se/Makefile b/board/renesas/ms7206se/Makefile
new file mode 100644
index 0000000..eed3769
--- /dev/null
+++ b/board/renesas/ms7206se/Makefile
@@ -0,0 +1,10 @@
+#
+# Copyright (C) 2013 Yoshinori Sato <ysato@users.sourceforge.jp>
+#
+# u-boot/board/renesas/ms7206se/Makefile
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+obj-y := ms7206se.o
+obj-y += lowlevel_init.o
diff --git a/board/renesas/ms7206se/lowlevel_init.S b/board/renesas/ms7206se/lowlevel_init.S
new file mode 100644
index 0000000..4e5bde4
--- /dev/null
+++ b/board/renesas/ms7206se/lowlevel_init.S
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2013 Yoshinori Sato <ysato@users.sourceforge.jp>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <config.h>
+#include <version.h>
+
+#include <asm/processor.h>
+#include <asm/macro.h>
+#define INTMSK0 0x11800000
+
+ .global lowlevel_init
+
+ .text
+ .align 2
+
+lowlevel_init:
+ mova CPG_settings_table,r0
+1: mov.l @r0+,r3 // Address (or zero)
+ tst r3,r3
+ bt 2f
+ mov.l @r0+,r1 // data
+ bra 1b
+ mov.w r1, at r3
+2:
+ mov.l $mclkcr,r0 // MCLKCR setting
+ mov #0x40,r1
+ mov.b r1, at r0
+
+ // Set up the Bus Controler
+ mova BSC_settings_table,r0
+5: mov.l @r0+,r3 // Address (or zero)
+ tst r3,r3
+ bt 6f
+ mov.l @r0+,r1 // data
+ bra 5b
+ mov.l r1, at r3
+
+6:
+ mov.l $delay_count,r0
+7:
+ dt r0
+ bf 7b
+
+ mov.l $SDMR,r1 // Turns on SDRAM controller
+ mov.l $SDMR_val,r2
+ mov.l r2, at r1
+
+ // Set up the Pin Function Controler
+ mova PFC_settings_table,r0
+3: mov.l @r0+,r3 // Address (or zero)
+ tst r3,r3
+ bt 4f
+ mov.l @r0+,r1 // data
+ bra 3b
+ mov.w r1, at r3
+4:
+ rts/n
+
+ .align 4
+$delay_count:
+ .long 2000
+$SDMR: .long 0xfffc5880
+$SDMR_val:
+ .long 0
+
+$mclkcr:
+ .long MCLKCR
+
+CPG_settings_table:
+ .long WTCSR,0xA500
+ .long WTCNT,0x5A00
+ .long WTCSR,0xA51E
+ .long FRQCR, 0x120c /* input:33.3333MHz I:B:P=6:2:1=200MHz:66MHz:33MHz */
+ .long 0
+
+BSC_settings_table:
+ # Settings from Hitachi docs for SE7206
+ .long CMNCR, 0x00001010
+ .long CS0BCR, 0x10000600
+ .long CS2BCR, 0x10000600
+ .long CS4BCR, 0x10000400
+ .long CS5BCR, 0x10000400
+ .long CS3BCR, 0x10004600
+ .long CS0WCR, 0x00000380 /* wait:4cycle */
+ .long CS2WCR, 0x00000380
+ .long CS4WCR, 0x00000380
+ .long CS5WCR, 0x00000380
+ .long CS3WCR, 0x00004892 /* pre->actv:1cycle, actv->read/write:2cycle, write->pre:1cycle, ref->actv:4cycle */
+ .long SDCR, 0x00000811
+ .long RTCNT, 0xa55a0083
+ .long RTCOR, 0xa55a0083
+ .long RTCSR, 0xa55a0008 /* reflesh count=Bclk/4 */
+ .long 0
+
+PFC_settings_table:
+ .long PACRH3, 0x0022
+ .long PACRH2, 0x1111
+ .long PACRH1, 0x1115
+ .long PACRL4, 0x1111
+ .long PACRL3, 0x1125
+ .long PACRL2, 0x2255
+ .long PACRL1, 0x5500
+ .long PBCR3, 0x0022
+ .long PBCR2, 0x2244
+ .long PBCR1, 0x1111
+ .long PCCRL1, 0x1111
+ .long PDCRH4, 0x1111
+ .long PDCRH3, 0x1111
+ .long PDCRH2, 0x1111
+ .long PDCRH1, 0x1111
+ .long PDCRL4, 0x1111
+ .long PDCRL3, 0x1111
+ .long PECRH1, 0x0005
+ .long PECRL4, 0x3223
+ .long PECRL3, 0x3030
+ .long PECRL2, 0x3550
+ .long IFCR, 0x0003
+ .long 0
+
+$INTMSK0:
+ .long INTMSK0
diff --git a/board/renesas/ms7206se/ms7206se.c b/board/renesas/ms7206se/ms7206se.c
new file mode 100644
index 0000000..45906fb
--- /dev/null
+++ b/board/renesas/ms7206se/ms7206se.c
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2013 Yoshinori Sato <ysato@users.sourceforge.jp>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <net.h>
+#include <netdev.h>
+#include <asm/io.h>
+#include <asm/processor.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int checkboard(void)
+{
+ puts("BOARD: Renesas Technology MS7206SE\n");
+ return 0;
+}
+
+int board_init(void)
+{
+ return 0;
+}
+
+int dram_init(void)
+{
+ gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
+ gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
+ printf("DRAM: %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
+ return 0;
+}
+
+#ifdef CONFIG_CMD_NET
+int board_eth_init(bd_t *bis)
+{
+ int rc = 0;
+#ifdef CONFIG_SMC91111
+ rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
+#endif
+ return rc;
+}
+#endif
diff --git a/boards.cfg b/boards.cfg
index c97c4bd..a56f196 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -1203,6 +1203,7 @@ Active powerpc ppc4xx - xilinx ppc440-generic
Active powerpc ppc4xx - xilinx ppc440-generic xilinx-ppc440-generic_flash xilinx-ppc440-generic:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC Ricardo Ribalda <ricardo.ribalda@uam.es>
Active sandbox sandbox - sandbox sandbox sandbox - Simon Glass <sjg@chromium.org>
Active sh sh2 - renesas rsk7203 rsk7203 - Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Active sh sh2 - renesas ms7206se ms7206se - Yoshinori Sato <ysato@users.sourceforge.jp>
Active sh sh2 - renesas rsk7264 rsk7264 - Phil Edworthy <phil.edworthy@renesas.com>
Active sh sh2 - renesas rsk7269 rsk7269 - -
Active sh sh3 - - mpr2 mpr2 - Mark Jonas <mark.jonas@de.bosch.com>
diff --git a/include/configs/ms7206se.h b/include/configs/ms7206se.h
new file mode 100644
index 0000000..805044c
--- /dev/null
+++ b/include/configs/ms7206se.h
@@ -0,1 +1,95 @@
+/*
+ * Configuation settings for the Renesas Technology MS7206SE
+ *
+ * Copyright (C) 2013 Yoshinori Sato <ysato@users.sourceforge.jp>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __MS7206SE_H
+#define __MS7206SE
+
+#undef DEBUG
+#define CONFIG_SH 1
+#define CONFIG_SH2 1
+#define CONFIG_SH2A 1
+#define CONFIG_CPU_SH7206 1
+#define CONFIG_MS7206SE 1
+
+#define CONFIG_CMD_FLASH
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_SAVEENV
+#define CONFIG_CMD_SDRAM
+#define CONFIG_CMD_MEMORY
+#define CONFIG_CMD_MEMTEST
+#define CONFIG_CMD_CACHE
+
+#define CONFIG_BAUDRATE 115200
+#define CONFIG_BOOTARGS "console=ttySC3,115200"
+#define CONFIG_LOADADDR 0x0C100000 /* MS7206SE01_SDRAM_BASE + 1MB */
+
+#define CONFIG_VERSION_VARIABLE
+#undef CONFIG_SHOW_BOOT_PROGRESS
+
+/* MEMORY */
+#define MS7206SE_SDRAM_BASE 0x0C000000
+#define MS7206SE_FLASH_BASE_1 0x20000000 /* Non cache */
+#define MS7206SE_FLASH_BANK_SIZE (16 * 1024 * 1024)
+
+#define CONFIG_SYS_TEXT_BASE 0x0C7C0000
+#define CONFIG_SYS_LONGHELP /* undef to save memory */
+#define CONFIG_SYS_PROMPT "=> " /* Monitor Command Prompt */
+#define CONFIG_SYS_CBSIZE 256 /* Buffer size for input from the Console */
+#define CONFIG_SYS_PBSIZE 256 /* Buffer size for Console output */
+#define CONFIG_SYS_MAXARGS 16 /* max args accepted for monitor commands */
+/* Buffer size for Boot Arguments passed to kernel */
+#define CONFIG_SYS_BARGSIZE 512
+/* List of legal baudrate settings for this board */
+#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
+
+/* SCIF */
+#define CONFIG_SCIF_CONSOLE 1
+#define CONFIG_CONS_SCIF3 1
+
+#define CONFIG_SYS_MEMTEST_START CONFIG_LOADADDR
+#define CONFIG_SYS_MEMTEST_END (CONFIG_LOADADDR + (63 * 1024 * 1024))
+
+#define CONFIG_SYS_SDRAM_BASE MS7206SE_SDRAM_BASE
+#define CONFIG_SYS_SDRAM_SIZE (64 * 1024 * 1024)
+
+#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 1024 * 1024)
+#define CONFIG_SYS_MONITOR_BASE MS7206SE_FLASH_BASE_1
+#define CONFIG_SYS_MONITOR_LEN (128 * 1024)
+#define CONFIG_SYS_MALLOC_LEN (256 * 1024)
+#define CONFIG_SYS_BOOTMAPSZ (8 * 1024 * 1024)
+
+/* FLASH */
+#define CONFIG_FLASH_CFI_DRIVER
+#define CONFIG_SYS_FLASH_CFI
+#define CONFIG_SYS_FLASH_CFI_WIDTH FLASH_CFI_16BIT
+#undef CONFIG_SYS_FLASH_QUIET_TEST
+#define CONFIG_SYS_FLASH_EMPTY_INFO /* print 'E' for empty sector on flinfo */
+#define CONFIG_SYS_FLASH_BASE MS7206SE_FLASH_BASE_1
+#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH_BASE }
+#define CONFIG_SYS_MAX_FLASH_SECT 142
+#define CONFIG_SYS_MAX_FLASH_BANKS 1
+
+#define CONFIG_ENV_IS_IN_FLASH
+#define CONFIG_ENV_SECT_SIZE (128 * 1024)
+#define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
+#define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
+#define CONFIG_SYS_FLASH_ERASE_TOUT 12000
+#define CONFIG_SYS_FLASH_WRITE_TOUT 500
+
+/* Board Clock */
+#define CONFIG_SYS_CLK_FREQ 33333333
+#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ
+#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ
+#define CMT_CLK_DIVIDER 32 /* 8 (default), 32, 128 or 512 */
+#define CONFIG_SH_CMT_CLK_FREQ (CONFIG_SYS_CLK_FREQ / CMT_CLK_DIVIDER)
+
+/* Network interface */
+#define CONFIG_SMC91111
+#define CONFIG_SMC91111_BASE (0x30000000)
+
+#endif /* __MS7206SE_H */
--
1.8.5.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH v2 2/6] Add MS7206SE ethernet support
2014-02-13 14:13 [U-Boot] [PATCH v2 0/6] Add target board MS7206SE Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 1/6] Add MS7206SE support Yoshinori Sato
@ 2014-02-13 14:13 ` Yoshinori Sato
2015-01-30 21:29 ` Joe Hershberger
2014-02-13 14:13 ` [U-Boot] [PATCH v2 3/6] Add SH7206 support Yoshinori Sato
` (3 subsequent siblings)
5 siblings, 1 reply; 8+ messages in thread
From: Yoshinori Sato @ 2014-02-13 14:13 UTC (permalink / raw)
To: u-boot
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
drivers/net/smc91111.h | 31 ++++++++++++++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/drivers/net/smc91111.h b/drivers/net/smc91111.h
index 9deee9b..24b2b51 100644
--- a/drivers/net/smc91111.h
+++ b/drivers/net/smc91111.h
@@ -236,7 +236,36 @@ struct smc91111_priv{
*(__b2 + __i) = SMC_inb((a),(r)); \
}; \
}while(0)
-
+#elif defined(CONFIG_MS7206SE)
+#define SWAB7206(x) ({ word __x = x; ((__x << 8)|(__x >> 8)); })
+#define SMC_inw(a, r) *((volatile word*)((a)->iobase + (r)))
+#define SMC_inb(a, r) (*((volatile byte*)((a)->iobase + ((r) ^ 0x01))))
+#define SMC_insw(a, r, b, l) \
+ do { \
+ int __i; \
+ word *__b2 = (word *)(b); \
+ for (__i = 0; __i < (l); __i++) { \
+ *__b2++ = SWAB7206(SMC_inw(a, r)); \
+ } \
+ } while (0)
+#define SMC_outw(a, d, r) (*((volatile word *)((a)->iobase+(r))) = d)
+#define SMC_outb(a, d, r) ({ word __d = (byte)(d); \
+ word __w = SMC_inw((a), ((r)&(~1))); \
+ if (((r) & 1)) \
+ __w = (__w & 0x00ff) | (__d << 8); \
+ else \
+ __w = (__w & 0xff00) | (__d); \
+ SMC_outw((a), __w, ((r)&(~1))); \
+ })
+#define SMC_outsw(a, r, b, l) \
+ do { \
+ int __i; \
+ word *__b2 = (word *)(b); \
+ for (__i = 0; __i < (l); __i++) { \
+ SMC_outw(a, SWAB7206(*__b2), r); \
+ __b2++; \
+ } \
+ } while (0)
#else /* if not CONFIG_CPU_PXA25X and not CONFIG_LEON */
#ifndef CONFIG_SMC_USE_IOFUNCS /* these macros don't work on some boards */
--
1.8.5.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH v2 3/6] Add SH7206 support
2014-02-13 14:13 [U-Boot] [PATCH v2 0/6] Add target board MS7206SE Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 1/6] Add MS7206SE support Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 2/6] Add MS7206SE ethernet support Yoshinori Sato
@ 2014-02-13 14:13 ` Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 4/6] SH2A cache support Yoshinori Sato
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Yoshinori Sato @ 2014-02-13 14:13 UTC (permalink / raw)
To: u-boot
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
arch/sh/include/asm/cpu_sh2.h | 2 ++
arch/sh/include/asm/cpu_sh7206.h | 75 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 77 insertions(+)
create mode 100644 arch/sh/include/asm/cpu_sh7206.h
diff --git a/arch/sh/include/asm/cpu_sh2.h b/arch/sh/include/asm/cpu_sh2.h
index 18a0f0b..ca7b630 100644
--- a/arch/sh/include/asm/cpu_sh2.h
+++ b/arch/sh/include/asm/cpu_sh2.h
@@ -20,6 +20,8 @@
#if defined(CONFIG_CPU_SH7203)
# include <asm/cpu_sh7203.h>
+#elif defined(CONFIG_CPU_SH7206)
+# include <asm/cpu_sh7206.h>
#elif defined(CONFIG_CPU_SH7264)
# include <asm/cpu_sh7264.h>
#elif defined(CONFIG_CPU_SH7269)
diff --git a/arch/sh/include/asm/cpu_sh7206.h b/arch/sh/include/asm/cpu_sh7206.h
new file mode 100644
index 0000000..165b2f6
--- /dev/null
+++ b/arch/sh/include/asm/cpu_sh7206.h
@@ -0,0 +1,75 @@
+#ifndef _ASM_CPU_SH7206_H_
+#define _ASM_CPU_SH7206_H_
+
+/* Cache */
+#define CCR1 0xFFFC1000
+#define CCR2 0xFFFC1004
+#define CCR CCR1
+
+#define CMNCR 0xFFFC0000
+#define CS0BCR 0xFFFC0004
+#define CS2BCR 0xFFFC000C
+#define CS3BCR 0xFFFC0010
+#define CS4BCR 0xFFFC0014
+#define CS5BCR 0xFFFC0018
+#define CS0WCR 0xFFFC0028
+#define CS2WCR 0xFFFC0030
+#define CS3WCR 0xFFFC0034
+#define CS4WCR 0xFFFC0038
+#define CS5WCR 0xFFFC003C
+#define SDCR 0xFFFC004C
+#define RTCSR 0xFFFC0050
+#define RTCNT 0xFFFC0054
+#define RTCOR 0xFFFC0058
+
+/* SCIF */
+#define SCSMR_0 0xFFFE8000
+#define SCSMR_1 0xFFFE8800
+#define SCSMR_2 0xFFFE9000
+#define SCSMR_3 0xFFFE9800
+#define SCIF0_BASE SCSMR_0
+#define SCIF1_BASE SCSMR_1
+#define SCIF2_BASE SCSMR_2
+#define SCIF3_BASE SCSMR_3
+
+/* Timer(CMT) */
+#define CMSTR 0xFFFEC000
+#define CMCSR_0 0xFFFEC002
+#define CMCNT_0 0xFFFEC004
+#define CMCOR_0 0xFFFEC006
+#define CMCSR_1 0xFFFEC008
+#define CMCNT_1 0xFFFEC00A
+#define CMCOR_1 0xFFFEC00C
+
+/* PFC */
+#define PACRH3 0xFFFE380A
+#define PACRH2 0xFFFE380C
+#define PACRH1 0xFFFE380E
+#define PACRL4 0xFFFE3810
+#define PACRL3 0xFFFE3812
+#define PACRL2 0xFFFE3814
+#define PACRL1 0xFFFE3816
+#define PBCR3 0xFFFE3892
+#define PBCR2 0xFFFE3894
+#define PBCR1 0xFFFE3896
+#define PCCRL1 0xFFFE3916
+#define PDCRH4 0xFFFE3988
+#define PDCRH3 0xFFFE398A
+#define PDCRH2 0xFFFE398C
+#define PDCRH1 0xFFFE398E
+#define PDCRL4 0xFFFE3990
+#define PDCRL3 0xFFFE3992
+#define PECRH1 0xFFFE3A0E
+#define PECRL4 0xFFFE3A10
+#define PECRL3 0xFFFE3A12
+#define PECRL2 0xFFFE3A14
+#define IFCR 0xFFFE3A22
+
+/* On chip oscillator circuits */
+#define FRQCR 0xFFFE0010
+#define MCLKCR 0xFFFE0410
+/* Watchdog timer */
+#define WTCNT 0xFFFE0002
+#define WTCSR 0xFFFE0000
+
+#endif /* _ASM_CPU_SH7206_H_ */
--
1.8.5.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH v2 4/6] SH2A cache support
2014-02-13 14:13 [U-Boot] [PATCH v2 0/6] Add target board MS7206SE Yoshinori Sato
` (2 preceding siblings ...)
2014-02-13 14:13 ` [U-Boot] [PATCH v2 3/6] Add SH7206 support Yoshinori Sato
@ 2014-02-13 14:13 ` Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 5/6] Module enabler cleanup Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 6/6] Various update Yoshinori Sato
5 siblings, 0 replies; 8+ messages in thread
From: Yoshinori Sato @ 2014-02-13 14:13 UTC (permalink / raw)
To: u-boot
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
arch/sh/cpu/sh2/Makefile | 6 ++
arch/sh/cpu/sh2/cache-sh2a.c | 145 ++++++++++++++++++++++++++++++++++++++++++
arch/sh/cpu/sh2/cpu.c | 31 ---------
arch/sh/cpu/sh2/nocache.c | 36 +++++++++++
arch/sh/include/asm/cpu_sh2.h | 10 ---
5 files changed, 187 insertions(+), 41 deletions(-)
create mode 100644 arch/sh/cpu/sh2/cache-sh2a.c
create mode 100644 arch/sh/cpu/sh2/nocache.c
diff --git a/arch/sh/cpu/sh2/Makefile b/arch/sh/cpu/sh2/Makefile
index a19ed5e..6a11448 100644
--- a/arch/sh/cpu/sh2/Makefile
+++ b/arch/sh/cpu/sh2/Makefile
@@ -4,9 +4,15 @@
#
# Copyright (C) 2007,2008 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
# Copyright (C) 2008 Renesas Solutions Corp.
+# Copyright (C) 2013 Yoshinori Sato <ysato@users.sourceforge.jp>
#
# SPDX-License-Identifier: GPL-2.0+
#
extra-y = start.o
obj-y = cpu.o interrupts.o watchdog.o
+ifdef CONFIG_SH2A
+obj-y += cache-sh2a.o
+else
+obj-y += nocache.o
+endif
diff --git a/arch/sh/cpu/sh2/cache-sh2a.c b/arch/sh/cpu/sh2/cache-sh2a.c
new file mode 100644
index 0000000..ae59797
--- /dev/null
+++ b/arch/sh/cpu/sh2/cache-sh2a.c
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2013 Yoshinori Sato <ysato@users.sourceforge.jp>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <asm/processor.h>
+#include <asm/io.h>
+
+/*
+ * Jump to cache disabled area
+ * When handling caches, we need to do it from non-cache area.
+ */
+#define jump_to_uncacheable() \
+do { \
+ unsigned long __dummy; \
+ __asm__ __volatile__( \
+ "mov.l 1f, %0\n\t" \
+ "or %1, %0\n\t" \
+ "jmp @%0\n\t" \
+ " nop\n\t" \
+ ".balign 4\n" \
+ "1: .long 2f\n" \
+ "2:" \
+ : "=&r" (__dummy) \
+ : "r" (0x20000000)); \
+} while (0)
+
+/*
+ * Back to cache area.
+ */
+#define back_to_cacheable() \
+do { \
+ unsigned long __dummy; \
+ __asm__ __volatile__( \
+ "nop;nop;nop;nop;nop;nop;nop\n\t" \
+ "mov.l 1f, %0\n\t" \
+ "jmp @%0\n\t" \
+ " nop\n\t" \
+ ".balign 4\n" \
+ "1: .long 2f\n" \
+ "2:" \
+ : "=&r" (__dummy)); \
+} while (0)
+
+#define CACHE_OC_NUM_ENTRIES 128
+#define CACHE_OC_NUM_WAYS 4
+#define CACHE_OC_ADDRESS_ARRAY 0xf0800000
+#define CACHE_OC_WAY_SHIFT 11
+#define CACHE_OC_ENTRY_SHIFT 2
+#define CACHE_UPDATED 0x02
+
+static inline void cache_wback_all(void)
+{
+ unsigned long addr, data, i, j;
+
+ for (i = 0; i < CACHE_OC_NUM_ENTRIES; i++) {
+ for (j = 0; j < CACHE_OC_NUM_WAYS; j++) {
+ addr = CACHE_OC_ADDRESS_ARRAY
+ | (j << CACHE_OC_WAY_SHIFT)
+ | (i << CACHE_OC_ENTRY_SHIFT);
+ data = inl(addr);
+ if (data & CACHE_UPDATED) {
+ data &= ~CACHE_UPDATED;
+ outl(data, addr);
+ }
+ }
+ }
+}
+
+void flush_cache(unsigned long addr, unsigned long size)
+{
+ unsigned long entry;
+ unsigned long tag;
+ size = (size + 3) & ~3;
+ jump_to_uncacheable();
+ while (size > 0) {
+ entry = addr & 0x000003ff0;
+ tag = addr & 0x1ffff0000;
+ /* I-Cache flush */
+ outl(tag, 0xf0000008 | entry);
+ /* D-Cache flush with wb */
+ outl(tag, 0xf0800008 | entry);
+ addr += 4;
+ size -= 4;
+ }
+ back_to_cacheable();
+}
+
+void icache_enable(void)
+{
+ unsigned long ccr;
+ ccr = readl(CCR1);
+ ccr |= 0x00000900;
+ jump_to_uncacheable();
+ writel(ccr, CCR1);
+ back_to_cacheable();
+}
+
+void icache_disable(void)
+{
+ unsigned long ccr;
+ ccr = readl(CCR1);
+ ccr &= ~0x00000100;
+ jump_to_uncacheable();
+ writel(ccr, CCR1);
+ back_to_cacheable();
+}
+
+int icache_status(void)
+{
+ unsigned long ccr;
+ ccr = readl(CCR1);
+ return ((ccr & 0x00000100) != 0);
+}
+
+void dcache_enable(void)
+{
+ unsigned long ccr;
+ ccr = readl(CCR1);
+ ccr |= 0x00000009;
+ jump_to_uncacheable();
+ writel(ccr, CCR1);
+ back_to_cacheable();
+}
+
+void dcache_disable(void)
+{
+ unsigned long ccr;
+ ccr = readl(CCR1);
+ ccr &= ~0x00000001;
+ jump_to_uncacheable();
+ cache_wback_all();
+ writel(ccr, CCR1);
+ back_to_cacheable();
+}
+
+int dcache_status(void)
+{
+ unsigned long ccr;
+ ccr = readl(CCR1);
+ return ((ccr & 0x00000001) != 0);
+}
diff --git a/arch/sh/cpu/sh2/cpu.c b/arch/sh/cpu/sh2/cpu.c
index a2f856f..b401d08 100644
--- a/arch/sh/cpu/sh2/cpu.c
+++ b/arch/sh/cpu/sh2/cpu.c
@@ -52,34 +52,3 @@ int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
reset_cpu(0);
return 0;
}
-
-void flush_cache(unsigned long addr, unsigned long size)
-{
-
-}
-
-void icache_enable(void)
-{
-}
-
-void icache_disable(void)
-{
-}
-
-int icache_status(void)
-{
- return 0;
-}
-
-void dcache_enable(void)
-{
-}
-
-void dcache_disable(void)
-{
-}
-
-int dcache_status(void)
-{
- return 0;
-}
diff --git a/arch/sh/cpu/sh2/nocache.c b/arch/sh/cpu/sh2/nocache.c
new file mode 100644
index 0000000..29a8858
--- /dev/null
+++ b/arch/sh/cpu/sh2/nocache.c
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013 Yoshinori Sato <ysato@users.sourceforge.jp>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+/* dummy cache control functions */
+void flush_cache(unsigned long addr, unsigned long size)
+{
+}
+
+void icache_enable(void)
+{
+}
+
+void icache_disable(void)
+{
+}
+
+int icache_status(void)
+{
+ return 0;
+}
+
+void dcache_enable(void)
+{
+}
+
+void dcache_disable(void)
+{
+}
+
+int dcache_status(void)
+{
+ return 0;
+}
diff --git a/arch/sh/include/asm/cpu_sh2.h b/arch/sh/include/asm/cpu_sh2.h
index ca7b630..b84dad4 100644
--- a/arch/sh/include/asm/cpu_sh2.h
+++ b/arch/sh/include/asm/cpu_sh2.h
@@ -8,16 +8,6 @@
#ifndef _ASM_CPU_SH2_H_
#define _ASM_CPU_SH2_H_
-/* cache control */
-#define CCR_CACHE_STOP 0x00000008
-#define CCR_CACHE_ENABLE 0x00000005
-#define CCR_CACHE_ICI 0x00000008
-
-#define CACHE_OC_ADDRESS_ARRAY 0xf0000000
-#define CACHE_OC_WAY_SHIFT 13
-#define CACHE_OC_NUM_ENTRIES 256
-#define CACHE_OC_ENTRY_SHIFT 4
-
#if defined(CONFIG_CPU_SH7203)
# include <asm/cpu_sh7203.h>
#elif defined(CONFIG_CPU_SH7206)
--
1.8.5.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH v2 5/6] Module enabler cleanup
2014-02-13 14:13 [U-Boot] [PATCH v2 0/6] Add target board MS7206SE Yoshinori Sato
` (3 preceding siblings ...)
2014-02-13 14:13 ` [U-Boot] [PATCH v2 4/6] SH2A cache support Yoshinori Sato
@ 2014-02-13 14:13 ` Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 6/6] Various update Yoshinori Sato
5 siblings, 0 replies; 8+ messages in thread
From: Yoshinori Sato @ 2014-02-13 14:13 UTC (permalink / raw)
To: u-boot
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
arch/sh/cpu/sh2/cpu.c | 27 ++++++++++++---------------
arch/sh/include/asm/cpu_sh2.h | 3 +++
arch/sh/include/asm/cpu_sh2a.h | 16 ++++++++++++++++
3 files changed, 31 insertions(+), 15 deletions(-)
create mode 100644 arch/sh/include/asm/cpu_sh2a.h
diff --git a/arch/sh/cpu/sh2/cpu.c b/arch/sh/cpu/sh2/cpu.c
index b401d08..0a6a58b 100644
--- a/arch/sh/cpu/sh2/cpu.c
+++ b/arch/sh/cpu/sh2/cpu.c
@@ -10,16 +10,17 @@
#include <asm/processor.h>
#include <asm/io.h>
-#define STBCR4 0xFFFE040C
-#define cmt_clock_enable() do {\
- writeb(readb(STBCR4) & ~0x04, STBCR4);\
- } while (0)
-#define scif0_enable() do {\
- writeb(readb(STBCR4) & ~0x80, STBCR4);\
- } while (0)
-#define scif3_enable() do {\
- writeb(readb(STBCR4) & ~0x10, STBCR4);\
- } while (0)
+#if defined(CONFIG_CONS_SCIF0)
+# define CH 0
+#elif defined(CONFIG_CONS_SCIF1)
+# define CH 1
+#elif defined(CONFIG_CONS_SCIF2)
+# define CH 2
+#elif defined(CONFIG_CONS_SCIF3)
+# define CH 3
+#else
+# error "Default SCIF doesn't set....."
+#endif
int checkcpu(void)
{
@@ -30,11 +31,7 @@ int checkcpu(void)
int cpu_init(void)
{
/* SCIF enable */
-#if defined(CONFIG_CONS_SCIF3)
- scif3_enable();
-#else
- scif0_enable();
-#endif
+ scif_enable(CH);
/* CMT clock enable */
cmt_clock_enable() ;
return 0;
diff --git a/arch/sh/include/asm/cpu_sh2.h b/arch/sh/include/asm/cpu_sh2.h
index b84dad4..deadece 100644
--- a/arch/sh/include/asm/cpu_sh2.h
+++ b/arch/sh/include/asm/cpu_sh2.h
@@ -8,6 +8,9 @@
#ifndef _ASM_CPU_SH2_H_
#define _ASM_CPU_SH2_H_
+#if defined(CONFIG_SH2A)
+# include <asm/cpu_sh2a.h>
+#endif
#if defined(CONFIG_CPU_SH7203)
# include <asm/cpu_sh7203.h>
#elif defined(CONFIG_CPU_SH7206)
diff --git a/arch/sh/include/asm/cpu_sh2a.h b/arch/sh/include/asm/cpu_sh2a.h
new file mode 100644
index 0000000..7262a2a
--- /dev/null
+++ b/arch/sh/include/asm/cpu_sh2a.h
@@ -0,0 +1,16 @@
+#ifndef _ASM_CPU_SH2A_H_
+#define _ASM_CPU_SH2A_H_
+
+/* module enable */
+#define STBCR4 0xFFFE040C
+#define scif_enable(ch) \
+do { \
+ if (ch < 4) { \
+ unsigned char mask = 1 << (7 - ch); \
+ writeb((readb(STBCR4) & ~mask), STBCR4);\
+ } \
+} while (0)
+
+#define cmt_clock_enable() \
+ writeb((readb(STBCR4) & ~0x04), STBCR4)
+#endif
--
1.8.5.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH v2 6/6] Various update
2014-02-13 14:13 [U-Boot] [PATCH v2 0/6] Add target board MS7206SE Yoshinori Sato
` (4 preceding siblings ...)
2014-02-13 14:13 ` [U-Boot] [PATCH v2 5/6] Module enabler cleanup Yoshinori Sato
@ 2014-02-13 14:13 ` Yoshinori Sato
5 siblings, 0 replies; 8+ messages in thread
From: Yoshinori Sato @ 2014-02-13 14:13 UTC (permalink / raw)
To: u-boot
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
arch/sh/config.mk | 3 +++
arch/sh/cpu/sh2/config.mk | 4 +++-
arch/sh/cpu/sh2/start.S | 2 +-
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/arch/sh/config.mk b/arch/sh/config.mk
index 758c070..abd419a 100644
--- a/arch/sh/config.mk
+++ b/arch/sh/config.mk
@@ -11,6 +11,9 @@ CONFIG_STANDALONE_LOAD_ADDR ?= 0x8C000000
ifeq ($(CPU),sh2)
CONFIG_STANDALONE_LOAD_ADDR += -EB
endif
+ifeq ($(CPU),sh2a)
+CONFIG_STANDALONE_LOAD_ADDR += -m2a-nofpu
+endif
PLATFORM_CPPFLAGS += -DCONFIG_SH -D__SH__
PLATFORM_LDFLAGS += -e $(CONFIG_SYS_TEXT_BASE) --defsym reloc_dst=$(CONFIG_SYS_TEXT_BASE)
diff --git a/arch/sh/cpu/sh2/config.mk b/arch/sh/cpu/sh2/config.mk
index 69273b4..a012162 100644
--- a/arch/sh/cpu/sh2/config.mk
+++ b/arch/sh/cpu/sh2/config.mk
@@ -8,7 +8,7 @@
ENDIANNESS += -EB
ifdef CONFIG_SH2A
-PLATFORM_CPPFLAGS += -m2a -m2a-nofpu -mb -ffreestanding
+PLATFORM_CPPFLAGS += -m2a-nofpu -mb -ffreestanding
else # SH2
PLATFORM_CPPFLAGS += -m3e -mb
endif
@@ -16,3 +16,5 @@ PLATFORM_CPPFLAGS += -DCONFIG_SH2 $(call cc-option,-mno-fdpic)
PLATFORM_RELFLAGS += -ffixed-r13
PLATFORM_LDFLAGS += $(ENDIANNESS)
+
+USE_PRIVATE_LIBGCC = yes
diff --git a/arch/sh/cpu/sh2/start.S b/arch/sh/cpu/sh2/start.S
index 5b92a01..efda8e2 100644
--- a/arch/sh/cpu/sh2/start.S
+++ b/arch/sh/cpu/sh2/start.S
@@ -14,7 +14,7 @@
.global _start
_sh_start:
- .long 0x00000010 /* Ppower ON reset PC*/
+ .long 0x00000010 /* Power ON reset PC*/
.long 0x00000000
.long 0x00000010 /* Manual reset PC */
.long 0x00000000
--
1.8.5.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH v2 2/6] Add MS7206SE ethernet support
2014-02-13 14:13 ` [U-Boot] [PATCH v2 2/6] Add MS7206SE ethernet support Yoshinori Sato
@ 2015-01-30 21:29 ` Joe Hershberger
0 siblings, 0 replies; 8+ messages in thread
From: Joe Hershberger @ 2015-01-30 21:29 UTC (permalink / raw)
To: u-boot
On Thu, Feb 13, 2014 at 8:13 AM, Yoshinori Sato <ysato@users.sourceforge.jp>
wrote:
>
> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> ---
Huge apologies for the delay.
Applied, Thanks!
-Joe
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-01-30 21:29 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-13 14:13 [U-Boot] [PATCH v2 0/6] Add target board MS7206SE Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 1/6] Add MS7206SE support Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 2/6] Add MS7206SE ethernet support Yoshinori Sato
2015-01-30 21:29 ` Joe Hershberger
2014-02-13 14:13 ` [U-Boot] [PATCH v2 3/6] Add SH7206 support Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 4/6] SH2A cache support Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 5/6] Module enabler cleanup Yoshinori Sato
2014-02-13 14:13 ` [U-Boot] [PATCH v2 6/6] Various update Yoshinori Sato
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.