Skip to content

Commit c01f0f1

Browse files
Yoshihiro Shimodapmundt
Yoshihiro Shimoda
authored andcommitted
sh: Add initial support for SH7757 CPU subtype
Signed-off-by: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
1 parent 9e7291c commit c01f0f1

File tree

14 files changed

+2954
-8
lines changed

14 files changed

+2954
-8
lines changed

arch/sh/Kconfig

+7
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,13 @@ config CPU_SUBTYPE_SH7724
396396
help
397397
Select SH7724 if you have an SH-MobileR2R CPU.
398398

399+
config CPU_SUBTYPE_SH7757
400+
bool "Support SH7757 processor"
401+
select CPU_SH4A
402+
select CPU_SHX2
403+
help
404+
Select SH7757 if you have a SH4A SH7757 CPU.
405+
399406
config CPU_SUBTYPE_SH7763
400407
bool "Support SH7763 processor"
401408
select CPU_SH4A

arch/sh/Kconfig.debug

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ config EARLY_SCIF_CONSOLE_PORT
3838
default "0xffe00000" if CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7763 || \
3939
CPU_SUBTYPE_SH7722 || CPU_SUBTYPE_SH7366 || \
4040
CPU_SUBTYPE_SH7343
41+
default "0xfe4c0000" if CPU_SUBTYPE_SH7757
4142
default "0xffeb0000" if CPU_SUBTYPE_SH7785
4243
default "0xffeb0000" if CPU_SUBTYPE_SH7786
4344
default "0xfffe8000" if CPU_SUBTYPE_SH7203

arch/sh/include/asm/processor.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ enum cpu_type {
3232

3333
/* SH-4A types */
3434
CPU_SH7763, CPU_SH7770, CPU_SH7780, CPU_SH7781, CPU_SH7785, CPU_SH7786,
35-
CPU_SH7723, CPU_SH7724, CPU_SHX3,
35+
CPU_SH7723, CPU_SH7724, CPU_SH7757, CPU_SHX3,
3636

3737
/* SH4AL-DSP types */
3838
CPU_SH7343, CPU_SH7722, CPU_SH7366,

arch/sh/include/cpu-sh4/cpu/freq.h

+4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
#define MSTPCR0 0xa4150030
2323
#define MSTPCR1 0xa4150034
2424
#define MSTPCR2 0xa4150038
25+
#elif defined(CONFIG_CPU_SUBTYPE_SH7757)
26+
#define FRQCR 0xffc80000
27+
#define OSCCR 0xffc80018
28+
#define PLLCR 0xffc80024
2529
#elif defined(CONFIG_CPU_SUBTYPE_SH7763) || \
2630
defined(CONFIG_CPU_SUBTYPE_SH7780)
2731
#define FRQCR 0xffc80000

arch/sh/include/cpu-sh4/cpu/sh7757.h

+243
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,243 @@
1+
#ifndef __ASM_SH7757_H__
2+
#define __ASM_SH7757_H__
3+
4+
enum {
5+
/* PTA */
6+
GPIO_PTA7, GPIO_PTA6, GPIO_PTA5, GPIO_PTA4,
7+
GPIO_PTA3, GPIO_PTA2, GPIO_PTA1, GPIO_PTA0,
8+
9+
/* PTB */
10+
GPIO_PTB7, GPIO_PTB6, GPIO_PTB5, GPIO_PTB4,
11+
GPIO_PTB3, GPIO_PTB2, GPIO_PTB1, GPIO_PTB0,
12+
13+
/* PTC */
14+
GPIO_PTC7, GPIO_PTC6, GPIO_PTC5, GPIO_PTC4,
15+
GPIO_PTC3, GPIO_PTC2, GPIO_PTC1, GPIO_PTC0,
16+
17+
/* PTD */
18+
GPIO_PTD7, GPIO_PTD6, GPIO_PTD5, GPIO_PTD4,
19+
GPIO_PTD3, GPIO_PTD2, GPIO_PTD1, GPIO_PTD0,
20+
21+
/* PTE */
22+
GPIO_PTE7, GPIO_PTE6, GPIO_PTE5, GPIO_PTE4,
23+
GPIO_PTE3, GPIO_PTE2, GPIO_PTE1, GPIO_PTE0,
24+
25+
/* PTF */
26+
GPIO_PTF7, GPIO_PTF6, GPIO_PTF5, GPIO_PTF4,
27+
GPIO_PTF3, GPIO_PTF2, GPIO_PTF1, GPIO_PTF0,
28+
29+
/* PTG */
30+
GPIO_PTG7, GPIO_PTG6, GPIO_PTG5, GPIO_PTG4,
31+
GPIO_PTG3, GPIO_PTG2, GPIO_PTG1, GPIO_PTG0,
32+
33+
/* PTH */
34+
GPIO_PTH7, GPIO_PTH6, GPIO_PTH5, GPIO_PTH4,
35+
GPIO_PTH3, GPIO_PTH2, GPIO_PTH1, GPIO_PTH0,
36+
37+
/* PTI */
38+
GPIO_PTI7, GPIO_PTI6, GPIO_PTI5, GPIO_PTI4,
39+
GPIO_PTI3, GPIO_PTI2, GPIO_PTI1, GPIO_PTI0,
40+
41+
/* PTJ */
42+
GPIO_PTJ7, GPIO_PTJ6, GPIO_PTJ5, GPIO_PTJ4,
43+
GPIO_PTJ3, GPIO_PTJ2, GPIO_PTJ1, GPIO_PTJ0,
44+
45+
/* PTK */
46+
GPIO_PTK7, GPIO_PTK6, GPIO_PTK5, GPIO_PTK4,
47+
GPIO_PTK3, GPIO_PTK2, GPIO_PTK1, GPIO_PTK0,
48+
49+
/* PTL */
50+
GPIO_PTL7, GPIO_PTL6, GPIO_PTL5, GPIO_PTL4,
51+
GPIO_PTL3, GPIO_PTL2, GPIO_PTL1, GPIO_PTL0,
52+
53+
/* PTM */
54+
GPIO_PTM6, GPIO_PTM5, GPIO_PTM4,
55+
GPIO_PTM3, GPIO_PTM2, GPIO_PTM1, GPIO_PTM0,
56+
57+
/* PTN */
58+
GPIO_PTN7, GPIO_PTN6, GPIO_PTN5, GPIO_PTN4,
59+
GPIO_PTN3, GPIO_PTN2, GPIO_PTN1, GPIO_PTN0,
60+
61+
/* PTO */
62+
GPIO_PTO7, GPIO_PTO6, GPIO_PTO5, GPIO_PTO4,
63+
GPIO_PTO3, GPIO_PTO2, GPIO_PTO1, GPIO_PTO0,
64+
65+
/* PTP */
66+
GPIO_PTP6, GPIO_PTP5, GPIO_PTP4,
67+
GPIO_PTP3, GPIO_PTP2, GPIO_PTP1, GPIO_PTP0,
68+
69+
/* PTQ */
70+
GPIO_PTQ6, GPIO_PTQ5, GPIO_PTQ4,
71+
GPIO_PTQ3, GPIO_PTQ2, GPIO_PTQ1, GPIO_PTQ0,
72+
73+
/* PTR */
74+
GPIO_PTR7, GPIO_PTR6, GPIO_PTR5, GPIO_PTR4,
75+
GPIO_PTR3, GPIO_PTR2, GPIO_PTR1, GPIO_PTR0,
76+
77+
/* PTS */
78+
GPIO_PTS7, GPIO_PTS6, GPIO_PTS5, GPIO_PTS4,
79+
GPIO_PTS3, GPIO_PTS2, GPIO_PTS1, GPIO_PTS0,
80+
81+
/* PTT */
82+
GPIO_PTT5, GPIO_PTT4,
83+
GPIO_PTT3, GPIO_PTT2, GPIO_PTT1, GPIO_PTT0,
84+
85+
/* PTU */
86+
GPIO_PTU7, GPIO_PTU6, GPIO_PTU5, GPIO_PTU4,
87+
GPIO_PTU3, GPIO_PTU2, GPIO_PTU1, GPIO_PTU0,
88+
89+
/* PTV */
90+
GPIO_PTV7, GPIO_PTV6, GPIO_PTV5, GPIO_PTV4,
91+
GPIO_PTV3, GPIO_PTV2, GPIO_PTV1, GPIO_PTV0,
92+
93+
/* PTW */
94+
GPIO_PTW7, GPIO_PTW6, GPIO_PTW5, GPIO_PTW4,
95+
GPIO_PTW3, GPIO_PTW2, GPIO_PTW1, GPIO_PTW0,
96+
97+
/* PTX */
98+
GPIO_PTX7, GPIO_PTX6, GPIO_PTX5, GPIO_PTX4,
99+
GPIO_PTX3, GPIO_PTX2, GPIO_PTX1, GPIO_PTX0,
100+
101+
/* PTY */
102+
GPIO_PTY7, GPIO_PTY6, GPIO_PTY5, GPIO_PTY4,
103+
GPIO_PTY3, GPIO_PTY2, GPIO_PTY1, GPIO_PTY0,
104+
105+
/* PTZ */
106+
GPIO_PTZ7, GPIO_PTZ6, GPIO_PTZ5, GPIO_PTZ4,
107+
GPIO_PTZ3, GPIO_PTZ2, GPIO_PTZ1, GPIO_PTZ0,
108+
109+
110+
/* PTA (mobule: LBSC, CPG, LPC) */
111+
GPIO_FN_BS, GPIO_FN_RDWR, GPIO_FN_WE1, GPIO_FN_RDY,
112+
GPIO_FN_MD10, GPIO_FN_MD9, GPIO_FN_MD8,
113+
GPIO_FN_LGPIO7, GPIO_FN_LGPIO6, GPIO_FN_LGPIO5, GPIO_FN_LGPIO4,
114+
GPIO_FN_LGPIO3, GPIO_FN_LGPIO2, GPIO_FN_LGPIO1, GPIO_FN_LGPIO0,
115+
116+
/* PTB (mobule: LBSC, EtherC, SIM, LPC) */
117+
GPIO_FN_D15, GPIO_FN_D14, GPIO_FN_D13, GPIO_FN_D12,
118+
GPIO_FN_D11, GPIO_FN_D10, GPIO_FN_D9, GPIO_FN_D8,
119+
GPIO_FN_ET0_MDC, GPIO_FN_ET0_MDIO,
120+
GPIO_FN_ET1_MDC, GPIO_FN_ET1_MDIO,
121+
GPIO_FN_SIM_D, GPIO_FN_SIM_CLK, GPIO_FN_SIM_RST,
122+
GPIO_FN_WPSZ1, GPIO_FN_WPSZ0, GPIO_FN_FWID, GPIO_FN_FLSHSZ,
123+
GPIO_FN_LPC_SPIEN, GPIO_FN_BASEL,
124+
125+
/* PTC (mobule: SD) */
126+
GPIO_FN_SD_WP, GPIO_FN_SD_CD, GPIO_FN_SD_CLK, GPIO_FN_SD_CMD,
127+
GPIO_FN_SD_D3, GPIO_FN_SD_D2, GPIO_FN_SD_D1, GPIO_FN_SD_D0,
128+
129+
/* PTD (mobule: INTC, SPI0, LBSC, CPG, ADC) */
130+
GPIO_FN_IRQ7, GPIO_FN_IRQ6, GPIO_FN_IRQ5, GPIO_FN_IRQ4,
131+
GPIO_FN_IRQ3, GPIO_FN_IRQ2, GPIO_FN_IRQ1, GPIO_FN_IRQ0,
132+
GPIO_FN_MD6, GPIO_FN_MD5, GPIO_FN_MD3, GPIO_FN_MD2,
133+
GPIO_FN_MD1, GPIO_FN_MD0, GPIO_FN_ADTRG1, GPIO_FN_ADTRG0,
134+
135+
/* PTE (mobule: EtherC) */
136+
GPIO_FN_ET0_CRS_DV, GPIO_FN_ET0_TXD1,
137+
GPIO_FN_ET0_TXD0, GPIO_FN_ET0_TX_EN,
138+
GPIO_FN_ET0_REF_CLK, GPIO_FN_ET0_RXD1,
139+
GPIO_FN_ET0_RXD0, GPIO_FN_ET0_RX_ER,
140+
141+
/* PTF (mobule: EtherC) */
142+
GPIO_FN_ET1_CRS_DV, GPIO_FN_ET1_TXD1,
143+
GPIO_FN_ET1_TXD0, GPIO_FN_ET1_TX_EN,
144+
GPIO_FN_ET1_REF_CLK, GPIO_FN_ET1_RXD1,
145+
GPIO_FN_ET1_RXD0, GPIO_FN_ET1_RX_ER,
146+
147+
/* PTG (mobule: SYSTEM, PWMX, LPC) */
148+
GPIO_FN_STATUS0, GPIO_FN_STATUS1,
149+
GPIO_FN_PWX0, GPIO_FN_PWX1, GPIO_FN_PWX2, GPIO_FN_PWX3,
150+
GPIO_FN_SERIRQ, GPIO_FN_CLKRUN, GPIO_FN_LPCPD, GPIO_FN_LDRQ,
151+
152+
/* PTH (mobule: TMU, SCIF234, SPI1, SPI0) */
153+
GPIO_FN_TCLK, GPIO_FN_RXD4, GPIO_FN_TXD4,
154+
GPIO_FN_SP1_MOSI, GPIO_FN_SP1_MISO,
155+
GPIO_FN_SP1_SCK, GPIO_FN_SP1_SCK_FB,
156+
GPIO_FN_SP1_SS0, GPIO_FN_SP1_SS1,
157+
GPIO_FN_SP0_SS1,
158+
159+
/* PTI (mobule: INTC) */
160+
GPIO_FN_IRQ15, GPIO_FN_IRQ14, GPIO_FN_IRQ13, GPIO_FN_IRQ12,
161+
GPIO_FN_IRQ11, GPIO_FN_IRQ10, GPIO_FN_IRQ9, GPIO_FN_IRQ8,
162+
163+
/* PTJ (mobule: SCIF234, SERMUX) */
164+
GPIO_FN_RXD3, GPIO_FN_TXD3, GPIO_FN_RXD2, GPIO_FN_TXD2,
165+
GPIO_FN_COM1_TXD, GPIO_FN_COM1_RXD,
166+
GPIO_FN_COM1_RTS, GPIO_FN_COM1_CTS,
167+
168+
/* PTK (mobule: SERMUX) */
169+
GPIO_FN_COM2_TXD, GPIO_FN_COM2_RXD,
170+
GPIO_FN_COM2_RTS, GPIO_FN_COM2_CTS,
171+
GPIO_FN_COM2_DTR, GPIO_FN_COM2_DSR,
172+
GPIO_FN_COM2_DCD, GPIO_FN_COM2_RI,
173+
174+
/* PTL (mobule: SERMUX) */
175+
GPIO_FN_RAC_TXD, GPIO_FN_RAC_RXD,
176+
GPIO_FN_RAC_RTS, GPIO_FN_RAC_CTS,
177+
GPIO_FN_RAC_DTR, GPIO_FN_RAC_DSR,
178+
GPIO_FN_RAC_DCD, GPIO_FN_RAC_RI,
179+
180+
/* PTM (mobule: IIC, LPC) */
181+
GPIO_FN_SDA6, GPIO_FN_SCL6, GPIO_FN_SDA7, GPIO_FN_SCL7,
182+
GPIO_FN_WP, GPIO_FN_FMS0, GPIO_FN_FMS1,
183+
184+
/* PTN (mobule: SCIF234, EVC) */
185+
GPIO_FN_SCK2, GPIO_FN_RTS4, GPIO_FN_RTS3, GPIO_FN_RTS2,
186+
GPIO_FN_CTS4, GPIO_FN_CTS3, GPIO_FN_CTS2,
187+
GPIO_FN_EVENT7, GPIO_FN_EVENT6, GPIO_FN_EVENT5, GPIO_FN_EVENT4,
188+
GPIO_FN_EVENT3, GPIO_FN_EVENT2, GPIO_FN_EVENT1, GPIO_FN_EVENT0,
189+
190+
/* PTO (mobule: SGPIO) */
191+
GPIO_FN_SGPIO0_CLK, GPIO_FN_SGPIO0_LOAD,
192+
GPIO_FN_SGPIO0_DI, GPIO_FN_SGPIO0_DO,
193+
GPIO_FN_SGPIO1_CLK, GPIO_FN_SGPIO1_LOAD,
194+
GPIO_FN_SGPIO1_DI, GPIO_FN_SGPIO1_DO,
195+
196+
/* PTP (mobule: JMC, SCIF234) */
197+
GPIO_FN_JMCTCK, GPIO_FN_JMCTMS, GPIO_FN_JMCTDO, GPIO_FN_JMCTDI,
198+
GPIO_FN_JMCRST, GPIO_FN_SCK4, GPIO_FN_SCK3,
199+
200+
/* PTQ (mobule: LPC) */
201+
GPIO_FN_LAD3, GPIO_FN_LAD2, GPIO_FN_LAD1, GPIO_FN_LAD0,
202+
GPIO_FN_LFRAME, GPIO_FN_LRESET, GPIO_FN_LCLK,
203+
204+
/* PTR (mobule: GRA, IIC) */
205+
GPIO_FN_DDC3, GPIO_FN_DDC2,
206+
GPIO_FN_SDA8, GPIO_FN_SCL8, GPIO_FN_SDA2, GPIO_FN_SCL2,
207+
GPIO_FN_SDA1, GPIO_FN_SCL1, GPIO_FN_SDA0, GPIO_FN_SCL0,
208+
209+
/* PTS (mobule: GRA, IIC) */
210+
GPIO_FN_DDC1, GPIO_FN_DDC0,
211+
GPIO_FN_SDA9, GPIO_FN_SCL9, GPIO_FN_SDA5, GPIO_FN_SCL5,
212+
GPIO_FN_SDA4, GPIO_FN_SCL4, GPIO_FN_SDA3, GPIO_FN_SCL3,
213+
214+
/* PTT (mobule: SYSTEM, PWMX) */
215+
GPIO_FN_AUDSYNC, GPIO_FN_AUDCK,
216+
GPIO_FN_AUDATA3, GPIO_FN_AUDATA2,
217+
GPIO_FN_AUDATA1, GPIO_FN_AUDATA0,
218+
GPIO_FN_PWX7, GPIO_FN_PWX6, GPIO_FN_PWX5, GPIO_FN_PWX4,
219+
220+
/* PTU (mobule: LBSC, DMAC) */
221+
GPIO_FN_CS6, GPIO_FN_CS5, GPIO_FN_CS4, GPIO_FN_CS0,
222+
GPIO_FN_RD, GPIO_FN_WE0, GPIO_FN_A25, GPIO_FN_A24,
223+
GPIO_FN_DREQ0, GPIO_FN_DACK0,
224+
225+
/* PTV (mobule: LBSC, DMAC) */
226+
GPIO_FN_A23, GPIO_FN_A22, GPIO_FN_A21, GPIO_FN_A20,
227+
GPIO_FN_A19, GPIO_FN_A18, GPIO_FN_A17, GPIO_FN_A16,
228+
GPIO_FN_TEND0, GPIO_FN_DREQ1, GPIO_FN_DACK1, GPIO_FN_TEND1,
229+
230+
/* PTW (mobule: LBSC) */
231+
GPIO_FN_A15, GPIO_FN_A14, GPIO_FN_A13, GPIO_FN_A12,
232+
GPIO_FN_A11, GPIO_FN_A10, GPIO_FN_A9, GPIO_FN_A8,
233+
234+
/* PTX (mobule: LBSC) */
235+
GPIO_FN_A7, GPIO_FN_A6, GPIO_FN_A5, GPIO_FN_A4,
236+
GPIO_FN_A3, GPIO_FN_A2, GPIO_FN_A1, GPIO_FN_A0,
237+
238+
/* PTY (mobule: LBSC) */
239+
GPIO_FN_D7, GPIO_FN_D6, GPIO_FN_D5, GPIO_FN_D4,
240+
GPIO_FN_D3, GPIO_FN_D2, GPIO_FN_D1, GPIO_FN_D0,
241+
};
242+
243+
#endif /* __ASM_SH7757_H__ */

arch/sh/kernel/cpu/sh4/probe.c

+9-2
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,15 @@ int __init detect_cpu_and_cache_system(void)
139139
}
140140
break;
141141
case 0x300b:
142-
boot_cpu_data.type = CPU_SH7724;
143-
boot_cpu_data.flags |= CPU_HAS_L2_CACHE;
142+
switch (prr) {
143+
case 0x20:
144+
boot_cpu_data.type = CPU_SH7723;
145+
boot_cpu_data.flags |= CPU_HAS_L2_CACHE;
146+
break;
147+
case 0x50:
148+
boot_cpu_data.type = CPU_SH7757;
149+
break;
150+
}
144151
break;
145152
case 0x4000: /* 1st cut */
146153
case 0x4001: /* 2nd cut */

arch/sh/kernel/cpu/sh4a/Makefile

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#
44

55
# CPU subtype setup
6+
obj-$(CONFIG_CPU_SUBTYPE_SH7757) += setup-sh7757.o
67
obj-$(CONFIG_CPU_SUBTYPE_SH7763) += setup-sh7763.o
78
obj-$(CONFIG_CPU_SUBTYPE_SH7770) += setup-sh7770.o
89
obj-$(CONFIG_CPU_SUBTYPE_SH7780) += setup-sh7780.o
@@ -19,6 +20,7 @@ obj-$(CONFIG_CPU_SUBTYPE_SHX3) += setup-shx3.o
1920
smp-$(CONFIG_CPU_SHX3) := smp-shx3.o
2021

2122
# Primary on-chip clocks (common)
23+
clock-$(CONFIG_CPU_SUBTYPE_SH7757) := clock-sh7757.o
2224
clock-$(CONFIG_CPU_SUBTYPE_SH7763) := clock-sh7763.o
2325
clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o
2426
clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o
@@ -35,6 +37,7 @@ clock-$(CONFIG_CPU_SUBTYPE_SHX3) := clock-shx3.o
3537
pinmux-$(CONFIG_CPU_SUBTYPE_SH7722) := pinmux-sh7722.o
3638
pinmux-$(CONFIG_CPU_SUBTYPE_SH7723) := pinmux-sh7723.o
3739
pinmux-$(CONFIG_CPU_SUBTYPE_SH7724) := pinmux-sh7724.o
40+
pinmux-$(CONFIG_CPU_SUBTYPE_SH7757) := pinmux-sh7757.o
3841
pinmux-$(CONFIG_CPU_SUBTYPE_SH7785) := pinmux-sh7785.o
3942
pinmux-$(CONFIG_CPU_SUBTYPE_SH7786) := pinmux-sh7786.o
4043

0 commit comments

Comments
 (0)