Path: blob/master/arch/arm/mach-ixp4xx/avila-setup.c
10817 views
/*1* arch/arm/mach-ixp4xx/avila-setup.c2*3* Gateworks Avila board-setup4*5* Author: Michael-Luke Jones <[email protected]>6*7* Based on ixdp-setup.c8* Copyright (C) 2003-2005 MontaVista Software, Inc.9*10* Author: Deepak Saxena <[email protected]>11*/1213#include <linux/kernel.h>14#include <linux/init.h>15#include <linux/device.h>16#include <linux/serial.h>17#include <linux/tty.h>18#include <linux/serial_8250.h>19#include <linux/i2c-gpio.h>20#include <asm/types.h>21#include <asm/setup.h>22#include <asm/memory.h>23#include <mach/hardware.h>24#include <asm/mach-types.h>25#include <asm/irq.h>26#include <asm/mach/arch.h>27#include <asm/mach/flash.h>2829#define AVILA_SDA_PIN 730#define AVILA_SCL_PIN 63132static struct flash_platform_data avila_flash_data = {33.map_name = "cfi_probe",34.width = 2,35};3637static struct resource avila_flash_resource = {38.flags = IORESOURCE_MEM,39};4041static struct platform_device avila_flash = {42.name = "IXP4XX-Flash",43.id = 0,44.dev = {45.platform_data = &avila_flash_data,46},47.num_resources = 1,48.resource = &avila_flash_resource,49};5051static struct i2c_gpio_platform_data avila_i2c_gpio_data = {52.sda_pin = AVILA_SDA_PIN,53.scl_pin = AVILA_SCL_PIN,54};5556static struct platform_device avila_i2c_gpio = {57.name = "i2c-gpio",58.id = 0,59.dev = {60.platform_data = &avila_i2c_gpio_data,61},62};6364static struct resource avila_uart_resources[] = {65{66.start = IXP4XX_UART1_BASE_PHYS,67.end = IXP4XX_UART1_BASE_PHYS + 0x0fff,68.flags = IORESOURCE_MEM69},70{71.start = IXP4XX_UART2_BASE_PHYS,72.end = IXP4XX_UART2_BASE_PHYS + 0x0fff,73.flags = IORESOURCE_MEM74}75};7677static struct plat_serial8250_port avila_uart_data[] = {78{79.mapbase = IXP4XX_UART1_BASE_PHYS,80.membase = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET,81.irq = IRQ_IXP4XX_UART1,82.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,83.iotype = UPIO_MEM,84.regshift = 2,85.uartclk = IXP4XX_UART_XTAL,86},87{88.mapbase = IXP4XX_UART2_BASE_PHYS,89.membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET,90.irq = IRQ_IXP4XX_UART2,91.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,92.iotype = UPIO_MEM,93.regshift = 2,94.uartclk = IXP4XX_UART_XTAL,95},96{ },97};9899static struct platform_device avila_uart = {100.name = "serial8250",101.id = PLAT8250_DEV_PLATFORM,102.dev.platform_data = avila_uart_data,103.num_resources = 2,104.resource = avila_uart_resources105};106107static struct resource avila_pata_resources[] = {108{109.flags = IORESOURCE_MEM110},111{112.flags = IORESOURCE_MEM,113},114{115.name = "intrq",116.start = IRQ_IXP4XX_GPIO12,117.end = IRQ_IXP4XX_GPIO12,118.flags = IORESOURCE_IRQ,119},120};121122static struct ixp4xx_pata_data avila_pata_data = {123.cs0_bits = 0xbfff0043,124.cs1_bits = 0xbfff0043,125};126127static struct platform_device avila_pata = {128.name = "pata_ixp4xx_cf",129.id = 0,130.dev.platform_data = &avila_pata_data,131.num_resources = ARRAY_SIZE(avila_pata_resources),132.resource = avila_pata_resources,133};134135static struct platform_device *avila_devices[] __initdata = {136&avila_i2c_gpio,137&avila_flash,138&avila_uart139};140141static void __init avila_init(void)142{143ixp4xx_sys_init();144145avila_flash_resource.start = IXP4XX_EXP_BUS_BASE(0);146avila_flash_resource.end =147IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1;148149platform_add_devices(avila_devices, ARRAY_SIZE(avila_devices));150151avila_pata_resources[0].start = IXP4XX_EXP_BUS_BASE(1);152avila_pata_resources[0].end = IXP4XX_EXP_BUS_END(1);153154avila_pata_resources[1].start = IXP4XX_EXP_BUS_BASE(2);155avila_pata_resources[1].end = IXP4XX_EXP_BUS_END(2);156157avila_pata_data.cs0_cfg = IXP4XX_EXP_CS1;158avila_pata_data.cs1_cfg = IXP4XX_EXP_CS2;159160platform_device_register(&avila_pata);161162}163164MACHINE_START(AVILA, "Gateworks Avila Network Platform")165/* Maintainer: Deepak Saxena <[email protected]> */166.map_io = ixp4xx_map_io,167.init_irq = ixp4xx_init_irq,168.timer = &ixp4xx_timer,169.boot_params = 0x0100,170.init_machine = avila_init,171MACHINE_END172173/*174* Loft is functionally equivalent to Avila except that it has a175* different number for the maximum PCI devices. The MACHINE176* structure below is identical to Avila except for the comment.177*/178#ifdef CONFIG_MACH_LOFT179MACHINE_START(LOFT, "Giant Shoulder Inc Loft board")180/* Maintainer: Tom Billman <[email protected]> */181.map_io = ixp4xx_map_io,182.init_irq = ixp4xx_init_irq,183.timer = &ixp4xx_timer,184.boot_params = 0x0100,185.init_machine = avila_init,186MACHINE_END187#endif188189190191