2005-04-17 02:20:36 +04:00
/*
* linux / arch / arm / mach - versatile / versatile_pb . c
*
* Copyright ( C ) 2004 ARM Limited
* Copyright ( C ) 2000 Deep Blue Solutions Ltd
*
* 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/init.h>
# include <linux/device.h>
# include <linux/sysdev.h>
2006-01-07 16:52:45 +03:00
# include <linux/amba/bus.h>
2009-07-06 01:43:01 +04:00
# include <linux/amba/pl061.h>
2009-09-22 17:29:36 +04:00
# include <linux/amba/mmci.h>
2008-09-06 15:10:45 +04:00
# include <linux/io.h>
2005-04-17 02:20:36 +04:00
2008-08-05 19:14:15 +04:00
# include <mach/hardware.h>
2005-04-17 02:20:36 +04:00
# include <asm/irq.h>
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include "core.h"
# if 1
# define IRQ_MMCI1A IRQ_VICSOURCE23
# else
# define IRQ_MMCI1A IRQ_SIC_MMCI1A
# endif
2009-09-22 17:29:36 +04:00
static struct mmci_platform_data mmc1_plat_data = {
2005-04-17 02:20:36 +04:00
. ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34 ,
. status = mmc_status ,
2009-07-09 18:15:12 +04:00
. gpio_wp = - 1 ,
. gpio_cd = - 1 ,
2005-04-17 02:20:36 +04:00
} ;
2009-07-06 01:43:01 +04:00
static struct pl061_platform_data gpio2_plat_data = {
. gpio_base = 16 ,
. irq_base = IRQ_GPIO2_START ,
} ;
static struct pl061_platform_data gpio3_plat_data = {
. gpio_base = 24 ,
. irq_base = IRQ_GPIO3_START ,
} ;
2005-04-17 02:20:36 +04:00
# define UART3_IRQ { IRQ_SIC_UART3, NO_IRQ }
# define UART3_DMA { 0x86, 0x87 }
# define SCI1_IRQ { IRQ_SIC_SCI3, NO_IRQ }
# define SCI1_DMA { 0x88, 0x89 }
# define MMCI1_IRQ { IRQ_MMCI1A, IRQ_SIC_MMCI1B }
# define MMCI1_DMA { 0x85, 0 }
/*
* These devices are connected via the core APB bridge
*/
# define GPIO2_IRQ { IRQ_GPIOINT2, NO_IRQ }
# define GPIO2_DMA { 0, 0 }
# define GPIO3_IRQ { IRQ_GPIOINT3, NO_IRQ }
# define GPIO3_DMA { 0, 0 }
/*
* These devices are connected via the DMA APB bridge
*/
/* FPGA Primecells */
AMBA_DEVICE ( uart3 , " fpga:09 " , UART3 , NULL ) ;
AMBA_DEVICE ( sci1 , " fpga:0a " , SCI1 , NULL ) ;
AMBA_DEVICE ( mmc1 , " fpga:0b " , MMCI1 , & mmc1_plat_data ) ;
/* DevChip Primecells */
2009-07-06 01:43:01 +04:00
AMBA_DEVICE ( gpio2 , " dev:e6 " , GPIO2 , & gpio2_plat_data ) ;
AMBA_DEVICE ( gpio3 , " dev:e7 " , GPIO3 , & gpio3_plat_data ) ;
2005-04-17 02:20:36 +04:00
static struct amba_device * amba_devs [ ] __initdata = {
& uart3_device ,
& gpio2_device ,
& gpio3_device ,
& sci1_device ,
& mmc1_device ,
} ;
2006-12-01 01:42:20 +03:00
static void __init versatile_pb_init ( void )
2005-04-17 02:20:36 +04:00
{
int i ;
2006-12-01 01:42:20 +03:00
versatile_init ( ) ;
2005-04-17 02:20:36 +04:00
2006-12-01 01:42:20 +03:00
for ( i = 0 ; i < ARRAY_SIZE ( amba_devs ) ; i + + ) {
struct amba_device * d = amba_devs [ i ] ;
amba_device_register ( d , & iomem_resource ) ;
}
2005-04-17 02:20:36 +04:00
}
MACHINE_START ( VERSATILE_PB , " ARM-Versatile PB " )
2005-07-03 20:38:58 +04:00
/* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
. phys_io = 0x101f1000 ,
. io_pg_offst = ( ( 0xf11f1000 ) > > 18 ) & 0xfffc ,
. boot_params = 0x00000100 ,
. map_io = versatile_map_io ,
. init_irq = versatile_init_irq ,
2005-04-17 02:20:36 +04:00
. timer = & versatile_timer ,
2006-12-01 01:42:20 +03:00
. init_machine = versatile_pb_init ,
2005-04-17 02:20:36 +04:00
MACHINE_END