Add support HSMMC on Samsung SMDKV210
Subsystems (3)
PATCH v2 1/1 Add support HSMMC on Samsung SMDKV210
This patch adds support hsmmc on SMDKV210.
Changes since v1:
- Fixed wrong pin name in comments
- Adding missed call s5pv210_default_sdhci3() in s5pv210_map_io()
- Minor coding style fixes
[PATCH v2 1/2] ARM: SAMSUNG: Add device definition for HSMMC3 [PATCH v2 2/2] ARM: S5PV210: Add support HSMMC on SMDKV210
PATCH v2 1/2 ARM: SAMSUNG: Add device definition for HSMMC3
From: Hyuk Lee <[email protected]>
This patch adds hsmmc3 device definition in plat-samsung. Because now S5PV210 can support 4 hsmmc such as hsmmc0, hsmmc1, hsmmc2 and hsmmc3 and that can be used in further Samsung SoCs.
---
Changes since previous patch:
- coding style fixes
arch/arm/plat-samsung/Kconfig | 5 ++ arch/arm/plat-samsung/Makefile | 1 + arch/arm/plat-samsung/dev-hsmmc3.c | 72 ++++++++++++++++++++++++++++ arch/arm/plat-samsung/include/plat/devs.h | 1 + arch/arm/plat-samsung/include/plat/sdhci.h | 15 ++++++ 5 files changed, 94 insertions(+), 0 deletions(-) create mode 100644 arch/arm/plat-samsung/dev-hsmmc3.c
arch/arm/plat-samsung/Kconfig +5 -0
@@ -160,6 +160,11 @@ config S3C_DEV_HSMMC2 help Compile in platform device definitions for HSMMC channel 2 +config S3C_DEV_HSMMC3 + bool + help + Compile in platform device definitions for HSMMC channel 3 + config S3C_DEV_HWMON bool help
arch/arm/plat-samsung/Makefile +1 -0
@@ -33,6 +33,7 @@ obj-$(CONFIG_S3C_ADC) += adc.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-$(CONFIG_S3C_DEV_HSMMC3) += dev-hsmmc3.o obj-$(CONFIG_S3C_DEV_HWMON) += dev-hwmon.o obj-y += dev-i2c0.o obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o
arch/arm/plat-samsung/dev-hsmmc3.c new file +72 -0
72 lines not on this page · raw message
arch/arm/plat-samsung/include/plat/devs.h +1 -0
@@ -54,6 +54,7 @@ extern struct platform_device s3c_device_hwmon;extern struct platform_device s3c_device_hsmmc0;extern struct platform_device s3c_device_hsmmc1;extern struct platform_device s3c_device_hsmmc2; +extern struct platform_device s3c_device_hsmmc3;extern struct platform_device s3c_device_spi0;extern struct platform_device s3c_device_spi1;
arch/arm/plat-samsung/include/plat/sdhci.h +15 -0
@@ -58,6 +58,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); +extern void s3c_sdhci3_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.
@@ -66,6 +67,7 @@ extern void s3c_sdhci2_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; +extern struct s3c_sdhci_platdata s3c_hsmmc3_def_platdata;/* Helper function availablity */
@@ -78,6 +80,7 @@ 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 s5pv210_setup_sdhci3_cfg_gpio (struct platform_device *,int w);/* S3C6400 SDHCI setup */
@@ -264,10 +267,22 @@ static inline void s5pv210_default_sdhci2(void)static inline void s5pv210_default_sdhci2 (void ) { }#endif /* CONFIG_S3C_DEV_HSMMC2 */ +#ifdef CONFIG_S3C_DEV_HSMMC3 +static inline void s5pv210_default_sdhci3 (void ) +{ + s3c_hsmmc3_def_platdata.clocks = s5pv210_hsmmc_clksrcs; + s3c_hsmmc3_def_platdata.cfg_gpio = s5pv210_setup_sdhci3_cfg_gpio; + s3c_hsmmc3_def_platdata.cfg_card = s5pv210_setup_sdhci_cfg_card; +} +#else +static inline void s5pv210_default_sdhci3 (void ) { } +#endif /* CONFIG_S3C_DEV_HSMMC3 */ +#else static inline void s5pv210_default_sdhci0 (void ) { }static inline void s5pv210_default_sdhci1 (void ) { }static inline void s5pv210_default_sdhci2 (void ) { } +static inline void s5pv210_default_sdhci3 (void ) { }#endif /* CONFIG_S5PC100_SETUP_SDHCI */
Signature · 1 line
1.6.2.5
PATCH v2 1/2 ARM: SAMSUNG: Add device definition for HSMMC3
Op 03-07-10 02:07, Kukjin Kim schreef:
Quoted 160 lines
From: Hyuk Lee <[email protected]>
This patch adds hsmmc3 device definition in plat-samsung. Because now S5PV210 can support 4 hsmmc such as hsmmc0, hsmmc1, hsmmc2 and hsmmc3 and that can be used in further Samsung SoCs.
Signed-off-by Hyuk Lee <[email protected]>Signed-off-by Kukjin Kim <[email protected]>---
Changes since previous patch:- coding style fixes
arch/arm/plat-samsung/Kconfig | 5 ++ arch/arm/plat-samsung/Makefile | 1 + arch/arm/plat-samsung/dev-hsmmc3.c | 72 ++++++++++++++++++++++++++++ arch/arm/plat-samsung/include/plat/devs.h | 1 + arch/arm/plat-samsung/include/plat/sdhci.h | 15 ++++++ 5 files changed, 94 insertions(+), 0 deletions(-) create mode 100644 arch/arm/plat-samsung/dev-hsmmc3.carch/arm/plat-samsung/Kconfig +5
-0@@ -160,6 +160,11 @@ config S3C_DEV_HSMMC2 help Compile in platform device definitions for HSMMC channel 2 +config S3C_DEV_HSMMC3 + bool + help + Compile in platform device definitions for HSMMC channel 3 + config S3C_DEV_HWMON bool helparch/arm/plat-samsung/Makefile +1
-0@@ -33,6 +33,7 @@ obj-$(CONFIG_S3C_ADC) += adc.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-$(CONFIG_S3C_DEV_HSMMC3) += dev-hsmmc3.o obj-$(CONFIG_S3C_DEV_HWMON) += dev-hwmon.o obj-y += dev-i2c0.o obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.oarch/arm/plat-samsung/dev-hsmmc3.c new file +72
-0@@ -0,0 +1,72 @@ +/* linux/arch/arm/plat-samsung/dev-hsmmc3.c +* +* Copyright (c) 2010 Samsung Electronics Co., Ltd. +* http://www.samsung.com +* +* Copyright (c) 2008 Simtec Electronics +* Ben Dooks <[email protected]> +* http://armlinux.simtec.co.uk/ +* +* Based on arch/arm/plat-samsung/dev-hsmmc1.c +* +* Samsung device definition for hsmmc device 3 +* +* 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_hsmmc3_resource[] = { + [0 ] = { + .start =S3C_PA_HSMMC3 , + .end =S3C_PA_HSMMC3 +S3C_SZ_HSMMC -1 , + .flags =IORESOURCE_MEM , + }, + [1 ] = { + .start =IRQ_MMC3 , + .end =IRQ_MMC3 , + .flags =IORESOURCE_IRQ , + } +}; + +static u64 s3c_device_hsmmc3_dmamask =0xffffffffUL ; + +struct s3c_sdhci_platdata s3c_hsmmc3_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_hsmmc3 = { + .name ="s3c-sdhci" , + .id =3 , + .num_resources =ARRAY_SIZE (s3c_hsmmc3_resource), + .resource = s3c_hsmmc3_resource, + .dev = { + .dma_mask = &s3c_device_hsmmc3_dmamask, + .coherent_dma_mask =0xffffffffUL , + .platform_data = &s3c_hsmmc3_def_platdata, + }, +}; + +void s3c_sdhci3_set_platdata (struct s3c_sdhci_platdata *pd) +{ +struct s3c_sdhci_platdata *set = &s3c_hsmmc3_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; +}arch/arm/plat-samsung/include/plat/devs.h +1
-0@@ -54,6 +54,7 @@ extern struct platform_device s3c_device_hwmon;extern struct platform_device s3c_device_hsmmc0;extern struct platform_device s3c_device_hsmmc1;extern struct platform_device s3c_device_hsmmc2; +extern struct platform_device s3c_device_hsmmc3;extern struct platform_device s3c_device_spi0;extern struct platform_device s3c_device_spi1;arch/arm/plat-samsung/include/plat/sdhci.h +2
-0@@ -58,6 +58,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); +extern void s3c_sdhci3_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. @@ -66,6 +67,7 @@ extern void s3c_sdhci2_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; +extern struct s3c_sdhci_platdata s3c_hsmmc3_def_platdata;/* Helper function availablity */
arch/arm/plat-samsung/include/plat/sdhci.h extern void s3c64xx_setup_sdhci2_cfg_gpio(struct platform_device *, int w); · line 83
Quoted 4 lines
arch/arm/plat-samsung/include/plat/sdhci.h +1
-0@@ -78,6 +80,7 @@ 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 s5pv210_setup_sdhci3_cfg_gpio (struct platform_device *,int w);
Shouldn't this be in PATCH 2/2?
Quoted 7 lines
arch/arm/plat-samsung/include/plat/sdhci.h +0
-0/* S3C6400 SDHCI setup */ @@ -264,10 +267,22 @@ static inline void s5pv210_default_sdhci2(void)static inline void s5pv210_default_sdhci2 (void ) { }#endif /* CONFIG_S3C_DEV_HSMMC2 */
arch/arm/plat-samsung/include/plat/sdhci.h static inline void s5pv210_default_sdhci2(void) · line 279
Quoted 10 lines
arch/arm/plat-samsung/include/plat/sdhci.h +10
-0+#ifdef CONFIG_S3C_DEV_HSMMC3 +static inline void s5pv210_default_sdhci3 (void ) +{ + s3c_hsmmc3_def_platdata.clocks = s5pv210_hsmmc_clksrcs; + s3c_hsmmc3_def_platdata.cfg_gpio = s5pv210_setup_sdhci3_cfg_gpio; + s3c_hsmmc3_def_platdata.cfg_card = s5pv210_setup_sdhci_cfg_card; +} +#else +static inline void s5pv210_default_sdhci3 (void ) { } +#endif /* CONFIG_S3C_DEV_HSMMC3 */
This could be simplified by putting the #ifdef inside the function. Also, same comment as above.
Quoted 9 lines
arch/arm/plat-samsung/include/plat/sdhci.h +2
-0+#else static inline void s5pv210_default_sdhci0 (void ) { }static inline void s5pv210_default_sdhci1 (void ) { }static inline void s5pv210_default_sdhci2 (void ) { } +static inline void s5pv210_default_sdhci3 (void ) { }#endif /* CONFIG_S5PC100_SETUP_SDHCI */
Signature · 1 line
Maurus Cuelenaere
PATCH v2 1/2 ARM: SAMSUNG: Add device definition for HSMMC3
Quoted 168 lines · Maurus Cuelenaere
Op 03-07-10 02:07, Kukjin Kim schreef:
Quoted 4 lines
From: Hyuk Lee <[email protected]>
This patch adds hsmmc3 device definition in plat-samsung. Because now S5PV210 can support 4 hsmmc such as hsmmc0, hsmmc1, hsmmc2 and
hsmmc3
Quoted 4 lines
and that can be used in further Samsung SoCs.
Signed-off-by Hyuk Lee <[email protected]>Signed-off-by Kukjin Kim <[email protected]>Quoted 8 lines
---
Changes since previous patch:- coding style fixes
arch/arm/plat-samsung/Kconfig | 5 ++ arch/arm/plat-samsung/Makefile | 1 + arch/arm/plat-samsung/dev-hsmmc3.c | 72++++++++++++++++++++++++++++
arch/arm/plat-samsung/dev-
Quoted 34 lines
arch/arm/plat-samsung/include/plat/devs.h | 1 + arch/arm/plat-samsung/include/plat/sdhci.h | 15 ++++++ 5 files changed, 94 insertions(+), 0 deletions(-) create mode 100644 arch/arm/plat-samsung/dev-hsmmc3.carch/arm/plat-samsung/Kconfig +5
-0@@ -160,6 +160,11 @@ config S3C_DEV_HSMMC2 help Compile in platform device definitions for HSMMC channel 2 +config S3C_DEV_HSMMC3 + bool + help + Compile in platform device definitions for HSMMC channel 3 + config S3C_DEV_HWMON bool helparch/arm/plat-samsung/Makefile +1
-0@@ -33,6 +33,7 @@ obj-$(CONFIG_S3C_ADC) += adc.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-$(CONFIG_S3C_DEV_HSMMC3) += dev-hsmmc3.o obj-$(CONFIG_S3C_DEV_HWMON) += dev-hwmon.o obj-y += dev-i2c0.o obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.oarch/arm/plat-samsung/dev- renamed from arch/arm/plat-samsung/dev-hsmmc3.c +0
-0
hsmmc3.cQuoted 42 lines
new file mode 100644
index 0000000..57bd394arch/arm/plat-samsung/dev-hsmmc3.c new file +37
-0@@ -0,0 +1,72 @@ +/* linux/arch/arm/plat-samsung/dev-hsmmc3.c +* +* Copyright (c) 2010 Samsung Electronics Co., Ltd. +* http://www.samsung.com +* +* Copyright (c) 2008 Simtec Electronics +* Ben Dooks <[email protected]> +* http://armlinux.simtec.co.uk/ +* +* Based on arch/arm/plat-samsung/dev-hsmmc1.c +* +* Samsung device definition for hsmmc device 3 +* +* 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_hsmmc3_resource[] = { + [0 ] = { + .start =S3C_PA_HSMMC3 , + .end =S3C_PA_HSMMC3 +S3C_SZ_HSMMC -1 , + .flags =IORESOURCE_MEM , + }, + [1 ] = { + .start =IRQ_MMC3 , + .end =IRQ_MMC3 ,arch/arm/plat-samsung/dev-hsmmc3.c line 47
Quoted 10 lines
arch/arm/plat-samsung/dev-hsmmc3.c new file +10
-0+ .flags = IORESOURCE_IRQ, + } +}; + +static u64 s3c_device_hsmmc3_dmamask =0xffffffffUL ; + +struct s3c_sdhci_platdata s3c_hsmmc3_def_platdata = { + .max_width =4 , + .host_caps = (MMC_CAP_4_BIT_DATA | + MMC_CAP_MMC_HIGHSPEED |
MMC_CAP_SD_HIGHSPEED),arch/arm/plat-
Quoted 26 lines
arch/arm/plat-samsung/dev-hsmmc3.c new file +25
-0+}; + +struct platform_device s3c_device_hsmmc3 = { + .name ="s3c-sdhci" , + .id =3 , + .num_resources =ARRAY_SIZE (s3c_hsmmc3_resource), + .resource = s3c_hsmmc3_resource, + .dev = { + .dma_mask = &s3c_device_hsmmc3_dmamask, + .coherent_dma_mask =0xffffffffUL , + .platform_data = &s3c_hsmmc3_def_platdata, + }, +}; + +void s3c_sdhci3_set_platdata (struct s3c_sdhci_platdata *pd) +{ +struct s3c_sdhci_platdata *set = &s3c_hsmmc3_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; +}arch/arm/plat- renamed from arch/arm/plat-samsung/include/plat/devs.h +0
-0
samsung/include/plat/devs.harch/arm/plat-
Quoted 12 lines
index e6144e4..7842acd 100644
arch/arm/plat-samsung/include/plat/devs.h +1
-0@@ -54,6 +54,7 @@ extern struct platform_device s3c_device_hwmon;extern struct platform_device s3c_device_hsmmc0;extern struct platform_device s3c_device_hsmmc1;extern struct platform_device s3c_device_hsmmc2; +extern struct platform_device s3c_device_hsmmc3;extern struct platform_device s3c_device_spi0;extern struct platform_device s3c_device_spi1;arch/arm/plat- renamed from arch/arm/plat-samsung/include/plat/sdhci.h +0
-0
samsung/include/plat/sdhci.harch/arm/plat-samsung/include/plat/sdhci.h extern void s3c_sdhci2_set_platdata(struct
Quoted 12 lines
index 98ebd50..1314ffa 100644
arch/arm/plat-samsung/include/plat/sdhci.h +1
-0@@ -58,6 +58,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); +extern void s3c_sdhci3_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. @@ -66,6 +67,7 @@ extern void s3c_sdhci2_set_platdata(struct
s3c_sdhci_platdata*pd);Quoted 7 lines
arch/arm/plat-samsung/include/plat/sdhci.h +1
-0extern 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; +extern struct s3c_sdhci_platdata s3c_hsmmc3_def_platdata;/* Helper function availablity */
Quoted 9 lines
arch/arm/plat-samsung/include/plat/sdhci.h extern void s3c64xx_setup_sdhci2_cfg_gpio(struct
Quoted 1 line
arch/arm/plat-samsung/include/plat/sdhci.h +0
-0@@ -78,6 +80,7 @@ extern void s3c64xx_setup_sdhci2_cfg_gpio(struct
platform_device*, int w);arch/arm/plat-samsung/include/plat/sdhci.h extern void s3c64xx_setup_sdhci2_cfg_gpio(struct platform_device *, int w); · line 83
Quoted 4 lines
arch/arm/plat-samsung/include/plat/sdhci.h +1
-0extern 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 s5pv210_setup_sdhci3_cfg_gpio (struct platform_device *,int w);Shouldn't this be in PATCH 2/2?
You're right, but I was thinking this is better to handle this. ...will move this into second.
Quoted 7 lines
Quoted 7 lines
arch/arm/plat-samsung/include/plat/sdhci.h +0
-0/* S3C6400 SDHCI setup */ @@ -264,10 +267,22 @@ static inline void s5pv210_default_sdhci2(void)static inline void s5pv210_default_sdhci2 (void ) { }#endif /* CONFIG_S3C_DEV_HSMMC2 */
Quoted 12 lines
arch/arm/plat-samsung/include/plat/sdhci.h static inline void s5pv210_default_sdhci2(void) · line 279
Quoted 10 lines
arch/arm/plat-samsung/include/plat/sdhci.h +10
-0+#ifdef CONFIG_S3C_DEV_HSMMC3 +static inline void s5pv210_default_sdhci3 (void ) +{ + s3c_hsmmc3_def_platdata.clocks = s5pv210_hsmmc_clksrcs; + s3c_hsmmc3_def_platdata.cfg_gpio = s5pv210_setup_sdhci3_cfg_gpio; + s3c_hsmmc3_def_platdata.cfg_card = s5pv210_setup_sdhci_cfg_card; +} +#else +static inline void s5pv210_default_sdhci3 (void ) { } +#endif /* CONFIG_S3C_DEV_HSMMC3 */ This could be simplified by putting the #ifdef inside the function.
Yeah, you're right..but used same style with others in this file. ...so will modify it as your comment with others soon.
Quoted 2 lines
Also, same comment as above.
OK.
Quoted 4 lines
Quoted 4 lines
arch/arm/plat-samsung/include/plat/sdhci.h +1
-0+#else static inline void s5pv210_default_sdhci0 (void ) { }static inline void s5pv210_default_sdhci1 (void ) { }
Quoted 8 lines
arch/arm/plat-samsung/include/plat/sdhci.h static inline void s5pv210_default_sdhci2(void) · line 288
Quoted 5 lines
arch/arm/plat-samsung/include/plat/sdhci.h +1
-0static inline void s5pv210_default_sdhci2 (void ) { } +static inline void s5pv210_default_sdhci3 (void ) { }#endif /* CONFIG_S5PC100_SETUP_SDHCI */ --
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
PATCH v2 1/2 ARM: SAMSUNG: Add device definition for HSMMC3
Op 03-07-10 03:21, Kukjin Kim schreef:
Quoted 20 lines
Quoted 8 lines · Maurus Cuelenaere
Op 03-07-10 02:07, Kukjin Kim schreef:
Quoted 6 lines
/* S3C6400 SDHCI setup */
arch/arm/plat-samsung/include/plat/sdhci.h +0
-0@@ -264,10 +267,22 @@ static inline void s5pv210_default_sdhci2(void)static inline void s5pv210_default_sdhci2 (void ) { }#endif /* CONFIG_S3C_DEV_HSMMC2 */ Quoted 11 lines
arch/arm/plat-samsung/include/plat/sdhci.h static inline void s5pv210_default_sdhci2(void) · line 279
Quoted 10 lines
arch/arm/plat-samsung/include/plat/sdhci.h +10
-0+#ifdef CONFIG_S3C_DEV_HSMMC3 +static inline void s5pv210_default_sdhci3 (void ) +{ + s3c_hsmmc3_def_platdata.clocks = s5pv210_hsmmc_clksrcs; + s3c_hsmmc3_def_platdata.cfg_gpio = s5pv210_setup_sdhci3_cfg_gpio; + s3c_hsmmc3_def_platdata.cfg_card = s5pv210_setup_sdhci_cfg_card; +} +#else +static inline void s5pv210_default_sdhci3 (void ) { } +#endif /* CONFIG_S3C_DEV_HSMMC3 */ This could be simplified by putting the #ifdef inside the function.
Quoted 2 lines
Yeah, you're right..but used same style with others in this file. ...so will modify it as your comment with others soon.
Hmm yes, I guess it's just a matter of personal taste.
Signature · 1 line
Maurus Cuelenaere
PATCH v2 2/2 ARM: S5PV210: Add support HSMMC on SMDKV210
In reply to Kukjin KimFrom: Hyuk Lee <[email protected]>
This patch adds support HSMMC on SMDKV210, and gpio configuration for S5PV210 hsmmc3.
---
Changes since previous patch:
- Fixed wrong pin name
- Adding missed call s5pv210_default_sdhci3() in s5pv210_map_io()
arch/arm/mach-s5pv210/Kconfig | 5 +++++ arch/arm/mach-s5pv210/cpu.c | 1 + arch/arm/mach-s5pv210/include/mach/map.h | 1 + arch/arm/mach-s5pv210/mach-smdkv210.c | 4 ++++ arch/arm/mach-s5pv210/setup-sdhci-gpio.c | 20 ++++++++++++++++++++ 5 files changed, 31 insertions(+), 0 deletions(-)
arch/arm/mach-s5pv210/Kconfig +5 -0
@@ -72,9 +72,14 @@ config MACH_SMDKV210 select CPU_S5PV210 select ARCH_SPARSEMEM_ENABLE select SAMSUNG_DEV_ADC + select S3C_DEV_HSMMC + select S3C_DEV_HSMMC1 + select S3C_DEV_HSMMC2 + select S3C_DEV_HSMMC3 select SAMSUNG_DEV_TS select S3C_DEV_WDT select HAVE_S3C2410_WATCHDOG + select S5PV210_SETUP_SDHCI help Machine support for Samsung SMDKV210
arch/arm/mach-s5pv210/cpu.c +1 -0
@@ -86,6 +86,7 @@ void __init s5pv210_map_io(void)s5pv210_default_sdhci0 ();s5pv210_default_sdhci1 ();s5pv210_default_sdhci2 (); +s5pv210_default_sdhci3 ();/* the i2c devices are directly compatible with s3c2440 */ s3c_i2c0_setname ("s3c2440-i2c" );
arch/arm/mach-s5pv210/include/mach/map.h +1 -0
@@ -97,6 +97,7 @@#define S3C_PA_HSMMC0 S5PV210_PA_HSMMC(0)#define S3C_PA_HSMMC1 S5PV210_PA_HSMMC(1)#define S3C_PA_HSMMC2 S5PV210_PA_HSMMC(2) +#define S3C_PA_HSMMC3 S5PV210_PA_HSMMC(3)#define S3C_PA_IIC S5PV210_PA_IIC0#define S3C_PA_IIC1 S5PV210_PA_IIC1#define S3C_PA_IIC2 S5PV210_PA_IIC2
arch/arm/mach-s5pv210/mach-smdkv210.c +4 -0
@@ -77,6 +77,10 @@ static struct platform_device *smdkv210_devices[] __initdata = { &s5pv210_device_iis0, &s5pv210_device_ac97, &s3c_device_adc, + &s3c_device_hsmmc0, + &s3c_device_hsmmc1, + &s3c_device_hsmmc2, + &s3c_device_hsmmc3, &s3c_device_ts, &s3c_device_wdt, };
arch/arm/mach-s5pv210/setup-sdhci-gpio.c +20 -0
@@ -102,3 +102,23 @@ void s5pv210_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width)s3c_gpio_setpull (S5PV210_GPG2 (2 ),S3C_GPIO_PULL_UP );s3c_gpio_cfgpin (S5PV210_GPG2 (2 ),S3C_GPIO_SFN (2 )); } + +void s5pv210_setup_sdhci3_cfg_gpio (struct platform_device *dev,int width) +{ +unsigned int gpio; + +/* Set all the necessary GPG3[0:2] pins to special-function 2 */ +for (gpio =S5PV210_GPG3 (0 ); gpio <S5PV210_GPG3 (2 ); gpio++) { +s3c_gpio_cfgpin (gpio,S3C_GPIO_SFN (2 )); +s3c_gpio_setpull (gpio,S3C_GPIO_PULL_NONE ); + } + +/* Data pin GPG3[3:6] to special-function 2 */ +for (gpio =S5PV210_GPG3 (3 ); gpio <=S5PV210_GPG3 (6 ); gpio++) { +s3c_gpio_cfgpin (gpio,S3C_GPIO_SFN (2 )); +s3c_gpio_setpull (gpio,S3C_GPIO_PULL_NONE ); + } + +s3c_gpio_setpull (S5PV210_GPG3 (2 ),S3C_GPIO_PULL_UP ); +s3c_gpio_cfgpin (S5PV210_GPG3 (2 ),S3C_GPIO_SFN (2 )); +}
Signature · 1 line
1.6.2.5