Commit 8bdb871f authored by Anton Vorontsov's avatar Anton Vorontsov Committed by James Toy

MPC85xx SOCs have normal write-protect state reporting, so we shouldn't

hard-code the quirk.

Instead, look for "sdhci,wp-inverted" property, plus check for
mpc837x_{rdb,mds} machines since older device trees don't specify the new
property.
Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
Cc: Pierre Ossman <pierre@ossman.eu>
Cc: Kumar Gala <galak@kernel.crashing.org>
Cc: David Vrabel <david.vrabel@csr.com>
Cc: Ben Dooks <ben@fluff.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: <linux-mmc@vger.kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 9d2f9d4a
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_platform.h> #include <linux/of_platform.h>
#include <linux/mmc/host.h> #include <linux/mmc/host.h>
#include <asm/machdep.h>
#include "sdhci.h" #include "sdhci.h"
struct sdhci_of_data { struct sdhci_of_data {
...@@ -175,7 +176,6 @@ static unsigned int esdhc_get_min_clock(struct sdhci_host *host) ...@@ -175,7 +176,6 @@ static unsigned int esdhc_get_min_clock(struct sdhci_host *host)
static struct sdhci_of_data sdhci_esdhc = { static struct sdhci_of_data sdhci_esdhc = {
.quirks = SDHCI_QUIRK_FORCE_BLK_SZ_2048 | .quirks = SDHCI_QUIRK_FORCE_BLK_SZ_2048 |
SDHCI_QUIRK_BROKEN_CARD_DETECTION | SDHCI_QUIRK_BROKEN_CARD_DETECTION |
SDHCI_QUIRK_INVERTED_WRITE_PROTECT |
SDHCI_QUIRK_NO_BUSY_IRQ | SDHCI_QUIRK_NO_BUSY_IRQ |
SDHCI_QUIRK_NONSTANDARD_CLOCK | SDHCI_QUIRK_NONSTANDARD_CLOCK |
SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK | SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
...@@ -219,6 +219,15 @@ static int sdhci_of_resume(struct of_device *ofdev) ...@@ -219,6 +219,15 @@ static int sdhci_of_resume(struct of_device *ofdev)
#endif #endif
static bool __devinit sdhci_of_wp_inverted(struct device_node *np)
{
if (of_get_property(np, "sdhci,wp-inverted", NULL))
return true;
/* Old device trees don't have the wp-inverted property. */
return machine_is(mpc837x_rdb) || machine_is(mpc837x_mds);
}
static int __devinit sdhci_of_probe(struct of_device *ofdev, static int __devinit sdhci_of_probe(struct of_device *ofdev,
const struct of_device_id *match) const struct of_device_id *match)
{ {
...@@ -261,6 +270,9 @@ static int __devinit sdhci_of_probe(struct of_device *ofdev, ...@@ -261,6 +270,9 @@ static int __devinit sdhci_of_probe(struct of_device *ofdev,
if (of_get_property(np, "sdhci,1-bit-only", NULL)) if (of_get_property(np, "sdhci,1-bit-only", NULL))
host->quirks |= SDHCI_QUIRK_FORCE_1_BIT_DATA; host->quirks |= SDHCI_QUIRK_FORCE_1_BIT_DATA;
if (sdhci_of_wp_inverted(np))
host->quirks |= SDHCI_QUIRK_INVERTED_WRITE_PROTECT;
clk = of_get_property(np, "clock-frequency", &size); clk = of_get_property(np, "clock-frequency", &size);
if (clk && size == sizeof(*clk) && *clk) if (clk && size == sizeof(*clk) && *clk)
of_host->clock = *clk; of_host->clock = *clk;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment