From: Ben Dooks <ben-linux@fluff.org>
To: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org, laforge@gnumonks.org,
kyungmin.park@samsung.com, bhmin@samsung.com,
ben-linux@fluff.org
Subject: Re: [PATCH 16/18] ARM: S5PC1xx: add platform helpers for SDHCI host controllers
Date: Fri, 13 Nov 2009 23:37:02 +0000 [thread overview]
Message-ID: <20091113233702.GU4808@trinity.fluff.org> (raw)
In-Reply-To: <1258014122-18185-17-git-send-email-m.szyprowski@samsung.com>
On Thu, Nov 12, 2009 at 09:22:00AM +0100, Marek Szyprowski wrote:
> From: Kyungmin Park <kyungmin.park@samsung.com>
>
> From: Kyungmin Park <kyungmin.park@samsung.com>
>
> Samsung S5PC100 has 3 SDHCI controllers compatible with the one known from
> previous SoCs series. Add required platform setup and support code that
> the devices can be used with sdhci-s3c driver.
>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---
> arch/arm/mach-s5pc100/Kconfig | 6 ++
> arch/arm/mach-s5pc100/Makefile | 4 ++
> arch/arm/mach-s5pc100/cpu.c | 3 +
> arch/arm/mach-s5pc100/setup-sdhci.c | 63 ++++++++++++++++++++++
> arch/arm/plat-s3c/Kconfig | 5 ++
> arch/arm/plat-s3c/Makefile | 1 +
> arch/arm/plat-s3c/dev-hsmmc2.c | 65 ++++++++++++++++++++++
> arch/arm/plat-s3c/include/plat/sdhci.h | 55 +++++++++++++++++++
> arch/arm/plat-s5pc1xx/Kconfig | 6 ++
> arch/arm/plat-s5pc1xx/Makefile | 1 +
> arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c | 86 ++++++++++++++++++++++++++++++
> 11 files changed, 295 insertions(+), 0 deletions(-)
> create mode 100644 arch/arm/mach-s5pc100/setup-sdhci.c
> create mode 100644 arch/arm/plat-s3c/dev-hsmmc2.c
> create mode 100644 arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c
>
> diff --git a/arch/arm/mach-s5pc100/Kconfig b/arch/arm/mach-s5pc100/Kconfig
> index 36e7e00..21b1821 100644
> --- a/arch/arm/mach-s5pc100/Kconfig
> +++ b/arch/arm/mach-s5pc100/Kconfig
> @@ -14,6 +14,12 @@ config CPU_S5PC100
> help
> Enable S5PC100 CPU support
>
> +config S5PC100_SETUP_SDHCI
> + bool
> + select S5PC1XX_SETUP_SDHCI_GPIO
> + help
> + Internal helper functions for S5PC100 based SDHCI systems
> +
> config MACH_SMDKC100
> bool "SMDKC100"
> select CPU_S5PC100
> diff --git a/arch/arm/mach-s5pc100/Makefile b/arch/arm/mach-s5pc100/Makefile
> index afc89b3..809ff10 100644
> --- a/arch/arm/mach-s5pc100/Makefile
> +++ b/arch/arm/mach-s5pc100/Makefile
> @@ -13,5 +13,9 @@ obj- :=
>
> obj-$(CONFIG_CPU_S5PC100) += cpu.o
>
> +# Helper and device support
> +
> +obj-$(CONFIG_S5PC100_SETUP_SDHCI) += setup-sdhci.o
> +
> # machine support
> obj-$(CONFIG_MACH_SMDKC100) += mach-smdkc100.o
> diff --git a/arch/arm/mach-s5pc100/cpu.c b/arch/arm/mach-s5pc100/cpu.c
> index 1319e3d..d79e757 100644
> --- a/arch/arm/mach-s5pc100/cpu.c
> +++ b/arch/arm/mach-s5pc100/cpu.c
> @@ -75,6 +75,9 @@ void __init s5pc100_map_io(void)
> iotable_init(s5pc100_iodesc, ARRAY_SIZE(s5pc100_iodesc));
>
> /* initialise device information early */
> + s5pc100_default_sdhci0();
> + s5pc100_default_sdhci1();
> + s5pc100_default_sdhci2();
>
> /* the i2c devices are directly compatible with s3c2440 */
> s3c_i2c0_setname("s3c2440-i2c");
> diff --git a/arch/arm/mach-s5pc100/setup-sdhci.c b/arch/arm/mach-s5pc100/setup-sdhci.c
> new file mode 100644
> index 0000000..634bac3
> --- /dev/null
> +++ b/arch/arm/mach-s5pc100/setup-sdhci.c
> @@ -0,0 +1,63 @@
> +/* linux/arch/arm/mach-s5pc100/setup-sdhci.c
> + *
> + * Copyright 2008 Samsung Electronics
> + *
> + * S5PC100 - Helper functions for settign up SDHCI device(s) (HSMMC)
> + *
> + * 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.
> +*/
Again an attribution to where the original for this came from would have
been nice, however it isn't really a barrier to applying this. It can
always be fixed later.
> +#include <linux/kernel.h>
> +#include <linux/types.h>
> +#include <linux/interrupt.h>
> +#include <linux/platform_device.h>
> +#include <linux/io.h>
> +
> +#include <linux/mmc/card.h>
> +#include <linux/mmc/host.h>
> +
> +#include <plat/regs-sdhci.h>
> +#include <plat/sdhci.h>
> +
> +/* clock sources for the mmc bus clock, order as for the ctrl2[5..4] */
> +
> +char *s5pc100_hsmmc_clksrcs[4] = {
> + [0] = "hsmmc",
> + [1] = "hsmmc",
> + /* [2] = "mmc_bus", not yet succesfuuly used yet */
> + /* [3] = "48m", - note not succesfully used yet */
> +};
> +
> +
> +void s5pc100_setup_sdhci0_cfg_card(struct platform_device *dev,
> + void __iomem *r,
> + struct mmc_ios *ios,
> + struct mmc_card *card)
> +{
> + u32 ctrl2, ctrl3;
> +
> + /* don't need to alter anything acording to card-type */
> +
> + writel(S3C64XX_SDHCI_CONTROL4_DRIVE_9mA, r + S3C64XX_SDHCI_CONTROL4);
> +
> + ctrl2 = readl(r + S3C_SDHCI_CONTROL2);
> + ctrl2 &= S3C_SDHCI_CTRL2_SELBASECLK_MASK;
> + ctrl2 |= (S3C64XX_SDHCI_CTRL2_ENSTAASYNCCLR |
> + S3C64XX_SDHCI_CTRL2_ENCMDCNFMSK |
> + S3C_SDHCI_CTRL2_ENFBCLKRX |
> + S3C_SDHCI_CTRL2_DFCNT_NONE |
> + S3C_SDHCI_CTRL2_ENCLKOUTHOLD);
> +
> + if (ios->clock < 25 * 1000000)
> + ctrl3 = (S3C_SDHCI_CTRL3_FCSEL3 |
> + S3C_SDHCI_CTRL3_FCSEL2 |
> + S3C_SDHCI_CTRL3_FCSEL1 |
> + S3C_SDHCI_CTRL3_FCSEL0);
> + else
> + ctrl3 = (S3C_SDHCI_CTRL3_FCSEL1 | S3C_SDHCI_CTRL3_FCSEL0);
> +
> + writel(ctrl2, r + S3C_SDHCI_CONTROL2);
> + writel(ctrl3, r + S3C_SDHCI_CONTROL3);
> +}
> diff --git a/arch/arm/plat-s3c/Kconfig b/arch/arm/plat-s3c/Kconfig
> index f155a84..e139a72 100644
> --- a/arch/arm/plat-s3c/Kconfig
> +++ b/arch/arm/plat-s3c/Kconfig
> @@ -184,6 +184,11 @@ config S3C_DEV_HSMMC1
> help
> Compile in platform device definitions for HSMMC channel 1
>
> +config S3C_DEV_HSMMC2
> + bool
> + help
> + Compile in platform device definitions for HSMMC channel 2
> +
> config S3C_DEV_I2C1
> bool
> help
> diff --git a/arch/arm/plat-s3c/Makefile b/arch/arm/plat-s3c/Makefile
> index 3c09109..50444da 100644
> --- a/arch/arm/plat-s3c/Makefile
> +++ b/arch/arm/plat-s3c/Makefile
> @@ -36,6 +36,7 @@ obj-$(CONFIG_HAVE_PWM) += pwm.o
>
> obj-$(CONFIG_S3C_DEV_HSMMC) += dev-hsmmc.o
> obj-$(CONFIG_S3C_DEV_HSMMC1) += dev-hsmmc1.o
> +obj-$(CONFIG_S3C_DEV_HSMMC2) += dev-hsmmc2.o
> obj-y += dev-i2c0.o
> obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o
> obj-$(CONFIG_S3C_DEV_FB) += dev-fb.o
> diff --git a/arch/arm/plat-s3c/dev-hsmmc2.c b/arch/arm/plat-s3c/dev-hsmmc2.c
> new file mode 100644
> index 0000000..082e55a
> --- /dev/null
> +++ b/arch/arm/plat-s3c/dev-hsmmc2.c
> @@ -0,0 +1,65 @@
> +/* linux/arch/arm/plat-s3c/dev-hsmmc2.c
> + *
> + * Copyright (c) 2009 Samsung Electronics
> + *
> + * S3C series device definition for hsmmc device 2
> + *
> + * 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/platform_device.h>
> +#include <linux/mmc/host.h>
> +
> +#include <mach/map.h>
> +#include <plat/sdhci.h>
> +#include <plat/devs.h>
> +
> +#define S3C_SZ_HSMMC (0x1000)
> +
> +static struct resource s3c_hsmmc2_resource[] = {
> + [0] = {
> + .start = S3C_PA_HSMMC2,
> + .end = S3C_PA_HSMMC2 + S3C_SZ_HSMMC - 1,
> + .flags = IORESOURCE_MEM,
> + },
> + [1] = {
> + .start = IRQ_HSMMC2,
> + .end = IRQ_HSMMC2,
> + .flags = IORESOURCE_IRQ,
> + }
> +};
> +
> +static u64 s3c_device_hsmmc2_dmamask = 0xffffffffUL;
> +
> +struct s3c_sdhci_platdata s3c_hsmmc2_def_platdata = {
> + .max_width = 4,
> + .host_caps = (MMC_CAP_4_BIT_DATA |
> + MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED),
> +};
> +
> +struct platform_device s3c_device_hsmmc2 = {
> + .name = "s3c-sdhci",
> + .id = 2,
> + .num_resources = ARRAY_SIZE(s3c_hsmmc2_resource),
> + .resource = s3c_hsmmc2_resource,
> + .dev = {
> + .dma_mask = &s3c_device_hsmmc2_dmamask,
> + .coherent_dma_mask = 0xffffffffUL,
> + .platform_data = &s3c_hsmmc2_def_platdata,
> + },
> +};
> +
> +void s3c_sdhci2_set_platdata(struct s3c_sdhci_platdata *pd)
> +{
> + struct s3c_sdhci_platdata *set = &s3c_hsmmc2_def_platdata;
> +
> + set->max_width = pd->max_width;
> +
> + if (pd->cfg_gpio)
> + set->cfg_gpio = pd->cfg_gpio;
> + if (pd->cfg_card)
> + set->cfg_card = pd->cfg_card;
> +}
> diff --git a/arch/arm/plat-s3c/include/plat/sdhci.h b/arch/arm/plat-s3c/include/plat/sdhci.h
> index f615308..c71d078 100644
> --- a/arch/arm/plat-s3c/include/plat/sdhci.h
> +++ b/arch/arm/plat-s3c/include/plat/sdhci.h
> @@ -57,6 +57,7 @@ struct s3c_sdhci_platdata {
> */
> extern void s3c_sdhci0_set_platdata(struct s3c_sdhci_platdata *pd);
> extern void s3c_sdhci1_set_platdata(struct s3c_sdhci_platdata *pd);
> +extern void s3c_sdhci2_set_platdata(struct s3c_sdhci_platdata *pd);
>
> /* Default platform data, exported so that per-cpu initialisation can
> * set the correct one when there are more than one cpu type selected.
> @@ -64,11 +65,15 @@ extern void s3c_sdhci1_set_platdata(struct s3c_sdhci_platdata *pd);
>
> extern struct s3c_sdhci_platdata s3c_hsmmc0_def_platdata;
> extern struct s3c_sdhci_platdata s3c_hsmmc1_def_platdata;
> +extern struct s3c_sdhci_platdata s3c_hsmmc2_def_platdata;
>
> /* Helper function availablity */
>
> extern void s3c64xx_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
> extern void s3c64xx_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
> +extern void s5pc100_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
> +extern void s5pc100_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
> +extern void s5pc100_setup_sdhci2_cfg_gpio(struct platform_device *, int w);
>
> /* S3C6400 SDHCI setup */
>
> @@ -145,4 +150,54 @@ static inline void s3c6410_default_sdhci0(void) { }
> static inline void s3c6410_default_sdhci1(void) { }
> #endif /* CONFIG_S3C6410_SETUP_SDHCI */
>
> +/* S5PC100 SDHCI setup */
> +
> +#ifdef CONFIG_S5PC100_SETUP_SDHCI
> +extern char *s5pc100_hsmmc_clksrcs[4];
> +
> +extern void s5pc100_setup_sdhci0_cfg_card(struct platform_device *dev,
> + void __iomem *r,
> + struct mmc_ios *ios,
> + struct mmc_card *card);
> +
> +#ifdef CONFIG_S3C_DEV_HSMMC
> +static inline void s5pc100_default_sdhci0(void)
> +{
> + s3c_hsmmc0_def_platdata.clocks = s5pc100_hsmmc_clksrcs;
> + s3c_hsmmc0_def_platdata.cfg_gpio = s5pc100_setup_sdhci0_cfg_gpio;
> + s3c_hsmmc0_def_platdata.cfg_card = s5pc100_setup_sdhci0_cfg_card;
> +}
> +#else
> +static inline void s5pc100_default_sdhci0(void) { }
> +#endif /* CONFIG_S3C_DEV_HSMMC */
> +
> +#ifdef CONFIG_S3C_DEV_HSMMC1
> +static inline void s5pc100_default_sdhci1(void)
> +{
> + s3c_hsmmc1_def_platdata.clocks = s5pc100_hsmmc_clksrcs;
> + s3c_hsmmc1_def_platdata.cfg_gpio = s5pc100_setup_sdhci1_cfg_gpio;
> + s3c_hsmmc1_def_platdata.cfg_card = s5pc100_setup_sdhci0_cfg_card;
> +}
> +#else
> +static inline void s5pc100_default_sdhci1(void) { }
> +#endif /* CONFIG_S3C_DEV_HSMMC1 */
> +
> +#ifdef CONFIG_S3C_DEV_HSMMC2
> +static inline void s5pc100_default_sdhci2(void)
> +{
> + s3c_hsmmc2_def_platdata.clocks = s5pc100_hsmmc_clksrcs;
> + s3c_hsmmc2_def_platdata.cfg_gpio = s5pc100_setup_sdhci2_cfg_gpio;
> + s3c_hsmmc2_def_platdata.cfg_card = s5pc100_setup_sdhci0_cfg_card;
> +}
> +#else
> +static inline void s5pc100_default_sdhci2(void) { }
> +#endif /* CONFIG_S3C_DEV_HSMMC1 */
> +
> +
> +#else
> +static inline void s5pc100_default_sdhci0(void) { }
> +static inline void s5pc100_default_sdhci1(void) { }
> +static inline void s5pc100_default_sdhci2(void) { }
> +#endif /* CONFIG_S5PC100_SETUP_SDHCI */
> +
> #endif /* __PLAT_S3C_SDHCI_H */
> diff --git a/arch/arm/plat-s5pc1xx/Kconfig b/arch/arm/plat-s5pc1xx/Kconfig
> index 1fc25b9..1608e62 100644
> --- a/arch/arm/plat-s5pc1xx/Kconfig
> +++ b/arch/arm/plat-s5pc1xx/Kconfig
> @@ -55,4 +55,10 @@ config S5PC1XX_SETUP_I2C1
> bool
> help
> Common setup code for i2c bus 1.
> +
> +config S5PC1XX_SETUP_SDHCI_GPIO
> + bool
> + help
> + Common setup code for SDHCI gpio.
> +
> endif
> diff --git a/arch/arm/plat-s5pc1xx/Makefile b/arch/arm/plat-s5pc1xx/Makefile
> index 40ee957..278f268 100644
> --- a/arch/arm/plat-s5pc1xx/Makefile
> +++ b/arch/arm/plat-s5pc1xx/Makefile
> @@ -28,3 +28,4 @@ obj-$(CONFIG_S5P_GPIO_CFG_S5PC1XX) += gpio-config.o
> obj-$(CONFIG_S5PC1XX_SETUP_FB_24BPP) += setup-fb-24bpp.o
> obj-$(CONFIG_S5PC1XX_SETUP_I2C0) += setup-i2c0.o
> obj-$(CONFIG_S5PC1XX_SETUP_I2C1) += setup-i2c1.o
> +obj-$(CONFIG_S5PC1XX_SETUP_SDHCI_GPIO) += setup-sdhci-gpio.o
> diff --git a/arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c b/arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c
> new file mode 100644
> index 0000000..3577619
> --- /dev/null
> +++ b/arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c
> @@ -0,0 +1,86 @@
> +/* linux/arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c
> + *
> + * Copyright 2009 Samsung Eletronics
> + *
> + * S5PC1XX - Helper functions for setting up SDHCI device(s) GPIO (HSMMC)
> + *
> + * 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/platform_device.h>
> +#include <linux/io.h>
> +#include <linux/mmc/host.h>
> +#include <linux/mmc/card.h>
> +
> +#include <mach/gpio.h>
> +#include <plat/gpio-cfg.h>
> +#include <plat/regs-sdhci.h>
> +
> +void s5pc100_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)
> +{
> + unsigned int gpio;
> + unsigned int end;
> + unsigned int num;
> +
> + num = width;
> + /* In case of 8 width, we should decrease the 2 */
> + if (width == 8)
> + num = width - 2;
> +
> + end = S5PC100_GPG0(2 + num);
> +
> + /* Set all the necessary GPG0/GPG1 pins to special-function 0 */
> + for (gpio = S5PC100_GPG0(0); gpio < end; gpio++) {
> + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
> + }
> +
> + if (width == 8) {
> + for (gpio = S5PC100_GPG1(0); gpio <= S5PC100_GPG1(1); gpio++) {
> + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
> + }
> + }
> +
> + s3c_gpio_setpull(S5PC100_GPG1(2), S3C_GPIO_PULL_UP);
> + s3c_gpio_cfgpin(S5PC100_GPG1(2), S3C_GPIO_SFN(2));
> +}
> +
> +void s5pc100_setup_sdhci1_cfg_gpio(struct platform_device *dev, int width)
> +{
> + unsigned int gpio;
> + unsigned int end;
> +
> + end = S5PC100_GPG2(2 + width);
> +
> + /* Set all the necessary GPG2 pins to special-function 2 */
> + for (gpio = S5PC100_GPG2(0); gpio < end; gpio++) {
> + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
> + }
> +
> + s3c_gpio_setpull(S5PC100_GPG2(6), S3C_GPIO_PULL_UP);
> + s3c_gpio_cfgpin(S5PC100_GPG2(6), S3C_GPIO_SFN(2));
> +}
> +
> +void s5pc100_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width)
> +{
> + unsigned int gpio;
> + unsigned int end;
> +
> + end = S5PC100_GPG3(2 + width);
> +
> + /* Set all the necessary GPG3 pins to special-function 2 */
> + for (gpio = S5PC100_GPG3(0); gpio < end; gpio++) {
> + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
> + }
> +
> + s3c_gpio_setpull(S5PC100_GPG3(6), S3C_GPIO_PULL_UP);
> + s3c_gpio_cfgpin(S5PC100_GPG3(6), S3C_GPIO_SFN(2));
> +}
> --
> 1.6.5
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
--
Ben
Q: What's a light-year?
A: One-third less calories than a regular year.
WARNING: multiple messages have this Message-ID (diff)
From: ben-linux@fluff.org (Ben Dooks)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 16/18] ARM: S5PC1xx: add platform helpers for SDHCI host controllers
Date: Fri, 13 Nov 2009 23:37:02 +0000 [thread overview]
Message-ID: <20091113233702.GU4808@trinity.fluff.org> (raw)
In-Reply-To: <1258014122-18185-17-git-send-email-m.szyprowski@samsung.com>
On Thu, Nov 12, 2009 at 09:22:00AM +0100, Marek Szyprowski wrote:
> From: Kyungmin Park <kyungmin.park@samsung.com>
>
> From: Kyungmin Park <kyungmin.park@samsung.com>
>
> Samsung S5PC100 has 3 SDHCI controllers compatible with the one known from
> previous SoCs series. Add required platform setup and support code that
> the devices can be used with sdhci-s3c driver.
>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---
> arch/arm/mach-s5pc100/Kconfig | 6 ++
> arch/arm/mach-s5pc100/Makefile | 4 ++
> arch/arm/mach-s5pc100/cpu.c | 3 +
> arch/arm/mach-s5pc100/setup-sdhci.c | 63 ++++++++++++++++++++++
> arch/arm/plat-s3c/Kconfig | 5 ++
> arch/arm/plat-s3c/Makefile | 1 +
> arch/arm/plat-s3c/dev-hsmmc2.c | 65 ++++++++++++++++++++++
> arch/arm/plat-s3c/include/plat/sdhci.h | 55 +++++++++++++++++++
> arch/arm/plat-s5pc1xx/Kconfig | 6 ++
> arch/arm/plat-s5pc1xx/Makefile | 1 +
> arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c | 86 ++++++++++++++++++++++++++++++
> 11 files changed, 295 insertions(+), 0 deletions(-)
> create mode 100644 arch/arm/mach-s5pc100/setup-sdhci.c
> create mode 100644 arch/arm/plat-s3c/dev-hsmmc2.c
> create mode 100644 arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c
>
> diff --git a/arch/arm/mach-s5pc100/Kconfig b/arch/arm/mach-s5pc100/Kconfig
> index 36e7e00..21b1821 100644
> --- a/arch/arm/mach-s5pc100/Kconfig
> +++ b/arch/arm/mach-s5pc100/Kconfig
> @@ -14,6 +14,12 @@ config CPU_S5PC100
> help
> Enable S5PC100 CPU support
>
> +config S5PC100_SETUP_SDHCI
> + bool
> + select S5PC1XX_SETUP_SDHCI_GPIO
> + help
> + Internal helper functions for S5PC100 based SDHCI systems
> +
> config MACH_SMDKC100
> bool "SMDKC100"
> select CPU_S5PC100
> diff --git a/arch/arm/mach-s5pc100/Makefile b/arch/arm/mach-s5pc100/Makefile
> index afc89b3..809ff10 100644
> --- a/arch/arm/mach-s5pc100/Makefile
> +++ b/arch/arm/mach-s5pc100/Makefile
> @@ -13,5 +13,9 @@ obj- :=
>
> obj-$(CONFIG_CPU_S5PC100) += cpu.o
>
> +# Helper and device support
> +
> +obj-$(CONFIG_S5PC100_SETUP_SDHCI) += setup-sdhci.o
> +
> # machine support
> obj-$(CONFIG_MACH_SMDKC100) += mach-smdkc100.o
> diff --git a/arch/arm/mach-s5pc100/cpu.c b/arch/arm/mach-s5pc100/cpu.c
> index 1319e3d..d79e757 100644
> --- a/arch/arm/mach-s5pc100/cpu.c
> +++ b/arch/arm/mach-s5pc100/cpu.c
> @@ -75,6 +75,9 @@ void __init s5pc100_map_io(void)
> iotable_init(s5pc100_iodesc, ARRAY_SIZE(s5pc100_iodesc));
>
> /* initialise device information early */
> + s5pc100_default_sdhci0();
> + s5pc100_default_sdhci1();
> + s5pc100_default_sdhci2();
>
> /* the i2c devices are directly compatible with s3c2440 */
> s3c_i2c0_setname("s3c2440-i2c");
> diff --git a/arch/arm/mach-s5pc100/setup-sdhci.c b/arch/arm/mach-s5pc100/setup-sdhci.c
> new file mode 100644
> index 0000000..634bac3
> --- /dev/null
> +++ b/arch/arm/mach-s5pc100/setup-sdhci.c
> @@ -0,0 +1,63 @@
> +/* linux/arch/arm/mach-s5pc100/setup-sdhci.c
> + *
> + * Copyright 2008 Samsung Electronics
> + *
> + * S5PC100 - Helper functions for settign up SDHCI device(s) (HSMMC)
> + *
> + * 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.
> +*/
Again an attribution to where the original for this came from would have
been nice, however it isn't really a barrier to applying this. It can
always be fixed later.
> +#include <linux/kernel.h>
> +#include <linux/types.h>
> +#include <linux/interrupt.h>
> +#include <linux/platform_device.h>
> +#include <linux/io.h>
> +
> +#include <linux/mmc/card.h>
> +#include <linux/mmc/host.h>
> +
> +#include <plat/regs-sdhci.h>
> +#include <plat/sdhci.h>
> +
> +/* clock sources for the mmc bus clock, order as for the ctrl2[5..4] */
> +
> +char *s5pc100_hsmmc_clksrcs[4] = {
> + [0] = "hsmmc",
> + [1] = "hsmmc",
> + /* [2] = "mmc_bus", not yet succesfuuly used yet */
> + /* [3] = "48m", - note not succesfully used yet */
> +};
> +
> +
> +void s5pc100_setup_sdhci0_cfg_card(struct platform_device *dev,
> + void __iomem *r,
> + struct mmc_ios *ios,
> + struct mmc_card *card)
> +{
> + u32 ctrl2, ctrl3;
> +
> + /* don't need to alter anything acording to card-type */
> +
> + writel(S3C64XX_SDHCI_CONTROL4_DRIVE_9mA, r + S3C64XX_SDHCI_CONTROL4);
> +
> + ctrl2 = readl(r + S3C_SDHCI_CONTROL2);
> + ctrl2 &= S3C_SDHCI_CTRL2_SELBASECLK_MASK;
> + ctrl2 |= (S3C64XX_SDHCI_CTRL2_ENSTAASYNCCLR |
> + S3C64XX_SDHCI_CTRL2_ENCMDCNFMSK |
> + S3C_SDHCI_CTRL2_ENFBCLKRX |
> + S3C_SDHCI_CTRL2_DFCNT_NONE |
> + S3C_SDHCI_CTRL2_ENCLKOUTHOLD);
> +
> + if (ios->clock < 25 * 1000000)
> + ctrl3 = (S3C_SDHCI_CTRL3_FCSEL3 |
> + S3C_SDHCI_CTRL3_FCSEL2 |
> + S3C_SDHCI_CTRL3_FCSEL1 |
> + S3C_SDHCI_CTRL3_FCSEL0);
> + else
> + ctrl3 = (S3C_SDHCI_CTRL3_FCSEL1 | S3C_SDHCI_CTRL3_FCSEL0);
> +
> + writel(ctrl2, r + S3C_SDHCI_CONTROL2);
> + writel(ctrl3, r + S3C_SDHCI_CONTROL3);
> +}
> diff --git a/arch/arm/plat-s3c/Kconfig b/arch/arm/plat-s3c/Kconfig
> index f155a84..e139a72 100644
> --- a/arch/arm/plat-s3c/Kconfig
> +++ b/arch/arm/plat-s3c/Kconfig
> @@ -184,6 +184,11 @@ config S3C_DEV_HSMMC1
> help
> Compile in platform device definitions for HSMMC channel 1
>
> +config S3C_DEV_HSMMC2
> + bool
> + help
> + Compile in platform device definitions for HSMMC channel 2
> +
> config S3C_DEV_I2C1
> bool
> help
> diff --git a/arch/arm/plat-s3c/Makefile b/arch/arm/plat-s3c/Makefile
> index 3c09109..50444da 100644
> --- a/arch/arm/plat-s3c/Makefile
> +++ b/arch/arm/plat-s3c/Makefile
> @@ -36,6 +36,7 @@ obj-$(CONFIG_HAVE_PWM) += pwm.o
>
> obj-$(CONFIG_S3C_DEV_HSMMC) += dev-hsmmc.o
> obj-$(CONFIG_S3C_DEV_HSMMC1) += dev-hsmmc1.o
> +obj-$(CONFIG_S3C_DEV_HSMMC2) += dev-hsmmc2.o
> obj-y += dev-i2c0.o
> obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o
> obj-$(CONFIG_S3C_DEV_FB) += dev-fb.o
> diff --git a/arch/arm/plat-s3c/dev-hsmmc2.c b/arch/arm/plat-s3c/dev-hsmmc2.c
> new file mode 100644
> index 0000000..082e55a
> --- /dev/null
> +++ b/arch/arm/plat-s3c/dev-hsmmc2.c
> @@ -0,0 +1,65 @@
> +/* linux/arch/arm/plat-s3c/dev-hsmmc2.c
> + *
> + * Copyright (c) 2009 Samsung Electronics
> + *
> + * S3C series device definition for hsmmc device 2
> + *
> + * 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/platform_device.h>
> +#include <linux/mmc/host.h>
> +
> +#include <mach/map.h>
> +#include <plat/sdhci.h>
> +#include <plat/devs.h>
> +
> +#define S3C_SZ_HSMMC (0x1000)
> +
> +static struct resource s3c_hsmmc2_resource[] = {
> + [0] = {
> + .start = S3C_PA_HSMMC2,
> + .end = S3C_PA_HSMMC2 + S3C_SZ_HSMMC - 1,
> + .flags = IORESOURCE_MEM,
> + },
> + [1] = {
> + .start = IRQ_HSMMC2,
> + .end = IRQ_HSMMC2,
> + .flags = IORESOURCE_IRQ,
> + }
> +};
> +
> +static u64 s3c_device_hsmmc2_dmamask = 0xffffffffUL;
> +
> +struct s3c_sdhci_platdata s3c_hsmmc2_def_platdata = {
> + .max_width = 4,
> + .host_caps = (MMC_CAP_4_BIT_DATA |
> + MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED),
> +};
> +
> +struct platform_device s3c_device_hsmmc2 = {
> + .name = "s3c-sdhci",
> + .id = 2,
> + .num_resources = ARRAY_SIZE(s3c_hsmmc2_resource),
> + .resource = s3c_hsmmc2_resource,
> + .dev = {
> + .dma_mask = &s3c_device_hsmmc2_dmamask,
> + .coherent_dma_mask = 0xffffffffUL,
> + .platform_data = &s3c_hsmmc2_def_platdata,
> + },
> +};
> +
> +void s3c_sdhci2_set_platdata(struct s3c_sdhci_platdata *pd)
> +{
> + struct s3c_sdhci_platdata *set = &s3c_hsmmc2_def_platdata;
> +
> + set->max_width = pd->max_width;
> +
> + if (pd->cfg_gpio)
> + set->cfg_gpio = pd->cfg_gpio;
> + if (pd->cfg_card)
> + set->cfg_card = pd->cfg_card;
> +}
> diff --git a/arch/arm/plat-s3c/include/plat/sdhci.h b/arch/arm/plat-s3c/include/plat/sdhci.h
> index f615308..c71d078 100644
> --- a/arch/arm/plat-s3c/include/plat/sdhci.h
> +++ b/arch/arm/plat-s3c/include/plat/sdhci.h
> @@ -57,6 +57,7 @@ struct s3c_sdhci_platdata {
> */
> extern void s3c_sdhci0_set_platdata(struct s3c_sdhci_platdata *pd);
> extern void s3c_sdhci1_set_platdata(struct s3c_sdhci_platdata *pd);
> +extern void s3c_sdhci2_set_platdata(struct s3c_sdhci_platdata *pd);
>
> /* Default platform data, exported so that per-cpu initialisation can
> * set the correct one when there are more than one cpu type selected.
> @@ -64,11 +65,15 @@ extern void s3c_sdhci1_set_platdata(struct s3c_sdhci_platdata *pd);
>
> extern struct s3c_sdhci_platdata s3c_hsmmc0_def_platdata;
> extern struct s3c_sdhci_platdata s3c_hsmmc1_def_platdata;
> +extern struct s3c_sdhci_platdata s3c_hsmmc2_def_platdata;
>
> /* Helper function availablity */
>
> extern void s3c64xx_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
> extern void s3c64xx_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
> +extern void s5pc100_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
> +extern void s5pc100_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
> +extern void s5pc100_setup_sdhci2_cfg_gpio(struct platform_device *, int w);
>
> /* S3C6400 SDHCI setup */
>
> @@ -145,4 +150,54 @@ static inline void s3c6410_default_sdhci0(void) { }
> static inline void s3c6410_default_sdhci1(void) { }
> #endif /* CONFIG_S3C6410_SETUP_SDHCI */
>
> +/* S5PC100 SDHCI setup */
> +
> +#ifdef CONFIG_S5PC100_SETUP_SDHCI
> +extern char *s5pc100_hsmmc_clksrcs[4];
> +
> +extern void s5pc100_setup_sdhci0_cfg_card(struct platform_device *dev,
> + void __iomem *r,
> + struct mmc_ios *ios,
> + struct mmc_card *card);
> +
> +#ifdef CONFIG_S3C_DEV_HSMMC
> +static inline void s5pc100_default_sdhci0(void)
> +{
> + s3c_hsmmc0_def_platdata.clocks = s5pc100_hsmmc_clksrcs;
> + s3c_hsmmc0_def_platdata.cfg_gpio = s5pc100_setup_sdhci0_cfg_gpio;
> + s3c_hsmmc0_def_platdata.cfg_card = s5pc100_setup_sdhci0_cfg_card;
> +}
> +#else
> +static inline void s5pc100_default_sdhci0(void) { }
> +#endif /* CONFIG_S3C_DEV_HSMMC */
> +
> +#ifdef CONFIG_S3C_DEV_HSMMC1
> +static inline void s5pc100_default_sdhci1(void)
> +{
> + s3c_hsmmc1_def_platdata.clocks = s5pc100_hsmmc_clksrcs;
> + s3c_hsmmc1_def_platdata.cfg_gpio = s5pc100_setup_sdhci1_cfg_gpio;
> + s3c_hsmmc1_def_platdata.cfg_card = s5pc100_setup_sdhci0_cfg_card;
> +}
> +#else
> +static inline void s5pc100_default_sdhci1(void) { }
> +#endif /* CONFIG_S3C_DEV_HSMMC1 */
> +
> +#ifdef CONFIG_S3C_DEV_HSMMC2
> +static inline void s5pc100_default_sdhci2(void)
> +{
> + s3c_hsmmc2_def_platdata.clocks = s5pc100_hsmmc_clksrcs;
> + s3c_hsmmc2_def_platdata.cfg_gpio = s5pc100_setup_sdhci2_cfg_gpio;
> + s3c_hsmmc2_def_platdata.cfg_card = s5pc100_setup_sdhci0_cfg_card;
> +}
> +#else
> +static inline void s5pc100_default_sdhci2(void) { }
> +#endif /* CONFIG_S3C_DEV_HSMMC1 */
> +
> +
> +#else
> +static inline void s5pc100_default_sdhci0(void) { }
> +static inline void s5pc100_default_sdhci1(void) { }
> +static inline void s5pc100_default_sdhci2(void) { }
> +#endif /* CONFIG_S5PC100_SETUP_SDHCI */
> +
> #endif /* __PLAT_S3C_SDHCI_H */
> diff --git a/arch/arm/plat-s5pc1xx/Kconfig b/arch/arm/plat-s5pc1xx/Kconfig
> index 1fc25b9..1608e62 100644
> --- a/arch/arm/plat-s5pc1xx/Kconfig
> +++ b/arch/arm/plat-s5pc1xx/Kconfig
> @@ -55,4 +55,10 @@ config S5PC1XX_SETUP_I2C1
> bool
> help
> Common setup code for i2c bus 1.
> +
> +config S5PC1XX_SETUP_SDHCI_GPIO
> + bool
> + help
> + Common setup code for SDHCI gpio.
> +
> endif
> diff --git a/arch/arm/plat-s5pc1xx/Makefile b/arch/arm/plat-s5pc1xx/Makefile
> index 40ee957..278f268 100644
> --- a/arch/arm/plat-s5pc1xx/Makefile
> +++ b/arch/arm/plat-s5pc1xx/Makefile
> @@ -28,3 +28,4 @@ obj-$(CONFIG_S5P_GPIO_CFG_S5PC1XX) += gpio-config.o
> obj-$(CONFIG_S5PC1XX_SETUP_FB_24BPP) += setup-fb-24bpp.o
> obj-$(CONFIG_S5PC1XX_SETUP_I2C0) += setup-i2c0.o
> obj-$(CONFIG_S5PC1XX_SETUP_I2C1) += setup-i2c1.o
> +obj-$(CONFIG_S5PC1XX_SETUP_SDHCI_GPIO) += setup-sdhci-gpio.o
> diff --git a/arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c b/arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c
> new file mode 100644
> index 0000000..3577619
> --- /dev/null
> +++ b/arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c
> @@ -0,0 +1,86 @@
> +/* linux/arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c
> + *
> + * Copyright 2009 Samsung Eletronics
> + *
> + * S5PC1XX - Helper functions for setting up SDHCI device(s) GPIO (HSMMC)
> + *
> + * 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/platform_device.h>
> +#include <linux/io.h>
> +#include <linux/mmc/host.h>
> +#include <linux/mmc/card.h>
> +
> +#include <mach/gpio.h>
> +#include <plat/gpio-cfg.h>
> +#include <plat/regs-sdhci.h>
> +
> +void s5pc100_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)
> +{
> + unsigned int gpio;
> + unsigned int end;
> + unsigned int num;
> +
> + num = width;
> + /* In case of 8 width, we should decrease the 2 */
> + if (width == 8)
> + num = width - 2;
> +
> + end = S5PC100_GPG0(2 + num);
> +
> + /* Set all the necessary GPG0/GPG1 pins to special-function 0 */
> + for (gpio = S5PC100_GPG0(0); gpio < end; gpio++) {
> + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
> + }
> +
> + if (width == 8) {
> + for (gpio = S5PC100_GPG1(0); gpio <= S5PC100_GPG1(1); gpio++) {
> + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
> + }
> + }
> +
> + s3c_gpio_setpull(S5PC100_GPG1(2), S3C_GPIO_PULL_UP);
> + s3c_gpio_cfgpin(S5PC100_GPG1(2), S3C_GPIO_SFN(2));
> +}
> +
> +void s5pc100_setup_sdhci1_cfg_gpio(struct platform_device *dev, int width)
> +{
> + unsigned int gpio;
> + unsigned int end;
> +
> + end = S5PC100_GPG2(2 + width);
> +
> + /* Set all the necessary GPG2 pins to special-function 2 */
> + for (gpio = S5PC100_GPG2(0); gpio < end; gpio++) {
> + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
> + }
> +
> + s3c_gpio_setpull(S5PC100_GPG2(6), S3C_GPIO_PULL_UP);
> + s3c_gpio_cfgpin(S5PC100_GPG2(6), S3C_GPIO_SFN(2));
> +}
> +
> +void s5pc100_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width)
> +{
> + unsigned int gpio;
> + unsigned int end;
> +
> + end = S5PC100_GPG3(2 + width);
> +
> + /* Set all the necessary GPG3 pins to special-function 2 */
> + for (gpio = S5PC100_GPG3(0); gpio < end; gpio++) {
> + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
> + }
> +
> + s3c_gpio_setpull(S5PC100_GPG3(6), S3C_GPIO_PULL_UP);
> + s3c_gpio_cfgpin(S5PC100_GPG3(6), S3C_GPIO_SFN(2));
> +}
> --
> 1.6.5
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
--
Ben
Q: What's a light-year?
A: One-third less calories than a regular year.
next prev parent reply other threads:[~2009-11-13 23:36 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-12 8:21 [PATCH] Update Samsung S5PC100 SoC support Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 01/18] ARM: MM: use 64bytes of L1 cache on plat S5PC1xx Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 02/18] ARM: S5PC1XX: registers rename Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 03/18] ARM: S5PC1XX: clock " Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 04/18] ARM: S5PC1XX: clocks reimplementation Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 05/18] ARM: S5PC1XX: add GPIO L banks to register definition Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 06/18] ARM: S5PC1XX: GPIO registers rename Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 07/18] ARM: S5PC1xx: add gpiolib and external/gpio interrupt support Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 08/18] ARM: S5PC1XX: add cpu idle and system reset support Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 09/18] ARM: S3C: Prepare s3c64xx-specific s3c-fb register definition for reuse Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 10/18] ARM: S5PC1xx: add platform helpers for s3c-fb device Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 11/18] SMDKC100: enable S3C FrameBuffer Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 12/18] drivers: fb: enable S3C FrameBuffer on S5PC1XX platform Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 13/18] ARM: S5PC1xx: add platform helpers for i2c adapter devices Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 14/18] SMDKC100: add I2C0 and I2C1 buses support Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:21 ` [PATCH 15/18] drivers: i2c: s3c2410-i2c also on S5PC1XX platform Marek Szyprowski
2009-11-12 8:21 ` Marek Szyprowski
2009-11-12 8:22 ` [PATCH 16/18] ARM: S5PC1xx: add platform helpers for SDHCI host controllers Marek Szyprowski
2009-11-12 8:22 ` Marek Szyprowski
2009-11-12 8:22 ` [PATCH 17/18] SMDKC100: add SDHCI controllers 0, 1 and 2 support Marek Szyprowski
2009-11-12 8:22 ` Marek Szyprowski
2009-11-12 8:22 ` [PATCH 18/18] drivers: MMC: enable SDHCI-S3C on S5PC1XX platform Marek Szyprowski
2009-11-12 8:22 ` Marek Szyprowski
2009-11-13 23:38 ` Ben Dooks
2009-11-13 23:38 ` Ben Dooks
2009-11-13 23:37 ` Ben Dooks [this message]
2009-11-13 23:37 ` [PATCH 16/18] ARM: S5PC1xx: add platform helpers for SDHCI host controllers Ben Dooks
2009-11-13 23:35 ` [PATCH 15/18] drivers: i2c: s3c2410-i2c also on S5PC1XX platform Ben Dooks
2009-11-13 23:35 ` Ben Dooks
2009-11-13 23:34 ` [PATCH 12/18] drivers: fb: enable S3C FrameBuffer " Ben Dooks
2009-11-13 23:34 ` Ben Dooks
2009-11-13 23:34 ` [PATCH 11/18] SMDKC100: enable S3C FrameBuffer Ben Dooks
2009-11-13 23:34 ` Ben Dooks
2009-11-13 23:32 ` [PATCH 09/18] ARM: S3C: Prepare s3c64xx-specific s3c-fb register definition for reuse Ben Dooks
2009-11-13 23:32 ` Ben Dooks
2009-11-16 8:14 ` Marek Szyprowski
2009-11-16 8:14 ` Marek Szyprowski
2009-11-13 23:29 ` [PATCH 07/18] ARM: S5PC1xx: add gpiolib and external/gpio interrupt support Ben Dooks
2009-11-13 23:29 ` Ben Dooks
2009-11-16 8:14 ` Marek Szyprowski
2009-11-16 8:14 ` Marek Szyprowski
2009-11-13 23:19 ` [PATCH 01/18] ARM: MM: use 64bytes of L1 cache on plat S5PC1xx Ben Dooks
2009-11-13 23:19 ` Ben Dooks
2009-11-19 9:39 ` Russell King - ARM Linux
2009-11-19 9:39 ` Russell King - ARM Linux
2009-11-19 10:35 ` Marek Szyprowski
2009-11-19 10:35 ` Marek Szyprowski
2009-11-13 23:42 ` [PATCH] Update Samsung S5PC100 SoC support Ben Dooks
2009-11-13 23:42 ` Ben Dooks
2009-11-13 23:53 ` Ben Dooks
2009-11-13 23:53 ` Ben Dooks
2009-11-16 11:10 ` Marek Szyprowski
2009-11-16 11:10 ` Marek Szyprowski
2009-11-14 8:21 ` Russell King - ARM Linux
2009-11-14 8:21 ` Russell King - ARM Linux
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091113233702.GU4808@trinity.fluff.org \
--to=ben-linux@fluff.org \
--cc=bhmin@samsung.com \
--cc=kyungmin.park@samsung.com \
--cc=laforge@gnumonks.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.