2005-04-17 02:20:36 +04:00
/*
* arch / arm / mach - ixp4xx / coyote - setup . c
*
* Board setup for ADI Engineering and IXDGP425 boards
*
* 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>
# include <asm/types.h>
# include <asm/setup.h>
# include <asm/memory.h>
# include <asm/hardware.h>
# include <asm/irq.h>
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <asm/mach/flash.h>
static struct flash_platform_data coyote_flash_data = {
. map_name = " cfi_probe " ,
. width = 2 ,
} ;
static struct resource coyote_flash_resource = {
. start = COYOTE_FLASH_BASE ,
2005-08-27 05:34:11 +04:00
. end = COYOTE_FLASH_BASE + COYOTE_FLASH_SIZE - 1 ,
2005-04-17 02:20:36 +04:00
. flags = IORESOURCE_MEM ,
} ;
static struct platform_device coyote_flash = {
. name = " IXP4XX-Flash " ,
. id = 0 ,
. dev = {
. platform_data = & coyote_flash_data ,
} ,
. num_resources = 1 ,
. resource = & coyote_flash_resource ,
} ;
static struct resource coyote_uart_resource = {
. start = IXP4XX_UART2_BASE_PHYS ,
. end = IXP4XX_UART2_BASE_PHYS + 0x0fff ,
. flags = IORESOURCE_MEM ,
} ;
2005-07-07 02:06:04 +04:00
static struct plat_serial8250_port coyote_uart_data [ ] = {
{
. mapbase = IXP4XX_UART2_BASE_PHYS ,
. membase = ( char * ) IXP4XX_UART2_BASE_VIRT + REG_OFFSET ,
. irq = IRQ_IXP4XX_UART2 ,
2005-08-03 22:58:21 +04:00
. flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST ,
2005-07-07 02:06:04 +04:00
. iotype = UPIO_MEM ,
. regshift = 2 ,
. uartclk = IXP4XX_UART_XTAL ,
} ,
{ } ,
2005-04-17 02:20:36 +04:00
} ;
static struct platform_device coyote_uart = {
. name = " serial8250 " ,
2005-09-08 19:04:41 +04:00
. id = PLAT8250_DEV_PLATFORM ,
2005-04-17 02:20:36 +04:00
. dev = {
2005-07-07 02:06:04 +04:00
. platform_data = coyote_uart_data ,
2005-04-17 02:20:36 +04:00
} ,
. num_resources = 1 ,
. resource = & coyote_uart_resource ,
} ;
static struct platform_device * coyote_devices [ ] __initdata = {
& coyote_flash ,
& coyote_uart
} ;
static void __init coyote_init ( void )
{
* IXP4XX_EXP_CS0 | = IXP4XX_FLASH_WRITABLE ;
* IXP4XX_EXP_CS1 = * IXP4XX_EXP_CS0 ;
if ( machine_is_ixdpg425 ( ) ) {
2005-07-07 02:06:04 +04:00
coyote_uart_data [ 0 ] . membase =
2005-04-17 02:20:36 +04:00
( char * ) ( IXP4XX_UART1_BASE_VIRT + REG_OFFSET ) ;
2005-07-07 02:06:04 +04:00
coyote_uart_data [ 0 ] . mapbase = IXP4XX_UART1_BASE_PHYS ;
coyote_uart_data [ 0 ] . irq = IRQ_IXP4XX_UART1 ;
2005-04-17 02:20:36 +04:00
}
ixp4xx_sys_init ( ) ;
platform_add_devices ( coyote_devices , ARRAY_SIZE ( coyote_devices ) ) ;
}
# ifdef CONFIG_ARCH_ADI_COYOTE
MACHINE_START ( ADI_COYOTE , " ADI Engineering Coyote " )
2005-07-03 20:38:58 +04:00
/* Maintainer: MontaVista Software, Inc. */
. phys_ram = PHYS_OFFSET ,
. phys_io = IXP4XX_PERIPHERAL_BASE_PHYS ,
. io_pg_offst = ( ( IXP4XX_PERIPHERAL_BASE_VIRT ) > > 18 ) & 0xfffc ,
2005-08-30 01:46:29 +04:00
. map_io = ixp4xx_map_io ,
2005-07-03 20:38:58 +04:00
. init_irq = ixp4xx_init_irq ,
2005-04-17 02:20:36 +04:00
. timer = & ixp4xx_timer ,
2005-07-03 20:38:58 +04:00
. boot_params = 0x0100 ,
. init_machine = coyote_init ,
2005-04-17 02:20:36 +04:00
MACHINE_END
# endif
/*
* IXDPG425 is identical to Coyote except for which serial port
* is connected .
*/
# ifdef CONFIG_MACH_IXDPG425
MACHINE_START ( IXDPG425 , " Intel IXDPG425 " )
2005-07-03 20:38:58 +04:00
/* Maintainer: MontaVista Software, Inc. */
. phys_ram = PHYS_OFFSET ,
. phys_io = IXP4XX_PERIPHERAL_BASE_PHYS ,
. io_pg_offst = ( ( IXP4XX_PERIPHERAL_BASE_VIRT ) > > 18 ) & 0xfffc ,
2005-08-30 01:46:29 +04:00
. map_io = ixp4xx_map_io ,
2005-07-03 20:38:58 +04:00
. init_irq = ixp4xx_init_irq ,
2005-04-17 02:20:36 +04:00
. timer = & ixp4xx_timer ,
2005-07-03 20:38:58 +04:00
. boot_params = 0x0100 ,
. init_machine = coyote_init ,
2005-04-17 02:20:36 +04:00
MACHINE_END
# endif