2010-02-05 11:15:07 +00:00
/*
* G4EVM board support
*
* Copyright ( C ) 2010 Magnus Damm
* Copyright ( C ) 2008 Yoshihiro Shimoda
*
* 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 ; version 2 of the License .
*
* 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 . , 51 Franklin St , Fifth Floor , Boston , MA 02110 - 1301 USA
*/
# include <linux/kernel.h>
# include <linux/init.h>
# include <linux/interrupt.h>
# include <linux/irq.h>
# include <linux/platform_device.h>
# include <linux/delay.h>
# include <linux/mtd/mtd.h>
# include <linux/mtd/partitions.h>
# include <linux/mtd/physmap.h>
# include <linux/io.h>
2010-02-12 08:10:06 +00:00
# include <linux/gpio.h>
# include <mach/sh7377.h>
2010-02-05 11:15:07 +00:00
# include <mach/common.h>
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <asm/mach/map.h>
static struct mtd_partition nor_flash_partitions [ ] = {
{
. name = " loader " ,
. offset = 0x00000000 ,
. size = 512 * 1024 ,
} ,
{
. name = " bootenv " ,
. offset = MTDPART_OFS_APPEND ,
. size = 512 * 1024 ,
} ,
{
. name = " kernel_ro " ,
. offset = MTDPART_OFS_APPEND ,
. size = 8 * 1024 * 1024 ,
. mask_flags = MTD_WRITEABLE ,
} ,
{
. name = " kernel " ,
. offset = MTDPART_OFS_APPEND ,
. size = 8 * 1024 * 1024 ,
} ,
{
. name = " data " ,
. offset = MTDPART_OFS_APPEND ,
. size = MTDPART_SIZ_FULL ,
} ,
} ;
static struct physmap_flash_data nor_flash_data = {
. width = 2 ,
. parts = nor_flash_partitions ,
. nr_parts = ARRAY_SIZE ( nor_flash_partitions ) ,
} ;
static struct resource nor_flash_resources [ ] = {
[ 0 ] = {
. start = 0x00000000 ,
. end = 0x08000000 - 1 ,
. flags = IORESOURCE_MEM ,
}
} ;
static struct platform_device nor_flash_device = {
. name = " physmap-flash " ,
. dev = {
. platform_data = & nor_flash_data ,
} ,
. num_resources = ARRAY_SIZE ( nor_flash_resources ) ,
. resource = nor_flash_resources ,
} ;
static struct platform_device * g4evm_devices [ ] __initdata = {
& nor_flash_device ,
} ;
static struct map_desc g4evm_io_desc [ ] __initdata = {
/* create a 1:1 entity map for 0xe6xxxxxx
* used by CPGA , INTC and PFC .
*/
{
. virtual = 0xe6000000 ,
. pfn = __phys_to_pfn ( 0xe6000000 ) ,
. length = 256 < < 20 ,
. type = MT_DEVICE_NONSHARED
} ,
} ;
static void __init g4evm_map_io ( void )
{
iotable_init ( g4evm_io_desc , ARRAY_SIZE ( g4evm_io_desc ) ) ;
2010-02-08 11:02:54 +00:00
/* setup early devices, clocks and console here as well */
2010-02-05 11:15:07 +00:00
sh7377_add_early_devices ( ) ;
sh7367_clock_init ( ) ; /* use g3 clocks for now */
2010-02-08 11:02:54 +00:00
shmobile_setup_console ( ) ;
2010-02-05 11:15:07 +00:00
}
static void __init g4evm_init ( void )
{
2010-02-12 08:10:06 +00:00
sh7377_pinmux_init ( ) ;
/* Lit DS14 LED */
gpio_request ( GPIO_PORT109 , NULL ) ;
gpio_direction_output ( GPIO_PORT109 , 1 ) ;
gpio_export ( GPIO_PORT109 , 1 ) ;
/* Lit DS15 LED */
gpio_request ( GPIO_PORT110 , NULL ) ;
gpio_direction_output ( GPIO_PORT110 , 1 ) ;
gpio_export ( GPIO_PORT110 , 1 ) ;
/* Lit DS16 LED */
gpio_request ( GPIO_PORT112 , NULL ) ;
gpio_direction_output ( GPIO_PORT112 , 1 ) ;
gpio_export ( GPIO_PORT112 , 1 ) ;
/* Lit DS17 LED */
gpio_request ( GPIO_PORT113 , NULL ) ;
gpio_direction_output ( GPIO_PORT113 , 1 ) ;
gpio_export ( GPIO_PORT113 , 1 ) ;
2010-02-05 11:15:07 +00:00
sh7377_add_standard_devices ( ) ;
platform_add_devices ( g4evm_devices , ARRAY_SIZE ( g4evm_devices ) ) ;
}
MACHINE_START ( G4EVM , " g4evm " )
. phys_io = 0xe6000000 ,
. io_pg_offst = ( ( 0xe6000000 ) > > 18 ) & 0xfffc ,
. map_io = g4evm_map_io ,
. init_irq = sh7377_init_irq ,
. init_machine = g4evm_init ,
. timer = & shmobile_timer ,
MACHINE_END