mmc: add a card hotplug handler context
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Mon, 26 Dec 2011 01:40:03 +0000 (20:40 -0500)
committerChris Ball <cjb@laptop.org>
Thu, 12 Jan 2012 04:58:45 +0000 (23:58 -0500)
SD/MMC controllers provide different card insertion and removal detection
methods. On some of them the controller itself issues an interrupt, on
others polling is used, on yet others auxiliary means are used for this
purpose, e.g., a GPIO IRQ. Further, on some systems one of those methods
can be chosen at driver probing time and configured in software. E.g., on
some systems the SD/MMC controller card hot-plug detection pin can be
configured either as a respective controller functions, or an IRQ-capable
GPIO. To support such flexible configurations a card hot-plug context
is added by this patch.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
include/linux/mmc/host.h

index 9a03d03357456c8950ca02ca2f200e32d0e7b00c..742f0e102e1e88a2a89b7e37449b51839e90362c 100644 (file)
@@ -167,6 +167,11 @@ struct mmc_async_req {
        int (*err_check) (struct mmc_card *, struct mmc_async_req *);
 };
 
+struct mmc_hotplug {
+       unsigned int irq;
+       void *handler_priv;
+};
+
 struct mmc_host {
        struct device           *parent;
        struct device           class_dev;
@@ -300,6 +305,7 @@ struct mmc_host {
 
        struct delayed_work     detect;
        int                     detect_change;  /* card detect flag */
+       struct mmc_hotplug      hotplug;
 
        const struct mmc_bus_ops *bus_ops;      /* current bus driver */
        unsigned int            bus_refs;       /* reference counter */