]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/mmc/host/sdhci.h
sdhci: add no hi-speed bit quirk support
[net-next-2.6.git] / drivers / mmc / host / sdhci.h
index c8468134adc95db0dbfd5ec901ebf96930c22b84..d316bc79b63689048c751daff28b806a7ebdfb0f 100644 (file)
@@ -72,6 +72,7 @@
 #define   SDHCI_CTRL_ADMA1     0x08
 #define   SDHCI_CTRL_ADMA32    0x10
 #define   SDHCI_CTRL_ADMA64    0x18
+#define  SDHCI_CTRL_8BITBUS    0x20
 
 #define SDHCI_POWER_CONTROL    0x29
 #define  SDHCI_POWER_ON                0x01
@@ -240,12 +241,20 @@ struct sdhci_host {
 #define SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN              (1<<25)
 /* Controller cannot support End Attribute in NOP ADMA descriptor */
 #define SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC              (1<<26)
+/* Controller is missing device caps. Use caps provided by host */
+#define SDHCI_QUIRK_MISSING_CAPS                       (1<<27)
+/* Controller uses Auto CMD12 command to stop the transfer */
+#define SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12             (1<<28)
+/* Controller doesn't have HISPD bit field in HI-SPEED SD card */
+#define SDHCI_QUIRK_NO_HISPD_BIT                       (1<<29)
 
        int                     irq;            /* Device IRQ */
        void __iomem *          ioaddr;         /* Mapped address */
 
        const struct sdhci_ops  *ops;           /* Low level hw interface */
 
+       struct regulator        *vmmc;          /* Power regulator */
+
        /* Internal data */
        struct mmc_host         *mmc;           /* MMC structure */
        u64                     dma_mask;       /* custom DMA mask */
@@ -292,6 +301,8 @@ struct sdhci_host {
 
        struct timer_list       timer;          /* Timer for timeouts */
 
+       unsigned int            caps;           /* Alternative capabilities */
+
        unsigned long           private[0] ____cacheline_aligned;
 };
 
@@ -407,6 +418,7 @@ static inline void *sdhci_priv(struct sdhci_host *host)
        return (void *)host->private;
 }
 
+extern void sdhci_card_detect(struct sdhci_host *host);
 extern int sdhci_add_host(struct sdhci_host *host);
 extern void sdhci_remove_host(struct sdhci_host *host, int dead);