2008-07-05 12:02:52 +04:00
/*
* Copyright ( C ) 2008 Sascha Hauer , Pengutronix
*
* 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/types.h>
# include <linux/init.h>
# include <linux/platform_device.h>
# include <linux/mtd/physmap.h>
# include <linux/memory.h>
2008-08-05 19:14:15 +04:00
# include <mach/hardware.h>
2008-07-05 12:02:52 +04:00
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <asm/mach/time.h>
# include <asm/mach/map.h>
2008-08-05 19:14:15 +04:00
# include <mach/common.h>
# include <mach/imx-uart.h>
# include <mach/iomux-mx3.h>
# include <mach/board-pcm037.h>
2008-07-05 12:02:52 +04:00
2008-09-09 12:19:41 +04:00
# include "devices.h"
2008-07-05 12:02:52 +04:00
static struct physmap_flash_data pcm037_flash_data = {
. width = 2 ,
} ;
static struct resource pcm037_flash_resource = {
. start = 0xa0000000 ,
. end = 0xa1ffffff ,
. flags = IORESOURCE_MEM ,
} ;
static struct platform_device pcm037_flash = {
. name = " physmap-flash " ,
. id = 0 ,
. dev = {
. platform_data = & pcm037_flash_data ,
} ,
. resource = & pcm037_flash_resource ,
. num_resources = 1 ,
} ;
static struct imxuart_platform_data uart_pdata = {
2008-09-02 12:19:29 +04:00
. flags = IMXUART_HAVE_RTSCTS ,
2008-07-05 12:02:52 +04:00
} ;
static struct platform_device * devices [ ] __initdata = {
& pcm037_flash ,
} ;
/*
* Board specific initialization .
*/
static void __init mxc_board_init ( void )
{
platform_add_devices ( devices , ARRAY_SIZE ( devices ) ) ;
mxc_iomux_mode ( MX31_PIN_CTS1__CTS1 ) ;
mxc_iomux_mode ( MX31_PIN_RTS1__RTS1 ) ;
mxc_iomux_mode ( MX31_PIN_TXD1__TXD1 ) ;
mxc_iomux_mode ( MX31_PIN_RXD1__RXD1 ) ;
2008-09-09 12:19:41 +04:00
mxc_register_device ( & mxc_uart_device0 , & uart_pdata ) ;
2008-07-05 12:02:52 +04:00
mxc_iomux_mode ( MX31_PIN_CSPI3_MOSI__RXD3 ) ;
mxc_iomux_mode ( MX31_PIN_CSPI3_MISO__TXD3 ) ;
2008-09-09 12:19:41 +04:00
mxc_register_device ( & mxc_uart_device2 , & uart_pdata ) ;
2008-12-02 01:15:40 +03:00
mxc_iomux_mode ( MX31_PIN_BATT_LINE__OWIRE ) ;
mxc_register_device ( & mxc_w1_master_device , NULL ) ;
2008-07-05 12:02:52 +04:00
}
/*
* This structure defines static mappings for the pcm037 board .
*/
static struct map_desc pcm037_io_desc [ ] __initdata = {
{
. virtual = AIPS1_BASE_ADDR_VIRT ,
. pfn = __phys_to_pfn ( AIPS1_BASE_ADDR ) ,
. length = AIPS1_SIZE ,
2008-09-18 17:48:23 +04:00
. type = MT_DEVICE_NONSHARED
2008-07-05 12:02:52 +04:00
} , {
. virtual = AIPS2_BASE_ADDR_VIRT ,
. pfn = __phys_to_pfn ( AIPS2_BASE_ADDR ) ,
. length = AIPS2_SIZE ,
2008-09-18 17:48:23 +04:00
. type = MT_DEVICE_NONSHARED
2008-07-05 12:02:52 +04:00
} ,
} ;
/*
* Set up static virtual mappings .
*/
void __init pcm037_map_io ( void )
{
mxc_map_io ( ) ;
iotable_init ( pcm037_io_desc , ARRAY_SIZE ( pcm037_io_desc ) ) ;
}
static void __init pcm037_timer_init ( void )
{
mxc_clocks_init ( 26000000 ) ;
mxc_timer_init ( " ipg_clk.0 " ) ;
}
struct sys_timer pcm037_timer = {
. init = pcm037_timer_init ,
} ;
MACHINE_START ( PCM037 , " Phytec Phycore pcm037 " )
/* Maintainer: Pengutronix */
. phys_io = AIPS1_BASE_ADDR ,
. io_pg_offst = ( ( AIPS1_BASE_ADDR_VIRT ) > > 18 ) & 0xfffc ,
. boot_params = PHYS_OFFSET + 0x100 ,
. map_io = pcm037_map_io ,
. init_irq = mxc_init_irq ,
. init_machine = mxc_board_init ,
. timer = & pcm037_timer ,
MACHINE_END