Blame view

arch/arm/mach-ixp4xx/avila-setup.c 4.48 KB
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  /*
   * arch/arm/mach-ixp4xx/avila-setup.c
   *
   * Gateworks Avila board-setup
   *
   * Author: Michael-Luke Jones <mlj28@cam.ac.uk>
   *
   * Based on ixdp-setup.c
   * Copyright (C) 2003-2005 MontaVista Software, Inc.
   *
   * Author: Deepak Saxena <dsaxena@plexity.net>
   */
  
  #include <linux/kernel.h>
  #include <linux/init.h>
  #include <linux/device.h>
  #include <linux/serial.h>
  #include <linux/tty.h>
  #include <linux/serial_8250.h>
5a4a23877   Michael-Luke Jones   ixp4xx-i2c-gpio
20
  #include <linux/i2c-gpio.h>
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
21
22
23
  #include <asm/types.h>
  #include <asm/setup.h>
  #include <asm/memory.h>
a09e64fbc   Russell King   [ARM] Move includ...
24
  #include <mach/hardware.h>
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
25
26
27
28
  #include <asm/mach-types.h>
  #include <asm/irq.h>
  #include <asm/mach/arch.h>
  #include <asm/mach/flash.h>
ec6696968   Krzysztof HaƂasa   IXP4xx: move AVIL...
29
30
  #define AVILA_SDA_PIN	7
  #define AVILA_SCL_PIN	6
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  static struct flash_platform_data avila_flash_data = {
  	.map_name	= "cfi_probe",
  	.width		= 2,
  };
  
  static struct resource avila_flash_resource = {
  	.flags		= IORESOURCE_MEM,
  };
  
  static struct platform_device avila_flash = {
  	.name		= "IXP4XX-Flash",
  	.id		= 0,
  	.dev		= {
  		.platform_data = &avila_flash_data,
  	},
  	.num_resources	= 1,
  	.resource	= &avila_flash_resource,
  };
5a4a23877   Michael-Luke Jones   ixp4xx-i2c-gpio
49
  static struct i2c_gpio_platform_data avila_i2c_gpio_data = {
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
50
51
52
  	.sda_pin	= AVILA_SDA_PIN,
  	.scl_pin	= AVILA_SCL_PIN,
  };
5a4a23877   Michael-Luke Jones   ixp4xx-i2c-gpio
53
54
  static struct platform_device avila_i2c_gpio = {
  	.name		= "i2c-gpio",
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
55
  	.id		= 0,
5a4a23877   Michael-Luke Jones   ixp4xx-i2c-gpio
56
57
  	.dev	 = {
  		.platform_data	= &avila_i2c_gpio_data,
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
58
  	},
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
  };
  
  static struct resource avila_uart_resources[] = {
  	{
  		.start		= IXP4XX_UART1_BASE_PHYS,
  		.end		= IXP4XX_UART1_BASE_PHYS + 0x0fff,
  		.flags		= IORESOURCE_MEM
  	},
  	{
  		.start		= IXP4XX_UART2_BASE_PHYS,
  		.end		= IXP4XX_UART2_BASE_PHYS + 0x0fff,
  		.flags		= IORESOURCE_MEM
  	}
  };
  
  static struct plat_serial8250_port avila_uart_data[] = {
  	{
  		.mapbase	= IXP4XX_UART1_BASE_PHYS,
  		.membase	= (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET,
  		.irq		= IRQ_IXP4XX_UART1,
  		.flags		= UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
  		.iotype		= UPIO_MEM,
  		.regshift	= 2,
  		.uartclk	= IXP4XX_UART_XTAL,
  	},
  	{
  		.mapbase	= IXP4XX_UART2_BASE_PHYS,
  		.membase	= (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET,
  		.irq		= IRQ_IXP4XX_UART2,
  		.flags		= UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
  		.iotype		= UPIO_MEM,
  		.regshift	= 2,
  		.uartclk	= IXP4XX_UART_XTAL,
  	},
  	{ },
  };
  
  static struct platform_device avila_uart = {
  	.name			= "serial8250",
  	.id			= PLAT8250_DEV_PLATFORM,
  	.dev.platform_data	= avila_uart_data,
  	.num_resources		= 2,
  	.resource		= avila_uart_resources
  };
946acb1c7   Michael-Luke Jones   [ARM] 4032/1: Add...
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
  static struct resource avila_pata_resources[] = {
  	{
  		.flags	= IORESOURCE_MEM
  	},
  	{
  		.flags	= IORESOURCE_MEM,
  	},
  	{
  		.name	= "intrq",
  		.start	= IRQ_IXP4XX_GPIO12,
  		.end	= IRQ_IXP4XX_GPIO12,
  		.flags	= IORESOURCE_IRQ,
  	},
  };
  
  static struct ixp4xx_pata_data avila_pata_data = {
  	.cs0_bits	= 0xbfff0043,
  	.cs1_bits	= 0xbfff0043,
  };
  
  static struct platform_device avila_pata = {
  	.name			= "pata_ixp4xx_cf",
  	.id			= 0,
  	.dev.platform_data      = &avila_pata_data,
  	.num_resources		= ARRAY_SIZE(avila_pata_resources),
  	.resource		= avila_pata_resources,
  };
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
130
  static struct platform_device *avila_devices[] __initdata = {
5a4a23877   Michael-Luke Jones   ixp4xx-i2c-gpio
131
  	&avila_i2c_gpio,
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
132
133
134
135
136
137
138
139
140
141
142
143
144
  	&avila_flash,
  	&avila_uart
  };
  
  static void __init avila_init(void)
  {
  	ixp4xx_sys_init();
  
  	avila_flash_resource.start = IXP4XX_EXP_BUS_BASE(0);
  	avila_flash_resource.end =
  		IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1;
  
  	platform_add_devices(avila_devices, ARRAY_SIZE(avila_devices));
946acb1c7   Michael-Luke Jones   [ARM] 4032/1: Add...
145
146
147
148
149
150
151
152
153
154
155
  
  	avila_pata_resources[0].start = IXP4XX_EXP_BUS_BASE(1);
  	avila_pata_resources[0].end = IXP4XX_EXP_BUS_END(1);
  
  	avila_pata_resources[1].start = IXP4XX_EXP_BUS_BASE(2);
  	avila_pata_resources[1].end = IXP4XX_EXP_BUS_END(2);
  
  	avila_pata_data.cs0_cfg = IXP4XX_EXP_CS1;
  	avila_pata_data.cs1_cfg = IXP4XX_EXP_CS2;
  
  	platform_device_register(&avila_pata);
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
156
157
158
159
  }
  
  MACHINE_START(AVILA, "Gateworks Avila Network Platform")
  	/* Maintainer: Deepak Saxena <dsaxena@plexity.net> */
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
160
161
162
  	.map_io		= ixp4xx_map_io,
  	.init_irq	= ixp4xx_init_irq,
  	.timer		= &ixp4xx_timer,
e022c729d   Nicolas Pitre   ARM: mach-ixp4xx:...
163
  	.atag_offset	= 0x100,
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
164
  	.init_machine	= avila_init,
7553ee777   Nicolas Pitre   ARM: mach-ixp4xx:...
165
166
167
  #if defined(CONFIG_PCI)
  	.dma_zone_size	= SZ_64M,
  #endif
d1b860fbb   Russell King   ARM: restart: ixp...
168
  	.restart	= ixp4xx_restart,
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
169
170
171
172
173
174
175
176
177
178
  MACHINE_END
  
   /*
    * Loft is functionally equivalent to Avila except that it has a
    * different number for the maximum PCI devices.  The MACHINE
    * structure below is identical to Avila except for the comment.
    */
  #ifdef CONFIG_MACH_LOFT
  MACHINE_START(LOFT, "Giant Shoulder Inc Loft board")
  	/* Maintainer: Tom Billman <kernel@giantshoulderinc.com> */
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
179
180
181
  	.map_io		= ixp4xx_map_io,
  	.init_irq	= ixp4xx_init_irq,
  	.timer		= &ixp4xx_timer,
e022c729d   Nicolas Pitre   ARM: mach-ixp4xx:...
182
  	.atag_offset	= 0x100,
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
183
  	.init_machine	= avila_init,
7553ee777   Nicolas Pitre   ARM: mach-ixp4xx:...
184
185
186
  #if defined(CONFIG_PCI)
  	.dma_zone_size	= SZ_64M,
  #endif
d1b860fbb   Russell King   ARM: restart: ixp...
187
  	.restart	= ixp4xx_restart,
0f1859719   Michael-Luke Jones   [ARM] 4033/1: Add...
188
189
  MACHINE_END
  #endif