Hi, i saw that the latest RTSDK driver has support for CD polling. i will have a look at the datasheet to figure out if we can work around this in software. i need to port the newest sdk driver anyhow to get the mt7628 support
John On 27/08/2014 07:10, Luis Soltero wrote: > > > hello John, > > the following patch fixes the write protect issue on the AsiaRF FXS > board (AWV002-001 REV .1) > > > > > so the "broken-wp" patch is not required to mount the drive rw once > the pin is grounded. > > Not sure if you want to include the broken-wp patch or not in the CC > distribution. It might be useful to others... > > Here is hoping you didn't waste too much time on this. > > --luis > > > On 8/24/14, 2:46 AM, Luis Soltero wrote: >> hello john, >> >> thanks for looking into this... just so that you know I forced is_readonly = >> 0 >> >> in sdhci.c as in ... >> >> static int sdhci_check_ro(struct sdhci_host *host) >> { >> unsigned long flags; >> int is_readonly; >> >> spin_lock_irqsave(&host->lock, flags); >> >> if (host->flags & SDHCI_DEVICE_DEAD) >> is_readonly = 0; >> else if (host->quirks2 & SDHCI_QUIRK2_BROKEN_WRITE_PROTECT) >> is_readonly = 0; >> else if (host->ops->get_ro) >> is_readonly = host->ops->get_ro(host); >> else >> is_readonly = !(sdhci_readl(host, SDHCI_PRESENT_STATE) >> & SDHCI_WRITE_PROTECT); >> >> is_readonly = 0; >> >> spin_unlock_irqrestore(&host->lock, flags); >> >> return 0; >> >> and yet... >> >> root@Optimizer:~# e2fsck /dev/mmcblk0p2 >> e2fsck 1.42.4 (12-June-2012) >> e2fsck: Read-only file system while trying to open /dev/mmcblk0p2 >> Disk write-protected; use the -n option to do a read-only >> check of the device. >> >> so unsure at this time why the driver thinks that this is a read only file >> system. >> >> look forward to your findings. >> >> --luis >> >> >> On 8/24/14, 2:07 AM, John Crispin wrote: >>> Hi Luis, >>> >>> i have a awm0003 on my desk and will have a look during the week. >>> >>> John >>> >>> On 23/08/2014 23:26, Luis Soltero wrote: >>>> Hello All, >>>> >>>> Been trying to get an AsiaRF based MT7620a board running using CC >>>> r42230 and having issue getting the MMC SD card reader to mount >>>> rw. >>>> >>>> I have been in communication with the manufacturer to discover the >>>> GPIO (if any) used for the WP line for the SDHCI card reader on the >>>> board. They have not gotten back to me. In the mean time I have >>>> attempted to use some of the mmc driver properties such as >>>> wp-inverted to no avail. In desperation I implemented a patch >>>> based on http://permalink.gmane.org/gmane.linux.kernel.mmc/25615 >>>> which tells the driver to ignore the write protect line and assume >>>> r/w always... yet the card still mounts read only. note that when >>>> mounting the same SD card using a USB based reader the file system >>>> mounts rw as expected. >>>> >>>> here is the mount table showing the ro mount >>>> >>>> root@OpenWRT:~# mount rootfs on / type rootfs (rw) snip... >>>> /dev/mmcblk0p2 on /wxa type ext4 (ro,relatime,data=ordered) >>>> >>>> >>>> here is the DTS definition for the board >>>> >>>> sdhci@10130000 { status = "okay"; broken-wp; }; >>>> >>>> following is the patch (some of you might find it useful). Any >>>> thoughts would greatly be appreciated. >>>> >>>> $ cat >>>> target/linux/ramips/patches-3.10/0402-mmc-add-broken-wp.patch --- >>>> a/Documentation/devicetree/bindings/mmc/mmc.txt 2014-08-23 >>>> 12:39:54.816004290 -0700 +++ >>>> b/Documentation/devicetree/bindings/mmc/mmc.txt 2014-08-23 >>>> 12:40:56.574123135 -0700 @@ -21,6 +21,8 @@ below for the case, when >>>> a GPIO is used for the CD line - wp-inverted: when present, >>>> polarity on the WP line is inverted. See the note below for the >>>> case, when a GPIO is used for the WP line +- broken-wp: when >>>> present, no indication of write protection is available, + and >>>> write protection is assumed always off. - max-frequency: maximum >>>> operating clock frequency - no-1-8-v: when present, denotes that >>>> 1.8v card voltage is not supported on this system, even if the >>>> controller claims it is. --- a/drivers/mmc/host/sdhci-pltfm.c >>>> 2014-08-23 12:44:02.648454500 -0700 +++ >>>> b/drivers/mmc/host/sdhci-pltfm.c 2014-08-23 12:45:52.009124011 >>>> -0700 @@ -80,7 +80,9 @@ bus_width == 1)) host->quirks |= >>>> SDHCI_QUIRK_FORCE_1_BIT_DATA; >>>> >>>> - if (sdhci_of_wp_inverted(np)) + if >>>> (of_get_property(np, "sdhci,broken-wp", NULL) || >>>> of_get_property(np, "broken-wp", NULL)) + host->quirks2 >>>> |= SDHCI_QUIRK2_BROKEN_WRITE_PROTECT; + else if >>>> (sdhci_of_wp_inverted(np)) host->quirks |= >>>> SDHCI_QUIRK_INVERTED_WRITE_PROTECT; >>>> >>>> if (of_get_property(np, "broken-cd", NULL)) --- >>>> a/drivers/mmc/host/sdhci.c 2014-08-23 12:46:10.028575138 -0700 >>>> +++ b/drivers/mmc/host/sdhci.c 2014-08-23 12:48:23.588506665 >>>> -0700 @@ -1621,6 +1621,8 @@ >>>> >>>> if (host->flags & SDHCI_DEVICE_DEAD) is_readonly = 0; + else if >>>> (host->quirks2 & SDHCI_QUIRK2_BROKEN_WRITE_PROTECT) + >>>> is_readonly = 0; else if (host->ops->get_ro) is_readonly = >>>> host->ops->get_ro(host); else --- a/include/linux/mmc/sdhci.h >>>> 2014-08-23 12:56:38.005445877 -0700 +++ b/include/linux/mmc/sdhci.h >>>> 2014-08-23 12:58:58.113178602 -0700 @@ -95,6 +95,8 @@ /* 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) +/* There is no >>>> indication for write protection at all, assume RW */ +#define >>>> SDHCI_QUIRK2_BROKEN_WRITE_PROTECT (1<<4) >>>> >>>> int irq; /* Device IRQ */ void __iomem *ioaddr; /* Mapped >>>> address */ >>>> > > -- > > > Luis Soltero, Ph.D., MCS > Director of Software Development, CTO > Global Marine Networks, LLC > StarPilot, LLC > Tel: +1.865.379.8723 > Fax: +1.865.681.5017 > E-Mail: lsolt...@globalmarinenet.net > Web: http://www.globalmarinenet.net > Web: http://www.redportglobal.com > Web: http://www.starpilotllc.com _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel