Blame view

arch/arm/mach-at91/board-sam9g20ek.c 9.5 KB
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  /*
   *  Copyright (C) 2005 SAN People
   *  Copyright (C) 2008 Atmel
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation; either version 2 of the License, or
   * (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   *
   * You should have received a copy of the GNU General Public License
   * along with this program; if not, write to the Free Software
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   */
  
  #include <linux/types.h>
2f8163baa   Russell King   ARM: gpio: conver...
21
  #include <linux/gpio.h>
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
22
23
24
25
26
27
  #include <linux/init.h>
  #include <linux/mm.h>
  #include <linux/module.h>
  #include <linux/platform_device.h>
  #include <linux/spi/spi.h>
  #include <linux/spi/at73c213.h>
59c5fe6d8   Nicolas Ferre   [ARM] 5562/2: at9...
28
29
  #include <linux/gpio_keys.h>
  #include <linux/input.h>
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
30
  #include <linux/clk.h>
5e886f68e   Dmitry Eremin-Solenikov   ARM: 6162/1: at91...
31
32
33
  #include <linux/regulator/machine.h>
  #include <linux/regulator/fixed.h>
  #include <linux/regulator/consumer.h>
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
34

a09e64fbc   Russell King   [ARM] Move includ...
35
  #include <mach/hardware.h>
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
36
37
38
39
40
41
42
  #include <asm/setup.h>
  #include <asm/mach-types.h>
  #include <asm/irq.h>
  
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  #include <asm/mach/irq.h>
a09e64fbc   Russell King   [ARM] Move includ...
43
  #include <mach/board.h>
8cdae51aa   Andrew Victor   [ARM] 5289/1: [AT...
44
  #include <mach/at91sam9_smc.h>
76b2ab76a   Jean-Christophe PLAGNIOL-VILLARD   at91: remove MTD_...
45
  #include <mach/system_rev.h>
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
46

8cdae51aa   Andrew Victor   [ARM] 5289/1: [AT...
47
  #include "sam9_smc.h"
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
48
  #include "generic.h"
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
49
50
51
52
53
54
55
56
57
58
59
  /*
   * board revision encoding
   * bit 0:
   * 	0 => 1 sd/mmc slot
   * 	1 => 2 sd/mmc slots connectors (board from revision C)
   */
  #define HAVE_2MMC	(1 << 0)
  static int inline ek_have_2mmc(void)
  {
  	return machine_is_at91sam9g20ek_2mmc() || (system_rev & HAVE_2MMC);
  }
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
60

1b021a3b2   Jean-Christophe PLAGNIOL-VILLARD   at91: fix map_io ...
61
  static void __init ek_init_early(void)
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
62
63
  {
  	/* Initialize processor: 18.432 MHz crystal */
21d08b9d5   Jean-Christophe PLAGNIOL-VILLARD   at91: introduce c...
64
  	at91_initialize(18432000);
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
65

4f37940d6   Samuel R. C. Vale   trivial: fix typo...
66
  	/* DBGU on ttyS0. (Rx & Tx only) */
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
67
68
69
70
71
72
73
74
75
76
77
78
79
  	at91_register_uart(0, 0, 0);
  
  	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
  	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
  			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
  			   | ATMEL_UART_RI);
  
  	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
  	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
  
  	/* set serial console to ttyS0 (ie, DBGU) */
  	at91_set_serial_console(0);
  }
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
80
81
82
83
84
  /*
   * USB Host port
   */
  static struct at91_usbh_data __initdata ek_usbh_data = {
  	.ports		= 2,
63b4c2967   Jean-Christophe PLAGNIOL-VILLARD   ARM: at91/boards:...
85
86
  	.vbus_pin	= {-EINVAL, -EINVAL},
  	.overcurrent_pin= {-EINVAL, -EINVAL},
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
87
88
89
90
91
92
93
  };
  
  /*
   * USB Device port
   */
  static struct at91_udc_data __initdata ek_udc_data = {
  	.vbus_pin	= AT91_PIN_PC5,
63b4c2967   Jean-Christophe PLAGNIOL-VILLARD   ARM: at91/boards:...
94
  	.pullup_pin	= -EINVAL,		/* pull-up driven by UDC */
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
95
96
97
98
99
100
101
  };
  
  
  /*
   * SPI devices.
   */
  static struct spi_board_info ek_spi_devices[] = {
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
102
  #if !(defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_AT91))
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
  	{	/* DataFlash chip */
  		.modalias	= "mtd_dataflash",
  		.chip_select	= 1,
  		.max_speed_hz	= 15 * 1000 * 1000,
  		.bus_num	= 0,
  	},
  #if defined(CONFIG_MTD_AT91_DATAFLASH_CARD)
  	{	/* DataFlash card */
  		.modalias	= "mtd_dataflash",
  		.chip_select	= 0,
  		.max_speed_hz	= 15 * 1000 * 1000,
  		.bus_num	= 0,
  	},
  #endif
  #endif
  };
  
  
  /*
   * MACB Ethernet device
   */
84e0cdb0a   Jamie Iles   macb: unify at91 ...
124
  static struct macb_platform_data __initdata ek_macb_data = {
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
125
126
127
  	.phy_irq_pin	= AT91_PIN_PA7,
  	.is_rmii	= 1,
  };
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
128
129
130
131
132
133
134
  static void __init ek_add_device_macb(void)
  {
  	if (ek_have_2mmc())
  		ek_macb_data.phy_irq_pin = AT91_PIN_PB0;
  
  	at91_add_device_eth(&ek_macb_data);
  }
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
135
136
137
138
139
140
141
142
  
  /*
   * NAND flash
   */
  static struct mtd_partition __initdata ek_nand_partition[] = {
  	{
  		.name   = "Bootstrap",
  		.offset = 0,
e505240b6   Andrew Victor   [ARM] 5257/2: [AT...
143
  		.size   = 4 * SZ_1M,
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
144
145
146
  	},
  	{
  		.name	= "Partition 1",
e505240b6   Andrew Victor   [ARM] 5257/2: [AT...
147
148
  		.offset	= MTDPART_OFS_NXTBLK,
  		.size	= 60 * SZ_1M,
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
149
150
151
  	},
  	{
  		.name	= "Partition 2",
e505240b6   Andrew Victor   [ARM] 5257/2: [AT...
152
  		.offset	= MTDPART_OFS_NXTBLK,
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
153
154
155
  		.size	= MTDPART_SIZ_FULL,
  	},
  };
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
156
  /* det_pin is not connected */
7c8968347   Haavard Skinnemoen   [ARM] 5180/1: at9...
157
  static struct atmel_nand_data __initdata ek_nand_data = {
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
158
159
160
161
  	.ale		= 21,
  	.cle		= 22,
  	.rdy_pin	= AT91_PIN_PC13,
  	.enable_pin	= AT91_PIN_PC14,
63b4c2967   Jean-Christophe PLAGNIOL-VILLARD   ARM: at91/boards:...
162
  	.det_pin	= -EINVAL,
1754aab9b   Dmitry Eremin-Solenikov   mtd: ATMEL, AVR32...
163
164
  	.parts		= ek_nand_partition,
  	.num_parts	= ARRAY_SIZE(ek_nand_partition),
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
165
  };
8cdae51aa   Andrew Victor   [ARM] 5289/1: [AT...
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
  static struct sam9_smc_config __initdata ek_nand_smc_config = {
  	.ncs_read_setup		= 0,
  	.nrd_setup		= 2,
  	.ncs_write_setup	= 0,
  	.nwe_setup		= 2,
  
  	.ncs_read_pulse		= 4,
  	.nrd_pulse		= 4,
  	.ncs_write_pulse	= 4,
  	.nwe_pulse		= 4,
  
  	.read_cycle		= 7,
  	.write_cycle		= 7,
  
  	.mode			= AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE,
  	.tdf_cycles		= 3,
  };
  
  static void __init ek_add_device_nand(void)
  {
64393b3ae   Nicolas Ferre   AT91: Change nand...
186
  	ek_nand_data.bus_width_16 = board_have_nand_16bit();
8cdae51aa   Andrew Victor   [ARM] 5289/1: [AT...
187
188
189
190
191
192
193
  	/* setup bus-width (8 or 16) */
  	if (ek_nand_data.bus_width_16)
  		ek_nand_smc_config.mode |= AT91_SMC_DBW_16;
  	else
  		ek_nand_smc_config.mode |= AT91_SMC_DBW_8;
  
  	/* configure chip-select 3 (NAND) */
faee0cc33   Jean-Christophe PLAGNIOL-VILLARD   ARM: at91: make s...
194
  	sam9_smc_configure(0, 3, &ek_nand_smc_config);
8cdae51aa   Andrew Victor   [ARM] 5289/1: [AT...
195
196
197
  
  	at91_add_device_nand(&ek_nand_data);
  }
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
198
199
200
  
  /*
   * MCI (SD/MMC)
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
201
   * wp_pin and vcc_pin are not connected
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
202
   */
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
203
204
205
206
207
  #if defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_ATMELMCI_MODULE)
  static struct mci_platform_data __initdata ek_mmc_data = {
  	.slot[1] = {
  		.bus_width	= 4,
  		.detect_pin	= AT91_PIN_PC9,
63b4c2967   Jean-Christophe PLAGNIOL-VILLARD   ARM: at91/boards:...
208
  		.wp_pin		= -EINVAL,
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
209
210
211
212
  	},
  
  };
  #else
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
213
  static struct at91_mmc_data __initdata ek_mmc_data = {
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
214
  	.slot_b		= 1,	/* Only one slot so use slot B */
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
215
  	.wire4		= 1,
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
216
  	.det_pin	= AT91_PIN_PC9,
63b4c2967   Jean-Christophe PLAGNIOL-VILLARD   ARM: at91/boards:...
217
218
  	.wp_pin		= -EINVAL,
  	.vcc_pin	= -EINVAL,
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
219
  };
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
220
  #endif
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
221

a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
222
223
224
225
226
227
  static void __init ek_add_device_mmc(void)
  {
  #if defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_ATMELMCI_MODULE)
  	if (ek_have_2mmc()) {
  		ek_mmc_data.slot[0].bus_width = 4;
  		ek_mmc_data.slot[0].detect_pin = AT91_PIN_PC2;
63b4c2967   Jean-Christophe PLAGNIOL-VILLARD   ARM: at91/boards:...
228
  		ek_mmc_data.slot[0].wp_pin = -1;
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
229
230
231
232
233
234
  	}
  	at91_add_device_mci(0, &ek_mmc_data);
  #else
  	at91_add_device_mmc(0, &ek_mmc_data);
  #endif
  }
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
  
  /*
   * LEDs
   */
  static struct gpio_led ek_leds[] = {
  	{	/* "bottom" led, green, userled1 to be defined */
  		.name			= "ds5",
  		.gpio			= AT91_PIN_PA6,
  		.active_low		= 1,
  		.default_trigger	= "none",
  	},
  	{	/* "power" led, yellow */
  		.name			= "ds1",
  		.gpio			= AT91_PIN_PA9,
  		.default_trigger	= "heartbeat",
  	}
  };
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
252
253
254
255
256
257
258
259
260
  static void __init ek_add_device_gpio_leds(void)
  {
  	if (ek_have_2mmc()) {
  		ek_leds[0].gpio = AT91_PIN_PB8;
  		ek_leds[1].gpio = AT91_PIN_PB9;
  	}
  
  	at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
  }
59c5fe6d8   Nicolas Ferre   [ARM] 5562/2: at9...
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
  
  /*
   * GPIO Buttons
   */
  #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
  static struct gpio_keys_button ek_buttons[] = {
  	{
  		.gpio		= AT91_PIN_PA30,
  		.code		= BTN_3,
  		.desc		= "Button 3",
  		.active_low	= 1,
  		.wakeup		= 1,
  	},
  	{
  		.gpio		= AT91_PIN_PA31,
  		.code		= BTN_4,
  		.desc		= "Button 4",
  		.active_low	= 1,
  		.wakeup		= 1,
  	}
  };
  
  static struct gpio_keys_platform_data ek_button_data = {
  	.buttons	= ek_buttons,
  	.nbuttons	= ARRAY_SIZE(ek_buttons),
  };
  
  static struct platform_device ek_button_device = {
  	.name		= "gpio-keys",
  	.id		= -1,
  	.num_resources	= 0,
  	.dev		= {
  		.platform_data	= &ek_button_data,
  	}
  };
  
  static void __init ek_add_device_buttons(void)
  {
  	at91_set_gpio_input(AT91_PIN_PA30, 1);	/* btn3 */
  	at91_set_deglitch(AT91_PIN_PA30, 1);
  	at91_set_gpio_input(AT91_PIN_PA31, 1);	/* btn4 */
  	at91_set_deglitch(AT91_PIN_PA31, 1);
  
  	platform_device_register(&ek_button_device);
  }
  #else
  static void __init ek_add_device_buttons(void) {}
  #endif
5e886f68e   Dmitry Eremin-Solenikov   ARM: 6162/1: at91...
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
  #if defined(CONFIG_REGULATOR_FIXED_VOLTAGE) || defined(CONFIG_REGULATOR_FIXED_VOLTAGE_MODULE)
  static struct regulator_consumer_supply ek_audio_consumer_supplies[] = {
  	REGULATOR_SUPPLY("AVDD", "0-001b"),
  	REGULATOR_SUPPLY("HPVDD", "0-001b"),
  	REGULATOR_SUPPLY("DBVDD", "0-001b"),
  	REGULATOR_SUPPLY("DCVDD", "0-001b"),
  };
  
  static struct regulator_init_data ek_avdd_reg_init_data = {
  	.constraints	= {
  		.name	= "3V3",
  		.valid_ops_mask = REGULATOR_CHANGE_STATUS,
  	},
  	.consumer_supplies = ek_audio_consumer_supplies,
  	.num_consumer_supplies = ARRAY_SIZE(ek_audio_consumer_supplies),
  };
  
  static struct fixed_voltage_config ek_vdd_pdata = {
  	.supply_name	= "board-3V3",
  	.microvolts	= 3300000,
  	.gpio		= -EINVAL,
  	.enabled_at_boot = 0,
  	.init_data	= &ek_avdd_reg_init_data,
  };
  static struct platform_device ek_voltage_regulator = {
  	.name		= "reg-fixed-voltage",
  	.id		= -1,
  	.num_resources	= 0,
  	.dev		= {
  		.platform_data	= &ek_vdd_pdata,
  	},
  };
  static void __init ek_add_regulators(void)
  {
  	platform_device_register(&ek_voltage_regulator);
  }
  #else
  static void __init ek_add_regulators(void) {}
  #endif
59c5fe6d8   Nicolas Ferre   [ARM] 5562/2: at9...
348

6953e47e1   Dmitry Eremin-Solenikov   [ARM] 5524/1: at9...
349
  static struct i2c_board_info __initdata ek_i2c_devices[] = {
438ff39d7   Rob Alley   ARM: 5986/1: at91...
350
351
352
353
354
355
          {
                  I2C_BOARD_INFO("24c512", 0x50)
          },
          {
                  I2C_BOARD_INFO("wm8731", 0x1b)
          },
6953e47e1   Dmitry Eremin-Solenikov   [ARM] 5524/1: at9...
356
  };
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
357
358
359
360
361
362
363
364
365
366
367
  static void __init ek_board_init(void)
  {
  	/* Serial */
  	at91_add_device_serial();
  	/* USB Host */
  	at91_add_device_usbh(&ek_usbh_data);
  	/* USB Device */
  	at91_add_device_udc(&ek_udc_data);
  	/* SPI */
  	at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
  	/* NAND */
8cdae51aa   Andrew Victor   [ARM] 5289/1: [AT...
368
  	ek_add_device_nand();
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
369
  	/* Ethernet */
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
370
  	ek_add_device_macb();
5e886f68e   Dmitry Eremin-Solenikov   ARM: 6162/1: at91...
371
372
  	/* Regulators */
  	ek_add_regulators();
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
373
  	/* MMC */
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
374
  	ek_add_device_mmc();
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
375
  	/* I2C */
6953e47e1   Dmitry Eremin-Solenikov   [ARM] 5524/1: at9...
376
  	at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
377
  	/* LEDs */
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
378
  	ek_add_device_gpio_leds();
59c5fe6d8   Nicolas Ferre   [ARM] 5562/2: at9...
379
380
  	/* Push Buttons */
  	ek_add_device_buttons();
423145a5d   Mark Brown   [ARM] 5399/1: [AT...
381
382
383
384
  	/* PCK0 provides MCLK to the WM8731 */
  	at91_set_B_periph(AT91_PIN_PC1, 0);
  	/* SSC (for WM8731) */
  	at91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX);
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
385
386
387
388
  }
  
  MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK")
  	/* Maintainer: Atmel */
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
389
  	.timer		= &at91sam926x_timer,
21d08b9d5   Jean-Christophe PLAGNIOL-VILLARD   at91: introduce c...
390
  	.map_io		= at91_map_io,
1b021a3b2   Jean-Christophe PLAGNIOL-VILLARD   at91: fix map_io ...
391
  	.init_early	= ek_init_early,
92100c12c   Jean-Christophe PLAGNIOL-VILLARD   at91: factorize a...
392
  	.init_irq	= at91_init_irq_default,
613526677   sedji gaouaou   [ARM] 5130/4: Sup...
393
394
  	.init_machine	= ek_board_init,
  MACHINE_END
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
395
396
397
  
  MACHINE_START(AT91SAM9G20EK_2MMC, "Atmel AT91SAM9G20-EK 2 MMC Slot Mod")
  	/* Maintainer: Atmel */
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
398
  	.timer		= &at91sam926x_timer,
21d08b9d5   Jean-Christophe PLAGNIOL-VILLARD   at91: introduce c...
399
  	.map_io		= at91_map_io,
1b021a3b2   Jean-Christophe PLAGNIOL-VILLARD   at91: fix map_io ...
400
  	.init_early	= ek_init_early,
92100c12c   Jean-Christophe PLAGNIOL-VILLARD   at91: factorize a...
401
  	.init_irq	= at91_init_irq_default,
a6e016f19   Jean-Christophe PLAGNIOL-VILLARD   AT91: at91sam9g20...
402
403
  	.init_machine	= ek_board_init,
  MACHINE_END