From: Michal Simek <monstr@monstr.eu>
To: James Walmsley <james@fullfat-fs.co.uk>, Chris Ball <cjb@laptop.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
linux-mmc@vger.kernel.org
Subject: Re: SDHCI - Add QUIRK2_BROKEN_WRITE_PROTEXT - Support Xilinx Zynq (Linux 3.9.0)
Date: Tue, 20 Aug 2013 14:54:02 +0200 [thread overview]
Message-ID: <521366EA.7080705@monstr.eu> (raw)
In-Reply-To: <BEDA323D25EF6045A68DAB9FD91A0BF14A5E84DB@AMSPRD0411MB426.eurprd04.prod.outlook.com>
[-- Attachment #1: Type: text/plain, Size: 3086 bytes --]
Hi James,
isn't it better to implement host->ops->get_ro() function for it?
It seems me better choice than introducing new quirk option.
Chris: What do you think?
Thanks,
Michal
On 08/16/2013 02:14 PM, James Walmsley wrote:
> Hi Michal,
>
> I have built a Xilinx Zynq based design which doesn't use the SDHCI Write-protect line.
> However, we use the MIO_0 pin for configuring a multiplexer and consequently the
> SDHCI driver thinks that the card is read-only (RO).
>
> In the patch below I have proposed a new quirk, similar to the QUIRK_BROKEN_CARD_DETECTION
> flag, which causes the sdhci driver to assume a card with RW access.
>
> This patch was made against the latest tree from Xilinx (github.com/Xilinx/linux-xlnx), Kernel 3.9.0
> and I have attached it to the LKML to propose the additional quirk which may be useful on other platforms.
>
> Kind regards,
>
> James Walmsley
>
> ---
> drivers/mmc/host/sdhci-of-xilinxps.c | 4 ++++
> drivers/mmc/host/sdhci.c | 4 ++++
> include/linux/mmc/sdhci.h | 1 +
> 3 files changed, 9 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-of-xilinxps.c b/drivers/mmc/host/sdhci-of-xilinxps.c
> index f79e0db..5553bc0 100644
> --- a/drivers/mmc/host/sdhci-of-xilinxps.c
> +++ b/drivers/mmc/host/sdhci-of-xilinxps.c
> @@ -211,6 +211,10 @@ static int sdhci_zynq_probe(struct platform_device *pdev)
> if (prop == NULL || (!(u32) be32_to_cpup(prop)))
> host->quirks |= SDHCI_QUIRK_BROKEN_CARD_DETECTION;
>
> + prop = of_get_property(np, "xlnx,has-wp", NULL);
> + if (prop == NULL || (!(u32) be32_to_cpup(prop)))
> + host->quirks2 |= SDHCI_QUIRK2_BROKEN_WRITE_PROTECT;
> +
> return 0;
>
> clk_notif_unreg:
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index 51bbba4..c40365f 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -1609,6 +1609,10 @@ static int sdhci_do_get_ro(struct sdhci_host *host)
> {
> int i, ro_count;
>
> + if(host->quirks2 & SDHCI_QUIRK2_BROKEN_WRITE_PROTECT) {
> + return 0; // Return zero to assume RW.
> + }
> +
> if (!(host->quirks & SDHCI_QUIRK_UNSTABLE_RO_DETECT))
> return sdhci_check_ro(host);
>
> diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h
> index b838ffc..3eccf12 100644
> --- a/include/linux/mmc/sdhci.h
> +++ b/include/linux/mmc/sdhci.h
> @@ -95,6 +95,7 @@ struct sdhci_host {
> /* The system physically doesn't support 1.8v, even if the host does */
> #define SDHCI_QUIRK2_NO_1_8_V (1<<2)
> #define SDHCI_QUIRK2_PRESET_VALUE_BROKEN (1<<3)
> +#define SDHCI_QUIRK2_BROKEN_WRITE_PROTECT (1<<4)
>
> int irq; /* Device IRQ */
> void __iomem *ioaddr; /* Mapped address */
>
--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]
next prev parent reply other threads:[~2013-08-20 12:54 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-16 12:14 SDHCI - Add QUIRK2_BROKEN_WRITE_PROTEXT - Support Xilinx Zynq (Linux 3.9.0) James Walmsley
2013-08-20 12:54 ` Michal Simek [this message]
2013-08-20 18:13 ` Chris Ball
2013-08-20 18:13 ` Chris Ball
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=521366EA.7080705@monstr.eu \
--to=monstr@monstr.eu \
--cc=cjb@laptop.org \
--cc=james@fullfat-fs.co.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.