1 /*
2  * Data Technology Inc. ESPT-GIGA board support
3  *
4  * Copyright (C) 2008, 2009 Renesas Solutions Corp.
5  * Copyright (C) 2008, 2009 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
6  *
7  * This file is subject to the terms and conditions of the GNU General Public
8  * License.  See the file "COPYING" in the main directory of this archive
9  * for more details.
10  */
11 #include <linux/init.h>
12 #include <linux/platform_device.h>
13 #include <linux/interrupt.h>
14 #include <linux/mtd/physmap.h>
15 #include <linux/io.h>
16 #include <linux/sh_eth.h>
17 #include <linux/sh_intc.h>
18 #include <asm/machvec.h>
19 #include <asm/sizes.h>
20 
21 /* NOR Flash */
22 static struct mtd_partition espt_nor_flash_partitions[] = {
23 	{
24 		.name = "U-Boot",
25 		.offset = 0,
26 		.size = (2 * SZ_128K),
27 		.mask_flags = MTD_WRITEABLE,	/* Read-only */
28 	}, {
29 		.name = "Linux-Kernel",
30 		.offset = MTDPART_OFS_APPEND,
31 		.size = (20 * SZ_128K),
32 	}, {
33 		.name = "Root Filesystem",
34 		.offset = MTDPART_OFS_APPEND,
35 		.size = MTDPART_SIZ_FULL,
36 	},
37 };
38 
39 static struct physmap_flash_data espt_nor_flash_data = {
40 	.width = 2,
41 	.parts = espt_nor_flash_partitions,
42 	.nr_parts = ARRAY_SIZE(espt_nor_flash_partitions),
43 };
44 
45 static struct resource espt_nor_flash_resources[] = {
46 	[0] = {
47 		.name = "NOR Flash",
48 		.start = 0,
49 		.end = SZ_8M - 1,
50 		.flags = IORESOURCE_MEM,
51 	},
52 };
53 
54 static struct platform_device espt_nor_flash_device = {
55 	.name = "physmap-flash",
56 	.resource = espt_nor_flash_resources,
57 	.num_resources = ARRAY_SIZE(espt_nor_flash_resources),
58 	.dev = {
59 		.platform_data = &espt_nor_flash_data,
60 	},
61 };
62 
63 /* SH-Ether */
64 static struct resource sh_eth_resources[] = {
65 	{
66 		.start  = 0xFEE00800,   /* use eth1 */
67 		.end    = 0xFEE00F7C - 1,
68 		.flags  = IORESOURCE_MEM,
69 	}, {
70 		.start  = 0xFEE01800,   /* TSU */
71 		.end    = 0xFEE01FFF,
72 		.flags  = IORESOURCE_MEM,
73 	}, {
74 
75 		.start  = evt2irq(0x920),   /* irq number */
76 		.flags  = IORESOURCE_IRQ,
77 	},
78 };
79 
80 static struct sh_eth_plat_data sh7763_eth_pdata = {
81 	.phy = 0,
82 	.phy_interface = PHY_INTERFACE_MODE_MII,
83 };
84 
85 static struct platform_device espt_eth_device = {
86 	.name       = "sh7763-gether",
87 	.resource   = sh_eth_resources,
88 	.num_resources  = ARRAY_SIZE(sh_eth_resources),
89 	.dev        = {
90 		.platform_data = &sh7763_eth_pdata,
91 	},
92 };
93 
94 static struct platform_device *espt_devices[] __initdata = {
95 	&espt_nor_flash_device,
96 	&espt_eth_device,
97 };
98 
espt_devices_setup(void)99 static int __init espt_devices_setup(void)
100 {
101 	return platform_add_devices(espt_devices,
102 				    ARRAY_SIZE(espt_devices));
103 }
104 device_initcall(espt_devices_setup);
105 
106 static struct sh_machine_vector mv_espt __initmv = {
107 	.mv_name = "ESPT-GIGA",
108 };
109