RE: [PATCH v3 3/3] sdhci-s3c: Add SDHCI_QUIRK_NO_WP_BIT quirk for Samsung SoC
Kyungmin Park wrote: On Fri, Jul 23, 2010 at 8:56 PM, Kukjin Kim kgene@samsung.com wrote: From: Hyuk Lee hyuk1@samsung.com If host controller doesn't have WP pin which should be connnected with SDMMC card WP pin, can implement get_ro function with using the allocated gpio. In order to use this quirk wp_gpio in the platform data must be set. Signed-off-by: Hyuk Lee hyuk1@samsung.com Signed-off-by: Kukjin Kim kgene@samsung.com --- drivers/mmc/host/sdhci-s3c.c | 43 ++ drivers/mmc/host/sdhci.c | 3 ++ drivers/mmc/host/sdhci.h | 3 ++ 3 files changed, 49 insertions(+), 0 deletions(-) diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c index 0d25285..0b75e57 100644 --- a/drivers/mmc/host/sdhci-s3c.c +++ b/drivers/mmc/host/sdhci-s3c.c @@ -22,6 +22,7 @@ #include linux/mmc/host.h +#include plat/gpio-cfg.h #include plat/sdhci.h #include plat/regs-sdhci.h @@ -213,6 +214,36 @@ static void sdhci_s3c_set_clock(struct sdhci_host *host, unsigned int clock) } /** + * sdhci_s3c_get_ro - callback for get_ro + * @host: The SDHCI host being changed + * + * If the WP pin is connected with GPIO, can get the value which indicates + * the card is locked or not. +*/ +static int sdhci_s3c_get_ro(struct mmc_host *mmc) +{ + struct sdhci_s3c *sc; + struct sdhci_host *host; + + host = mmc_priv(mmc); + sc = sdhci_priv(host); + + return gpio_get_value(sc-pdata-wp_gpio); +} + +/** + * sdhci_s3c_cfg_wp - configure GPIO for WP pin + * @gpio_num: GPIO number which connected with WP line from SD/MMC slot + * + * Configure GPIO for using WP line +*/ +static void sdhci_s3c_cfg_wp(unsigned int gpio_num) +{ + s3c_gpio_cfgpin(gpio_num, S3C_GPIO_INPUT); + s3c_gpio_setpull(gpio_num, S3C_GPIO_PULL_UP); +} + +/** * sdhci_s3c_get_min_clock - callback to get minimal supported clock value * @host: The SDHCI host being queried * @@ -375,6 +406,9 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev) if (pdata-cfg_gpio) pdata-cfg_gpio(pdev, pdata-max_width); + if (gpio_is_valid(pdata-wp_gpio)) + sdhci_s3c_ops.get_ro = sdhci_s3c_get_ro; + host-hw_name = samsung-hsmmc; host-ops = sdhci_s3c_ops; host-quirks = 0; @@ -408,6 +442,15 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev) host-quirks |= (SDHCI_QUIRK_32BIT_DMA_ADDR | SDHCI_QUIRK_32BIT_DMA_SIZE); + /* Controller's WP pin donsn't connected with SD card and there is an + * allocated GPIO for getting WP data form SD card, use this quirk and + * send the GPIO number in pdata-wp_gpio. */ + host-quirks |= SDHCI_QUIRK_NO_WP_BIT; + + /* to configure gpio pin as a card write protection signal */ + if (gpio_is_valid(pdata-wp_gpio)) + sdhci_s3c_cfg_wp(pdata-wp_gpio); + Put it just one place like this. if (gpio_is_valid(pdata-wp_gpio)) { sdhci_s3c_cfg_wp(pdata-wp_gpio); sdhci_s3c_ops.get_ro = sdhci_s3c_get_ro; host-quirks |= SDHCI_QUIRK_NO_WP_BIT; } It reduce the below quirks check by one. If you add the quriks as your patch, host-quirks are always true whether WP use or not. Ok..thanks for your suggestion. Will re-submit as per your comments. Thank you, Kyungmin Park ret = sdhci_add_host(host); if (ret) { dev_err(dev, sdhci_add_host() failed\n); diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index f9ca4c6..7fba401 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1198,6 +1198,9 @@ static int sdhci_get_ro(struct mmc_host *mmc) host = mmc_priv(mmc); + if ((host-quirks SDHCI_QUIRK_NO_WP_BIT) host-ops-get_ro) + return host-ops-get_ro(mmc); + spin_lock_irqsave(host-lock, flags); if (host-flags SDHCI_DEVICE_DEAD) diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index 0de8b38..dd9a233 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -247,6 +247,8 @@ struct sdhci_host { #define SDHCI_QUIRK_MISSING_CAPS (128) /* Controller has nonstandard clock management */ #define SDHCI_QUIRK_NONSTANDARD_MINCLOCK (129) +/* Controller has no write-protect pin connected with SD card */ +#define SDHCI_QUIRK_NO_WP_BIT (130) int irq; /* Device IRQ */ void __iomem * ioaddr; /* Mapped address */ @@ -321,6 +323,7 @@ struct sdhci_ops { unsigned int (*get_max_clock)(struct sdhci_host *host); unsigned int (*get_min_clock)(struct sdhci_host *host); unsigned int
RE: [PATCH v3 3/3] sdhci-s3c: Add SDHCI_QUIRK_NO_WP_BIT quirk for Samsung SoC
Marek Szyprowski wrote: Hello, On Friday, July 23, 2010 1:57 PM Kukjin Kim wrote: From: Hyuk Lee hyuk1@samsung.com If host controller doesn't have WP pin which should be connnected with SDMMC card WP pin, can implement get_ro function with using the allocated gpio. In order to use this quirk wp_gpio in the platform data must be set. Signed-off-by: Hyuk Lee hyuk1@samsung.com Signed-off-by: Kukjin Kim kgene@samsung.com --- drivers/mmc/host/sdhci-s3c.c | 43 ++ drivers/mmc/host/sdhci.c |3 ++ drivers/mmc/host/sdhci.h |3 ++ 3 files changed, 49 insertions(+), 0 deletions(-) diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c index 0d25285..0b75e57 100644 --- a/drivers/mmc/host/sdhci-s3c.c +++ b/drivers/mmc/host/sdhci-s3c.c @@ -22,6 +22,7 @@ #include linux/mmc/host.h +#include plat/gpio-cfg.h #include plat/sdhci.h #include plat/regs-sdhci.h @@ -213,6 +214,36 @@ static void sdhci_s3c_set_clock(struct sdhci_host *host, unsigned int clock) } /** + * sdhci_s3c_get_ro - callback for get_ro + * @host: The SDHCI host being changed + * + * If the WP pin is connected with GPIO, can get the value which indicates + * the card is locked or not. +*/ +static int sdhci_s3c_get_ro(struct mmc_host *mmc) +{ + struct sdhci_s3c *sc; + struct sdhci_host *host; + + host = mmc_priv(mmc); + sc = sdhci_priv(host); + + return gpio_get_value(sc-pdata-wp_gpio); +} + +/** + * sdhci_s3c_cfg_wp - configure GPIO for WP pin + * @gpio_num: GPIO number which connected with WP line from SD/MMC slot + * + * Configure GPIO for using WP line +*/ +static void sdhci_s3c_cfg_wp(unsigned int gpio_num) +{ + s3c_gpio_cfgpin(gpio_num, S3C_GPIO_INPUT); + s3c_gpio_setpull(gpio_num, S3C_GPIO_PULL_UP); +} + +/** * sdhci_s3c_get_min_clock - callback to get minimal supported clock value * @host: The SDHCI host being queried * @@ -375,6 +406,9 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev) if (pdata-cfg_gpio) pdata-cfg_gpio(pdev, pdata-max_width); + if (gpio_is_valid(pdata-wp_gpio)) + sdhci_s3c_ops.get_ro = sdhci_s3c_get_ro; + There is still a problem here, but the opposite to the issue from V1 of this patch. If one apply the current version, he would need to set pdata-wp_gpio to -1 on all existing platforms to get old behavior of the driver. Leaving it as zero means that the driver will try to use GPA(0) for write protection. Adding one more field to pdata (like bool has_gpio_wp) seems to be unavoidable in this case imho. Ok..thanks for your review. Will fix it like your card detection method soon. Thanks. Best regards, Kgene. -- Kukjin Kim kgene@samsung.com, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd. -- To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v3 3/3] sdhci-s3c: Add SDHCI_QUIRK_NO_WP_BIT quirk for Samsung SoC
Op 27-07-10 13:58, Kukjin Kim schreef: Maurus Cuelenaere wrote: Op 23-07-10 13:56, Kukjin Kim schreef: From: Hyuk Lee hyuk1@samsung.com If host controller doesn't have WP pin which should be connnected with SDMMC card WP pin, can implement get_ro function with using the allocated gpio. In order to use this quirk wp_gpio in the platform data must be set. Signed-off-by: Hyuk Lee hyuk1@samsung.com Signed-off-by: Kukjin Kim kgene@samsung.com --- drivers/mmc/host/sdhci-s3c.c | 43 ++ drivers/mmc/host/sdhci.c |3 ++ drivers/mmc/host/sdhci.h |3 ++ 3 files changed, 49 insertions(+), 0 deletions(-) diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c index 0d25285..0b75e57 100644 --- a/drivers/mmc/host/sdhci-s3c.c +++ b/drivers/mmc/host/sdhci-s3c.c @@ -22,6 +22,7 @@ #include linux/mmc/host.h +#include plat/gpio-cfg.h #include plat/sdhci.h #include plat/regs-sdhci.h @@ -213,6 +214,36 @@ static void sdhci_s3c_set_clock(struct sdhci_host *host, unsigned int clock) } /** + * sdhci_s3c_get_ro - callback for get_ro + * @host: The SDHCI host being changed + * + * If the WP pin is connected with GPIO, can get the value which indicates + * the card is locked or not. +*/ +static int sdhci_s3c_get_ro(struct mmc_host *mmc) +{ + struct sdhci_s3c *sc; + struct sdhci_host *host; + + host = mmc_priv(mmc); + sc = sdhci_priv(host); This can be done as static initializer if you reverse the order above. Could you please kindly explain about this? Sorry, I cannot get the exactly meaning... +static int sdhci_s3c_get_ro(struct mmc_host *mmc) +{ + struct sdhci_host *host = mmc_priv(mmc); + struct sdhci_s3c *sc = sdhci_priv(host); -- Maurus Cuelenaere -- To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCH v3 3/3] sdhci-s3c: Add SDHCI_QUIRK_NO_WP_BIT quirk for Samsung SoC
Maurus Cuelenaere wrote: Op 27-07-10 13:58, Kukjin Kim schreef: Maurus Cuelenaere wrote: Op 23-07-10 13:56, Kukjin Kim schreef: From: Hyuk Lee hyuk1@samsung.com If host controller doesn't have WP pin which should be connnected with SDMMC card WP pin, can implement get_ro function with using the allocated gpio. In order to use this quirk wp_gpio in the platform data must be set. Signed-off-by: Hyuk Lee hyuk1@samsung.com Signed-off-by: Kukjin Kim kgene@samsung.com --- drivers/mmc/host/sdhci-s3c.c | 43 ++ drivers/mmc/host/sdhci.c |3 ++ drivers/mmc/host/sdhci.h |3 ++ 3 files changed, 49 insertions(+), 0 deletions(-) diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c index 0d25285..0b75e57 100644 --- a/drivers/mmc/host/sdhci-s3c.c +++ b/drivers/mmc/host/sdhci-s3c.c @@ -22,6 +22,7 @@ #include linux/mmc/host.h +#include plat/gpio-cfg.h #include plat/sdhci.h #include plat/regs-sdhci.h @@ -213,6 +214,36 @@ static void sdhci_s3c_set_clock(struct sdhci_host *host, unsigned int clock) } /** + * sdhci_s3c_get_ro - callback for get_ro + * @host: The SDHCI host being changed + * + * If the WP pin is connected with GPIO, can get the value which indicates + * the card is locked or not. +*/ +static int sdhci_s3c_get_ro(struct mmc_host *mmc) +{ + struct sdhci_s3c *sc; + struct sdhci_host *host; + + host = mmc_priv(mmc); + sc = sdhci_priv(host); This can be done as static initializer if you reverse the order above. Could you please kindly explain about this? Sorry, I cannot get the exactly meaning... +static int sdhci_s3c_get_ro(struct mmc_host *mmc) +{ + struct sdhci_host *host = mmc_priv(mmc); + struct sdhci_s3c *sc = sdhci_priv(host); Hahaha, no need more words ;-) Thanks for your kindly explanation. I think, v4 patch seems to satisfy your suggestion...even though need v5 patch right now. Thanks. Best regards, Kgene. -- Kukjin Kim kgene@samsung.com, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd. -- To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v3 3/3] sdhci-s3c: Add SDHCI_QUIRK_NO_WP_BIT quirk for Samsung SoC
Op 23-07-10 13:56, Kukjin Kim schreef: From: Hyuk Lee hyuk1@samsung.com If host controller doesn't have WP pin which should be connnected with SDMMC card WP pin, can implement get_ro function with using the allocated gpio. In order to use this quirk wp_gpio in the platform data must be set. Signed-off-by: Hyuk Lee hyuk1@samsung.com Signed-off-by: Kukjin Kim kgene@samsung.com --- drivers/mmc/host/sdhci-s3c.c | 43 ++ drivers/mmc/host/sdhci.c |3 ++ drivers/mmc/host/sdhci.h |3 ++ 3 files changed, 49 insertions(+), 0 deletions(-) diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c index 0d25285..0b75e57 100644 --- a/drivers/mmc/host/sdhci-s3c.c +++ b/drivers/mmc/host/sdhci-s3c.c @@ -22,6 +22,7 @@ #include linux/mmc/host.h +#include plat/gpio-cfg.h #include plat/sdhci.h #include plat/regs-sdhci.h @@ -213,6 +214,36 @@ static void sdhci_s3c_set_clock(struct sdhci_host *host, unsigned int clock) } /** + * sdhci_s3c_get_ro - callback for get_ro + * @host: The SDHCI host being changed + * + * If the WP pin is connected with GPIO, can get the value which indicates + * the card is locked or not. +*/ +static int sdhci_s3c_get_ro(struct mmc_host *mmc) +{ + struct sdhci_s3c *sc; + struct sdhci_host *host; + + host = mmc_priv(mmc); + sc = sdhci_priv(host); This can be done as static initializer if you reverse the order above. + + return gpio_get_value(sc-pdata-wp_gpio); +} -- Maurus Cuelenaere -- To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v3 3/3] sdhci-s3c: Add SDHCI_QUIRK_NO_WP_BIT quirk for Samsung SoC
On Fri, Jul 23, 2010 at 8:56 PM, Kukjin Kim kgene@samsung.com wrote: From: Hyuk Lee hyuk1@samsung.com If host controller doesn't have WP pin which should be connnected with SDMMC card WP pin, can implement get_ro function with using the allocated gpio. In order to use this quirk wp_gpio in the platform data must be set. Signed-off-by: Hyuk Lee hyuk1@samsung.com Signed-off-by: Kukjin Kim kgene@samsung.com --- drivers/mmc/host/sdhci-s3c.c | 43 ++ drivers/mmc/host/sdhci.c | 3 ++ drivers/mmc/host/sdhci.h | 3 ++ 3 files changed, 49 insertions(+), 0 deletions(-) diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c index 0d25285..0b75e57 100644 --- a/drivers/mmc/host/sdhci-s3c.c +++ b/drivers/mmc/host/sdhci-s3c.c @@ -22,6 +22,7 @@ #include linux/mmc/host.h +#include plat/gpio-cfg.h #include plat/sdhci.h #include plat/regs-sdhci.h @@ -213,6 +214,36 @@ static void sdhci_s3c_set_clock(struct sdhci_host *host, unsigned int clock) } /** + * sdhci_s3c_get_ro - callback for get_ro + * @host: The SDHCI host being changed + * + * If the WP pin is connected with GPIO, can get the value which indicates + * the card is locked or not. +*/ +static int sdhci_s3c_get_ro(struct mmc_host *mmc) +{ + struct sdhci_s3c *sc; + struct sdhci_host *host; + + host = mmc_priv(mmc); + sc = sdhci_priv(host); + + return gpio_get_value(sc-pdata-wp_gpio); +} + +/** + * sdhci_s3c_cfg_wp - configure GPIO for WP pin + * @gpio_num: GPIO number which connected with WP line from SD/MMC slot + * + * Configure GPIO for using WP line +*/ +static void sdhci_s3c_cfg_wp(unsigned int gpio_num) +{ + s3c_gpio_cfgpin(gpio_num, S3C_GPIO_INPUT); + s3c_gpio_setpull(gpio_num, S3C_GPIO_PULL_UP); +} + +/** * sdhci_s3c_get_min_clock - callback to get minimal supported clock value * @host: The SDHCI host being queried * @@ -375,6 +406,9 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev) if (pdata-cfg_gpio) pdata-cfg_gpio(pdev, pdata-max_width); + if (gpio_is_valid(pdata-wp_gpio)) + sdhci_s3c_ops.get_ro = sdhci_s3c_get_ro; + host-hw_name = samsung-hsmmc; host-ops = sdhci_s3c_ops; host-quirks = 0; @@ -408,6 +442,15 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev) host-quirks |= (SDHCI_QUIRK_32BIT_DMA_ADDR | SDHCI_QUIRK_32BIT_DMA_SIZE); + /* Controller's WP pin donsn't connected with SD card and there is an + * allocated GPIO for getting WP data form SD card, use this quirk and + * send the GPIO number in pdata-wp_gpio. */ + host-quirks |= SDHCI_QUIRK_NO_WP_BIT; + + /* to configure gpio pin as a card write protection signal */ + if (gpio_is_valid(pdata-wp_gpio)) + sdhci_s3c_cfg_wp(pdata-wp_gpio); + Put it just one place like this. if (gpio_is_valid(pdata-wp_gpio)) { sdhci_s3c_cfg_wp(pdata-wp_gpio); sdhci_s3c_ops.get_ro = sdhci_s3c_get_ro; host-quirks |= SDHCI_QUIRK_NO_WP_BIT; } It reduce the below quirks check by one. If you add the quriks as your patch, host-quirks are always true whether WP use or not. Thank you, Kyungmin Park ret = sdhci_add_host(host); if (ret) { dev_err(dev, sdhci_add_host() failed\n); diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index f9ca4c6..7fba401 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1198,6 +1198,9 @@ static int sdhci_get_ro(struct mmc_host *mmc) host = mmc_priv(mmc); + if ((host-quirks SDHCI_QUIRK_NO_WP_BIT) host-ops-get_ro) + return host-ops-get_ro(mmc); + spin_lock_irqsave(host-lock, flags); if (host-flags SDHCI_DEVICE_DEAD) diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index 0de8b38..dd9a233 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -247,6 +247,8 @@ struct sdhci_host { #define SDHCI_QUIRK_MISSING_CAPS (128) /* Controller has nonstandard clock management */ #define SDHCI_QUIRK_NONSTANDARD_MINCLOCK (129) +/* Controller has no write-protect pin connected with SD card */ +#define SDHCI_QUIRK_NO_WP_BIT (130) int irq; /* Device IRQ */ void __iomem * ioaddr; /* Mapped address */ @@ -321,6 +323,7 @@ struct sdhci_ops { unsigned int (*get_max_clock)(struct sdhci_host *host); unsigned int (*get_min_clock)(struct sdhci_host *host); unsigned int (*get_timeout_clock)(struct sdhci_host *host); + int (*get_ro)(struct mmc_host *mmc); }; #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS -- 1.6.2.5 -- To unsubscribe from this list: send the line
RE: [PATCH v3 3/3] sdhci-s3c: Add SDHCI_QUIRK_NO_WP_BIT quirk for Samsung SoC
Hello, On Friday, July 23, 2010 1:57 PM Kukjin Kim wrote: From: Hyuk Lee hyuk1@samsung.com If host controller doesn't have WP pin which should be connnected with SDMMC card WP pin, can implement get_ro function with using the allocated gpio. In order to use this quirk wp_gpio in the platform data must be set. Signed-off-by: Hyuk Lee hyuk1@samsung.com Signed-off-by: Kukjin Kim kgene@samsung.com --- drivers/mmc/host/sdhci-s3c.c | 43 ++ drivers/mmc/host/sdhci.c |3 ++ drivers/mmc/host/sdhci.h |3 ++ 3 files changed, 49 insertions(+), 0 deletions(-) diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c index 0d25285..0b75e57 100644 --- a/drivers/mmc/host/sdhci-s3c.c +++ b/drivers/mmc/host/sdhci-s3c.c @@ -22,6 +22,7 @@ #include linux/mmc/host.h +#include plat/gpio-cfg.h #include plat/sdhci.h #include plat/regs-sdhci.h @@ -213,6 +214,36 @@ static void sdhci_s3c_set_clock(struct sdhci_host *host, unsigned int clock) } /** + * sdhci_s3c_get_ro - callback for get_ro + * @host: The SDHCI host being changed + * + * If the WP pin is connected with GPIO, can get the value which indicates + * the card is locked or not. +*/ +static int sdhci_s3c_get_ro(struct mmc_host *mmc) +{ + struct sdhci_s3c *sc; + struct sdhci_host *host; + + host = mmc_priv(mmc); + sc = sdhci_priv(host); + + return gpio_get_value(sc-pdata-wp_gpio); +} + +/** + * sdhci_s3c_cfg_wp - configure GPIO for WP pin + * @gpio_num: GPIO number which connected with WP line from SD/MMC slot + * + * Configure GPIO for using WP line +*/ +static void sdhci_s3c_cfg_wp(unsigned int gpio_num) +{ + s3c_gpio_cfgpin(gpio_num, S3C_GPIO_INPUT); + s3c_gpio_setpull(gpio_num, S3C_GPIO_PULL_UP); +} + +/** * sdhci_s3c_get_min_clock - callback to get minimal supported clock value * @host: The SDHCI host being queried * @@ -375,6 +406,9 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev) if (pdata-cfg_gpio) pdata-cfg_gpio(pdev, pdata-max_width); + if (gpio_is_valid(pdata-wp_gpio)) + sdhci_s3c_ops.get_ro = sdhci_s3c_get_ro; + There is still a problem here, but the opposite to the issue from V1 of this patch. If one apply the current version, he would need to set pdata-wp_gpio to -1 on all existing platforms to get old behavior of the driver. Leaving it as zero means that the driver will try to use GPA(0) for write protection. Adding one more field to pdata (like bool has_gpio_wp) seems to be unavoidable in this case imho. (snip) Best regards -- Marek Szyprowski Samsung Poland RD Center -- To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html