From: Maurus Cuelenaere <mcuelenaere@gmail.com>
To: Yauhen Kharuzhy <jekhor@gmail.com>
Cc: Ben Dooks <ben-linux@fluff.org>,
linux-samsung-soc@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Vasily Khoruzhick <anarsoul@gmail.com>,
Darius Augulis <augulis.darius@gmail.com>
Subject: Re: [PATCH 4/4] ARM: S3C2416: Add platform helpers for setup SDHCI
Date: Tue, 22 Jun 2010 15:19:28 +0200 [thread overview]
Message-ID: <4C20B860.80308@gmail.com> (raw)
In-Reply-To: <1277212585-25605-5-git-send-email-jekhor@gmail.com>
Op 22-06-10 15:16, Yauhen Kharuzhy schreef:
> Samsung S3C2416 has two SDHCI controllers compatible with other
> Samsung's SoCs (S3C64XX, S5PC100 etc...).
>
> Add required platform setup code that the devices can be used with
> sdhci-s3c driver.
>
> Signed-off-by: Yauhen Kharuzhy <jekhor@gmail.com>
> ---
> arch/arm/mach-s3c2416/Kconfig | 23 ++++++++++
> arch/arm/mach-s3c2416/Makefile | 5 ++
> arch/arm/mach-s3c2416/s3c2416.c | 5 ++
> arch/arm/mach-s3c2416/setup-sdhci-gpio.c | 60 +++++++++++++++++++++++++++
> arch/arm/mach-s3c2416/setup-sdhci.c | 62 ++++++++++++++++++++++++++++
> arch/arm/plat-samsung/include/plat/sdhci.h | 34 +++++++++++++++
> 6 files changed, 189 insertions(+), 0 deletions(-)
> create mode 100644 arch/arm/mach-s3c2416/setup-sdhci-gpio.c
> create mode 100644 arch/arm/mach-s3c2416/setup-sdhci.c
>
> diff --git a/arch/arm/mach-s3c2416/Kconfig b/arch/arm/mach-s3c2416/Kconfig
> index eafb0ed..e055c7f 100644
> --- a/arch/arm/mach-s3c2416/Kconfig
> +++ b/arch/arm/mach-s3c2416/Kconfig
> @@ -25,6 +25,17 @@ config S3C2416_DMA
> help
> Internal config node for S3C2416 DMA support
>
> +config S3C2416_SETUP_SDHCI
> + bool
> + select S3C2416_SETUP_SDHCI_GPIO
> + help
> + Internal helper functions for S3C2416 based SDHCI systems
> +
> +config S3C2416_SETUP_SDHCI_GPIO
> + bool
> + help
> + Common setup code for SDHCI gpio.
> +
> menu "S3C2416 Machines"
>
> config MACH_SMDK2416
> @@ -36,7 +47,19 @@ config MACH_SMDK2416
> select S3C_DEV_HSMMC1
> select S3C_DEV_NAND
> select S3C_DEV_USB_HOST
> + select S3C2416_SETUP_SDHCI
> help
> Say Y here if you are using an SMDK2416
>
> +config MACH_HANLIN_V3C
> + bool "Hanlin eReader V3C"
> + select CPU_S3C2416
> + select S3C_DEV_HSMMC
> + select S3C_DEV_HSMMC1
> + select S3C_DEV_NAND
> + select S3C_DEV_USB_HOST
> + select S3C2416_SETUP_SDHCI
> + help
> + Say Y here if you are using an Jinke's Hanlin V3C eReader
> +
>
This seems to be unrelated to the patch?
> endmenu
> diff --git a/arch/arm/mach-s3c2416/Makefile b/arch/arm/mach-s3c2416/Makefile
> index 6c12c7b..678e148 100644
> --- a/arch/arm/mach-s3c2416/Makefile
> +++ b/arch/arm/mach-s3c2416/Makefile
> @@ -14,6 +14,11 @@ obj-$(CONFIG_CPU_S3C2416) += irq.o
>
> #obj-$(CONFIG_S3C2416_DMA) += dma.o
>
> +# Device setup
> +obj-$(CONFIG_S3C2416_SETUP_SDHCI) += setup-sdhci.o
> +obj-$(CONFIG_S3C2416_SETUP_SDHCI_GPIO) += setup-sdhci-gpio.o
> +
> # Machine support
>
> obj-$(CONFIG_MACH_SMDK2416) += mach-smdk2416.o
> +obj-$(CONFIG_MACH_HANLIN_V3C) += mach-v3c.o
> diff --git a/arch/arm/mach-s3c2416/s3c2416.c b/arch/arm/mach-s3c2416/s3c2416.c
> index 355ab62..06eacf8 100644
> --- a/arch/arm/mach-s3c2416/s3c2416.c
> +++ b/arch/arm/mach-s3c2416/s3c2416.c
> @@ -53,6 +53,7 @@
> #include <plat/s3c2416.h>
> #include <plat/devs.h>
> #include <plat/cpu.h>
> +#include <plat/sdhci.h>
>
> #include <plat/iic-core.h>
>
> @@ -115,6 +116,10 @@ void __init s3c2416_map_io(void)
> s3c24xx_gpiocfg_default.set_pull = s3c_gpio_setpull_updown;
> s3c24xx_gpiocfg_default.get_pull = s3c_gpio_getpull_updown;
>
> + /* initialize device information early */
> + s3c2416_default_sdhci0();
> + s3c2416_default_sdhci1();
> +
> iotable_init(s3c2416_iodesc, ARRAY_SIZE(s3c2416_iodesc));
> }
>
> diff --git a/arch/arm/mach-s3c2416/setup-sdhci-gpio.c b/arch/arm/mach-s3c2416/setup-sdhci-gpio.c
> new file mode 100644
> index 0000000..ebdab15
> --- /dev/null
> +++ b/arch/arm/mach-s3c2416/setup-sdhci-gpio.c
> @@ -0,0 +1,60 @@
> +/* linux/arch/arm/plat-s3c2416/setup-sdhci-gpio.c
> + *
> + * Copyright 2010 Promwad Innovation Company
> + * Yauhen Kharuzhy <yauhen.kharuzhy@promwad.com>
> + *
> + * S3C2416 - Helper functions for setting up SDHCI device(s) GPIO (HSMMC)
> + *
> + * Based on mach-s3c64xx/setup-sdhci-gpio.c
> + *
> + * 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 <mach/gpio.h>
> +#include <mach/regs-gpio.h>
> +#include <plat/gpio-cfg.h>
> +
> +/* Note: hsmmc1 and hsmmc0 are swapped versus datasheet */
> +
> +void s3c2416_setup_sdhci1_cfg_gpio(struct platform_device *dev, int width)
> +{
> + unsigned int gpio;
> + unsigned int end;
> +
> + end = S3C2410_GPE(7 + width);
> +
> + /* Set all the necessary GPE pins to special-function 0 */
> + for (gpio = S3C2410_GPE(5); gpio < end; gpio++) {
> + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
> + }
> +}
> +
> +void s3c2416_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)
> +{
> + unsigned int gpio;
> + unsigned int end;
> +
> + end = S3C2410_GPL(0 + width);
> +
> + /* Set all the necessary GPG pins to special-function 0 */
> + for (gpio = S3C2410_GPL(0); gpio < end; gpio++) {
> + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
> + }
> +
> + s3c_gpio_cfgpin(S3C2410_GPL(8), S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(S3C2410_GPL(8), S3C_GPIO_PULL_NONE);
> + s3c_gpio_cfgpin(S3C2410_GPL(9), S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(S3C2410_GPL(9), S3C_GPIO_PULL_NONE);
> +}
> +
> +
> diff --git a/arch/arm/mach-s3c2416/setup-sdhci.c b/arch/arm/mach-s3c2416/setup-sdhci.c
> new file mode 100644
> index 0000000..345ddd1
> --- /dev/null
> +++ b/arch/arm/mach-s3c2416/setup-sdhci.c
> @@ -0,0 +1,62 @@
> +/* linux/arch/arm/mach-s3c2416/setup-sdhci.c
> + *
> + * Copyright 2010 Promwad Innovation Company
> + * Yauhen Kharuzhy <yauhen.kharuzhy@promwad.com>
> + *
> + * S3C2416 - Helper functions for settign up SDHCI device(s) (HSMMC)
> + *
> + * Based on mach-s3c64xx/setup-sdhci.c
> + *
> + * 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/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 *s3c2416_hsmmc_clksrcs[4] = {
> + [0] = "hsmmc",
> + [1] = "hsmmc",
> + [2] = "hsmmc-if",
> + /* [3] = "48m", - note not successfully used yet */
> +};
> +
> +void s3c2416_setup_sdhci_cfg_card(struct platform_device *dev,
> + void __iomem *r,
> + struct mmc_ios *ios,
> + struct mmc_card *card)
> +{
> + u32 ctrl2, ctrl3;
> +
> + 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-samsung/include/plat/sdhci.h b/arch/arm/plat-samsung/include/plat/sdhci.h
> index 13f9fb2..d408140 100644
> --- a/arch/arm/plat-samsung/include/plat/sdhci.h
> +++ b/arch/arm/plat-samsung/include/plat/sdhci.h
> @@ -78,6 +78,8 @@ extern void s3c64xx_setup_sdhci2_cfg_gpio(struct platform_device *, int w);
> extern void s5pv210_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
> extern void s5pv210_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
> extern void s5pv210_setup_sdhci2_cfg_gpio(struct platform_device *, int w);
> +extern void s3c2416_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
> +extern void s3c2416_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
>
> /* S3C6400 SDHCI setup */
>
> @@ -270,6 +272,38 @@ static inline void s5pv210_default_sdhci1(void) { }
> static inline void s5pv210_default_sdhci2(void) { }
> #endif /* CONFIG_S5PC100_SETUP_SDHCI */
>
> +/* S3C2416 SDHCI setup */
> +#ifdef CONFIG_S3C2416_SETUP_SDHCI
> +extern char *s3c2416_hsmmc_clksrcs[4];
> +
> +extern void s3c2416_setup_sdhci_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 s3c2416_default_sdhci0(void)
> +{
> + s3c_hsmmc0_def_platdata.clocks = s3c2416_hsmmc_clksrcs;
> + s3c_hsmmc0_def_platdata.cfg_gpio = s3c2416_setup_sdhci0_cfg_gpio;
> + s3c_hsmmc0_def_platdata.cfg_card = s3c2416_setup_sdhci_cfg_card;
> +}
> +#else
> +static inline void s3c2416_default_sdhci0(void) { }
> +#endif /* CONFIG_S3C_DEV_HSMMC */
> +
> +#ifdef CONFIG_S3C_DEV_HSMMC1
> +static inline void s3c2416_default_sdhci1(void)
> +{
> + s3c_hsmmc1_def_platdata.clocks = s3c2416_hsmmc_clksrcs;
> + s3c_hsmmc1_def_platdata.cfg_gpio = s3c2416_setup_sdhci1_cfg_gpio;
> + s3c_hsmmc1_def_platdata.cfg_card = s3c2416_setup_sdhci_cfg_card;
> +}
> +#else
> +static inline void s3c2416_default_sdhci1(void) { }
> +#endif /* CONFIG_S3C_DEV_HSMMC1 */
> +
> +#endif /* CONFIG_S3C2416_SETUP_SDHCI */
>
>
>
>
--
Maurus Cuelenaere
WARNING: multiple messages have this Message-ID (diff)
From: mcuelenaere@gmail.com (Maurus Cuelenaere)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/4] ARM: S3C2416: Add platform helpers for setup SDHCI
Date: Tue, 22 Jun 2010 15:19:28 +0200 [thread overview]
Message-ID: <4C20B860.80308@gmail.com> (raw)
In-Reply-To: <1277212585-25605-5-git-send-email-jekhor@gmail.com>
Op 22-06-10 15:16, Yauhen Kharuzhy schreef:
> Samsung S3C2416 has two SDHCI controllers compatible with other
> Samsung's SoCs (S3C64XX, S5PC100 etc...).
>
> Add required platform setup code that the devices can be used with
> sdhci-s3c driver.
>
> Signed-off-by: Yauhen Kharuzhy <jekhor@gmail.com>
> ---
> arch/arm/mach-s3c2416/Kconfig | 23 ++++++++++
> arch/arm/mach-s3c2416/Makefile | 5 ++
> arch/arm/mach-s3c2416/s3c2416.c | 5 ++
> arch/arm/mach-s3c2416/setup-sdhci-gpio.c | 60 +++++++++++++++++++++++++++
> arch/arm/mach-s3c2416/setup-sdhci.c | 62 ++++++++++++++++++++++++++++
> arch/arm/plat-samsung/include/plat/sdhci.h | 34 +++++++++++++++
> 6 files changed, 189 insertions(+), 0 deletions(-)
> create mode 100644 arch/arm/mach-s3c2416/setup-sdhci-gpio.c
> create mode 100644 arch/arm/mach-s3c2416/setup-sdhci.c
>
> diff --git a/arch/arm/mach-s3c2416/Kconfig b/arch/arm/mach-s3c2416/Kconfig
> index eafb0ed..e055c7f 100644
> --- a/arch/arm/mach-s3c2416/Kconfig
> +++ b/arch/arm/mach-s3c2416/Kconfig
> @@ -25,6 +25,17 @@ config S3C2416_DMA
> help
> Internal config node for S3C2416 DMA support
>
> +config S3C2416_SETUP_SDHCI
> + bool
> + select S3C2416_SETUP_SDHCI_GPIO
> + help
> + Internal helper functions for S3C2416 based SDHCI systems
> +
> +config S3C2416_SETUP_SDHCI_GPIO
> + bool
> + help
> + Common setup code for SDHCI gpio.
> +
> menu "S3C2416 Machines"
>
> config MACH_SMDK2416
> @@ -36,7 +47,19 @@ config MACH_SMDK2416
> select S3C_DEV_HSMMC1
> select S3C_DEV_NAND
> select S3C_DEV_USB_HOST
> + select S3C2416_SETUP_SDHCI
> help
> Say Y here if you are using an SMDK2416
>
> +config MACH_HANLIN_V3C
> + bool "Hanlin eReader V3C"
> + select CPU_S3C2416
> + select S3C_DEV_HSMMC
> + select S3C_DEV_HSMMC1
> + select S3C_DEV_NAND
> + select S3C_DEV_USB_HOST
> + select S3C2416_SETUP_SDHCI
> + help
> + Say Y here if you are using an Jinke's Hanlin V3C eReader
> +
>
This seems to be unrelated to the patch?
> endmenu
> diff --git a/arch/arm/mach-s3c2416/Makefile b/arch/arm/mach-s3c2416/Makefile
> index 6c12c7b..678e148 100644
> --- a/arch/arm/mach-s3c2416/Makefile
> +++ b/arch/arm/mach-s3c2416/Makefile
> @@ -14,6 +14,11 @@ obj-$(CONFIG_CPU_S3C2416) += irq.o
>
> #obj-$(CONFIG_S3C2416_DMA) += dma.o
>
> +# Device setup
> +obj-$(CONFIG_S3C2416_SETUP_SDHCI) += setup-sdhci.o
> +obj-$(CONFIG_S3C2416_SETUP_SDHCI_GPIO) += setup-sdhci-gpio.o
> +
> # Machine support
>
> obj-$(CONFIG_MACH_SMDK2416) += mach-smdk2416.o
> +obj-$(CONFIG_MACH_HANLIN_V3C) += mach-v3c.o
> diff --git a/arch/arm/mach-s3c2416/s3c2416.c b/arch/arm/mach-s3c2416/s3c2416.c
> index 355ab62..06eacf8 100644
> --- a/arch/arm/mach-s3c2416/s3c2416.c
> +++ b/arch/arm/mach-s3c2416/s3c2416.c
> @@ -53,6 +53,7 @@
> #include <plat/s3c2416.h>
> #include <plat/devs.h>
> #include <plat/cpu.h>
> +#include <plat/sdhci.h>
>
> #include <plat/iic-core.h>
>
> @@ -115,6 +116,10 @@ void __init s3c2416_map_io(void)
> s3c24xx_gpiocfg_default.set_pull = s3c_gpio_setpull_updown;
> s3c24xx_gpiocfg_default.get_pull = s3c_gpio_getpull_updown;
>
> + /* initialize device information early */
> + s3c2416_default_sdhci0();
> + s3c2416_default_sdhci1();
> +
> iotable_init(s3c2416_iodesc, ARRAY_SIZE(s3c2416_iodesc));
> }
>
> diff --git a/arch/arm/mach-s3c2416/setup-sdhci-gpio.c b/arch/arm/mach-s3c2416/setup-sdhci-gpio.c
> new file mode 100644
> index 0000000..ebdab15
> --- /dev/null
> +++ b/arch/arm/mach-s3c2416/setup-sdhci-gpio.c
> @@ -0,0 +1,60 @@
> +/* linux/arch/arm/plat-s3c2416/setup-sdhci-gpio.c
> + *
> + * Copyright 2010 Promwad Innovation Company
> + * Yauhen Kharuzhy <yauhen.kharuzhy@promwad.com>
> + *
> + * S3C2416 - Helper functions for setting up SDHCI device(s) GPIO (HSMMC)
> + *
> + * Based on mach-s3c64xx/setup-sdhci-gpio.c
> + *
> + * 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 <mach/gpio.h>
> +#include <mach/regs-gpio.h>
> +#include <plat/gpio-cfg.h>
> +
> +/* Note: hsmmc1 and hsmmc0 are swapped versus datasheet */
> +
> +void s3c2416_setup_sdhci1_cfg_gpio(struct platform_device *dev, int width)
> +{
> + unsigned int gpio;
> + unsigned int end;
> +
> + end = S3C2410_GPE(7 + width);
> +
> + /* Set all the necessary GPE pins to special-function 0 */
> + for (gpio = S3C2410_GPE(5); gpio < end; gpio++) {
> + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
> + }
> +}
> +
> +void s3c2416_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)
> +{
> + unsigned int gpio;
> + unsigned int end;
> +
> + end = S3C2410_GPL(0 + width);
> +
> + /* Set all the necessary GPG pins to special-function 0 */
> + for (gpio = S3C2410_GPL(0); gpio < end; gpio++) {
> + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
> + }
> +
> + s3c_gpio_cfgpin(S3C2410_GPL(8), S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(S3C2410_GPL(8), S3C_GPIO_PULL_NONE);
> + s3c_gpio_cfgpin(S3C2410_GPL(9), S3C_GPIO_SFN(2));
> + s3c_gpio_setpull(S3C2410_GPL(9), S3C_GPIO_PULL_NONE);
> +}
> +
> +
> diff --git a/arch/arm/mach-s3c2416/setup-sdhci.c b/arch/arm/mach-s3c2416/setup-sdhci.c
> new file mode 100644
> index 0000000..345ddd1
> --- /dev/null
> +++ b/arch/arm/mach-s3c2416/setup-sdhci.c
> @@ -0,0 +1,62 @@
> +/* linux/arch/arm/mach-s3c2416/setup-sdhci.c
> + *
> + * Copyright 2010 Promwad Innovation Company
> + * Yauhen Kharuzhy <yauhen.kharuzhy@promwad.com>
> + *
> + * S3C2416 - Helper functions for settign up SDHCI device(s) (HSMMC)
> + *
> + * Based on mach-s3c64xx/setup-sdhci.c
> + *
> + * 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/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 *s3c2416_hsmmc_clksrcs[4] = {
> + [0] = "hsmmc",
> + [1] = "hsmmc",
> + [2] = "hsmmc-if",
> + /* [3] = "48m", - note not successfully used yet */
> +};
> +
> +void s3c2416_setup_sdhci_cfg_card(struct platform_device *dev,
> + void __iomem *r,
> + struct mmc_ios *ios,
> + struct mmc_card *card)
> +{
> + u32 ctrl2, ctrl3;
> +
> + 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-samsung/include/plat/sdhci.h b/arch/arm/plat-samsung/include/plat/sdhci.h
> index 13f9fb2..d408140 100644
> --- a/arch/arm/plat-samsung/include/plat/sdhci.h
> +++ b/arch/arm/plat-samsung/include/plat/sdhci.h
> @@ -78,6 +78,8 @@ extern void s3c64xx_setup_sdhci2_cfg_gpio(struct platform_device *, int w);
> extern void s5pv210_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
> extern void s5pv210_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
> extern void s5pv210_setup_sdhci2_cfg_gpio(struct platform_device *, int w);
> +extern void s3c2416_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
> +extern void s3c2416_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
>
> /* S3C6400 SDHCI setup */
>
> @@ -270,6 +272,38 @@ static inline void s5pv210_default_sdhci1(void) { }
> static inline void s5pv210_default_sdhci2(void) { }
> #endif /* CONFIG_S5PC100_SETUP_SDHCI */
>
> +/* S3C2416 SDHCI setup */
> +#ifdef CONFIG_S3C2416_SETUP_SDHCI
> +extern char *s3c2416_hsmmc_clksrcs[4];
> +
> +extern void s3c2416_setup_sdhci_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 s3c2416_default_sdhci0(void)
> +{
> + s3c_hsmmc0_def_platdata.clocks = s3c2416_hsmmc_clksrcs;
> + s3c_hsmmc0_def_platdata.cfg_gpio = s3c2416_setup_sdhci0_cfg_gpio;
> + s3c_hsmmc0_def_platdata.cfg_card = s3c2416_setup_sdhci_cfg_card;
> +}
> +#else
> +static inline void s3c2416_default_sdhci0(void) { }
> +#endif /* CONFIG_S3C_DEV_HSMMC */
> +
> +#ifdef CONFIG_S3C_DEV_HSMMC1
> +static inline void s3c2416_default_sdhci1(void)
> +{
> + s3c_hsmmc1_def_platdata.clocks = s3c2416_hsmmc_clksrcs;
> + s3c_hsmmc1_def_platdata.cfg_gpio = s3c2416_setup_sdhci1_cfg_gpio;
> + s3c_hsmmc1_def_platdata.cfg_card = s3c2416_setup_sdhci_cfg_card;
> +}
> +#else
> +static inline void s3c2416_default_sdhci1(void) { }
> +#endif /* CONFIG_S3C_DEV_HSMMC1 */
> +
> +#endif /* CONFIG_S3C2416_SETUP_SDHCI */
>
>
>
>
--
Maurus Cuelenaere
next prev parent reply other threads:[~2010-06-22 13:19 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-22 13:16 S3C2416 fixes (gpiolib, SDHCI, compilation without FB device) Yauhen Kharuzhy
2010-06-22 13:16 ` Yauhen Kharuzhy
2010-06-22 13:16 ` [PATCH 1/4] ARM: S3C24XX: Fix gpiolib support for ports K..M Yauhen Kharuzhy
2010-06-22 13:16 ` Yauhen Kharuzhy
2010-06-22 13:16 ` [PATCH 2/4] ARM: S3C2416: Set name of the framebuffer device only if it present Yauhen Kharuzhy
2010-06-22 13:16 ` Yauhen Kharuzhy
2010-06-22 13:16 ` [PATCH 3/4] ARM: S3C2416: Add clock definition for HSMMC1 Yauhen Kharuzhy
2010-06-22 13:16 ` Yauhen Kharuzhy
2010-06-22 13:16 ` [PATCH 4/4] ARM: S3C2416: Add platform helpers for setup SDHCI Yauhen Kharuzhy
2010-06-22 13:16 ` Yauhen Kharuzhy
2010-06-22 13:19 ` Maurus Cuelenaere [this message]
2010-06-22 13:19 ` Maurus Cuelenaere
2010-06-22 14:05 ` Yauhen Kharuzhy
2010-06-22 14:05 ` Yauhen Kharuzhy
2010-06-22 13:45 ` Darius Augulis
2010-06-22 13:45 ` Darius Augulis
2010-06-22 14:19 ` Yauhen Kharuzhy
2010-06-22 14:19 ` Yauhen Kharuzhy
2010-06-22 13:40 ` [PATCH 1/4] ARM: S3C24XX: Fix gpiolib support for ports K..M Vasily Khoruzhick
2010-06-22 13:40 ` Vasily Khoruzhick
2010-06-25 10:55 ` S3C2416 fixes (gpiolib, SDHCI, compilation without FB device) Darius Augulis
2010-06-25 10:55 ` Darius Augulis
2010-06-28 6:01 ` Marek Szyprowski
2010-06-28 6:01 ` Marek Szyprowski
2010-07-06 17:02 ` Darius Augulis
2010-07-06 17:02 ` Darius Augulis
2010-07-08 7:23 ` Marek Szyprowski
2010-07-08 7:23 ` Marek Szyprowski
2010-07-08 17:08 ` Darius Augulis
2010-07-08 17:08 ` Darius Augulis
2010-10-18 12:30 ` Kukjin Kim
2010-10-18 12:30 ` Kukjin Kim
2010-10-18 13:00 ` Darius Augulis
2010-10-18 13:00 ` Darius Augulis
2010-10-18 13:04 ` Kukjin Kim
2010-10-18 13:04 ` Kukjin Kim
2010-10-18 13:11 ` Darius Augulis
2010-10-18 13:11 ` Darius Augulis
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=4C20B860.80308@gmail.com \
--to=mcuelenaere@gmail.com \
--cc=anarsoul@gmail.com \
--cc=augulis.darius@gmail.com \
--cc=ben-linux@fluff.org \
--cc=jekhor@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
/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.