• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/arch/arm/mach-mmp/
1/*
2 *  linux/arch/arm/mach-mmp/aspenite.c
3 *
4 *  Support for the Marvell PXA168-based Aspenite and Zylonite2
5 *  Development Platform.
6 *
7 *  This program is free software; you can redistribute it and/or modify
8 *  it under the terms of the GNU General Public License version 2 as
9 *  publishhed by the Free Software Foundation.
10 */
11
12#include <linux/init.h>
13#include <linux/kernel.h>
14#include <linux/platform_device.h>
15#include <linux/smc91x.h>
16#include <linux/mtd/mtd.h>
17#include <linux/mtd/partitions.h>
18#include <linux/mtd/nand.h>
19
20#include <asm/mach-types.h>
21#include <asm/mach/arch.h>
22#include <mach/addr-map.h>
23#include <mach/mfp-pxa168.h>
24#include <mach/pxa168.h>
25#include <mach/gpio.h>
26
27#include "common.h"
28
29static unsigned long common_pin_config[] __initdata = {
30	/* Data Flash Interface */
31	GPIO0_DFI_D15,
32	GPIO1_DFI_D14,
33	GPIO2_DFI_D13,
34	GPIO3_DFI_D12,
35	GPIO4_DFI_D11,
36	GPIO5_DFI_D10,
37	GPIO6_DFI_D9,
38	GPIO7_DFI_D8,
39	GPIO8_DFI_D7,
40	GPIO9_DFI_D6,
41	GPIO10_DFI_D5,
42	GPIO11_DFI_D4,
43	GPIO12_DFI_D3,
44	GPIO13_DFI_D2,
45	GPIO14_DFI_D1,
46	GPIO15_DFI_D0,
47
48	/* Static Memory Controller */
49	GPIO18_SMC_nCS0,
50	GPIO34_SMC_nCS1,
51	GPIO23_SMC_nLUA,
52	GPIO25_SMC_nLLA,
53	GPIO28_SMC_RDY,
54	GPIO29_SMC_SCLK,
55	GPIO35_SMC_BE1,
56	GPIO36_SMC_BE2,
57	GPIO27_GPIO,	/* Ethernet IRQ */
58
59	/* UART1 */
60	GPIO107_UART1_RXD,
61	GPIO108_UART1_TXD,
62
63	/* SSP1 */
64	GPIO113_I2S_MCLK,
65	GPIO114_I2S_FRM,
66	GPIO115_I2S_BCLK,
67	GPIO116_I2S_RXD,
68	GPIO117_I2S_TXD,
69};
70
71static struct smc91x_platdata smc91x_info = {
72	.flags	= SMC91X_USE_16BIT | SMC91X_NOWAIT,
73};
74
75static struct resource smc91x_resources[] = {
76	[0] = {
77		.start	= SMC_CS1_PHYS_BASE + 0x300,
78		.end	= SMC_CS1_PHYS_BASE + 0xfffff,
79		.flags	= IORESOURCE_MEM,
80	},
81	[1] = {
82		.start	= gpio_to_irq(27),
83		.end	= gpio_to_irq(27),
84		.flags	= IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
85	}
86};
87
88static struct platform_device smc91x_device = {
89	.name		= "smc91x",
90	.id		= 0,
91	.dev		= {
92		.platform_data = &smc91x_info,
93	},
94	.num_resources	= ARRAY_SIZE(smc91x_resources),
95	.resource	= smc91x_resources,
96};
97
98static struct mtd_partition aspenite_nand_partitions[] = {
99	{
100		.name		= "bootloader",
101		.offset		= 0,
102		.size		= SZ_1M,
103		.mask_flags	= MTD_WRITEABLE,
104	}, {
105		.name		= "reserved",
106		.offset		= MTDPART_OFS_APPEND,
107		.size		= SZ_128K,
108		.mask_flags	= MTD_WRITEABLE,
109	}, {
110		.name		= "reserved",
111		.offset		= MTDPART_OFS_APPEND,
112		.size		= SZ_8M,
113		.mask_flags	= MTD_WRITEABLE,
114	}, {
115		.name		= "kernel",
116		.offset		= MTDPART_OFS_APPEND,
117		.size		= (SZ_2M + SZ_1M),
118		.mask_flags	= 0,
119	}, {
120		.name		= "filesystem",
121		.offset		= MTDPART_OFS_APPEND,
122		.size		= SZ_48M,
123		.mask_flags	= 0,
124	}
125};
126
127static struct pxa3xx_nand_platform_data aspenite_nand_info = {
128	.enable_arbiter	= 1,
129	.parts		= aspenite_nand_partitions,
130	.nr_parts	= ARRAY_SIZE(aspenite_nand_partitions),
131};
132
133static struct i2c_board_info aspenite_i2c_info[] __initdata = {
134	{ I2C_BOARD_INFO("wm8753", 0x1b), },
135};
136
137static void __init common_init(void)
138{
139	mfp_config(ARRAY_AND_SIZE(common_pin_config));
140
141	/* on-chip devices */
142	pxa168_add_uart(1);
143	pxa168_add_twsi(1, NULL, ARRAY_AND_SIZE(aspenite_i2c_info));
144	pxa168_add_ssp(1);
145	pxa168_add_nand(&aspenite_nand_info);
146
147	/* off-chip devices */
148	platform_device_register(&smc91x_device);
149}
150
151MACHINE_START(ASPENITE, "PXA168-based Aspenite Development Platform")
152	.phys_io        = APB_PHYS_BASE,
153	.io_pg_offst    = (APB_VIRT_BASE >> 18) & 0xfffc,
154	.map_io		= mmp_map_io,
155	.init_irq       = pxa168_init_irq,
156	.timer          = &pxa168_timer,
157	.init_machine   = common_init,
158MACHINE_END
159
160MACHINE_START(ZYLONITE2, "PXA168-based Zylonite2 Development Platform")
161	.phys_io        = APB_PHYS_BASE,
162	.io_pg_offst    = (APB_VIRT_BASE >> 18) & 0xfffc,
163	.map_io		= mmp_map_io,
164	.init_irq       = pxa168_init_irq,
165	.timer          = &pxa168_timer,
166	.init_machine   = common_init,
167MACHINE_END
168