Patch 1: It fixes the incorrect card detection type. Patch 2: It enables secondary MMC port. Patch 3: It extends support of 8-bit bus width
The patches are rebased to for-next branch of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung.git
Tushar Behera (3): ARM: EXYNOS4: Fix sdhci card detection for ORIGEN ARM: EXYNOS4: Add support for secondary MMC port on ORIGEN ARM: EXYNOS4: Add support for 8-bit bus width in SDHCI for ORIGEN
arch/arm/mach-exynos4/Kconfig | 1 + arch/arm/mach-exynos4/mach-origen.c | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-)
Fix incorrect value of cd_type field in platform data for sdhci device.
Based on "ARM: EXYNOS4: Fix card detection for sdhci 0 and 2". commit a0d8efedb203b5b908dd46cea38201761e2380f9
Signed-off-by: Tushar Behera tushar.behera@linaro.org --- arch/arm/mach-exynos4/mach-origen.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/arch/arm/mach-exynos4/mach-origen.c b/arch/arm/mach-exynos4/mach-origen.c index ed59f86..e280270 100644 --- a/arch/arm/mach-exynos4/mach-origen.c +++ b/arch/arm/mach-exynos4/mach-origen.c @@ -73,9 +73,7 @@ static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { };
static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = { - .cd_type = S3C_SDHCI_CD_GPIO, - .ext_cd_gpio = EXYNOS4_GPK2(2), - .ext_cd_gpio_invert = 1, + .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, };
Tushar Behera wrote:
Fix incorrect value of cd_type field in platform data for sdhci device.
Based on "ARM: EXYNOS4: Fix card detection for sdhci 0 and 2". commit a0d8efedb203b5b908dd46cea38201761e2380f9
Signed-off-by: Tushar Behera tushar.behera@linaro.org
arch/arm/mach-exynos4/mach-origen.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/arch/arm/mach-exynos4/mach-origen.c
b/arch/arm/mach-exynos4/mach-
origen.c index ed59f86..e280270 100644 --- a/arch/arm/mach-exynos4/mach-origen.c +++ b/arch/arm/mach-exynos4/mach-origen.c @@ -73,9 +73,7 @@ static struct s3c2410_uartcfg origen_uartcfgs[]
__initdata = {
};
static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = {
- .cd_type = S3C_SDHCI_CD_GPIO,
- .ext_cd_gpio = EXYNOS4_GPK2(2),
- .ext_cd_gpio_invert = 1,
- .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
};
-- 1.7.4.1
OK, will apply. Thanks.
Best regards, Kgene. -- Kukjin Kim kgene.kim@samsung.com, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
Secondary MMC port on ORIGEN is connected to sdhci instance 0. Support for secondary MMC port is extended by registering sdhci instance 0.
Since sdhci instance 2 can contain a bootable media, sdhci instance 0 is registered after instance 2.
Signed-off-by: Tushar Behera tushar.behera@linaro.org --- arch/arm/mach-exynos4/Kconfig | 1 + arch/arm/mach-exynos4/mach-origen.c | 7 +++++++ 2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-exynos4/Kconfig b/arch/arm/mach-exynos4/Kconfig index e6925de..4c14d5e 100644 --- a/arch/arm/mach-exynos4/Kconfig +++ b/arch/arm/mach-exynos4/Kconfig @@ -229,6 +229,7 @@ config MACH_ORIGEN select CPU_EXYNOS4210 select S3C_DEV_RTC select S3C_DEV_WDT + select S3C_DEV_HSMMC select S3C_DEV_HSMMC2 select EXYNOS4_SETUP_SDHCI help diff --git a/arch/arm/mach-exynos4/mach-origen.c b/arch/arm/mach-exynos4/mach-origen.c index e280270..ae18812 100644 --- a/arch/arm/mach-exynos4/mach-origen.c +++ b/arch/arm/mach-exynos4/mach-origen.c @@ -72,6 +72,11 @@ static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { }, };
+static struct s3c_sdhci_platdata origen_hsmmc0_pdata __initdata = { + .cd_type = S3C_SDHCI_CD_INTERNAL, + .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, +}; + static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, @@ -79,6 +84,7 @@ static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = {
static struct platform_device *origen_devices[] __initdata = { &s3c_device_hsmmc2, + &s3c_device_hsmmc0, &s3c_device_rtc, &s3c_device_wdt, }; @@ -93,6 +99,7 @@ static void __init origen_map_io(void) static void __init origen_machine_init(void) { s3c_sdhci2_set_platdata(&origen_hsmmc2_pdata); + s3c_sdhci0_set_platdata(&origen_hsmmc0_pdata); platform_add_devices(origen_devices, ARRAY_SIZE(origen_devices)); }
Tushar Behera wrote:
-----Original Message----- From: Tushar Behera [mailto:tushar.behera@linaro.org] Sent: Friday, August 26, 2011 6:39 PM To: linux-samsung-soc@vger.kernel.org Cc: linaro-dev@lists.linaro.org; kgene.kim@samsung.com; patches@linaro.org Subject: [PATCH 2/3] ARM: EXYNOS4: Add support for secondary MMC port on ORIGEN
Secondary MMC port on ORIGEN is connected to sdhci instance 0. Support for secondary MMC port is extended by registering sdhci instance 0.
Since sdhci instance 2 can contain a bootable media, sdhci instance 0 is registered after instance 2.
Would be helpful if above comments could be included in codes :)
Signed-off-by: Tushar Behera tushar.behera@linaro.org
arch/arm/mach-exynos4/Kconfig | 1 + arch/arm/mach-exynos4/mach-origen.c | 7 +++++++ 2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-exynos4/Kconfig b/arch/arm/mach-exynos4/Kconfig index e6925de..4c14d5e 100644 --- a/arch/arm/mach-exynos4/Kconfig +++ b/arch/arm/mach-exynos4/Kconfig @@ -229,6 +229,7 @@ config MACH_ORIGEN select CPU_EXYNOS4210 select S3C_DEV_RTC select S3C_DEV_WDT
- select S3C_DEV_HSMMC select S3C_DEV_HSMMC2 select EXYNOS4_SETUP_SDHCI help
diff --git a/arch/arm/mach-exynos4/mach-origen.c
b/arch/arm/mach-exynos4/mach-
origen.c index e280270..ae18812 100644 --- a/arch/arm/mach-exynos4/mach-origen.c +++ b/arch/arm/mach-exynos4/mach-origen.c @@ -72,6 +72,11 @@ static struct s3c2410_uartcfg origen_uartcfgs[]
__initdata = {
}, };
+static struct s3c_sdhci_platdata origen_hsmmc0_pdata __initdata = {
- .cd_type = S3C_SDHCI_CD_INTERNAL,
- .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
+};
static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, @@ -79,6 +84,7 @@ static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = {
static struct platform_device *origen_devices[] __initdata = { &s3c_device_hsmmc2,
- &s3c_device_hsmmc0, &s3c_device_rtc, &s3c_device_wdt,
}; @@ -93,6 +99,7 @@ static void __init origen_map_io(void) static void __init origen_machine_init(void) { s3c_sdhci2_set_platdata(&origen_hsmmc2_pdata);
- s3c_sdhci0_set_platdata(&origen_hsmmc0_pdata); platform_add_devices(origen_devices, ARRAY_SIZE(origen_devices));
}
-- 1.7.4.1
OK, will apply. If you don't mind, I will add comments the reason of the ordering when I apply this.
Thanks.
Best regards, Kgene. -- Kukjin Kim kgene.kim@samsung.com, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
Hi Kukjin,
On Wednesday 31 August 2011 06:23 AM, Kukjin Kim wrote:
Tushar Behera wrote:
-----Original Message----- From: Tushar Behera [mailto:tushar.behera@linaro.org] Sent: Friday, August 26, 2011 6:39 PM To: linux-samsung-soc@vger.kernel.org Cc: linaro-dev@lists.linaro.org; kgene.kim@samsung.com; patches@linaro.org Subject: [PATCH 2/3] ARM: EXYNOS4: Add support for secondary MMC port on ORIGEN
Secondary MMC port on ORIGEN is connected to sdhci instance 0. Support for secondary MMC port is extended by registering sdhci instance 0.
Since sdhci instance 2 can contain a bootable media, sdhci instance 0 is registered after instance 2.
Would be helpful if above comments could be included in codes :)
Signed-off-by: Tushar Beheratushar.behera@linaro.org
arch/arm/mach-exynos4/Kconfig | 1 + arch/arm/mach-exynos4/mach-origen.c | 7 +++++++ 2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-exynos4/Kconfig b/arch/arm/mach-exynos4/Kconfig index e6925de..4c14d5e 100644 --- a/arch/arm/mach-exynos4/Kconfig +++ b/arch/arm/mach-exynos4/Kconfig @@ -229,6 +229,7 @@ config MACH_ORIGEN select CPU_EXYNOS4210 select S3C_DEV_RTC select S3C_DEV_WDT
- select S3C_DEV_HSMMC select S3C_DEV_HSMMC2 select EXYNOS4_SETUP_SDHCI help
diff --git a/arch/arm/mach-exynos4/mach-origen.c
b/arch/arm/mach-exynos4/mach-
origen.c index e280270..ae18812 100644 --- a/arch/arm/mach-exynos4/mach-origen.c +++ b/arch/arm/mach-exynos4/mach-origen.c @@ -72,6 +72,11 @@ static struct s3c2410_uartcfg origen_uartcfgs[]
__initdata = {
}, };
+static struct s3c_sdhci_platdata origen_hsmmc0_pdata __initdata = {
- .cd_type = S3C_SDHCI_CD_INTERNAL,
- .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
+};
- static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
@@ -79,6 +84,7 @@ static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = {
static struct platform_device *origen_devices[] __initdata = { &s3c_device_hsmmc2,
- &s3c_device_hsmmc0, &s3c_device_rtc, &s3c_device_wdt, };
@@ -93,6 +99,7 @@ static void __init origen_map_io(void) static void __init origen_machine_init(void) { s3c_sdhci2_set_platdata(&origen_hsmmc2_pdata);
- s3c_sdhci0_set_platdata(&origen_hsmmc0_pdata); platform_add_devices(origen_devices, ARRAY_SIZE(origen_devices)); }
-- 1.7.4.1
OK, will apply. If you don't mind, I will add comments the reason of the ordering when I apply this.
Thanks. That would be great.
Thanks.
Best regards, Kgene. -- Kukjin Kimkgene.kim@samsung.com, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
Platform data for SDHCI controller on ORIGEN board is missing the support for 8-bit bus width. The platform data is extended in sync with other EXYNOS4 machines.
Signed-off-by: Tushar Behera tushar.behera@linaro.org --- arch/arm/mach-exynos4/mach-origen.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-exynos4/mach-origen.c b/arch/arm/mach-exynos4/mach-origen.c index ae18812..6b6cd77 100644 --- a/arch/arm/mach-exynos4/mach-origen.c +++ b/arch/arm/mach-exynos4/mach-origen.c @@ -75,11 +75,19 @@ static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { static struct s3c_sdhci_platdata origen_hsmmc0_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, +#ifdef CONFIG_EXYNOS4_SDHCI_CH0_8BIT + .max_width = 8, + .host_caps = MMC_CAP_8_BIT_DATA, +#endif };
static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, +#ifdef CONFIG_EXYNOS4_SDHCI_CH2_8BIT + .max_width = 8, + .host_caps = MMC_CAP_8_BIT_DATA, +#endif };
static struct platform_device *origen_devices[] __initdata = {
Tushar Behera wrote:
Platform data for SDHCI controller on ORIGEN board is missing the support for 8-bit bus width. The platform data is extended in sync with other EXYNOS4 machines.
Signed-off-by: Tushar Behera tushar.behera@linaro.org
arch/arm/mach-exynos4/mach-origen.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-exynos4/mach-origen.c
b/arch/arm/mach-exynos4/mach-
origen.c index ae18812..6b6cd77 100644 --- a/arch/arm/mach-exynos4/mach-origen.c +++ b/arch/arm/mach-exynos4/mach-origen.c @@ -75,11 +75,19 @@ static struct s3c2410_uartcfg origen_uartcfgs[]
__initdata =
{ static struct s3c_sdhci_platdata origen_hsmmc0_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, +#ifdef CONFIG_EXYNOS4_SDHCI_CH0_8BIT
- .max_width = 8,
- .host_caps = MMC_CAP_8_BIT_DATA,
+#endif };
static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, +#ifdef CONFIG_EXYNOS4_SDHCI_CH2_8BIT
- .max_width = 8,
- .host_caps = MMC_CAP_8_BIT_DATA,
+#endif };
static struct platform_device *origen_devices[] __initdata = {
1.7.4.1
Hi Tushar,
I wonder the bus width of SDHCI controller can be changed manually on ORIGEN like SMDK board.
Thanks.
Best regards, Kgene. -- Kukjin Kim kgene.kim@samsung.com, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
Hi Kukjin,
On Wednesday 31 August 2011 06:31 AM, Kukjin Kim wrote:
Tushar Behera wrote:
Platform data for SDHCI controller on ORIGEN board is missing the support for 8-bit bus width. The platform data is extended in sync with other EXYNOS4 machines.
Signed-off-by: Tushar Beheratushar.behera@linaro.org
arch/arm/mach-exynos4/mach-origen.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-exynos4/mach-origen.c
b/arch/arm/mach-exynos4/mach-
origen.c index ae18812..6b6cd77 100644 --- a/arch/arm/mach-exynos4/mach-origen.c +++ b/arch/arm/mach-exynos4/mach-origen.c @@ -75,11 +75,19 @@ static struct s3c2410_uartcfg origen_uartcfgs[]
__initdata =
{ static struct s3c_sdhci_platdata origen_hsmmc0_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, +#ifdef CONFIG_EXYNOS4_SDHCI_CH0_8BIT
- .max_width = 8,
- .host_caps = MMC_CAP_8_BIT_DATA,
+#endif };
static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, +#ifdef CONFIG_EXYNOS4_SDHCI_CH2_8BIT
- .max_width = 8,
- .host_caps = MMC_CAP_8_BIT_DATA,
+#endif };
static struct platform_device *origen_devices[] __initdata = {
1.7.4.1
Hi Tushar,
I wonder the bus width of SDHCI controller can be changed manually on ORIGEN like SMDK board.
I will do further test and update you about the results.
Thanks.
Best regards, Kgene. -- Kukjin Kimkgene.kim@samsung.com, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
On Wednesday 31 August 2011 06:31 AM, Kukjin Kim wrote:
Tushar Behera wrote:
Platform data for SDHCI controller on ORIGEN board is missing the support for 8-bit bus width. The platform data is extended in sync with other EXYNOS4 machines.
Signed-off-by: Tushar Beheratushar.behera@linaro.org
arch/arm/mach-exynos4/mach-origen.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-exynos4/mach-origen.c
b/arch/arm/mach-exynos4/mach-
origen.c index ae18812..6b6cd77 100644 --- a/arch/arm/mach-exynos4/mach-origen.c +++ b/arch/arm/mach-exynos4/mach-origen.c @@ -75,11 +75,19 @@ static struct s3c2410_uartcfg origen_uartcfgs[]
__initdata =
{ static struct s3c_sdhci_platdata origen_hsmmc0_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, +#ifdef CONFIG_EXYNOS4_SDHCI_CH0_8BIT
- .max_width = 8,
- .host_caps = MMC_CAP_8_BIT_DATA,
+#endif };
static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, +#ifdef CONFIG_EXYNOS4_SDHCI_CH2_8BIT
- .max_width = 8,
- .host_caps = MMC_CAP_8_BIT_DATA,
+#endif };
static struct platform_device *origen_devices[] __initdata = {
1.7.4.1
Hi Tushar,
I wonder the bus width of SDHCI controller can be changed manually on ORIGEN like SMDK board.
Thanks for your review.
On ORIGEN board, we have wire connections for HSMMC-0/2/3 between the MMC port and the SoC. Hence ideally we can work with HSMMC2 in both 4-bit and 8-bit mode. However HSMMC0 can only work in 4-bit mode.
Also IIRC WLAN would be using HSMMC-3 controller for its operations. So we would have conflict when HSMMC2 is working in 8-bit mode and WLAN is also enabled. Hence it appears better to drop this patch now.
Thanks.
Best regards, Kgene. -- Kukjin Kimkgene.kim@samsung.com, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
Tushar Behera wrote:
On Wednesday 31 August 2011 06:31 AM, Kukjin Kim wrote:
Tushar Behera wrote:
Platform data for SDHCI controller on ORIGEN board is missing the support for 8-bit bus width. The platform data is extended in sync with other EXYNOS4 machines.
Signed-off-by: Tushar Beheratushar.behera@linaro.org
arch/arm/mach-exynos4/mach-origen.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-exynos4/mach-origen.c
b/arch/arm/mach-exynos4/mach-
origen.c index ae18812..6b6cd77 100644 --- a/arch/arm/mach-exynos4/mach-origen.c +++ b/arch/arm/mach-exynos4/mach-origen.c @@ -75,11 +75,19 @@ static struct s3c2410_uartcfg origen_uartcfgs[]
__initdata =
{ static struct s3c_sdhci_platdata origen_hsmmc0_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, +#ifdef CONFIG_EXYNOS4_SDHCI_CH0_8BIT
- .max_width = 8,
- .host_caps = MMC_CAP_8_BIT_DATA,
+#endif };
static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = { .cd_type = S3C_SDHCI_CD_INTERNAL, .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, +#ifdef CONFIG_EXYNOS4_SDHCI_CH2_8BIT
- .max_width = 8,
- .host_caps = MMC_CAP_8_BIT_DATA,
+#endif };
static struct platform_device *origen_devices[] __initdata = {
1.7.4.1
Hi Tushar,
I wonder the bus width of SDHCI controller can be changed manually on
ORIGEN
like SMDK board.
Thanks for your review.
On ORIGEN board, we have wire connections for HSMMC-0/2/3 between the MMC port and the SoC. Hence ideally we can work with HSMMC2 in both 4-bit and 8-bit mode. However HSMMC0 can only work in 4-bit mode.
Also IIRC WLAN would be using HSMMC-3 controller for its operations. So we would have conflict when HSMMC2 is working in 8-bit mode and WLAN is also enabled. Hence it appears better to drop this patch now.
OK. Thanks.
Best regards, Kgene. -- Kukjin Kim kgene.kim@samsung.com, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.