2013-09-29 16:12:11

by Tomasz Figa

[permalink] [raw]
Subject: [PATCH] ARM: s3c64xx: mini6410: Correct card detect type for HSMMC1

According to board schematics, for HSMMC1 a GPIO line is used to detect
card presence, while currently it is being configured for internal card
detect line, which is multiplexed with card detect line of HSMMC0 and
thus breaking it.

This patch adds proper sdhci platform data setting card detect type to
external GPIO and fixing operation of HSMMC0.

Signed-off-by: Tomasz Figa <[email protected]>
---
arch/arm/mach-s3c64xx/mach-mini6410.c | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c b/arch/arm/mach-s3c64xx/mach-mini6410.c
index 58d46a3..97ae470 100644
--- a/arch/arm/mach-s3c64xx/mach-mini6410.c
+++ b/arch/arm/mach-s3c64xx/mach-mini6410.c
@@ -36,7 +36,9 @@
#include <plat/devs.h>
#include <plat/fb.h>
#include <linux/platform_data/mtd-nand-s3c2410.h>
+#include <linux/platform_data/mmc-sdhci-s3c.h>
#include <plat/regs-serial.h>
+#include <plat/sdhci.h>
#include <linux/platform_data/touchscreen-s3c2410.h>

#include <video/platform_lcd.h>
@@ -214,6 +216,13 @@ static struct platform_device mini6410_lcd_powerdev = {
.dev.platform_data = &mini6410_lcd_power_data,
};

+static struct s3c_sdhci_platdata mini6410_hsmmc1_pdata = {
+ .max_width = 4,
+ .cd_type = S3C_SDHCI_CD_GPIO,
+ .ext_cd_gpio = S3C64XX_GPN(10),
+ .ext_cd_gpio_invert = true,
+};
+
static struct platform_device *mini6410_devices[] __initdata = {
&mini6410_device_eth,
&s3c_device_hsmmc0,
@@ -321,6 +330,7 @@ static void __init mini6410_machine_init(void)

s3c_nand_set_platdata(&mini6410_nand_info);
s3c_fb_set_platdata(&mini6410_lcd_pdata[features.lcd_index]);
+ s3c_sdhci1_set_platdata(&mini6410_hsmmc1_pdata);
s3c24xx_ts_set_platdata(NULL);

/* configure nCS1 width to 16 bits */
--
1.8.3.2


2013-10-16 18:34:06

by Tomasz Figa

[permalink] [raw]
Subject: Re: [PATCH] ARM: s3c64xx: mini6410: Correct card detect type for HSMMC1

Hi Kukjin,

On Sunday 29 of September 2013 18:12:01 Tomasz Figa wrote:
> According to board schematics, for HSMMC1 a GPIO line is used to detect
> card presence, while currently it is being configured for internal card
> detect line, which is multiplexed with card detect line of HSMMC0 and
> thus breaking it.
>
> This patch adds proper sdhci platform data setting card detect type to
> external GPIO and fixing operation of HSMMC0.
>
> Signed-off-by: Tomasz Figa <[email protected]>
> ---
> arch/arm/mach-s3c64xx/mach-mini6410.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)

Would you mind taking this patch to your tree?

Best regards,
Tomasz

> diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c
> b/arch/arm/mach-s3c64xx/mach-mini6410.c index 58d46a3..97ae470 100644
> --- a/arch/arm/mach-s3c64xx/mach-mini6410.c
> +++ b/arch/arm/mach-s3c64xx/mach-mini6410.c
> @@ -36,7 +36,9 @@
> #include <plat/devs.h>
> #include <plat/fb.h>
> #include <linux/platform_data/mtd-nand-s3c2410.h>
> +#include <linux/platform_data/mmc-sdhci-s3c.h>
> #include <plat/regs-serial.h>
> +#include <plat/sdhci.h>
> #include <linux/platform_data/touchscreen-s3c2410.h>
>
> #include <video/platform_lcd.h>
> @@ -214,6 +216,13 @@ static struct platform_device mini6410_lcd_powerdev
> = { .dev.platform_data = &mini6410_lcd_power_data,
> };
>
> +static struct s3c_sdhci_platdata mini6410_hsmmc1_pdata = {
> + .max_width = 4,
> + .cd_type = S3C_SDHCI_CD_GPIO,
> + .ext_cd_gpio = S3C64XX_GPN(10),
> + .ext_cd_gpio_invert = true,
> +};
> +
> static struct platform_device *mini6410_devices[] __initdata = {
> &mini6410_device_eth,
> &s3c_device_hsmmc0,
> @@ -321,6 +330,7 @@ static void __init mini6410_machine_init(void)
>
> s3c_nand_set_platdata(&mini6410_nand_info);
> s3c_fb_set_platdata(&mini6410_lcd_pdata[features.lcd_index]);
> + s3c_sdhci1_set_platdata(&mini6410_hsmmc1_pdata);
> s3c24xx_ts_set_platdata(NULL);
>
> /* configure nCS1 width to 16 bits */

2013-10-17 23:38:27

by Kukjin Kim

[permalink] [raw]
Subject: RE: [PATCH] ARM: s3c64xx: mini6410: Correct card detect type for HSMMC1

Tomasz Figa wrote:
>
> Hi Kukjin,
>
Hi,

> On Sunday 29 of September 2013 18:12:01 Tomasz Figa wrote:
> > According to board schematics, for HSMMC1 a GPIO line is used to detect
> > card presence, while currently it is being configured for internal card
> > detect line, which is multiplexed with card detect line of HSMMC0 and
> > thus breaking it.
> >
> > This patch adds proper sdhci platform data setting card detect type to
> > external GPIO and fixing operation of HSMMC0.
> >
> > Signed-off-by: Tomasz Figa <[email protected]>
> > ---
> > arch/arm/mach-s3c64xx/mach-mini6410.c | 10 ++++++++++
> > 1 file changed, 10 insertions(+)
>
> Would you mind taking this patch to your tree?
>
Applied, thanks.
Kukjin

> Best regards,
> Tomasz
>
> > diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c
> > b/arch/arm/mach-s3c64xx/mach-mini6410.c index 58d46a3..97ae470 100644
> > --- a/arch/arm/mach-s3c64xx/mach-mini6410.c
> > +++ b/arch/arm/mach-s3c64xx/mach-mini6410.c
> > @@ -36,7 +36,9 @@
> > #include <plat/devs.h>
> > #include <plat/fb.h>
> > #include <linux/platform_data/mtd-nand-s3c2410.h>
> > +#include <linux/platform_data/mmc-sdhci-s3c.h>
> > #include <plat/regs-serial.h>
> > +#include <plat/sdhci.h>
> > #include <linux/platform_data/touchscreen-s3c2410.h>
> >
> > #include <video/platform_lcd.h>
> > @@ -214,6 +216,13 @@ static struct platform_device mini6410_lcd_powerdev
> > = { .dev.platform_data = &mini6410_lcd_power_data,
> > };
> >
> > +static struct s3c_sdhci_platdata mini6410_hsmmc1_pdata = {
> > + .max_width = 4,
> > + .cd_type = S3C_SDHCI_CD_GPIO,
> > + .ext_cd_gpio = S3C64XX_GPN(10),
> > + .ext_cd_gpio_invert = true,
> > +};
> > +
> > static struct platform_device *mini6410_devices[] __initdata = {
> > &mini6410_device_eth,
> > &s3c_device_hsmmc0,
> > @@ -321,6 +330,7 @@ static void __init mini6410_machine_init(void)
> >
> > s3c_nand_set_platdata(&mini6410_nand_info);
> > s3c_fb_set_platdata(&mini6410_lcd_pdata[features.lcd_index]);
> > + s3c_sdhci1_set_platdata(&mini6410_hsmmc1_pdata);
> > s3c24xx_ts_set_platdata(NULL);
> >
> > /* configure nCS1 width to 16 bits */

2013-10-20 22:01:09

by Kukjin Kim

[permalink] [raw]
Subject: Re: [PATCH] ARM: s3c64xx: mini6410: Correct card detect type for HSMMC1

On 10/18/13 08:38, Kukjin Kim wrote:
> Tomasz Figa wrote:
>>
>> Hi Kukjin,
>>
> Hi,
>
>> On Sunday 29 of September 2013 18:12:01 Tomasz Figa wrote:
>>> According to board schematics, for HSMMC1 a GPIO line is used to detect
>>> card presence, while currently it is being configured for internal card
>>> detect line, which is multiplexed with card detect line of HSMMC0 and
>>> thus breaking it.
>>>
>>> This patch adds proper sdhci platform data setting card detect type to
>>> external GPIO and fixing operation of HSMMC0.
>>>
>>> Signed-off-by: Tomasz Figa<[email protected]>
>>> ---
>>> arch/arm/mach-s3c64xx/mach-mini6410.c | 10 ++++++++++
>>> 1 file changed, 10 insertions(+)
>>
>> Would you mind taking this patch to your tree?
>>
> Applied, thanks.
> Kukjin
>
Uhm...just small concern...it's possible to support dt for mini6410 but
basic. I need to hold this on...

>> Best regards,
>> Tomasz
>>
>>> diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c
>>> b/arch/arm/mach-s3c64xx/mach-mini6410.c index 58d46a3..97ae470 100644
>>> --- a/arch/arm/mach-s3c64xx/mach-mini6410.c
>>> +++ b/arch/arm/mach-s3c64xx/mach-mini6410.c
>>> @@ -36,7 +36,9 @@
>>> #include<plat/devs.h>
>>> #include<plat/fb.h>
>>> #include<linux/platform_data/mtd-nand-s3c2410.h>
>>> +#include<linux/platform_data/mmc-sdhci-s3c.h>
>>> #include<plat/regs-serial.h>
>>> +#include<plat/sdhci.h>
>>> #include<linux/platform_data/touchscreen-s3c2410.h>
>>>
>>> #include<video/platform_lcd.h>
>>> @@ -214,6 +216,13 @@ static struct platform_device mini6410_lcd_powerdev
>>> = { .dev.platform_data =&mini6410_lcd_power_data,
>>> };
>>>
>>> +static struct s3c_sdhci_platdata mini6410_hsmmc1_pdata = {
>>> + .max_width = 4,
>>> + .cd_type = S3C_SDHCI_CD_GPIO,
>>> + .ext_cd_gpio = S3C64XX_GPN(10),
>>> + .ext_cd_gpio_invert = true,
>>> +};
>>> +
>>> static struct platform_device *mini6410_devices[] __initdata = {
>>> &mini6410_device_eth,
>>> &s3c_device_hsmmc0,
>>> @@ -321,6 +330,7 @@ static void __init mini6410_machine_init(void)
>>>
>>> s3c_nand_set_platdata(&mini6410_nand_info);
>>> s3c_fb_set_platdata(&mini6410_lcd_pdata[features.lcd_index]);
>>> + s3c_sdhci1_set_platdata(&mini6410_hsmmc1_pdata);
>>> s3c24xx_ts_set_platdata(NULL);
>>>
>>> /* configure nCS1 width to 16 bits */

2013-10-20 22:42:57

by Tomasz Figa

[permalink] [raw]
Subject: Re: [PATCH] ARM: s3c64xx: mini6410: Correct card detect type for HSMMC1

Hi Kukjin,

On Monday 21 of October 2013 07:01:00 Kukjin Kim wrote:
> On 10/18/13 08:38, Kukjin Kim wrote:
> > Tomasz Figa wrote:
> >> Hi Kukjin,
> >
> > Hi,
> >
> >> On Sunday 29 of September 2013 18:12:01 Tomasz Figa wrote:
> >>> According to board schematics, for HSMMC1 a GPIO line is used to
> >>> detect
> >>> card presence, while currently it is being configured for internal
> >>> card
> >>> detect line, which is multiplexed with card detect line of HSMMC0 and
> >>> thus breaking it.
> >>>
> >>> This patch adds proper sdhci platform data setting card detect type
> >>> to
> >>> external GPIO and fixing operation of HSMMC0.
> >>>
> >>> Signed-off-by: Tomasz Figa<[email protected]>
> >>> ---
> >>>
> >>> arch/arm/mach-s3c64xx/mach-mini6410.c | 10 ++++++++++
> >>> 1 file changed, 10 insertions(+)
> >>
> >> Would you mind taking this patch to your tree?
> >
> > Applied, thanks.
> > Kukjin
>
> Uhm...just small concern...it's possible to support dt for mini6410 but
> basic. I need to hold this on...

May I ask you to explain your concern about this?

I believe this bug fix is fine, since we still support board files for
s3c64xx and DT based support is experimental at the moment.

Best regards,
Tomasz