2006-04-01 18:33:42 +01:00
/* linux/arch/arm/mach-s3c2410/common-smdk.c
*
* Copyright ( c ) 2006 Simtec Electronics
* Ben Dooks < ben @ simtec . co . uk >
*
* Common code for SMDK2410 and SMDK2440 boards
*
* http : //www.fluff.org/ben/smdk2440/
*
* 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
* published by the Free Software Foundation .
*/
# include <linux/kernel.h>
# include <linux/types.h>
# include <linux/interrupt.h>
# include <linux/list.h>
# include <linux/timer.h>
# include <linux/init.h>
# include <linux/platform_device.h>
2006-04-02 10:00:09 +01:00
# include <linux/mtd/mtd.h>
# include <linux/mtd/nand.h>
# include <linux/mtd/nand_ecc.h>
# include <linux/mtd/partitions.h>
2006-04-01 18:33:42 +01:00
# include <asm/mach/arch.h>
# include <asm/mach/map.h>
# include <asm/mach/irq.h>
# include <asm/hardware.h>
# include <asm/io.h>
# include <asm/irq.h>
# include <asm/arch/regs-gpio.h>
2006-04-02 10:00:09 +01:00
# include <asm/arch/nand.h>
2006-04-09 22:21:09 +01:00
# include "common-smdk.h"
2006-04-02 10:00:09 +01:00
# include "devs.h"
2006-04-01 18:33:42 +01:00
# include "pm.h"
2006-04-02 10:00:09 +01:00
/* NAND parititon from 2.4.18-swl5 */
static struct mtd_partition smdk_default_nand_part [ ] = {
[ 0 ] = {
. name = " Boot Agent " ,
. size = SZ_16K ,
. offset = 0 ,
} ,
[ 1 ] = {
2006-04-13 09:57:15 +01:00
. name = " S3C2410 flash partition 1 " ,
2006-04-02 10:00:09 +01:00
. offset = 0 ,
. size = SZ_2M ,
} ,
[ 2 ] = {
. name = " S3C2410 flash partition 2 " ,
. offset = SZ_4M ,
. size = SZ_4M ,
} ,
[ 3 ] = {
. name = " S3C2410 flash partition 3 " ,
. offset = SZ_8M ,
. size = SZ_2M ,
} ,
[ 4 ] = {
. name = " S3C2410 flash partition 4 " ,
. offset = SZ_1M * 10 ,
. size = SZ_4M ,
} ,
[ 5 ] = {
. name = " S3C2410 flash partition 5 " ,
. offset = SZ_1M * 14 ,
. size = SZ_1M * 10 ,
} ,
[ 6 ] = {
. name = " S3C2410 flash partition 6 " ,
. offset = SZ_1M * 24 ,
. size = SZ_1M * 24 ,
} ,
[ 7 ] = {
. name = " S3C2410 flash partition 7 " ,
. offset = SZ_1M * 48 ,
. size = SZ_16M ,
}
} ;
static struct s3c2410_nand_set smdk_nand_sets [ ] = {
[ 0 ] = {
. name = " NAND " ,
. nr_chips = 1 ,
. nr_partitions = ARRAY_SIZE ( smdk_default_nand_part ) ,
. partitions = smdk_default_nand_part ,
} ,
} ;
/* choose a set of timings which should suit most 512Mbit
* chips and beyond .
*/
static struct s3c2410_platform_nand smdk_nand_info = {
. tacls = 20 ,
. twrph0 = 60 ,
. twrph1 = 20 ,
. nr_sets = ARRAY_SIZE ( smdk_nand_sets ) ,
. sets = smdk_nand_sets ,
} ;
/* devices we initialise */
static struct platform_device __initdata * smdk_devs [ ] = {
& s3c_device_nand ,
} ;
2006-04-01 18:33:42 +01:00
void __init smdk_machine_init ( void )
{
/* Configure the LEDs (even if we have no LED support)*/
s3c2410_gpio_cfgpin ( S3C2410_GPF4 , S3C2410_GPF4_OUTP ) ;
s3c2410_gpio_cfgpin ( S3C2410_GPF5 , S3C2410_GPF5_OUTP ) ;
s3c2410_gpio_cfgpin ( S3C2410_GPF6 , S3C2410_GPF6_OUTP ) ;
s3c2410_gpio_cfgpin ( S3C2410_GPF7 , S3C2410_GPF7_OUTP ) ;
2006-04-02 10:00:08 +01:00
s3c2410_gpio_setpin ( S3C2410_GPF4 , 1 ) ;
s3c2410_gpio_setpin ( S3C2410_GPF5 , 1 ) ;
s3c2410_gpio_setpin ( S3C2410_GPF6 , 1 ) ;
s3c2410_gpio_setpin ( S3C2410_GPF7 , 1 ) ;
2006-04-01 18:33:42 +01:00
2006-04-02 10:00:09 +01:00
s3c_device_nand . dev . platform_data = & smdk_nand_info ;
platform_add_devices ( smdk_devs , ARRAY_SIZE ( smdk_devs ) ) ;
2006-04-01 18:33:42 +01:00
s3c2410_pm_init ( ) ;
}