sdhci-of: don't hard-code inverted write-protect quirk
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: Anton 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: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
50dfe70fe9
commit
8226a21925
|
@ -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)
|
||||||
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)
|
||||||
|
|
||||||
#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,
|
||||||
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;
|
||||||
|
|
Loading…
Reference in a new issue