19c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin/*
29c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * linux/arch/arm/mach-at91/board-afeb-9260v1.c
39c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin *
49c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin *  Copyright (C) 2005 SAN People
59c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin *  Copyright (C) 2006 Atmel
69c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin *  Copyright (C) 2008 Sergey Lapin
79c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin *
89c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * A custom board designed as open hardware; PCBs and various information
99c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * is available at http://groups.google.com/group/arm9fpga-evolution-board/
109c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * Subversion repository: svn://194.85.238.22/home/users/george/svn/arm9eb
119c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin *
129c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * This program is free software; you can redistribute it and/or modify
139c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * it under the terms of the GNU General Public License as published by
149c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * the Free Software Foundation; either version 2 of the License, or
159c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * (at your option) any later version.
169c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin *
179c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * This program is distributed in the hope that it will be useful,
189c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * but WITHOUT ANY WARRANTY; without even the implied warranty of
199c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
209c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * GNU General Public License for more details.
219c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin *
229c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * You should have received a copy of the GNU General Public License
239c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * along with this program; if not, write to the Free Software
249c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
259c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin */
269c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
279c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <linux/types.h>
282f8163baada3dbd0ce891c35bc59ae46e773487aRussell King#include <linux/gpio.h>
299c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <linux/init.h>
309c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <linux/mm.h>
319c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <linux/module.h>
329c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <linux/platform_device.h>
339c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <linux/spi/spi.h>
349c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <linux/clk.h>
359c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <linux/dma-mapping.h>
369c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
379c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <mach/hardware.h>
389c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <asm/setup.h>
399c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <asm/mach-types.h>
409c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <asm/irq.h>
419c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
429c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <asm/mach/arch.h>
439c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <asm/mach/map.h>
449c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include <asm/mach/irq.h>
459c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
46a510b9bacd365dbf7d20a825f34116b9833dd146Jean-Christophe PLAGNIOL-VILLARD#include "at91_aic.h"
4743d2f532925cdf7fe1e4c7a48fb555705421eb66Jean-Christophe PLAGNIOL-VILLARD#include "board.h"
489c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin#include "generic.h"
49cf2e933ce6da2a8bacd52e49c4dd4c0974af1d09Linus Walleij#include "gpio.h"
509c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
519c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
521b021a3b23a40be89c4f3fbe6f4696aa15141f26Jean-Christophe PLAGNIOL-VILLARDstatic void __init afeb9260_init_early(void)
539c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin{
549c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	/* Initialize processor: 18.432 MHz crystal */
5521d08b9d5536ac418bbce4f419fe2b528b7ddf31Jean-Christophe PLAGNIOL-VILLARD	at91_initialize(18432000);
569c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin}
579c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
589c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin/*
599c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * USB Host port
609c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin */
619c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapinstatic struct at91_usbh_data __initdata afeb9260_usbh_data = {
629c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	.ports		= 1,
6363b4c2967850033de0a488d2ba7cd09052199d99Jean-Christophe PLAGNIOL-VILLARD	.vbus_pin	= {-EINVAL, -EINVAL},
6463b4c2967850033de0a488d2ba7cd09052199d99Jean-Christophe PLAGNIOL-VILLARD	.overcurrent_pin= {-EINVAL, -EINVAL},
659c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin};
669c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
679c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin/*
689c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * USB Device port
699c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin */
709c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapinstatic struct at91_udc_data __initdata afeb9260_udc_data = {
719c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	.vbus_pin	= AT91_PIN_PC5,
7263b4c2967850033de0a488d2ba7cd09052199d99Jean-Christophe PLAGNIOL-VILLARD	.pullup_pin	= -EINVAL,		/* pull-up driven by UDC */
739c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin};
749c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
759c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
769c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
779c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin/*
789c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * SPI devices.
799c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin */
809c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapinstatic struct spi_board_info afeb9260_spi_devices[] = {
819c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	{	/* DataFlash chip */
829c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.modalias	= "mtd_dataflash",
839c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.chip_select	= 1,
849c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.max_speed_hz	= 15 * 1000 * 1000,
859c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.bus_num	= 0,
869c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	},
879c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin};
889c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
899c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
9053d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin/*
9153d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin * MACB Ethernet device
9253d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin */
9384e0cdb0a262483a3618091c43dae33d36226430Jamie Ilesstatic struct macb_platform_data __initdata afeb9260_macb_data = {
9453d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin	.phy_irq_pin	= AT91_PIN_PA9,
9553d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin	.is_rmii	= 0,
9653d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin};
9753d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin
989c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
999c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin/*
1009c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * NAND flash
1019c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin */
1029c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapinstatic struct mtd_partition __initdata afeb9260_nand_partition[] = {
1039c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	{
1049c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.name	= "bootloader",
1059c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.offset	= 0,
1069c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.size	= (640 * SZ_1K),
1079c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	},
1089c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	{
1099c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.name	= "kernel",
1109c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.offset	= MTDPART_OFS_NXTBLK,
1119c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.size	= SZ_2M,
1129c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	},
1139c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	{
1149c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.name	= "rootfs",
1159c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.offset	= MTDPART_OFS_NXTBLK,
1169c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		.size	= MTDPART_SIZ_FULL,
1179c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	},
1189c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin};
1199c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
1209c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapinstatic struct atmel_nand_data __initdata afeb9260_nand_data = {
1219c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	.ale		= 21,
1229c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	.cle		= 22,
1239c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	.rdy_pin	= AT91_PIN_PC13,
1249c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	.enable_pin	= AT91_PIN_PC14,
1259c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	.bus_width_16	= 0,
126bf4289cba02b8cf770ecd7959ca70839f0dd9d3cJean-Christophe PLAGNIOL-VILLARD	.ecc_mode	= NAND_ECC_SOFT,
1271754aab9bb869c173aa03b57587256827250e488Dmitry Eremin-Solenikov	.parts		= afeb9260_nand_partition,
1281754aab9bb869c173aa03b57587256827250e488Dmitry Eremin-Solenikov	.num_parts	= ARRAY_SIZE(afeb9260_nand_partition),
12963b4c2967850033de0a488d2ba7cd09052199d99Jean-Christophe PLAGNIOL-VILLARD	.det_pin	= -EINVAL,
1309c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin};
1319c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
1329c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
1339c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin/*
1349c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin * MCI (SD/MMC)
1359c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin */
1364cf3326ab5f34a333a46c59d0d3783db9cef13bfLudovic Desrochesstatic struct mci_platform_data __initdata afeb9260_mci0_data = {
1374cf3326ab5f34a333a46c59d0d3783db9cef13bfLudovic Desroches	.slot[1] = {
1384cf3326ab5f34a333a46c59d0d3783db9cef13bfLudovic Desroches		.bus_width	= 4,
1394cf3326ab5f34a333a46c59d0d3783db9cef13bfLudovic Desroches		.detect_pin	= AT91_PIN_PC9,
1404cf3326ab5f34a333a46c59d0d3783db9cef13bfLudovic Desroches		.wp_pin		= AT91_PIN_PC4,
1414cf3326ab5f34a333a46c59d0d3783db9cef13bfLudovic Desroches	},
1429c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin};
1439c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
1449c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
1459c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
1469c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapinstatic struct i2c_board_info __initdata afeb9260_i2c_devices[] = {
1479c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	{
14834e559eabf57d07c55a57e9455c1df2e6a208d57Sergey Lapin		I2C_BOARD_INFO("tlv320aic23", 0x1a),
14934e559eabf57d07c55a57e9455c1df2e6a208d57Sergey Lapin	}, {
1509c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		I2C_BOARD_INFO("fm3130", 0x68),
151b73b925a6b9d69478c6ae4e74ef20607fd24aeaaSergey Lapin	}, {
1529c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin		I2C_BOARD_INFO("24c64", 0x50),
1539c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	},
1549c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin};
1559c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
1560c30df6fe0bd1e3845357e793dc1bfd908751c45Sergey Matyukevich/*
1570c30df6fe0bd1e3845357e793dc1bfd908751c45Sergey Matyukevich * IDE (CF True IDE mode)
1580c30df6fe0bd1e3845357e793dc1bfd908751c45Sergey Matyukevich */
1590c30df6fe0bd1e3845357e793dc1bfd908751c45Sergey Matyukevichstatic struct at91_cf_data afeb9260_cf_data = {
1600c30df6fe0bd1e3845357e793dc1bfd908751c45Sergey Matyukevich	.chipselect = 4,
1610c30df6fe0bd1e3845357e793dc1bfd908751c45Sergey Matyukevich	.irq_pin    = AT91_PIN_PA6,
16263b4c2967850033de0a488d2ba7cd09052199d99Jean-Christophe PLAGNIOL-VILLARD	.det_pin	= -EINVAL,
16363b4c2967850033de0a488d2ba7cd09052199d99Jean-Christophe PLAGNIOL-VILLARD	.vcc_pin	= -EINVAL,
1640c30df6fe0bd1e3845357e793dc1bfd908751c45Sergey Matyukevich	.rst_pin    = AT91_PIN_PA7,
1650c30df6fe0bd1e3845357e793dc1bfd908751c45Sergey Matyukevich	.flags      = AT91_CF_TRUE_IDE,
1660c30df6fe0bd1e3845357e793dc1bfd908751c45Sergey Matyukevich};
1670c30df6fe0bd1e3845357e793dc1bfd908751c45Sergey Matyukevich
1689c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapinstatic void __init afeb9260_board_init(void)
1699c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin{
170e76265c627ca0aff6cc129486ac656b6b6dd06afMaxime Ripard	at91_register_devices();
171e76265c627ca0aff6cc129486ac656b6b6dd06afMaxime Ripard
1729c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	/* Serial */
17371b149b3f740501c2d59c80de5b10f5e45051099Jean-Christophe PLAGNIOL-VILLARD	/* DBGU on ttyS0. (Rx & Tx only) */
17471b149b3f740501c2d59c80de5b10f5e45051099Jean-Christophe PLAGNIOL-VILLARD	at91_register_uart(0, 0, 0);
17571b149b3f740501c2d59c80de5b10f5e45051099Jean-Christophe PLAGNIOL-VILLARD
17671b149b3f740501c2d59c80de5b10f5e45051099Jean-Christophe PLAGNIOL-VILLARD	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
17771b149b3f740501c2d59c80de5b10f5e45051099Jean-Christophe PLAGNIOL-VILLARD	at91_register_uart(AT91SAM9260_ID_US0, 1,
17871b149b3f740501c2d59c80de5b10f5e45051099Jean-Christophe PLAGNIOL-VILLARD			     ATMEL_UART_CTS | ATMEL_UART_RTS
17971b149b3f740501c2d59c80de5b10f5e45051099Jean-Christophe PLAGNIOL-VILLARD			   | ATMEL_UART_DTR | ATMEL_UART_DSR
18071b149b3f740501c2d59c80de5b10f5e45051099Jean-Christophe PLAGNIOL-VILLARD			   | ATMEL_UART_DCD | ATMEL_UART_RI);
18171b149b3f740501c2d59c80de5b10f5e45051099Jean-Christophe PLAGNIOL-VILLARD
18271b149b3f740501c2d59c80de5b10f5e45051099Jean-Christophe PLAGNIOL-VILLARD	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
18371b149b3f740501c2d59c80de5b10f5e45051099Jean-Christophe PLAGNIOL-VILLARD	at91_register_uart(AT91SAM9260_ID_US1, 2,
18471b149b3f740501c2d59c80de5b10f5e45051099Jean-Christophe PLAGNIOL-VILLARD			ATMEL_UART_CTS | ATMEL_UART_RTS);
1859c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	at91_add_device_serial();
1869c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	/* USB Host */
1879c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	at91_add_device_usbh(&afeb9260_usbh_data);
1889c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	/* USB Device */
1899c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	at91_add_device_udc(&afeb9260_udc_data);
1909c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	/* SPI */
1919c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	at91_add_device_spi(afeb9260_spi_devices,
1929c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin			ARRAY_SIZE(afeb9260_spi_devices));
1939c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	/* NAND */
1949c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	at91_add_device_nand(&afeb9260_nand_data);
19553d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin	/* Ethernet */
19653d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin	at91_add_device_eth(&afeb9260_macb_data);
19753d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin
19853d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin	/* Standard function's pin assignments are not
19953d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin	 * appropriate for us and generic code provide
20053d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin	 * no API to configure these pins any other way */
20153d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin	at91_set_B_periph(AT91_PIN_PA10, 0);	/* ETX2 */
20253d4351f5868c7d3faa9507608c324ff7d7c186cSergey Lapin	at91_set_B_periph(AT91_PIN_PA11, 0);	/* ETX3 */
2039c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	/* MMC */
2044cf3326ab5f34a333a46c59d0d3783db9cef13bfLudovic Desroches	at91_add_device_mci(0, &afeb9260_mci0_data);
2059c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	/* I2C */
2069c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	at91_add_device_i2c(afeb9260_i2c_devices,
2079c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin			ARRAY_SIZE(afeb9260_i2c_devices));
20834e559eabf57d07c55a57e9455c1df2e6a208d57Sergey Lapin	/* Audio */
20934e559eabf57d07c55a57e9455c1df2e6a208d57Sergey Lapin	at91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX);
2100c30df6fe0bd1e3845357e793dc1bfd908751c45Sergey Matyukevich	/* IDE */
2110c30df6fe0bd1e3845357e793dc1bfd908751c45Sergey Matyukevich	at91_add_device_cf(&afeb9260_cf_data);
2129c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin}
2139c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
2149c784f958d01097e3fae24ad75ab3a80ed1e556bSergey LapinMACHINE_START(AFEB9260, "Custom afeb9260 board")
2159c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	/* Maintainer: Sergey Lapin <slapin@ossfans.org> */
2160f391f189eae2c479122dc934d8ffdcbe4257cfeMaxime Ripard	.init_time	= at91_init_time,
21721d08b9d5536ac418bbce4f419fe2b528b7ddf31Jean-Christophe PLAGNIOL-VILLARD	.map_io		= at91_map_io,
2183e135466745a62b1814edef74c7b4a25e6bda707Ludovic Desroches	.handle_irq	= at91_aic_handle_irq,
2191b021a3b23a40be89c4f3fbe6f4696aa15141f26Jean-Christophe PLAGNIOL-VILLARD	.init_early	= afeb9260_init_early,
22092100c12ca1bc5f347ff41c1413f9db07c4d276cJean-Christophe PLAGNIOL-VILLARD	.init_irq	= at91_init_irq_default,
2219c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin	.init_machine	= afeb9260_board_init,
2229c784f958d01097e3fae24ad75ab3a80ed1e556bSergey LapinMACHINE_END
2239c784f958d01097e3fae24ad75ab3a80ed1e556bSergey Lapin
224