2009-01-20 09:15:18 +03:00
/*
* linux / arch / arm / mach - mmp / aspenite . c
*
* Support for the Marvell PXA168 - based Aspenite and Zylonite2
* Development Platform .
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* publishhed by the Free Software Foundation .
*/
# include <linux/init.h>
2009-02-10 05:35:25 +03:00
# include <linux/kernel.h>
2009-02-18 11:38:22 +03:00
# include <linux/platform_device.h>
# include <linux/smc91x.h>
2009-01-20 09:15:18 +03:00
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <mach/addr-map.h>
2009-02-10 05:35:25 +03:00
# include <mach/mfp-pxa168.h>
# include <mach/pxa168.h>
2009-02-18 11:38:22 +03:00
# include <mach/gpio.h>
2009-01-20 09:15:18 +03:00
# include "common.h"
2009-02-10 05:35:25 +03:00
static unsigned long common_pin_config [ ] __initdata = {
2009-02-18 11:38:22 +03:00
/* Data Flash Interface */
GPIO0_DFI_D15 ,
GPIO1_DFI_D14 ,
GPIO2_DFI_D13 ,
GPIO3_DFI_D12 ,
GPIO4_DFI_D11 ,
GPIO5_DFI_D10 ,
GPIO6_DFI_D9 ,
GPIO7_DFI_D8 ,
GPIO8_DFI_D7 ,
GPIO9_DFI_D6 ,
GPIO10_DFI_D5 ,
GPIO11_DFI_D4 ,
GPIO12_DFI_D3 ,
GPIO13_DFI_D2 ,
GPIO14_DFI_D1 ,
GPIO15_DFI_D0 ,
/* Static Memory Controller */
GPIO18_SMC_nCS0 ,
GPIO34_SMC_nCS1 ,
GPIO23_SMC_nLUA ,
GPIO25_SMC_nLLA ,
GPIO28_SMC_RDY ,
GPIO29_SMC_SCLK ,
GPIO35_SMC_BE1 ,
GPIO36_SMC_BE2 ,
GPIO27_GPIO , /* Ethernet IRQ */
2009-02-10 05:35:25 +03:00
/* UART1 */
GPIO107_UART1_RXD ,
GPIO108_UART1_TXD ,
} ;
2009-02-18 11:38:22 +03:00
static struct smc91x_platdata smc91x_info = {
. flags = SMC91X_USE_16BIT | SMC91X_NOWAIT ,
} ;
static struct resource smc91x_resources [ ] = {
[ 0 ] = {
. start = SMC_CS1_PHYS_BASE + 0x300 ,
. end = SMC_CS1_PHYS_BASE + 0xfffff ,
. flags = IORESOURCE_MEM ,
} ,
[ 1 ] = {
. start = gpio_to_irq ( 27 ) ,
. end = gpio_to_irq ( 27 ) ,
. flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE ,
}
} ;
static struct platform_device smc91x_device = {
. name = " smc91x " ,
. id = 0 ,
. dev = {
. platform_data = & smc91x_info ,
} ,
. num_resources = ARRAY_SIZE ( smc91x_resources ) ,
. resource = smc91x_resources ,
} ;
2009-01-20 09:15:18 +03:00
static void __init common_init ( void )
{
2009-02-10 05:35:25 +03:00
mfp_config ( ARRAY_AND_SIZE ( common_pin_config ) ) ;
2009-02-18 11:38:22 +03:00
/* on-chip devices */
2009-02-10 05:35:25 +03:00
pxa168_add_uart ( 1 ) ;
2009-02-18 11:38:22 +03:00
/* off-chip devices */
platform_device_register ( & smc91x_device ) ;
2009-01-20 09:15:18 +03:00
}
MACHINE_START ( ASPENITE , " PXA168-based Aspenite Development Platform " )
. phys_io = APB_PHYS_BASE ,
. boot_params = 0x00000100 ,
. io_pg_offst = ( APB_VIRT_BASE > > 18 ) & 0xfffc ,
. map_io = pxa_map_io ,
. init_irq = pxa168_init_irq ,
. timer = & pxa168_timer ,
. init_machine = common_init ,
MACHINE_END
MACHINE_START ( ZYLONITE2 , " PXA168-based Zylonite2 Development Platform " )
. phys_io = APB_PHYS_BASE ,
. boot_params = 0x00000100 ,
. io_pg_offst = ( APB_VIRT_BASE > > 18 ) & 0xfffc ,
. map_io = pxa_map_io ,
. init_irq = pxa168_init_irq ,
. timer = & pxa168_timer ,
. init_machine = common_init ,
MACHINE_END