xref: /linux/arch/sh/boards/board-sh7757lcr.c (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
1aaf9128aSKuninori Morimoto // SPDX-License-Identifier: GPL-2.0
236239c67SYoshihiro Shimoda /*
336239c67SYoshihiro Shimoda  * Renesas R0P7757LC0012RL Support.
436239c67SYoshihiro Shimoda  *
536239c67SYoshihiro Shimoda  * Copyright (C) 2009 - 2010  Renesas Solutions Corp.
636239c67SYoshihiro Shimoda  */
736239c67SYoshihiro Shimoda 
836239c67SYoshihiro Shimoda #include <linux/init.h>
936239c67SYoshihiro Shimoda #include <linux/platform_device.h>
1036239c67SYoshihiro Shimoda #include <linux/gpio.h>
1136239c67SYoshihiro Shimoda #include <linux/irq.h>
122db73c9bSGuennadi Liakhovetski #include <linux/regulator/fixed.h>
132db73c9bSGuennadi Liakhovetski #include <linux/regulator/machine.h>
1436239c67SYoshihiro Shimoda #include <linux/spi/spi.h>
1536239c67SYoshihiro Shimoda #include <linux/spi/flash.h>
1636239c67SYoshihiro Shimoda #include <linux/io.h>
1765f63eabSYoshihiro Shimoda #include <linux/mmc/host.h>
1813acb62cSWolfram Sang #include <linux/platform_data/sh_mmcif.h>
19*70b46487SWolfram Sang #include <linux/platform_data/tmio.h>
20389cc10cSNobuhiro Iwamatsu #include <linux/sh_eth.h>
21a7734e51SPaul Mundt #include <linux/sh_intc.h>
227afb4e9aSShimoda, Yoshihiro #include <linux/usb/renesas_usbhs.h>
2336239c67SYoshihiro Shimoda #include <cpu/sh7757.h>
2436239c67SYoshihiro Shimoda #include <asm/heartbeat.h>
2536239c67SYoshihiro Shimoda 
2636239c67SYoshihiro Shimoda static struct resource heartbeat_resource = {
2736239c67SYoshihiro Shimoda 	.start	= 0xffec005c,	/* PUDR */
2836239c67SYoshihiro Shimoda 	.end	= 0xffec005c,
2936239c67SYoshihiro Shimoda 	.flags	= IORESOURCE_MEM | IORESOURCE_MEM_8BIT,
3036239c67SYoshihiro Shimoda };
3136239c67SYoshihiro Shimoda 
3236239c67SYoshihiro Shimoda static unsigned char heartbeat_bit_pos[] = { 0, 1, 2, 3 };
3336239c67SYoshihiro Shimoda 
3436239c67SYoshihiro Shimoda static struct heartbeat_data heartbeat_data = {
3536239c67SYoshihiro Shimoda 	.bit_pos	= heartbeat_bit_pos,
3636239c67SYoshihiro Shimoda 	.nr_bits	= ARRAY_SIZE(heartbeat_bit_pos),
3736239c67SYoshihiro Shimoda 	.flags		= HEARTBEAT_INVERTED,
3836239c67SYoshihiro Shimoda };
3936239c67SYoshihiro Shimoda 
4036239c67SYoshihiro Shimoda static struct platform_device heartbeat_device = {
4136239c67SYoshihiro Shimoda 	.name		= "heartbeat",
4236239c67SYoshihiro Shimoda 	.id		= -1,
4336239c67SYoshihiro Shimoda 	.dev	= {
4436239c67SYoshihiro Shimoda 		.platform_data	= &heartbeat_data,
4536239c67SYoshihiro Shimoda 	},
4636239c67SYoshihiro Shimoda 	.num_resources	= 1,
4736239c67SYoshihiro Shimoda 	.resource	= &heartbeat_resource,
4836239c67SYoshihiro Shimoda };
4936239c67SYoshihiro Shimoda 
5036239c67SYoshihiro Shimoda /* Fast Ethernet */
51984f6cfdSYoshihiro Shimoda #define GBECONT		0xffc10100
52984f6cfdSYoshihiro Shimoda #define GBECONT_RMII1	BIT(17)
53984f6cfdSYoshihiro Shimoda #define GBECONT_RMII0	BIT(16)
sh7757_eth_set_mdio_gate(void * addr)5419d7ca29SYoshihiro Shimoda static void sh7757_eth_set_mdio_gate(void *addr)
55984f6cfdSYoshihiro Shimoda {
5619d7ca29SYoshihiro Shimoda 	if (((unsigned long)addr & 0x00000fff) < 0x0800)
57984f6cfdSYoshihiro Shimoda 		writel(readl(GBECONT) | GBECONT_RMII0, GBECONT);
58984f6cfdSYoshihiro Shimoda 	else
59984f6cfdSYoshihiro Shimoda 		writel(readl(GBECONT) | GBECONT_RMII1, GBECONT);
60984f6cfdSYoshihiro Shimoda }
61984f6cfdSYoshihiro Shimoda 
6236239c67SYoshihiro Shimoda static struct resource sh_eth0_resources[] = {
6336239c67SYoshihiro Shimoda 	{
6436239c67SYoshihiro Shimoda 		.start  = 0xfef00000,
6536239c67SYoshihiro Shimoda 		.end    = 0xfef001ff,
6636239c67SYoshihiro Shimoda 		.flags  = IORESOURCE_MEM,
6736239c67SYoshihiro Shimoda 	}, {
68a7734e51SPaul Mundt 		.start  = evt2irq(0xc80),
69a7734e51SPaul Mundt 		.end    = evt2irq(0xc80),
7036239c67SYoshihiro Shimoda 		.flags  = IORESOURCE_IRQ,
7136239c67SYoshihiro Shimoda 	},
7236239c67SYoshihiro Shimoda };
7336239c67SYoshihiro Shimoda 
7436239c67SYoshihiro Shimoda static struct sh_eth_plat_data sh7757_eth0_pdata = {
7536239c67SYoshihiro Shimoda 	.phy = 1,
76984f6cfdSYoshihiro Shimoda 	.set_mdio_gate = sh7757_eth_set_mdio_gate,
7736239c67SYoshihiro Shimoda };
7836239c67SYoshihiro Shimoda 
7936239c67SYoshihiro Shimoda static struct platform_device sh7757_eth0_device = {
8024549e2aSSergei Shtylyov 	.name		= "sh7757-ether",
8136239c67SYoshihiro Shimoda 	.resource	= sh_eth0_resources,
8236239c67SYoshihiro Shimoda 	.id		= 0,
8336239c67SYoshihiro Shimoda 	.num_resources	= ARRAY_SIZE(sh_eth0_resources),
8436239c67SYoshihiro Shimoda 	.dev		= {
8536239c67SYoshihiro Shimoda 		.platform_data = &sh7757_eth0_pdata,
8636239c67SYoshihiro Shimoda 	},
8736239c67SYoshihiro Shimoda };
8836239c67SYoshihiro Shimoda 
8936239c67SYoshihiro Shimoda static struct resource sh_eth1_resources[] = {
9036239c67SYoshihiro Shimoda 	{
9136239c67SYoshihiro Shimoda 		.start  = 0xfef00800,
9236239c67SYoshihiro Shimoda 		.end    = 0xfef009ff,
9336239c67SYoshihiro Shimoda 		.flags  = IORESOURCE_MEM,
9436239c67SYoshihiro Shimoda 	}, {
95a7734e51SPaul Mundt 		.start  = evt2irq(0xc80),
96a7734e51SPaul Mundt 		.end    = evt2irq(0xc80),
9736239c67SYoshihiro Shimoda 		.flags  = IORESOURCE_IRQ,
9836239c67SYoshihiro Shimoda 	},
9936239c67SYoshihiro Shimoda };
10036239c67SYoshihiro Shimoda 
10136239c67SYoshihiro Shimoda static struct sh_eth_plat_data sh7757_eth1_pdata = {
10236239c67SYoshihiro Shimoda 	.phy = 1,
103984f6cfdSYoshihiro Shimoda 	.set_mdio_gate = sh7757_eth_set_mdio_gate,
10436239c67SYoshihiro Shimoda };
10536239c67SYoshihiro Shimoda 
10636239c67SYoshihiro Shimoda static struct platform_device sh7757_eth1_device = {
10724549e2aSSergei Shtylyov 	.name		= "sh7757-ether",
10836239c67SYoshihiro Shimoda 	.resource	= sh_eth1_resources,
10936239c67SYoshihiro Shimoda 	.id		= 1,
11036239c67SYoshihiro Shimoda 	.num_resources	= ARRAY_SIZE(sh_eth1_resources),
11136239c67SYoshihiro Shimoda 	.dev		= {
11236239c67SYoshihiro Shimoda 		.platform_data = &sh7757_eth1_pdata,
11336239c67SYoshihiro Shimoda 	},
11436239c67SYoshihiro Shimoda };
11536239c67SYoshihiro Shimoda 
sh7757_eth_giga_set_mdio_gate(void * addr)11619d7ca29SYoshihiro Shimoda static void sh7757_eth_giga_set_mdio_gate(void *addr)
117984f6cfdSYoshihiro Shimoda {
11819d7ca29SYoshihiro Shimoda 	if (((unsigned long)addr & 0x00000fff) < 0x0800) {
119984f6cfdSYoshihiro Shimoda 		gpio_set_value(GPIO_PTT4, 1);
120984f6cfdSYoshihiro Shimoda 		writel(readl(GBECONT) & ~GBECONT_RMII0, GBECONT);
121984f6cfdSYoshihiro Shimoda 	} else {
122984f6cfdSYoshihiro Shimoda 		gpio_set_value(GPIO_PTT4, 0);
123984f6cfdSYoshihiro Shimoda 		writel(readl(GBECONT) & ~GBECONT_RMII1, GBECONT);
124984f6cfdSYoshihiro Shimoda 	}
125984f6cfdSYoshihiro Shimoda }
126984f6cfdSYoshihiro Shimoda 
127984f6cfdSYoshihiro Shimoda static struct resource sh_eth_giga0_resources[] = {
128984f6cfdSYoshihiro Shimoda 	{
129984f6cfdSYoshihiro Shimoda 		.start  = 0xfee00000,
130984f6cfdSYoshihiro Shimoda 		.end    = 0xfee007ff,
131984f6cfdSYoshihiro Shimoda 		.flags  = IORESOURCE_MEM,
132984f6cfdSYoshihiro Shimoda 	}, {
133984f6cfdSYoshihiro Shimoda 		/* TSU */
134984f6cfdSYoshihiro Shimoda 		.start  = 0xfee01800,
135984f6cfdSYoshihiro Shimoda 		.end    = 0xfee01fff,
136984f6cfdSYoshihiro Shimoda 		.flags  = IORESOURCE_MEM,
137984f6cfdSYoshihiro Shimoda 	}, {
138a7734e51SPaul Mundt 		.start  = evt2irq(0x2960),
139a7734e51SPaul Mundt 		.end    = evt2irq(0x2960),
140984f6cfdSYoshihiro Shimoda 		.flags  = IORESOURCE_IRQ,
141984f6cfdSYoshihiro Shimoda 	},
142984f6cfdSYoshihiro Shimoda };
143984f6cfdSYoshihiro Shimoda 
144984f6cfdSYoshihiro Shimoda static struct sh_eth_plat_data sh7757_eth_giga0_pdata = {
145984f6cfdSYoshihiro Shimoda 	.phy = 18,
146984f6cfdSYoshihiro Shimoda 	.set_mdio_gate = sh7757_eth_giga_set_mdio_gate,
147984f6cfdSYoshihiro Shimoda 	.phy_interface = PHY_INTERFACE_MODE_RGMII_ID,
148984f6cfdSYoshihiro Shimoda };
149984f6cfdSYoshihiro Shimoda 
150984f6cfdSYoshihiro Shimoda static struct platform_device sh7757_eth_giga0_device = {
15124549e2aSSergei Shtylyov 	.name		= "sh7757-gether",
152984f6cfdSYoshihiro Shimoda 	.resource	= sh_eth_giga0_resources,
153984f6cfdSYoshihiro Shimoda 	.id		= 2,
154984f6cfdSYoshihiro Shimoda 	.num_resources	= ARRAY_SIZE(sh_eth_giga0_resources),
155984f6cfdSYoshihiro Shimoda 	.dev		= {
156984f6cfdSYoshihiro Shimoda 		.platform_data = &sh7757_eth_giga0_pdata,
157984f6cfdSYoshihiro Shimoda 	},
158984f6cfdSYoshihiro Shimoda };
159984f6cfdSYoshihiro Shimoda 
160984f6cfdSYoshihiro Shimoda static struct resource sh_eth_giga1_resources[] = {
161984f6cfdSYoshihiro Shimoda 	{
162984f6cfdSYoshihiro Shimoda 		.start  = 0xfee00800,
163984f6cfdSYoshihiro Shimoda 		.end    = 0xfee00fff,
164984f6cfdSYoshihiro Shimoda 		.flags  = IORESOURCE_MEM,
165984f6cfdSYoshihiro Shimoda 	}, {
166befe0756SShimoda, Yoshihiro 		/* TSU */
167befe0756SShimoda, Yoshihiro 		.start  = 0xfee01800,
168befe0756SShimoda, Yoshihiro 		.end    = 0xfee01fff,
169befe0756SShimoda, Yoshihiro 		.flags  = IORESOURCE_MEM,
170befe0756SShimoda, Yoshihiro 	}, {
171a7734e51SPaul Mundt 		.start  = evt2irq(0x2980),
172a7734e51SPaul Mundt 		.end    = evt2irq(0x2980),
173984f6cfdSYoshihiro Shimoda 		.flags  = IORESOURCE_IRQ,
174984f6cfdSYoshihiro Shimoda 	},
175984f6cfdSYoshihiro Shimoda };
176984f6cfdSYoshihiro Shimoda 
177984f6cfdSYoshihiro Shimoda static struct sh_eth_plat_data sh7757_eth_giga1_pdata = {
178984f6cfdSYoshihiro Shimoda 	.phy = 19,
179984f6cfdSYoshihiro Shimoda 	.set_mdio_gate = sh7757_eth_giga_set_mdio_gate,
180984f6cfdSYoshihiro Shimoda 	.phy_interface = PHY_INTERFACE_MODE_RGMII_ID,
181984f6cfdSYoshihiro Shimoda };
182984f6cfdSYoshihiro Shimoda 
183984f6cfdSYoshihiro Shimoda static struct platform_device sh7757_eth_giga1_device = {
18424549e2aSSergei Shtylyov 	.name		= "sh7757-gether",
185984f6cfdSYoshihiro Shimoda 	.resource	= sh_eth_giga1_resources,
186984f6cfdSYoshihiro Shimoda 	.id		= 3,
187984f6cfdSYoshihiro Shimoda 	.num_resources	= ARRAY_SIZE(sh_eth_giga1_resources),
188984f6cfdSYoshihiro Shimoda 	.dev		= {
189984f6cfdSYoshihiro Shimoda 		.platform_data = &sh7757_eth_giga1_pdata,
190984f6cfdSYoshihiro Shimoda 	},
191984f6cfdSYoshihiro Shimoda };
192984f6cfdSYoshihiro Shimoda 
1932db73c9bSGuennadi Liakhovetski /* Fixed 3.3V regulator to be used by SDHI0, MMCIF */
1942db73c9bSGuennadi Liakhovetski static struct regulator_consumer_supply fixed3v3_power_consumers[] =
1952db73c9bSGuennadi Liakhovetski {
1962db73c9bSGuennadi Liakhovetski 	REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"),
1972db73c9bSGuennadi Liakhovetski 	REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.0"),
1982db73c9bSGuennadi Liakhovetski 	REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"),
1992db73c9bSGuennadi Liakhovetski 	REGULATOR_SUPPLY("vqmmc", "sh_mmcif.0"),
2002db73c9bSGuennadi Liakhovetski };
2012db73c9bSGuennadi Liakhovetski 
20265f63eabSYoshihiro Shimoda /* SH_MMCIF */
20365f63eabSYoshihiro Shimoda static struct resource sh_mmcif_resources[] = {
20465f63eabSYoshihiro Shimoda 	[0] = {
20565f63eabSYoshihiro Shimoda 		.start	= 0xffcb0000,
20665f63eabSYoshihiro Shimoda 		.end	= 0xffcb00ff,
20765f63eabSYoshihiro Shimoda 		.flags	= IORESOURCE_MEM,
20865f63eabSYoshihiro Shimoda 	},
20965f63eabSYoshihiro Shimoda 	[1] = {
210a7734e51SPaul Mundt 		.start	= evt2irq(0x1c60),
21165f63eabSYoshihiro Shimoda 		.flags	= IORESOURCE_IRQ,
21265f63eabSYoshihiro Shimoda 	},
21365f63eabSYoshihiro Shimoda 	[2] = {
214a7734e51SPaul Mundt 		.start	= evt2irq(0x1c80),
21565f63eabSYoshihiro Shimoda 		.flags	= IORESOURCE_IRQ,
21665f63eabSYoshihiro Shimoda 	},
21765f63eabSYoshihiro Shimoda };
21865f63eabSYoshihiro Shimoda 
21965f63eabSYoshihiro Shimoda static struct sh_mmcif_plat_data sh_mmcif_plat = {
22065f63eabSYoshihiro Shimoda 	.sup_pclk	= 0x0f,
22178da107aSShimoda, Yoshihiro 	.caps		= MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA |
22278da107aSShimoda, Yoshihiro 			  MMC_CAP_NONREMOVABLE,
22365f63eabSYoshihiro Shimoda 	.ocr		= MMC_VDD_32_33 | MMC_VDD_33_34,
224482835ceSGuennadi Liakhovetski 	.slave_id_tx	= SHDMA_SLAVE_MMCIF_TX,
225482835ceSGuennadi Liakhovetski 	.slave_id_rx	= SHDMA_SLAVE_MMCIF_RX,
22665f63eabSYoshihiro Shimoda };
22765f63eabSYoshihiro Shimoda 
22865f63eabSYoshihiro Shimoda static struct platform_device sh_mmcif_device = {
22965f63eabSYoshihiro Shimoda 	.name		= "sh_mmcif",
23065f63eabSYoshihiro Shimoda 	.id		= 0,
23165f63eabSYoshihiro Shimoda 	.dev		= {
23265f63eabSYoshihiro Shimoda 		.platform_data		= &sh_mmcif_plat,
23365f63eabSYoshihiro Shimoda 	},
23465f63eabSYoshihiro Shimoda 	.num_resources	= ARRAY_SIZE(sh_mmcif_resources),
23565f63eabSYoshihiro Shimoda 	.resource	= sh_mmcif_resources,
23665f63eabSYoshihiro Shimoda };
23765f63eabSYoshihiro Shimoda 
23865f63eabSYoshihiro Shimoda /* SDHI0 */
23984f11d5bSKuninori Morimoto static struct tmio_mmc_data sdhi_info = {
24084f11d5bSKuninori Morimoto 	.chan_priv_tx	= (void *)SHDMA_SLAVE_SDHI_TX,
24184f11d5bSKuninori Morimoto 	.chan_priv_rx	= (void *)SHDMA_SLAVE_SDHI_RX,
24284f11d5bSKuninori Morimoto 	.capabilities	= MMC_CAP_SD_HIGHSPEED,
24365f63eabSYoshihiro Shimoda };
24465f63eabSYoshihiro Shimoda 
24565f63eabSYoshihiro Shimoda static struct resource sdhi_resources[] = {
24665f63eabSYoshihiro Shimoda 	[0] = {
24765f63eabSYoshihiro Shimoda 		.start  = 0xffe50000,
248f0767e89SKuninori Morimoto 		.end    = 0xffe500ff,
24965f63eabSYoshihiro Shimoda 		.flags  = IORESOURCE_MEM,
25065f63eabSYoshihiro Shimoda 	},
25165f63eabSYoshihiro Shimoda 	[1] = {
252a7734e51SPaul Mundt 		.start  = evt2irq(0x480),
25365f63eabSYoshihiro Shimoda 		.flags  = IORESOURCE_IRQ,
25465f63eabSYoshihiro Shimoda 	},
25565f63eabSYoshihiro Shimoda };
25665f63eabSYoshihiro Shimoda 
25765f63eabSYoshihiro Shimoda static struct platform_device sdhi_device = {
25865f63eabSYoshihiro Shimoda 	.name           = "sh_mobile_sdhi",
25965f63eabSYoshihiro Shimoda 	.num_resources  = ARRAY_SIZE(sdhi_resources),
26065f63eabSYoshihiro Shimoda 	.resource       = sdhi_resources,
26165f63eabSYoshihiro Shimoda 	.id             = 0,
26265f63eabSYoshihiro Shimoda 	.dev	= {
26365f63eabSYoshihiro Shimoda 		.platform_data	= &sdhi_info,
26465f63eabSYoshihiro Shimoda 	},
26565f63eabSYoshihiro Shimoda };
26665f63eabSYoshihiro Shimoda 
usbhs0_get_id(struct platform_device * pdev)2677afb4e9aSShimoda, Yoshihiro static int usbhs0_get_id(struct platform_device *pdev)
2687afb4e9aSShimoda, Yoshihiro {
2697afb4e9aSShimoda, Yoshihiro 	return USBHS_GADGET;
2707afb4e9aSShimoda, Yoshihiro }
2717afb4e9aSShimoda, Yoshihiro 
2727afb4e9aSShimoda, Yoshihiro static struct renesas_usbhs_platform_info usb0_data = {
2737afb4e9aSShimoda, Yoshihiro 	.platform_callback = {
2747afb4e9aSShimoda, Yoshihiro 		.get_id = usbhs0_get_id,
2757afb4e9aSShimoda, Yoshihiro 	},
2767afb4e9aSShimoda, Yoshihiro 	.driver_param = {
2777afb4e9aSShimoda, Yoshihiro 		.buswait_bwait = 5,
2787afb4e9aSShimoda, Yoshihiro 	}
2797afb4e9aSShimoda, Yoshihiro };
2807afb4e9aSShimoda, Yoshihiro 
2817afb4e9aSShimoda, Yoshihiro static struct resource usb0_resources[] = {
2827afb4e9aSShimoda, Yoshihiro 	[0] = {
2837afb4e9aSShimoda, Yoshihiro 		.start	= 0xfe450000,
2847afb4e9aSShimoda, Yoshihiro 		.end	= 0xfe4501ff,
2857afb4e9aSShimoda, Yoshihiro 		.flags	= IORESOURCE_MEM,
2867afb4e9aSShimoda, Yoshihiro 	},
2877afb4e9aSShimoda, Yoshihiro 	[1] = {
288a7734e51SPaul Mundt 		.start	= evt2irq(0x840),
289a7734e51SPaul Mundt 		.end	= evt2irq(0x840),
2907afb4e9aSShimoda, Yoshihiro 		.flags	= IORESOURCE_IRQ,
2917afb4e9aSShimoda, Yoshihiro 	},
2927afb4e9aSShimoda, Yoshihiro };
2937afb4e9aSShimoda, Yoshihiro 
2947afb4e9aSShimoda, Yoshihiro static struct platform_device usb0_device = {
2957afb4e9aSShimoda, Yoshihiro 	.name		= "renesas_usbhs",
2967afb4e9aSShimoda, Yoshihiro 	.id		= 0,
2977afb4e9aSShimoda, Yoshihiro 	.dev = {
2987afb4e9aSShimoda, Yoshihiro 		.platform_data		= &usb0_data,
2997afb4e9aSShimoda, Yoshihiro 	},
3007afb4e9aSShimoda, Yoshihiro 	.num_resources	= ARRAY_SIZE(usb0_resources),
3017afb4e9aSShimoda, Yoshihiro 	.resource	= usb0_resources,
3027afb4e9aSShimoda, Yoshihiro };
3037afb4e9aSShimoda, Yoshihiro 
30436239c67SYoshihiro Shimoda static struct platform_device *sh7757lcr_devices[] __initdata = {
30536239c67SYoshihiro Shimoda 	&heartbeat_device,
30636239c67SYoshihiro Shimoda 	&sh7757_eth0_device,
30736239c67SYoshihiro Shimoda 	&sh7757_eth1_device,
308984f6cfdSYoshihiro Shimoda 	&sh7757_eth_giga0_device,
309984f6cfdSYoshihiro Shimoda 	&sh7757_eth_giga1_device,
31065f63eabSYoshihiro Shimoda 	&sh_mmcif_device,
31165f63eabSYoshihiro Shimoda 	&sdhi_device,
3127afb4e9aSShimoda, Yoshihiro 	&usb0_device,
31336239c67SYoshihiro Shimoda };
31436239c67SYoshihiro Shimoda 
315ceb7afe2SYoshihiro Shimoda static struct flash_platform_data spi_flash_data = {
316ceb7afe2SYoshihiro Shimoda 	.name = "m25p80",
317ceb7afe2SYoshihiro Shimoda 	.type = "m25px64",
318ceb7afe2SYoshihiro Shimoda };
319ceb7afe2SYoshihiro Shimoda 
320ceb7afe2SYoshihiro Shimoda static struct spi_board_info spi_board_info[] = {
321ceb7afe2SYoshihiro Shimoda 	{
322ceb7afe2SYoshihiro Shimoda 		.modalias = "m25p80",
323ceb7afe2SYoshihiro Shimoda 		.max_speed_hz = 25000000,
324ceb7afe2SYoshihiro Shimoda 		.bus_num = 0,
325ceb7afe2SYoshihiro Shimoda 		.chip_select = 1,
326ceb7afe2SYoshihiro Shimoda 		.platform_data = &spi_flash_data,
327ceb7afe2SYoshihiro Shimoda 	},
328ceb7afe2SYoshihiro Shimoda };
329ceb7afe2SYoshihiro Shimoda 
sh7757lcr_devices_setup(void)33036239c67SYoshihiro Shimoda static int __init sh7757lcr_devices_setup(void)
33136239c67SYoshihiro Shimoda {
3322db73c9bSGuennadi Liakhovetski 	regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers,
3332db73c9bSGuennadi Liakhovetski 				     ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
3342db73c9bSGuennadi Liakhovetski 
33536239c67SYoshihiro Shimoda 	/* RGMII (PTA) */
33636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ET0_MDC, NULL);
33736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ET0_MDIO, NULL);
33836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ET1_MDC, NULL);
33936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ET1_MDIO, NULL);
34036239c67SYoshihiro Shimoda 
34136239c67SYoshihiro Shimoda 	/* ONFI (PTB, PTZ) */
34236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_NRE, NULL);
34336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_NWE, NULL);
34436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_NWP, NULL);
34536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_NCE0, NULL);
34636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_R_B0, NULL);
34736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_ALE, NULL);
34836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_CLE, NULL);
34936239c67SYoshihiro Shimoda 
35036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_DQ7, NULL);
35136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_DQ6, NULL);
35236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_DQ5, NULL);
35336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_DQ4, NULL);
35436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_DQ3, NULL);
35536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_DQ2, NULL);
35636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_DQ1, NULL);
35736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_ON_DQ0, NULL);
35836239c67SYoshihiro Shimoda 
35936239c67SYoshihiro Shimoda 	/* IRQ8 to 0 (PTB, PTC) */
36036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_IRQ8, NULL);
36136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_IRQ7, NULL);
36236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_IRQ6, NULL);
36336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_IRQ5, NULL);
36436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_IRQ4, NULL);
36536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_IRQ3, NULL);
36636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_IRQ2, NULL);
36736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_IRQ1, NULL);
36836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_IRQ0, NULL);
36936239c67SYoshihiro Shimoda 
37036239c67SYoshihiro Shimoda 	/* SPI0 (PTD) */
37136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP0_MOSI, NULL);
37236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP0_MISO, NULL);
37336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP0_SCK, NULL);
37436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP0_SCK_FB, NULL);
37536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP0_SS0, NULL);
37636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP0_SS1, NULL);
37736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP0_SS2, NULL);
37836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP0_SS3, NULL);
37936239c67SYoshihiro Shimoda 
38036239c67SYoshihiro Shimoda 	/* RMII 0/1 (PTE, PTF) */
38136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII0_CRS_DV, NULL);
38236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII0_TXD1, NULL);
38336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII0_TXD0, NULL);
38436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII0_TXEN, NULL);
38536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII0_REFCLK, NULL);
38636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII0_RXD1, NULL);
38736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII0_RXD0, NULL);
38836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII0_RX_ER, NULL);
38936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII1_CRS_DV, NULL);
39036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII1_TXD1, NULL);
39136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII1_TXD0, NULL);
39236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII1_TXEN, NULL);
39336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII1_REFCLK, NULL);
39436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII1_RXD1, NULL);
39536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII1_RXD0, NULL);
39636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RMII1_RX_ER, NULL);
39736239c67SYoshihiro Shimoda 
39836239c67SYoshihiro Shimoda 	/* eMMC (PTG) */
39936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_MMCCLK, NULL);
40036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_MMCCMD, NULL);
40136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_MMCDAT7, NULL);
40236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_MMCDAT6, NULL);
40336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_MMCDAT5, NULL);
40436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_MMCDAT4, NULL);
40536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_MMCDAT3, NULL);
40636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_MMCDAT2, NULL);
40736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_MMCDAT1, NULL);
40836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_MMCDAT0, NULL);
40936239c67SYoshihiro Shimoda 
41036239c67SYoshihiro Shimoda 	/* LPC (PTG, PTH, PTQ, PTU) */
41136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SERIRQ, NULL);
41236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LPCPD, NULL);
41336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LDRQ, NULL);
41436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_WP, NULL);
41536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_FMS0, NULL);
41636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LAD3, NULL);
41736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LAD2, NULL);
41836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LAD1, NULL);
41936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LAD0, NULL);
42036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LFRAME, NULL);
42136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LRESET, NULL);
42236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LCLK, NULL);
42336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LGPIO7, NULL);
42436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LGPIO6, NULL);
42536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LGPIO5, NULL);
42636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_LGPIO4, NULL);
42736239c67SYoshihiro Shimoda 
42836239c67SYoshihiro Shimoda 	/* SPI1 (PTH) */
42936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP1_MOSI, NULL);
43036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP1_MISO, NULL);
43136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP1_SCK, NULL);
43236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP1_SCK_FB, NULL);
43336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP1_SS0, NULL);
43436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SP1_SS1, NULL);
43536239c67SYoshihiro Shimoda 
43636239c67SYoshihiro Shimoda 	/* SDHI (PTI) */
43736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SD_WP, NULL);
43836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SD_CD, NULL);
43936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SD_CLK, NULL);
44036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SD_CMD, NULL);
44136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SD_D3, NULL);
44236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SD_D2, NULL);
44336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SD_D1, NULL);
44436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SD_D0, NULL);
44536239c67SYoshihiro Shimoda 
44636239c67SYoshihiro Shimoda 	/* SCIF3/4 (PTJ, PTW) */
44736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RTS3, NULL);
44836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_CTS3, NULL);
44936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_TXD3, NULL);
45036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RXD3, NULL);
45136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RTS4, NULL);
45236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RXD4, NULL);
45336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_TXD4, NULL);
45436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_CTS4, NULL);
45536239c67SYoshihiro Shimoda 
45636239c67SYoshihiro Shimoda 	/* SERMUX (PTK, PTL, PTO, PTV) */
45736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_COM2_TXD, NULL);
45836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_COM2_RXD, NULL);
45936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_COM2_RTS, NULL);
46036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_COM2_CTS, NULL);
46136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_COM2_DTR, NULL);
46236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_COM2_DSR, NULL);
46336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_COM2_DCD, NULL);
46436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_COM2_RI, NULL);
46536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RAC_RXD, NULL);
46636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RAC_RTS, NULL);
46736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RAC_CTS, NULL);
46836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RAC_DTR, NULL);
46936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RAC_DSR, NULL);
47036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RAC_DCD, NULL);
47136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_RAC_TXD, NULL);
47236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_COM1_TXD, NULL);
47336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_COM1_RXD, NULL);
47436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_COM1_RTS, NULL);
47536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_COM1_CTS, NULL);
47636239c67SYoshihiro Shimoda 
47736239c67SYoshihiro Shimoda 	writeb(0x10, 0xfe470000);	/* SMR0: SerMux mode 0 */
47836239c67SYoshihiro Shimoda 
47936239c67SYoshihiro Shimoda 	/* IIC (PTM, PTR, PTS) */
48036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SDA7, NULL);
48136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SCL7, NULL);
48236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SDA6, NULL);
48336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SCL6, NULL);
48436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SDA5, NULL);
48536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SCL5, NULL);
48636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SDA4, NULL);
48736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SCL4, NULL);
48836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SDA3, NULL);
48936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SCL3, NULL);
49036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SDA2, NULL);
49136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SCL2, NULL);
49236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SDA1, NULL);
49336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SCL1, NULL);
49436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SDA0, NULL);
49536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SCL0, NULL);
49636239c67SYoshihiro Shimoda 
49736239c67SYoshihiro Shimoda 	/* USB (PTN) */
49836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_VBUS_EN, NULL);
49936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_VBUS_OC, NULL);
50036239c67SYoshihiro Shimoda 
50136239c67SYoshihiro Shimoda 	/* SGPIO1/0 (PTN, PTO) */
50236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SGPIO1_CLK, NULL);
50336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SGPIO1_LOAD, NULL);
50436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SGPIO1_DI, NULL);
50536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SGPIO1_DO, NULL);
50636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SGPIO0_CLK, NULL);
50736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SGPIO0_LOAD, NULL);
50836239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SGPIO0_DI, NULL);
50936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SGPIO0_DO, NULL);
51036239c67SYoshihiro Shimoda 
51136239c67SYoshihiro Shimoda 	/* WDT (PTN) */
51236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_SUB_CLKIN, NULL);
51336239c67SYoshihiro Shimoda 
51436239c67SYoshihiro Shimoda 	/* System (PTT) */
51536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_STATUS1, NULL);
51636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_STATUS0, NULL);
51736239c67SYoshihiro Shimoda 
51836239c67SYoshihiro Shimoda 	/* PWMX (PTT) */
51936239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_PWMX1, NULL);
52036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_PWMX0, NULL);
52136239c67SYoshihiro Shimoda 
52236239c67SYoshihiro Shimoda 	/* R-SPI (PTV) */
52336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_R_SPI_MOSI, NULL);
52436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_R_SPI_MISO, NULL);
52536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_R_SPI_RSPCK, NULL);
52636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_R_SPI_SSL0, NULL);
52736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_R_SPI_SSL1, NULL);
52836239c67SYoshihiro Shimoda 
52936239c67SYoshihiro Shimoda 	/* EVC (PTV, PTW) */
53036239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_EVENT7, NULL);
53136239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_EVENT6, NULL);
53236239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_EVENT5, NULL);
53336239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_EVENT4, NULL);
53436239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_EVENT3, NULL);
53536239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_EVENT2, NULL);
53636239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_EVENT1, NULL);
53736239c67SYoshihiro Shimoda 	gpio_request(GPIO_FN_EVENT0, NULL);
53836239c67SYoshihiro Shimoda 
53936239c67SYoshihiro Shimoda 	/* LED for heartbeat */
54036239c67SYoshihiro Shimoda 	gpio_request(GPIO_PTU3, NULL);
54136239c67SYoshihiro Shimoda 	gpio_direction_output(GPIO_PTU3, 1);
54236239c67SYoshihiro Shimoda 	gpio_request(GPIO_PTU2, NULL);
54336239c67SYoshihiro Shimoda 	gpio_direction_output(GPIO_PTU2, 1);
54436239c67SYoshihiro Shimoda 	gpio_request(GPIO_PTU1, NULL);
54536239c67SYoshihiro Shimoda 	gpio_direction_output(GPIO_PTU1, 1);
54636239c67SYoshihiro Shimoda 	gpio_request(GPIO_PTU0, NULL);
54736239c67SYoshihiro Shimoda 	gpio_direction_output(GPIO_PTU0, 1);
54836239c67SYoshihiro Shimoda 
54936239c67SYoshihiro Shimoda 	/* control for MDIO of Gigabit Ethernet */
55036239c67SYoshihiro Shimoda 	gpio_request(GPIO_PTT4, NULL);
55136239c67SYoshihiro Shimoda 	gpio_direction_output(GPIO_PTT4, 1);
55236239c67SYoshihiro Shimoda 
55336239c67SYoshihiro Shimoda 	/* control for eMMC */
55436239c67SYoshihiro Shimoda 	gpio_request(GPIO_PTT7, NULL);		/* eMMC_RST# */
55536239c67SYoshihiro Shimoda 	gpio_direction_output(GPIO_PTT7, 0);
55636239c67SYoshihiro Shimoda 	gpio_request(GPIO_PTT6, NULL);		/* eMMC_INDEX# */
55736239c67SYoshihiro Shimoda 	gpio_direction_output(GPIO_PTT6, 0);
55836239c67SYoshihiro Shimoda 	gpio_request(GPIO_PTT5, NULL);		/* eMMC_PRST# */
55936239c67SYoshihiro Shimoda 	gpio_direction_output(GPIO_PTT5, 1);
56036239c67SYoshihiro Shimoda 
561ceb7afe2SYoshihiro Shimoda 	/* register SPI device information */
562ceb7afe2SYoshihiro Shimoda 	spi_register_board_info(spi_board_info,
563ceb7afe2SYoshihiro Shimoda 				ARRAY_SIZE(spi_board_info));
564ceb7afe2SYoshihiro Shimoda 
56536239c67SYoshihiro Shimoda 	/* General platform */
56636239c67SYoshihiro Shimoda 	return platform_add_devices(sh7757lcr_devices,
56736239c67SYoshihiro Shimoda 				    ARRAY_SIZE(sh7757lcr_devices));
56836239c67SYoshihiro Shimoda }
56936239c67SYoshihiro Shimoda arch_initcall(sh7757lcr_devices_setup);
57036239c67SYoshihiro Shimoda 
57136239c67SYoshihiro Shimoda /* Initialize IRQ setting */
init_sh7757lcr_IRQ(void)5723da8ee86SGeert Uytterhoeven static void __init init_sh7757lcr_IRQ(void)
57336239c67SYoshihiro Shimoda {
57436239c67SYoshihiro Shimoda 	plat_irq_setup_pins(IRQ_MODE_IRQ7654);
57536239c67SYoshihiro Shimoda 	plat_irq_setup_pins(IRQ_MODE_IRQ3210);
57636239c67SYoshihiro Shimoda }
57736239c67SYoshihiro Shimoda 
57836239c67SYoshihiro Shimoda /* Initialize the board */
sh7757lcr_setup(char ** cmdline_p)57936239c67SYoshihiro Shimoda static void __init sh7757lcr_setup(char **cmdline_p)
58036239c67SYoshihiro Shimoda {
58136239c67SYoshihiro Shimoda 	printk(KERN_INFO "Renesas R0P7757LC0012RL support.\n");
58236239c67SYoshihiro Shimoda }
58336239c67SYoshihiro Shimoda 
sh7757lcr_mode_pins(void)58436239c67SYoshihiro Shimoda static int sh7757lcr_mode_pins(void)
58536239c67SYoshihiro Shimoda {
58636239c67SYoshihiro Shimoda 	int value = 0;
58736239c67SYoshihiro Shimoda 
58836239c67SYoshihiro Shimoda 	/* These are the factory default settings of S3 (Low active).
58936239c67SYoshihiro Shimoda 	 * If you change these dip switches then you will need to
59036239c67SYoshihiro Shimoda 	 * adjust the values below as well.
59136239c67SYoshihiro Shimoda 	 */
59236239c67SYoshihiro Shimoda 	value |= MODE_PIN0;	/* Clock Mode: 1 */
59336239c67SYoshihiro Shimoda 
59436239c67SYoshihiro Shimoda 	return value;
59536239c67SYoshihiro Shimoda }
59636239c67SYoshihiro Shimoda 
59736239c67SYoshihiro Shimoda /* The Machine Vector */
59836239c67SYoshihiro Shimoda static struct sh_machine_vector mv_sh7757lcr __initmv = {
59936239c67SYoshihiro Shimoda 	.mv_name		= "SH7757LCR",
60036239c67SYoshihiro Shimoda 	.mv_setup		= sh7757lcr_setup,
60136239c67SYoshihiro Shimoda 	.mv_init_irq		= init_sh7757lcr_IRQ,
60236239c67SYoshihiro Shimoda 	.mv_mode_pins		= sh7757lcr_mode_pins,
60336239c67SYoshihiro Shimoda };
60436239c67SYoshihiro Shimoda 
605