2 * Renesas R0P7757LC0012RL Support.
4 * Copyright (C) 2009 - 2010 Renesas Solutions Corp.
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
11 #include <linux/init.h>
12 #include <linux/platform_device.h>
13 #include <linux/gpio.h>
14 #include <linux/irq.h>
15 #include <linux/spi/spi.h>
16 #include <linux/spi/flash.h>
18 #include <cpu/sh7757.h>
19 #include <asm/sh_eth.h>
20 #include <asm/heartbeat.h>
22 static struct resource heartbeat_resource
= {
23 .start
= 0xffec005c, /* PUDR */
25 .flags
= IORESOURCE_MEM
| IORESOURCE_MEM_8BIT
,
28 static unsigned char heartbeat_bit_pos
[] = { 0, 1, 2, 3 };
30 static struct heartbeat_data heartbeat_data
= {
31 .bit_pos
= heartbeat_bit_pos
,
32 .nr_bits
= ARRAY_SIZE(heartbeat_bit_pos
),
33 .flags
= HEARTBEAT_INVERTED
,
36 static struct platform_device heartbeat_device
= {
40 .platform_data
= &heartbeat_data
,
43 .resource
= &heartbeat_resource
,
47 static struct resource sh_eth0_resources
[] = {
51 .flags
= IORESOURCE_MEM
,
55 .flags
= IORESOURCE_IRQ
,
59 static struct sh_eth_plat_data sh7757_eth0_pdata
= {
61 .edmac_endian
= EDMAC_LITTLE_ENDIAN
,
64 static struct platform_device sh7757_eth0_device
= {
66 .resource
= sh_eth0_resources
,
68 .num_resources
= ARRAY_SIZE(sh_eth0_resources
),
70 .platform_data
= &sh7757_eth0_pdata
,
74 static struct resource sh_eth1_resources
[] = {
78 .flags
= IORESOURCE_MEM
,
82 .flags
= IORESOURCE_IRQ
,
86 static struct sh_eth_plat_data sh7757_eth1_pdata
= {
88 .edmac_endian
= EDMAC_LITTLE_ENDIAN
,
91 static struct platform_device sh7757_eth1_device
= {
93 .resource
= sh_eth1_resources
,
95 .num_resources
= ARRAY_SIZE(sh_eth1_resources
),
97 .platform_data
= &sh7757_eth1_pdata
,
101 static struct platform_device
*sh7757lcr_devices
[] __initdata
= {
107 static int __init
sh7757lcr_devices_setup(void)
110 gpio_request(GPIO_FN_ET0_MDC
, NULL
);
111 gpio_request(GPIO_FN_ET0_MDIO
, NULL
);
112 gpio_request(GPIO_FN_ET1_MDC
, NULL
);
113 gpio_request(GPIO_FN_ET1_MDIO
, NULL
);
115 /* ONFI (PTB, PTZ) */
116 gpio_request(GPIO_FN_ON_NRE
, NULL
);
117 gpio_request(GPIO_FN_ON_NWE
, NULL
);
118 gpio_request(GPIO_FN_ON_NWP
, NULL
);
119 gpio_request(GPIO_FN_ON_NCE0
, NULL
);
120 gpio_request(GPIO_FN_ON_R_B0
, NULL
);
121 gpio_request(GPIO_FN_ON_ALE
, NULL
);
122 gpio_request(GPIO_FN_ON_CLE
, NULL
);
124 gpio_request(GPIO_FN_ON_DQ7
, NULL
);
125 gpio_request(GPIO_FN_ON_DQ6
, NULL
);
126 gpio_request(GPIO_FN_ON_DQ5
, NULL
);
127 gpio_request(GPIO_FN_ON_DQ4
, NULL
);
128 gpio_request(GPIO_FN_ON_DQ3
, NULL
);
129 gpio_request(GPIO_FN_ON_DQ2
, NULL
);
130 gpio_request(GPIO_FN_ON_DQ1
, NULL
);
131 gpio_request(GPIO_FN_ON_DQ0
, NULL
);
133 /* IRQ8 to 0 (PTB, PTC) */
134 gpio_request(GPIO_FN_IRQ8
, NULL
);
135 gpio_request(GPIO_FN_IRQ7
, NULL
);
136 gpio_request(GPIO_FN_IRQ6
, NULL
);
137 gpio_request(GPIO_FN_IRQ5
, NULL
);
138 gpio_request(GPIO_FN_IRQ4
, NULL
);
139 gpio_request(GPIO_FN_IRQ3
, NULL
);
140 gpio_request(GPIO_FN_IRQ2
, NULL
);
141 gpio_request(GPIO_FN_IRQ1
, NULL
);
142 gpio_request(GPIO_FN_IRQ0
, NULL
);
145 gpio_request(GPIO_FN_SP0_MOSI
, NULL
);
146 gpio_request(GPIO_FN_SP0_MISO
, NULL
);
147 gpio_request(GPIO_FN_SP0_SCK
, NULL
);
148 gpio_request(GPIO_FN_SP0_SCK_FB
, NULL
);
149 gpio_request(GPIO_FN_SP0_SS0
, NULL
);
150 gpio_request(GPIO_FN_SP0_SS1
, NULL
);
151 gpio_request(GPIO_FN_SP0_SS2
, NULL
);
152 gpio_request(GPIO_FN_SP0_SS3
, NULL
);
154 /* RMII 0/1 (PTE, PTF) */
155 gpio_request(GPIO_FN_RMII0_CRS_DV
, NULL
);
156 gpio_request(GPIO_FN_RMII0_TXD1
, NULL
);
157 gpio_request(GPIO_FN_RMII0_TXD0
, NULL
);
158 gpio_request(GPIO_FN_RMII0_TXEN
, NULL
);
159 gpio_request(GPIO_FN_RMII0_REFCLK
, NULL
);
160 gpio_request(GPIO_FN_RMII0_RXD1
, NULL
);
161 gpio_request(GPIO_FN_RMII0_RXD0
, NULL
);
162 gpio_request(GPIO_FN_RMII0_RX_ER
, NULL
);
163 gpio_request(GPIO_FN_RMII1_CRS_DV
, NULL
);
164 gpio_request(GPIO_FN_RMII1_TXD1
, NULL
);
165 gpio_request(GPIO_FN_RMII1_TXD0
, NULL
);
166 gpio_request(GPIO_FN_RMII1_TXEN
, NULL
);
167 gpio_request(GPIO_FN_RMII1_REFCLK
, NULL
);
168 gpio_request(GPIO_FN_RMII1_RXD1
, NULL
);
169 gpio_request(GPIO_FN_RMII1_RXD0
, NULL
);
170 gpio_request(GPIO_FN_RMII1_RX_ER
, NULL
);
173 gpio_request(GPIO_FN_MMCCLK
, NULL
);
174 gpio_request(GPIO_FN_MMCCMD
, NULL
);
175 gpio_request(GPIO_FN_MMCDAT7
, NULL
);
176 gpio_request(GPIO_FN_MMCDAT6
, NULL
);
177 gpio_request(GPIO_FN_MMCDAT5
, NULL
);
178 gpio_request(GPIO_FN_MMCDAT4
, NULL
);
179 gpio_request(GPIO_FN_MMCDAT3
, NULL
);
180 gpio_request(GPIO_FN_MMCDAT2
, NULL
);
181 gpio_request(GPIO_FN_MMCDAT1
, NULL
);
182 gpio_request(GPIO_FN_MMCDAT0
, NULL
);
184 /* LPC (PTG, PTH, PTQ, PTU) */
185 gpio_request(GPIO_FN_SERIRQ
, NULL
);
186 gpio_request(GPIO_FN_LPCPD
, NULL
);
187 gpio_request(GPIO_FN_LDRQ
, NULL
);
188 gpio_request(GPIO_FN_WP
, NULL
);
189 gpio_request(GPIO_FN_FMS0
, NULL
);
190 gpio_request(GPIO_FN_LAD3
, NULL
);
191 gpio_request(GPIO_FN_LAD2
, NULL
);
192 gpio_request(GPIO_FN_LAD1
, NULL
);
193 gpio_request(GPIO_FN_LAD0
, NULL
);
194 gpio_request(GPIO_FN_LFRAME
, NULL
);
195 gpio_request(GPIO_FN_LRESET
, NULL
);
196 gpio_request(GPIO_FN_LCLK
, NULL
);
197 gpio_request(GPIO_FN_LGPIO7
, NULL
);
198 gpio_request(GPIO_FN_LGPIO6
, NULL
);
199 gpio_request(GPIO_FN_LGPIO5
, NULL
);
200 gpio_request(GPIO_FN_LGPIO4
, NULL
);
203 gpio_request(GPIO_FN_SP1_MOSI
, NULL
);
204 gpio_request(GPIO_FN_SP1_MISO
, NULL
);
205 gpio_request(GPIO_FN_SP1_SCK
, NULL
);
206 gpio_request(GPIO_FN_SP1_SCK_FB
, NULL
);
207 gpio_request(GPIO_FN_SP1_SS0
, NULL
);
208 gpio_request(GPIO_FN_SP1_SS1
, NULL
);
211 gpio_request(GPIO_FN_SD_WP
, NULL
);
212 gpio_request(GPIO_FN_SD_CD
, NULL
);
213 gpio_request(GPIO_FN_SD_CLK
, NULL
);
214 gpio_request(GPIO_FN_SD_CMD
, NULL
);
215 gpio_request(GPIO_FN_SD_D3
, NULL
);
216 gpio_request(GPIO_FN_SD_D2
, NULL
);
217 gpio_request(GPIO_FN_SD_D1
, NULL
);
218 gpio_request(GPIO_FN_SD_D0
, NULL
);
220 /* SCIF3/4 (PTJ, PTW) */
221 gpio_request(GPIO_FN_RTS3
, NULL
);
222 gpio_request(GPIO_FN_CTS3
, NULL
);
223 gpio_request(GPIO_FN_TXD3
, NULL
);
224 gpio_request(GPIO_FN_RXD3
, NULL
);
225 gpio_request(GPIO_FN_RTS4
, NULL
);
226 gpio_request(GPIO_FN_RXD4
, NULL
);
227 gpio_request(GPIO_FN_TXD4
, NULL
);
228 gpio_request(GPIO_FN_CTS4
, NULL
);
230 /* SERMUX (PTK, PTL, PTO, PTV) */
231 gpio_request(GPIO_FN_COM2_TXD
, NULL
);
232 gpio_request(GPIO_FN_COM2_RXD
, NULL
);
233 gpio_request(GPIO_FN_COM2_RTS
, NULL
);
234 gpio_request(GPIO_FN_COM2_CTS
, NULL
);
235 gpio_request(GPIO_FN_COM2_DTR
, NULL
);
236 gpio_request(GPIO_FN_COM2_DSR
, NULL
);
237 gpio_request(GPIO_FN_COM2_DCD
, NULL
);
238 gpio_request(GPIO_FN_COM2_RI
, NULL
);
239 gpio_request(GPIO_FN_RAC_RXD
, NULL
);
240 gpio_request(GPIO_FN_RAC_RTS
, NULL
);
241 gpio_request(GPIO_FN_RAC_CTS
, NULL
);
242 gpio_request(GPIO_FN_RAC_DTR
, NULL
);
243 gpio_request(GPIO_FN_RAC_DSR
, NULL
);
244 gpio_request(GPIO_FN_RAC_DCD
, NULL
);
245 gpio_request(GPIO_FN_RAC_TXD
, NULL
);
246 gpio_request(GPIO_FN_COM1_TXD
, NULL
);
247 gpio_request(GPIO_FN_COM1_RXD
, NULL
);
248 gpio_request(GPIO_FN_COM1_RTS
, NULL
);
249 gpio_request(GPIO_FN_COM1_CTS
, NULL
);
251 writeb(0x10, 0xfe470000); /* SMR0: SerMux mode 0 */
253 /* IIC (PTM, PTR, PTS) */
254 gpio_request(GPIO_FN_SDA7
, NULL
);
255 gpio_request(GPIO_FN_SCL7
, NULL
);
256 gpio_request(GPIO_FN_SDA6
, NULL
);
257 gpio_request(GPIO_FN_SCL6
, NULL
);
258 gpio_request(GPIO_FN_SDA5
, NULL
);
259 gpio_request(GPIO_FN_SCL5
, NULL
);
260 gpio_request(GPIO_FN_SDA4
, NULL
);
261 gpio_request(GPIO_FN_SCL4
, NULL
);
262 gpio_request(GPIO_FN_SDA3
, NULL
);
263 gpio_request(GPIO_FN_SCL3
, NULL
);
264 gpio_request(GPIO_FN_SDA2
, NULL
);
265 gpio_request(GPIO_FN_SCL2
, NULL
);
266 gpio_request(GPIO_FN_SDA1
, NULL
);
267 gpio_request(GPIO_FN_SCL1
, NULL
);
268 gpio_request(GPIO_FN_SDA0
, NULL
);
269 gpio_request(GPIO_FN_SCL0
, NULL
);
272 gpio_request(GPIO_FN_VBUS_EN
, NULL
);
273 gpio_request(GPIO_FN_VBUS_OC
, NULL
);
275 /* SGPIO1/0 (PTN, PTO) */
276 gpio_request(GPIO_FN_SGPIO1_CLK
, NULL
);
277 gpio_request(GPIO_FN_SGPIO1_LOAD
, NULL
);
278 gpio_request(GPIO_FN_SGPIO1_DI
, NULL
);
279 gpio_request(GPIO_FN_SGPIO1_DO
, NULL
);
280 gpio_request(GPIO_FN_SGPIO0_CLK
, NULL
);
281 gpio_request(GPIO_FN_SGPIO0_LOAD
, NULL
);
282 gpio_request(GPIO_FN_SGPIO0_DI
, NULL
);
283 gpio_request(GPIO_FN_SGPIO0_DO
, NULL
);
286 gpio_request(GPIO_FN_SUB_CLKIN
, NULL
);
289 gpio_request(GPIO_FN_STATUS1
, NULL
);
290 gpio_request(GPIO_FN_STATUS0
, NULL
);
293 gpio_request(GPIO_FN_PWMX1
, NULL
);
294 gpio_request(GPIO_FN_PWMX0
, NULL
);
297 gpio_request(GPIO_FN_R_SPI_MOSI
, NULL
);
298 gpio_request(GPIO_FN_R_SPI_MISO
, NULL
);
299 gpio_request(GPIO_FN_R_SPI_RSPCK
, NULL
);
300 gpio_request(GPIO_FN_R_SPI_SSL0
, NULL
);
301 gpio_request(GPIO_FN_R_SPI_SSL1
, NULL
);
304 gpio_request(GPIO_FN_EVENT7
, NULL
);
305 gpio_request(GPIO_FN_EVENT6
, NULL
);
306 gpio_request(GPIO_FN_EVENT5
, NULL
);
307 gpio_request(GPIO_FN_EVENT4
, NULL
);
308 gpio_request(GPIO_FN_EVENT3
, NULL
);
309 gpio_request(GPIO_FN_EVENT2
, NULL
);
310 gpio_request(GPIO_FN_EVENT1
, NULL
);
311 gpio_request(GPIO_FN_EVENT0
, NULL
);
313 /* LED for heartbeat */
314 gpio_request(GPIO_PTU3
, NULL
);
315 gpio_direction_output(GPIO_PTU3
, 1);
316 gpio_request(GPIO_PTU2
, NULL
);
317 gpio_direction_output(GPIO_PTU2
, 1);
318 gpio_request(GPIO_PTU1
, NULL
);
319 gpio_direction_output(GPIO_PTU1
, 1);
320 gpio_request(GPIO_PTU0
, NULL
);
321 gpio_direction_output(GPIO_PTU0
, 1);
323 /* control for MDIO of Gigabit Ethernet */
324 gpio_request(GPIO_PTT4
, NULL
);
325 gpio_direction_output(GPIO_PTT4
, 1);
327 /* control for eMMC */
328 gpio_request(GPIO_PTT7
, NULL
); /* eMMC_RST# */
329 gpio_direction_output(GPIO_PTT7
, 0);
330 gpio_request(GPIO_PTT6
, NULL
); /* eMMC_INDEX# */
331 gpio_direction_output(GPIO_PTT6
, 0);
332 gpio_request(GPIO_PTT5
, NULL
); /* eMMC_PRST# */
333 gpio_direction_output(GPIO_PTT5
, 1);
335 /* General platform */
336 return platform_add_devices(sh7757lcr_devices
,
337 ARRAY_SIZE(sh7757lcr_devices
));
339 arch_initcall(sh7757lcr_devices_setup
);
341 /* Initialize IRQ setting */
342 void __init
init_sh7757lcr_IRQ(void)
344 plat_irq_setup_pins(IRQ_MODE_IRQ7654
);
345 plat_irq_setup_pins(IRQ_MODE_IRQ3210
);
348 /* Initialize the board */
349 static void __init
sh7757lcr_setup(char **cmdline_p
)
351 printk(KERN_INFO
"Renesas R0P7757LC0012RL support.\n");
354 static int sh7757lcr_mode_pins(void)
358 /* These are the factory default settings of S3 (Low active).
359 * If you change these dip switches then you will need to
360 * adjust the values below as well.
362 value
|= MODE_PIN0
; /* Clock Mode: 1 */
367 /* The Machine Vector */
368 static struct sh_machine_vector mv_sh7757lcr __initmv
= {
369 .mv_name
= "SH7757LCR",
370 .mv_setup
= sh7757lcr_setup
,
371 .mv_init_irq
= init_sh7757lcr_IRQ
,
372 .mv_mode_pins
= sh7757lcr_mode_pins
,