setup.c revision efd590d57a5edddabaaf4cfaf532c0f674193b81
102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt/*
202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt * Renesas Technology Europe SDK7786 Support.
302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt *
402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt * Copyright (C) 2010  Matt Fleming
502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt * Copyright (C) 2010  Paul Mundt
602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt *
702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt * This file is subject to the terms and conditions of the GNU General Public
802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt * License.  See the file "COPYING" in the main directory of this archive
902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt * for more details.
1002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt */
1102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt#include <linux/init.h>
1202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt#include <linux/platform_device.h>
1302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt#include <linux/io.h>
1402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt#include <linux/smsc911x.h>
1502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt#include <linux/i2c.h>
1602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt#include <linux/irq.h>
17c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt#include <linux/clk.h>
1802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt#include <asm/machvec.h>
192267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt#include <asm/heartbeat.h>
2002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt#include <asm/sizes.h>
21efd590d57a5edddabaaf4cfaf532c0f674193b81Paul Mundt#include <mach/fpga.h>
2202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
232267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundtstatic struct resource heartbeat_resource = {
242267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt	.start		= 0x07fff8b0,
252267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt	.end		= 0x07fff8b0 + sizeof(u16) - 1,
262267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt	.flags		= IORESOURCE_MEM | IORESOURCE_MEM_16BIT,
272267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt};
282267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt
292267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundtstatic struct platform_device heartbeat_device = {
302267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt	.name		= "heartbeat",
312267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt	.id		= -1,
322267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt	.num_resources	= 1,
332267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt	.resource	= &heartbeat_resource,
342267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt};
352267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt
3602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic struct resource smsc911x_resources[] = {
3702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	[0] = {
3802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt		.name		= "smsc911x-memory",
3902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt		.start		= 0x07ffff00,
4002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt		.end		= 0x07ffff00 + SZ_256 - 1,
4102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt		.flags		= IORESOURCE_MEM,
4202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	},
4302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	[1] = {
4402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt		.name		= "smsc911x-irq",
4502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt		.start		= evt2irq(0x2c0),
4602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt		.end		= evt2irq(0x2c0),
4702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt		.flags		= IORESOURCE_IRQ,
4802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	},
4902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt};
5002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
5102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic struct smsc911x_platform_config smsc911x_config = {
5202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.irq_polarity	= SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
5302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.irq_type	= SMSC911X_IRQ_TYPE_OPEN_DRAIN,
5402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.flags		= SMSC911X_USE_32BIT,
5502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.phy_interface	= PHY_INTERFACE_MODE_MII,
5602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt};
5702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
5802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic struct platform_device smsc911x_device = {
5902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.name		= "smsc911x",
6002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.id		= -1,
6102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.num_resources	= ARRAY_SIZE(smsc911x_resources),
6202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.resource	= smsc911x_resources,
6302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.dev = {
6402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt		.platform_data = &smsc911x_config,
6502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	},
6602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt};
6702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
6802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic struct resource smbus_fpga_resource = {
6902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.start		= 0x07fff9e0,
7002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.end		= 0x07fff9e0 + SZ_32 - 1,
7102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.flags		= IORESOURCE_MEM,
7202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt};
7302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
7402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic struct platform_device smbus_fpga_device = {
7502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.name		= "i2c-sdk7786",
7602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.id		= 0,
7702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.num_resources	= 1,
7802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.resource	= &smbus_fpga_resource,
7902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt};
8002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
8102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic struct resource smbus_pcie_resource = {
8202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.start		= 0x07fffc30,
8302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.end		= 0x07fffc30 + SZ_32 - 1,
8402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.flags		= IORESOURCE_MEM,
8502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt};
8602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
8702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic struct platform_device smbus_pcie_device = {
8802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.name		= "i2c-sdk7786",
8902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.id		= 1,
9002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.num_resources	= 1,
9102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.resource	= &smbus_pcie_resource,
9202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt};
9302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
9402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic struct i2c_board_info __initdata sdk7786_i2c_devices[] = {
9502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	{
9602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt		I2C_BOARD_INFO("max6900", 0x68),
9702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	},
9802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt};
9902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
10002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic struct platform_device *sh7786_devices[] __initdata = {
1012267c7875b3a3a41b7a8cc9659d75ec934c98ffdPaul Mundt	&heartbeat_device,
10202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	&smsc911x_device,
10302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	&smbus_fpga_device,
10402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	&smbus_pcie_device,
10502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt};
10602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
10702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic int sdk7786_i2c_setup(void)
10802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt{
10902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	unsigned int tmp;
11002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
11102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	/*
11202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	 * Hand over I2C control to the FPGA.
11302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	 */
114efd590d57a5edddabaaf4cfaf532c0f674193b81Paul Mundt	tmp = fpga_read_reg(SBCR);
11502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	tmp &= ~SCBR_I2CCEN;
11602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	tmp |= SCBR_I2CMEN;
117efd590d57a5edddabaaf4cfaf532c0f674193b81Paul Mundt	fpga_write_reg(tmp, SBCR);
11802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
11902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	return i2c_register_board_info(0, sdk7786_i2c_devices,
12002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt				       ARRAY_SIZE(sdk7786_i2c_devices));
12102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt}
12202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
12302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic int __init sdk7786_devices_setup(void)
12402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt{
12502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	int ret;
12602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
12702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	ret = platform_add_devices(sh7786_devices, ARRAY_SIZE(sh7786_devices));
12802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	if (unlikely(ret != 0))
12902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt		return ret;
13002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
13102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	return sdk7786_i2c_setup();
13202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt}
13302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt__initcall(sdk7786_devices_setup);
13402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
13502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtenum {
13602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	ATA_IRQ_BIT		= 1,
13702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	SPI_BUSY_BIT		= 2,
13802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	LIRQ5_BIT		= 3,
13902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	LIRQ6_BIT		= 4,
14002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	LIRQ7_BIT		= 5,
14102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	LIRQ8_BIT		= 6,
14202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	KEY_IRQ_BIT		= 7,
14302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	PEN_IRQ_BIT		= 8,
14402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	ETH_IRQ_BIT		= 9,
14502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	RTC_ALARM_BIT		= 10,
14602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	CRYSTAL_FAIL_BIT	= 12,
14702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	ETH_PME_BIT		= 14,
14802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt};
14902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
15002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic void __init init_sdk7786_IRQ(void)
15102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt{
15202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	unsigned int tmp;
15302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
15402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	/* Enable priority encoding for all IRLs */
15502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	fpga_write_reg(fpga_read_reg(INTMSR) | 0x0303, INTMSR);
15602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
15702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	/* Clear FPGA interrupt status registers */
15802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	fpga_write_reg(0x0000, INTASR);
15902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	fpga_write_reg(0x0000, INTBSR);
16002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
16102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	/* Unmask FPGA interrupts */
16202bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	tmp = fpga_read_reg(INTAMR);
16302bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	tmp &= ~(1 << ETH_IRQ_BIT);
16402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	fpga_write_reg(tmp, INTAMR);
16502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
16602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	plat_irq_setup_pins(IRQ_MODE_IRL7654_MASK);
16702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	plat_irq_setup_pins(IRQ_MODE_IRL3210_MASK);
16802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt}
16902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
1706f832e8aab8c4c6d28629e970e4a85e74a8d0be6Paul Mundtstatic int sdk7786_mode_pins(void)
1716f832e8aab8c4c6d28629e970e4a85e74a8d0be6Paul Mundt{
172efd590d57a5edddabaaf4cfaf532c0f674193b81Paul Mundt	return fpga_read_reg(MODSWR);
1736f832e8aab8c4c6d28629e970e4a85e74a8d0be6Paul Mundt}
1746f832e8aab8c4c6d28629e970e4a85e74a8d0be6Paul Mundt
175c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundtstatic int sdk7786_clk_init(void)
176c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt{
177c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	struct clk *clk;
178c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	int ret;
179c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt
180c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	/*
181c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	 * Only handle the EXTAL case, anyone interfacing a crystal
182c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	 * resonator will need to provide their own input clock.
183c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	 */
184c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	if (test_mode_pin(MODE_PIN9))
185c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt		return -EINVAL;
186c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt
187c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	clk = clk_get(NULL, "extal");
188c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	if (!clk || IS_ERR(clk))
189c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt		return PTR_ERR(clk);
190c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	ret = clk_set_rate(clk, 33333333);
191c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	clk_put(clk);
192c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt
193c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	return ret;
194c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt}
195c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt
19602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt/* Initialize the board */
19702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic void __init sdk7786_setup(char **cmdline_p)
19802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt{
199efd590d57a5edddabaaf4cfaf532c0f674193b81Paul Mundt	pr_info("Renesas Technology Europe SDK7786 support:\n");
200efd590d57a5edddabaaf4cfaf532c0f674193b81Paul Mundt
201efd590d57a5edddabaaf4cfaf532c0f674193b81Paul Mundt	sdk7786_fpga_init();
202efd590d57a5edddabaaf4cfaf532c0f674193b81Paul Mundt
203efd590d57a5edddabaaf4cfaf532c0f674193b81Paul Mundt	pr_info("\tPCB revision:\t%d\n", fpga_read_reg(PCBRR) & 0xf);
20402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt}
20502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt
20602bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt/*
20702bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt * The Machine Vector
20802bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt */
20902bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundtstatic struct sh_machine_vector mv_sdk7786 __initmv = {
21002bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.mv_name		= "SDK7786",
21102bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.mv_setup		= sdk7786_setup,
2126f832e8aab8c4c6d28629e970e4a85e74a8d0be6Paul Mundt	.mv_mode_pins		= sdk7786_mode_pins,
213c8098218271d19e7123d8b9137b9a4b87e5ffec0Paul Mundt	.mv_clk_init		= sdk7786_clk_init,
21402bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt	.mv_init_irq		= init_sdk7786_IRQ,
21502bf6cc72cc2a6258411ddf1649f33a65fc9a06ePaul Mundt};
216