S3C2416 fixes (gpiolib, SDHCI, compilation without FB device)
Subsystems (3)
This patch series fixes SDHCI on S3C2416. I got SD card working with this patches and with patches for GPIO card detection support by Marek Szyprowski.
PATCH 1/4 ARM: S3C24XX: Fix gpiolib support for ports K..M
S3C2443 and S3C2416 has 12 GPIO banks (from A to M), increase ARCH_NR_GPIOS for this architectures.
Also typo from previous commit has been fixed: CONFIG_CPU_S3C24XX instead CONFIG_CPU_244X.
--- arch/arm/mach-s3c2410/include/mach/gpio.h | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-)
arch/arm/mach-s3c2410/include/mach/gpio.h +7 -3
@@ -22,6 +22,8 @@#ifdef CONFIG_CPU_S3C244X #define ARCH_NR_GPIOS (32 * 9 + CONFIG_S3C24XX_GPIO_EXTRA) +#elif defined(CONFIG_CPU_S3C2443 ) || defined(CONFIG_CPU_S3C2416 ) +#define ARCH_NR_GPIOS (32 * 12 + CONFIG_S3C24XX_GPIO_EXTRA)#else #define ARCH_NR_GPIOS (256 + CONFIG_S3C24XX_GPIO_EXTRA)#endif
@@ -30,8 +32,10 @@#include <mach/gpio-nrs.h> #include <mach/gpio-fns.h> -#ifdef CONFIG_CPU_S3C24XX -#define S3C_GPIO_END (S3C2410_GPIO_BANKJ + 32) +#ifdef CONFIG_CPU_S3C244X +#define S3C_GPIO_END (S3C2410_GPJ(0) + 32) +#elif defined(CONFIG_CPU_S3C2443 ) || defined(CONFIG_CPU_S3C2416 ) +#define S3C_GPIO_END (S3C2410_GPM(0) + 32)#else -#define S3C_GPIO_END (S3C2410_GPIO_BANKH + 32) +#define S3C_GPIO_END (S3C2410_GPH(0) + 32)#endif
Signature · 1 line
1.6.6.1
PATCH 2/4 ARM: S3C2416: Set name of the framebuffer device only if it present
Fix case when board doesn't have LCD connected and doesn't have corresponding platform device compiled.
--- arch/arm/mach-s3c2416/s3c2416.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
arch/arm/mach-s3c2416/s3c2416.c +2 -0
@@ -90,7 +90,9 @@ int __init s3c2416_init(void)s3c_i2c0_setname ("s3c2440-i2c" );s3c_i2c1_setname ("s3c2440-i2c" ); +#ifdef CONFIG_S3C_DEV_FB s3c_device_fb.name ="s3c2443-fb" ; +#endif return sysdev_register (&s3c2416_sysdev); }
Signature · 1 line
1.6.6.1
PATCH 3/4 ARM: S3C2416: Add clock definition for HSMMC1
Define clock for hsmmc1 device and register it.
--- .../mach-s3c2410/include/mach/regs-s3c2443-clock.h | 1 + arch/arm/mach-s3c2416/clock.c | 9 +++++++++ 2 files changed, 10 insertions(+), 0 deletions(-)
arch/arm/mach-s3c2410/include/mach/regs-s3c2443-clock.h +1 -0
@@ -86,6 +86,7 @@#define S3C2443_HCLKCON_LCDC (1<<9)#define S3C2443_HCLKCON_USBH (1<<11)#define S3C2443_HCLKCON_USBD (1<<12) +#define S3C2416_HCLKCON_HSMMC0 (1<<15)#define S3C2443_HCLKCON_HSMMC (1<<16)#define S3C2443_HCLKCON_CFC (1<<17)#define S3C2443_HCLKCON_SSMC (1<<18)
arch/arm/mach-s3c2416/clock.c +9 -0
@@ -93,6 +93,13 @@ static struct clksrc_clk hsmmc_mux[] = { }, }; +static struct clk hsmmc1_clk = { + .name ="hsmmc" , + .id =1 , + .parent = &clk_h, + .enable = s3c2443_clkcon_enable_h, + .ctrlbit =S3C2416_HCLKCON_HSMMC0 , +};static inline unsigned int s3c2416_fclk_div (unsigned long clkcon0) {
@@ -130,6 +137,8 @@ void __init s3c2416_init_clocks(int xtal)for (ptr =0 ; ptr <ARRAY_SIZE (clksrcs); ptr++)s3c_register_clksrc (clksrcs[ptr],1 ); +s3c24xx_register_clock (&hsmmc1_clk); +s3c_pwmclk_init (); }
Signature · 1 line
1.6.6.1
PATCH 4/4 ARM: S3C2416: Add platform helpers for setup SDHCI
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.
--- 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
arch/arm/mach-s3c2416/Kconfig +23 -0
@@ -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 + endmenu
arch/arm/mach-s3c2416/Makefile +5 -0
@@ -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
arch/arm/mach-s3c2416/s3c2416.c +5 -0
@@ -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)); }
arch/arm/mach-s3c2416/setup-sdhci-gpio.c new file +60 -0
60 lines not on this page · raw message
arch/arm/mach-s3c2416/setup-sdhci.c new file +62 -0
62 lines not on this page · raw message
arch/arm/plat-samsung/include/plat/sdhci.h +34 -0
@@ -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 */
Signature · 1 line
1.6.6.1
PATCH 4/4 ARM: S3C2416: Add platform helpers for setup SDHCI
Op 22-06-10 15:16, Yauhen Kharuzhy schreef:
Quoted 50 lines
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 <[email protected]>--- 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.carch/arm/mach-s3c2416/Kconfig +14
-0@@ -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"
arch/arm/mach-s3c2416/Kconfig config MACH_SMDK2416 · line 65
Quoted 10 lines
arch/arm/mach-s3c2416/Kconfig +9
-0+ 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?
Quoted 227 lines
endmenu
arch/arm/mach-s3c2416/Makefile +5
-0@@ -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.oarch/arm/mach-s3c2416/s3c2416.c +5
-0@@ -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)); }arch/arm/mach-s3c2416/setup-sdhci-gpio.c new file +60
-0@@ -0,0 +1,60 @@ +/* linux/arch/arm/plat-s3c2416/setup-sdhci-gpio.c +* +* Copyright 2010 Promwad Innovation Company +* Yauhen Kharuzhy <[email protected]> +* +* 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 ); +} + +arch/arm/mach-s3c2416/setup-sdhci.c new file +62
-0@@ -0,0 +1,62 @@ +/* linux/arch/arm/mach-s3c2416/setup-sdhci.c +* +* Copyright 2010 Promwad Innovation Company +* Yauhen Kharuzhy <[email protected]> +* +* 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 ); +} +arch/arm/plat-samsung/include/plat/sdhci.h +34
-0@@ -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 */
Signature · 1 line
Maurus Cuelenaere
PATCH 4/4 ARM: S3C2416: Add platform helpers for setup SDHCI
Quoted 49 lines · Maurus Cuelenaere
Op 22-06-10 15:16, Yauhen Kharuzhy schreef:
Quoted 48 lines
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 <[email protected]>--- 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.carch/arm/mach-s3c2416/Kconfig +12
-0@@ -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
Quoted 14 lines
arch/arm/mach-s3c2416/Kconfig config MACH_SMDK2416
Quoted 12 lines
arch/arm/mach-s3c2416/Kconfig +11
-0+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?
I am sorry, will resend.
Quoted 2 lines
Quoted 2 lines
endmenu
Signature · 5 lines
Yauhen Kharuzhy jekhor _at_ gmail.com JID: jek at jabber.ru A: No Q: Should I quote below my post?
PATCH 4/4 ARM: S3C2416: Add platform helpers for setup SDHCI
In reply to Yauhen KharuzhyQuoted 126 lines · Yauhen Kharuzhy
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 <[email protected]>--- 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.carch/arm/mach-s3c2416/Kconfig +23
-0@@ -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 + endmenuarch/arm/mach-s3c2416/Makefile +5
-0@@ -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.oarch/arm/mach-s3c2416/s3c2416.c +5
-0@@ -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)); }arch/arm/mach-s3c2416/setup-sdhci-gpio.c new file +15
-0@@ -0,0 +1,60 @@ +/* linux/arch/arm/plat-s3c2416/setup-sdhci-gpio.c +* +* Copyright 2010 Promwad Innovation Company +* Yauhen Kharuzhy <[email protected]> +* +* 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>
arch/arm/mach-s3c2416/setup-sdhci-gpio.c line 25
Quoted 10 lines
arch/arm/mach-s3c2416/setup-sdhci-gpio.c new file +10
-0+#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 */
would be nice to provide more accurate link to information source (document version, page).
And there is a bit tricky place: clock ids are swapped and names of helper functions are not.
So, it's not clear which helper function corresponds to real physical SDHC interface.
+
Quoted 133 lines
arch/arm/mach-s3c2416/setup-sdhci-gpio.c new file +34
-0+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 ); +} + +arch/arm/mach-s3c2416/setup-sdhci.c new file +62
-0@@ -0,0 +1,62 @@ +/* linux/arch/arm/mach-s3c2416/setup-sdhci.c +* +* Copyright 2010 Promwad Innovation Company +* Yauhen Kharuzhy <[email protected]> +* +* 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 ); +} +arch/arm/plat-samsung/include/plat/sdhci.h +0
-0@@ -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 *, intw);
+extern voids3c2416_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
+extern voids3c2416_setup_sdhci1_cfg_gpio(struct platform_device *, int w);/* S3C6400 SDHCI setup */
arch/arm/plat-samsung/include/plat/sdhci.h +6
-0@@ -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,
arch/arm/plat-samsung/include/plat/sdhci.h static inline void s5pv210_default_sdhci1(void) { } · line 290
Quoted 10 lines
arch/arm/plat-samsung/include/plat/sdhci.h +9
-0+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;
helper id 0 gets to interface 0 - not swapped.
arch/arm/plat-samsung/include/plat/sdhci.h static inline void s5pv210_default_sdhci1(void) { } · line 307
Quoted 12 lines
arch/arm/plat-samsung/include/plat/sdhci.h +11
-0+} +#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;
helper id 1 gets to interface 1 - not swapped.
Quoted 10 lines
arch/arm/plat-samsung/include/plat/sdhci.h +6
-1+} +#else +static inline void s3c2416_default_sdhci1 (void ) { } +#endif /* CONFIG_S3C_DEV_HSMMC1 */ + +#endif /* CONFIG_S3C2416_SETUP_SDHCI */ --
Quoted 3 lines
1.6.6.1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20100622/797d796b/attachment-0001.html>
PATCH 4/4 ARM: S3C2416: Add platform helpers for setup SDHCI
Quoted 137 lines · Darius Augulis
Quoted 135 lines · Yauhen Kharuzhy
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 <[email protected]>--- 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.carch/arm/mach-s3c2416/Kconfig +23
-0@@ -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 + endmenuarch/arm/mach-s3c2416/Makefile +5
-0@@ -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.oarch/arm/mach-s3c2416/s3c2416.c +5
-0@@ -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)); }arch/arm/mach-s3c2416/setup-sdhci-gpio.c new file +25
-0@@ -0,0 +1,60 @@ +/* linux/arch/arm/plat-s3c2416/setup-sdhci-gpio.c +* +* Copyright 2010 Promwad Innovation Company +* Yauhen Kharuzhy <[email protected]> +* +* 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 */
Quoted 8 lines
Quoted 1 line
would be nice to provide more accurate link to information source (document version, page).
And there is a bit tricky place: clock ids are swapped and names of helper functions are not.
So, it's not clear which helper function corresponds to real physical SDHC interface.
S3C2416 User's Manual, pages 238 (10-4) and 241 (10-7): GPE5-GPE10 correspond to SD0, GPL0-GPL3, GPL8-GPL9 --- to SD1. So all platform devices and GPIO config functions have namas swapped versus datasheet.
We have HSMMC1 and HSMMC0 swapped due to historical reasons --- there are HSMMC block in S3C2443 and HSMMC1 block in S3C2416 on same address. I am going to revert this swapping later.
Quoted 176 lines
Quoted 133 lines
arch/arm/mach-s3c2416/setup-sdhci-gpio.c new file +34
-0+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 ); +} + +arch/arm/mach-s3c2416/setup-sdhci.c new file +62
-0@@ -0,0 +1,62 @@ +/* linux/arch/arm/mach-s3c2416/setup-sdhci.c +* +* Copyright 2010 Promwad Innovation Company +* Yauhen Kharuzhy <[email protected]> +* +* 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 ); +} +arch/arm/plat-samsung/include/plat/sdhci.h +0
-0@@ -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 *, intw);
+extern voids3c2416_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
+extern voids3c2416_setup_sdhci1_cfg_gpio(struct platform_device *, int w);/* S3C6400 SDHCI setup */
arch/arm/plat-samsung/include/plat/sdhci.h +6
-0@@ -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,arch/arm/plat-samsung/include/plat/sdhci.h static inline void s5pv210_default_sdhci1(void) { } · line 290
Quoted 10 lines
arch/arm/plat-samsung/include/plat/sdhci.h +9
-0+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;helper id 0 gets to interface 0 - not swapped.
arch/arm/plat-samsung/include/plat/sdhci.h static inline void s5pv210_default_sdhci1(void) { } · line 307
Quoted 12 lines
arch/arm/plat-samsung/include/plat/sdhci.h +11
-0+} +#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;helper id 1 gets to interface 1 - not swapped.
Quoted 13 lines
arch/arm/plat-samsung/include/plat/sdhci.h +6
-1+} +#else +static inline void s3c2416_default_sdhci1 (void ) { } +#endif /* CONFIG_S3C_DEV_HSMMC1 */ + +#endif /* CONFIG_S3C2416_SETUP_SDHCI */ --1.6.6.1
Signature · 5 lines
Yauhen Kharuzhy jekhor _at_ gmail.com JID: jek at jabber.ru A: No Q: Should I quote below my post?
PATCH 1/4 ARM: S3C24XX: Fix gpiolib support for ports K..M
In reply to Yauhen Kharuzhy? ????????? ?? 22 ???? 2010 16:16:22 ????? Yauhen Kharuzhy ???????:
Quoted 7 lines
S3C2443 and S3C2416 has 12 GPIO banks (from A to M), increase
ARCH_NR_GPIOSfor this architectures.Also typo from previous commit has been fixed:
CONFIG_CPU_S3C24XXinsteadCONFIG_CPU_244X.Signed-off-by Yauhen Kharuzhy <[email protected]>
Quoted 21 lines
--- arch/arm/mach-s3c2410/include/mach/gpio.h | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-)(quoted diff) +0
-0
b/arch/arm/mach-s3c2410/include/mach/gpio.hindex b649bf2..f7f6b07 100644arch/arm/mach-s3c2410/include/mach/gpio.h +2
-0@@ -22,6 +22,8 @@#ifdef CONFIG_CPU_S3C244X #define ARCH_NR_GPIOS (32 * 9 + CONFIG_S3C24XX_GPIO_EXTRA) +#elif defined(CONFIG_CPU_S3C2443 ) || defined(CONFIG_CPU_S3C2416 ) +#define ARCH_NR_GPIOS (32 * 12 + CONFIG_S3C24XX_GPIO_EXTRA)#else #define ARCH_NR_GPIOS (256 + CONFIG_S3C24XX_GPIO_EXTRA)#endif @@ -30,8 +32,10 @@#include <mach/gpio-nrs.h> #include <mach/gpio-fns.h>
arch/arm/mach-s3c2410/include/mach/gpio.h line 41
Quoted 10 lines
arch/arm/mach-s3c2410/include/mach/gpio.h +5
-3-#ifdef CONFIG_CPU_S3C24XX -#define S3C_GPIO_END (S3C2410_GPIO_BANKJ + 32) +#ifdef CONFIG_CPU_S3C244X +#define S3C_GPIO_END (S3C2410_GPJ(0) + 32) +#elif defined(CONFIG_CPU_S3C2443 ) || defined(CONFIG_CPU_S3C2416 ) +#define S3C_GPIO_END (S3C2410_GPM(0) + 32)#else -#define S3C_GPIO_END (S3C2410_GPIO_BANKH + 32) +#define S3C_GPIO_END (S3C2410_GPH(0) + 32)#endif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20100622/88d38f5a/attachment.sig>
Quoted 3 lines · Yauhen Kharuzhy
This patch series fixes SDHCI on S3C2416. I got SD card working with this patches and with patches for GPIO card detection support by Marek Szyprowski.
Unfortunately I did not get SD card working with these patches. I'm using custom board, not SMDK2416, but SD slot connection and schematics are the same like in SMDK2416. I've tried to debug a bit this problem and this is what I got: kernel do detection of card insert/remove, driver prints messages:
s3c-sdhci s3c-sdhci.1: card inserted.
s3c-sdhci s3c-sdhci.1: card removed.
Then I put some printk in s3c-sdhci driver and MMC core and found that mmc_rescan() is called only once at startup and no more when inserting/removing SD card. Also mmc_rescan() stops at that point where mmc_power_up() is called and does not return. And mmc_power_up() stops where mmc_delay(10) is called and does not return too.
Every time when inserting/removing SD card only functions sdhci_tasklet_card() and mmc_detect_change() are called, and nothing happens. Kernel doesn't detect the card inserted.
Maybe this info could help to debug where the problem is - in my custom board or in your patches?
Darius.
Hello,
Quoted 15 lines · Darius Augulis
Quoted 1 line · Yauhen Kharuzhy
This patch series fixes SDHCI on S3C2416. I got SD card working with this
patches
Quoted 2 lines
and with patches for GPIO card detection support by Marek Szyprowski.
Unfortunately I did not get SD card working with these patches. I'm using custom board, not SMDK2416, but SD slot connection and schematics are the same like in SMDK2416. I've tried to debug a bit this problem and this is what I got: kernel do detection of card insert/remove, driver prints messages:
s3c-sdhci s3c-sdhci.1: card inserted.
s3c-sdhci s3c-sdhci.1: card removed.
Quoted 10 lines
Then I put some printk in s3c-sdhci driver and MMC core and found that
mmc_rescan()is called only once at startup and no more when inserting/removing SD card. Alsommc_rescan()stops at that point wheremmc_power_up()is called and does not return. Andmmc_power_up()stops wheremmc_delay(10)is called and does not return too.
Every time when inserting/removing SD card only functionssdhci_tasklet_card()andmmc_detect_change()are called, and nothing happens. Kernel doesn't detect the card inserted.
Maybe this info could help to debug where the problem is - in my custom board or in your patches?
Have you tried with polled card detection method (SDHCI_CD_NONE)? If it doesn't work I suspect something with the hardware. Checking with mmc debug enabled might also help figuring this issue out.
Best regards
--
Marek Szyprowski
Samsung Poland R&D Center
Hi,
Quoted 30 lines · Marek Szyprowski
Hello,
Quoted 15 lines · Darius Augulis
Quoted 1 line · Yauhen Kharuzhy
This patch series fixes SDHCI on S3C2416. I got SD card working with this
patches
Quoted 2 lines
and with patches for GPIO card detection support by Marek Szyprowski.
Unfortunately I did not get SD card working with these patches. I'm using custom board, not SMDK2416, but SD slot connection and schematics are the same like in SMDK2416. I've tried to debug a bit this problem and this is what I got: kernel do detection of card insert/remove, driver prints messages:
s3c-sdhci s3c-sdhci.1: card inserted.
s3c-sdhci s3c-sdhci.1: card removed.Quoted 10 lines
Then I put some printk in s3c-sdhci driver and MMC core and found that
mmc_rescan()is called only once at startup and no more when inserting/removing SD card. Alsommc_rescan()stops at that point wheremmc_power_up()is called and does not return. Andmmc_power_up()stops wheremmc_delay(10)is called and does not return too.
Every time when inserting/removing SD card only functionssdhci_tasklet_card()andmmc_detect_change()are called, and nothing happens. Kernel doesn't detect the card inserted.
Maybe this info could help to debug where the problem is - in my custom board or in your patches?
Quoted 3 lines
Have you tried with polled card detection method (
SDHCI_CD_NONE)? If it doesn't work I suspect something with the hardware. Checking with mmc debug enabled might also help figuring this issue out.
yes, I've tried that, but didn't get sd card working. I got schematics from China manufacturer, SD card connection is the same like in smdk2416. with mmc debug enabled I found that SD card is detected when inserted or removed, but after detection card initialisation is not performed.
Darius.
Quoted 7 lines
Best regards
--
Marek Szyprowski
Samsung Poland R&D Center
Hello,
Quoted 34 lines · Darius Augulis
Quoted 6 lines · Marek Szyprowski
Hello,
Quoted 2 lines · Darius Augulis
Quoted 1 line · Yauhen Kharuzhy
This patch series fixes SDHCI on S3C2416. I got SD card working with
this
Quoted 24 lines
Quoted 13 lines
patches
Quoted 2 lines
and with patches for GPIO card detection support by Marek Szyprowski.
Unfortunately I did not get SD card working with these patches. I'm using custom board, not SMDK2416, but SD slot connection and schematics are the same like in SMDK2416. I've tried to debug a bit this problem and this is what I got: kernel do detection of card insert/remove, driver prints messages:
s3c-sdhci s3c-sdhci.1: card inserted.
s3c-sdhci s3c-sdhci.1: card removed.Quoted 10 lines
Then I put some printk in s3c-sdhci driver and MMC core and found that
mmc_rescan()is called only once at startup and no more when inserting/removing SD card. Alsommc_rescan()stops at that point wheremmc_power_up()is called and does not return. Andmmc_power_up()stops wheremmc_delay(10)is called and does not return too.
Every time when inserting/removing SD card only functionssdhci_tasklet_card()andmmc_detect_change()are called, and nothing happens. Kernel doesn't detect the card inserted.
Maybe this info could help to debug where the problem is - in my custom board or in your patches?Quoted 2 lines
Have you tried with polled card detection method (
SDHCI_CD_NONE)? If it doesn't work I suspect something with the hardware. Checking with mmc
Quoted 8 lines
debug
Quoted 1 line
enabled might also help figuring this issue out.
yes, I've tried that, but didn't get sd card working. I got schematics from China manufacturer, SD card connection is the same like in smdk2416. with mmc debug enabled I found that SD card is detected when inserted or removed, but after detection card initialisation is not performed.
Does it work without my patches or with other Linux kernel? You can try to check the custom Linux 2.6.29 fromgit://git.kernel.org/pub/scm/linux/kernel/git/kki_ap/linux-2.6-samsung.git
I would like to know whether my patches cause the problem or there is some kind of hardware issue with your board.
Best regards
--
Marek Szyprowski
Samsung Poland R&D Center
Quoted 47 lines · Marek Szyprowski
Hello,
Quoted 34 lines · Darius Augulis
Quoted 6 lines · Marek Szyprowski
Hello,
Quoted 2 lines · Darius Augulis
Quoted 1 line · Yauhen Kharuzhy
This patch series fixes SDHCI on S3C2416. I got SD card working with
this
Quoted 24 lines
Quoted 13 lines
patches
Quoted 2 lines
and with patches for GPIO card detection support by Marek Szyprowski.
Unfortunately I did not get SD card working with these patches. I'm using custom board, not SMDK2416, but SD slot connection and schematics are the same like in SMDK2416. I've tried to debug a bit this problem and this is what I got: kernel do detection of card insert/remove, driver prints messages:
s3c-sdhci s3c-sdhci.1: card inserted.
s3c-sdhci s3c-sdhci.1: card removed.Quoted 10 lines
Then I put some printk in s3c-sdhci driver and MMC core and found that
mmc_rescan()is called only once at startup and no more when inserting/removing SD card. Alsommc_rescan()stops at that point wheremmc_power_up()is called and does not return. Andmmc_power_up()stops wheremmc_delay(10)is called and does not return too.
Every time when inserting/removing SD card only functionssdhci_tasklet_card()andmmc_detect_change()are called, and nothing happens. Kernel doesn't detect the card inserted.
Maybe this info could help to debug where the problem is - in my custom board or in your patches?Quoted 2 lines
Have you tried with polled card detection method (
SDHCI_CD_NONE)? If it doesn't work I suspect something with the hardware. Checking with mmcQuoted 8 lines
debug
Quoted 1 line
enabled might also help figuring this issue out.
yes, I've tried that, but didn't get sd card working. I got schematics from China manufacturer, SD card connection is the same like in smdk2416. with mmc debug enabled I found that SD card is detected when inserted or removed, but after detection card initialisation is not performed.
Quoted 3 lines
Does it work without my patches or with other Linux kernel? You can try to check the custom Linux 2.6.29 from
git://git.kernel.org/pub/scm/linux/kernel/git/kki_ap/linux-2.6-samsung.git
I did try with and without your patches. First, I applied only s3c2416 realated patches from Yauhen, then I've added your patches, but nothing changed.
Quoted 9 lines
I would like to know whether my patches cause the problem or there is some kind of hardware issue with your board.
Best regards
--
Marek Szyprowski
Samsung Poland R&D Center
Quoted 9 lines · Darius Augulis
Quoted 7 lines · Marek Szyprowski
Hello,
Quoted 3 lines · Darius Augulis
Quoted 2 lines · Marek Szyprowski
Hello,
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 4 lines · Darius Augulis
Quoted 3 lines · Yauhen Kharuzhy
Quoted 1 line
This patch series fixes SDHCI on S3C2416. I got SD card working with
this
Quoted 2 lines
Quoted 2 lines
patches
Quoted 1 line
and with patches for GPIO card detection support by Marek
Szyprowski.
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 1 line
Unfortunately I did not get SD card working with these patches. I'm using custom board, not SMDK2416, but SD slot connection and
schematics
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
are the same like in SMDK2416. I've tried to debug a bit this problem and this is what I got: kernel do detection of card insert/remove, driver prints messages:
s3c-sdhci s3c-sdhci.1: card inserted.
s3c-sdhci s3c-sdhci.1: card removed.Then I put some printk in s3c-sdhci driver and MMC core and found
that
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
mmc_rescan()is called only once at startup and no more when inserting/removing SD card. Alsommc_rescan()stops at that point
where
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
mmc_power_up()is called and does not return. Andmmc_power_up()
stops
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
where
mmc_delay(10)is called and does not return too. Every time when inserting/removing SD card only functionssdhci_tasklet_card()andmmc_detect_change()are called, and nothing happens. Kernel doesn't detect the card inserted.
Maybe this info could help to debug where the problem is - in my
custom
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 1 line
board or in your patches?
Have you tried with polled card detection method (
SDHCI_CD_NONE)? If
it
Quoted 11 lines
Quoted 11 lines
Quoted 9 lines
Quoted 1 line
doesn't work I suspect something with the hardware. Checking with mmc
debug
Quoted 1 line
enabled might also help figuring this issue out.
yes, I've tried that, but didn't get sd card working. I got schematics from China manufacturer, SD card connection is the same like in smdk2416. with mmc debug enabled I found that SD card is detected when inserted or removed, but after detection card initialisation is not performed.
Does it work without my patches or with other Linux kernel? You can try
to
Quoted 2 lines
Quoted 2 lines
check the custom Linux 2.6.29 from
git://git.kernel.org/pub/scm/linux/kernel/git/kki_ap/linux-2.6-samsung.git
Quoted 7 lines
I did try with and without your patches. First, I applied only s3c2416 realated patches from Yauhen, then I've added your patches, but nothing changed.
Quoted 2 lines
I would like to know whether my patches cause the problem or there is
some
Quoted 2 lines
Quoted 2 lines
kind of hardware issue with your board.
Hi Darius,
Was there any progress about above issue?
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
Hi,
actually, no. I moved my work from S3C24xx to S3C64xx and didn't test it anymore.
Regards,
Darius
Quoted 86 lines · Kukjin Kim
Quoted 9 lines · Darius Augulis
Quoted 7 lines · Marek Szyprowski
Hello,
Quoted 3 lines · Darius Augulis
Quoted 2 lines · Marek Szyprowski
Hello,
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 4 lines · Darius Augulis
Quoted 3 lines · Yauhen Kharuzhy
Quoted 1 line
This patch series fixes SDHCI on S3C2416. I got SD card working with
this
Quoted 2 lines
Quoted 2 lines
patches
Quoted 1 line
and with patches for GPIO card detection support by Marek
Szyprowski.
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 1 line
Unfortunately I did not get SD card working with these patches. I'm using custom board, not SMDK2416, but SD slot connection and
schematics
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
are the same like in SMDK2416. I've tried to debug a bit this problem and this is what I got: kernel do detection of card insert/remove, driver prints messages:
s3c-sdhci s3c-sdhci.1: card inserted.
s3c-sdhci s3c-sdhci.1: card removed.Then I put some printk in s3c-sdhci driver and MMC core and found
that
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
mmc_rescan()is called only once at startup and no more when inserting/removing SD card. Alsommc_rescan()stops at that pointwhere
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
mmc_power_up()is called and does not return. Andmmc_power_up()stops
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
where
mmc_delay(10)is called and does not return too. Every time when inserting/removing SD card only functionssdhci_tasklet_card()andmmc_detect_change()are called, and nothing happens. Kernel doesn't detect the card inserted.
Maybe this info could help to debug where the problem is - in mycustom
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 1 line
board or in your patches?
Have you tried with polled card detection method (
SDHCI_CD_NONE)? Ifit
Quoted 11 lines
Quoted 11 lines
Quoted 9 lines
Quoted 1 line
doesn't work I suspect something with the hardware. Checking with mmc
debug
Quoted 1 line
enabled might also help figuring this issue out.
yes, I've tried that, but didn't get sd card working. I got schematics from China manufacturer, SD card connection is the same like in smdk2416. with mmc debug enabled I found that SD card is detected when inserted or removed, but after detection card initialisation is not performed.
Does it work without my patches or with other Linux kernel? You can try
to
Quoted 2 lines
Quoted 2 lines
check the custom Linux 2.6.29 from
git://git.kernel.org/pub/scm/linux/kernel/git/kki_ap/linux-2.6-samsung.gitQuoted 7 lines
I did try with and without your patches. First, I applied only s3c2416 realated patches from Yauhen, then I've added your patches, but nothing changed.
Quoted 2 lines
I would like to know whether my patches cause the problem or there is
some
Quoted 2 lines
Quoted 2 lines
kind of hardware issue with your board.
Hi Darius,
Was there any progress about above issue?
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
Quoted 6 lines · Darius Augulis
Hi,
actually, no. I moved my work from S3C24xx to S3C64xx and didn't test it anymore.
Oh, ok...maybe mini6410 and real6410? ;-)
...I didn't get S3C24XX stuff in my mailbox...so missed it. Anyway ok...will sort it out soon.
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
Quoted 8 lines · Kukjin Kim
Quoted 6 lines · Darius Augulis
Hi,
actually, no. I moved my work from S3C24xx to S3C64xx and didn't test it anymore.
Oh, ok...maybe mini6410 and real6410? ;-)
yes. while talking about this - what is state of my s3c64xx patches for next? are you going to merge them or Ben should do this?
Quoted 13 lines
...I didn't get S3C24XX stuff in my mailbox...so missed it. Anyway ok...will sort it out soon.
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.