]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/linux/mmc/host.h
mmc: add support for card-detection polling
[linux-2.6-omap-h63xx.git] / include / linux / mmc / host.h
index 7ab962fa1d738ffd540e4a260bb6822830b802da..6188e19d23310c1fdf59759ac318c8cc04698e58 100644 (file)
@@ -51,8 +51,18 @@ struct mmc_ios {
 
 struct mmc_host_ops {
        void    (*request)(struct mmc_host *host, struct mmc_request *req);
+       /*
+        * Avoid calling these three functions too often or in a "fast path",
+        * since underlaying controller might implement them in an expensive
+        * and/or slow way.
+        *
+        * Also note that these functions might sleep, so don't call them
+        * in the atomic contexts!
+        */
        void    (*set_ios)(struct mmc_host *host, struct mmc_ios *ios);
        int     (*get_ro)(struct mmc_host *host);
+       int     (*get_cd)(struct mmc_host *host);
+
        void    (*enable_sdio_irq)(struct mmc_host *host, int enable);
 };
 
@@ -94,6 +104,7 @@ struct mmc_host {
 #define MMC_CAP_SD_HIGHSPEED   (1 << 3)        /* Can do SD high-speed timing */
 #define MMC_CAP_SDIO_IRQ       (1 << 4)        /* Can signal pending SDIO IRQs */
 #define MMC_CAP_SPI            (1 << 5)        /* Talks only SPI protocols */
+#define MMC_CAP_NEEDS_POLL     (1 << 6)        /* Needs polling for card-detection */
 
        /* host specific block data */
        unsigned int            max_seg_size;   /* see blk_queue_max_segment_size */