From mboxrd@z Thu Jan 1 00:00:00 1970 From: augulis.darius@gmail.com (Darius Augulis) Date: Tue, 19 Oct 2010 20:19:55 +0300 Subject: [PATCH v2] ARM: S3C64XX: add support for mach-mini6410 In-Reply-To: <20101019171009.11315.47694.stgit@darius-desktop> References: <20101019171009.11315.47694.stgit@darius-desktop> Message-ID: <4CBDD33B.5000007@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Kukjin, please replace old patch in my previously sent series with this new one. Other I think should be OK. Could you please add this series to your tree? I'm afraid it's too late to have it in 2.3.37 even thought I sent them early enough. Thanks, Darius On 10/19/2010 08:11 PM, Darius Augulis wrote: > Add support for mini6410 board from FriendlyARM > > Signed-off-by: Darius Augulis > --- > > Changelog since v1: > - Removed .phys_io and .io_pg_offst from MACHINE_START > > arch/arm/mach-s3c64xx/Kconfig | 10 ++ > arch/arm/mach-s3c64xx/Makefile | 1 > arch/arm/mach-s3c64xx/mach-mini6410.c | 154 +++++++++++++++++++++++++++++++++ > 3 files changed, 165 insertions(+), 0 deletions(-) > create mode 100644 arch/arm/mach-s3c64xx/mach-mini6410.c > > diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig > index c05ae12..bbeb4ca 100644 > --- a/arch/arm/mach-s3c64xx/Kconfig > +++ b/arch/arm/mach-s3c64xx/Kconfig > @@ -98,6 +98,16 @@ config MACH_ANW6410 > help > Machine support for the A&W6410 > > +config MACH_MINI6410 > + bool "MINI6410" > + select CPU_S3C6410 > + select S3C_DEV_HSMMC > + select S3C_DEV_HSMMC1 > + select S3C64XX_SETUP_SDHCI > + select S3C_DEV_USB_HOST > + help > + Machine support for the FriendlyARM MINI6410 > + > config MACH_REAL6410 > bool "REAL6410" > select CPU_S3C6410 > diff --git a/arch/arm/mach-s3c64xx/Makefile b/arch/arm/mach-s3c64xx/Makefile > index 90221a2..4657363 100644 > --- a/arch/arm/mach-s3c64xx/Makefile > +++ b/arch/arm/mach-s3c64xx/Makefile > @@ -53,6 +53,7 @@ obj-$(CONFIG_MACH_ANW6410) += mach-anw6410.o > obj-$(CONFIG_MACH_SMDK6400) += mach-smdk6400.o > obj-$(CONFIG_MACH_SMDK6410) += mach-smdk6410.o > obj-$(CONFIG_MACH_REAL6410) += mach-real6410.o > +obj-$(CONFIG_MACH_MINI6410) += mach-mini6410.o > obj-$(CONFIG_MACH_NCP) += mach-ncp.o > obj-$(CONFIG_MACH_HMT) += mach-hmt.o > obj-$(CONFIG_MACH_SMARTQ) += mach-smartq.o > diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c b/arch/arm/mach-s3c64xx/mach-mini6410.c > new file mode 100644 > index 0000000..3970125 > --- /dev/null > +++ b/arch/arm/mach-s3c64xx/mach-mini6410.c > @@ -0,0 +1,154 @@ > +/* linux/arch/arm/mach-s3c64xx/mach-mini6410.c > + * > + * Copyright 2010 Darius Augulis > + * Copyright 2008 Openmoko, Inc. > + * Copyright 2008 Simtec Electronics > + * Ben Dooks > + * http://armlinux.simtec.co.uk/ > + * > + * 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 > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include > +#include > +#include > + > +#include > +#include > +#include > +#include > + > +#include > +#include > +#include > + > +#define UCON (S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK) > +#define ULCON (S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB) > +#define UFCON (S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE) > + > +static struct s3c2410_uartcfg mini6410_uartcfgs[] __initdata = { > + [0] = { > + .hwport = 0, > + .flags = 0, > + .ucon = UCON, > + .ulcon = ULCON, > + .ufcon = UFCON, > + }, > + [1] = { > + .hwport = 1, > + .flags = 0, > + .ucon = UCON, > + .ulcon = ULCON, > + .ufcon = UFCON, > + }, > + [2] = { > + .hwport = 2, > + .flags = 0, > + .ucon = UCON, > + .ulcon = ULCON, > + .ufcon = UFCON, > + }, > + [3] = { > + .hwport = 3, > + .flags = 0, > + .ucon = UCON, > + .ulcon = ULCON, > + .ufcon = UFCON, > + }, > +}; > + > +/* DM9000AEP 10/100 ethernet controller */ > + > +static struct resource mini6410_dm9k_resource[] = { > + [0] = { > + .start = S3C64XX_PA_XM0CSN1, > + .end = S3C64XX_PA_XM0CSN1 + 1, > + .flags = IORESOURCE_MEM > + }, > + [1] = { > + .start = S3C64XX_PA_XM0CSN1 + 4, > + .end = S3C64XX_PA_XM0CSN1 + 5, > + .flags = IORESOURCE_MEM > + }, > + [2] = { > + .start = S3C_EINT(7), > + .end = S3C_EINT(7), > + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL > + } > +}; > + > +static struct dm9000_plat_data mini6410_dm9k_pdata = { > + .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM), > +}; > + > +static struct platform_device mini6410_device_eth = { > + .name = "dm9000", > + .id = -1, > + .num_resources = ARRAY_SIZE(mini6410_dm9k_resource), > + .resource = mini6410_dm9k_resource, > + .dev = { > + .platform_data =&mini6410_dm9k_pdata, > + }, > +}; > + > +static struct platform_device *mini6410_devices[] __initdata = { > + &mini6410_device_eth, > + &s3c_device_hsmmc0, > + &s3c_device_hsmmc1, > + &s3c_device_ohci, > +}; > + > +static void __init mini6410_map_io(void) > +{ > + s3c64xx_init_io(NULL, 0); > + s3c24xx_init_clocks(12000000); > + s3c24xx_init_uarts(mini6410_uartcfgs, ARRAY_SIZE(mini6410_uartcfgs)); > +} > + > +static void __init mini6410_machine_init(void) > +{ > + u32 cs1; > + > + /* configure nCS1 width to 16 bits */ > + > + cs1 = __raw_readl(S3C64XX_SROM_BW)& > + ~(S3C64XX_SROM_BW__CS_MASK<< S3C64XX_SROM_BW__NCS1__SHIFT); > + cs1 |= ((1<< S3C64XX_SROM_BW__DATAWIDTH__SHIFT) | > + (1<< S3C64XX_SROM_BW__WAITENABLE__SHIFT) | > + (1<< S3C64XX_SROM_BW__BYTEENABLE__SHIFT))<< > + S3C64XX_SROM_BW__NCS1__SHIFT; > + __raw_writel(cs1, S3C64XX_SROM_BW); > + > + /* set timing for nCS1 suitable for ethernet chip */ > + > + __raw_writel((0<< S3C64XX_SROM_BCX__PMC__SHIFT) | > + (6<< S3C64XX_SROM_BCX__TACP__SHIFT) | > + (4<< S3C64XX_SROM_BCX__TCAH__SHIFT) | > + (1<< S3C64XX_SROM_BCX__TCOH__SHIFT) | > + (13<< S3C64XX_SROM_BCX__TACC__SHIFT) | > + (4<< S3C64XX_SROM_BCX__TCOS__SHIFT) | > + (0<< S3C64XX_SROM_BCX__TACS__SHIFT), S3C64XX_SROM_BC1); > + > + platform_add_devices(mini6410_devices, ARRAY_SIZE(mini6410_devices)); > +} > + > +MACHINE_START(MINI6410, "MINI6410") > + /* Maintainer: Darius Augulis */ > + .boot_params = S3C64XX_PA_SDRAM + 0x100, > + .init_irq = s3c6410_init_irq, > + .map_io = mini6410_map_io, > + .init_machine = mini6410_machine_init, > + .timer =&s3c24xx_timer, > +MACHINE_END