aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mmc
diff options
context:
space:
mode:
authorPierre Ossman <drzeus@drzeus.cx>2006-12-30 18:11:32 -0500
committerPierre Ossman <drzeus@drzeus.cx>2007-05-01 07:41:06 -0400
commit7ea239d9e6d6993469a6a8ca83ff23834dfc3fce (patch)
tree40629c00e317ca8f4ce0a6394dcb4b7535e7b7ab /include/linux/mmc
parentb2670b1c6ddd54be4a0f72f853122510ea5ef285 (diff)
mmc: add bus handler
Delegate protocol handling to "bus handlers". This allows the core to just handle the task of arbitrating the bus. Initialisation and pampering of cards is now done by the different bus handlers. This design also allows MMC and SD (and later SDIO) to be more cleanly separated, allowing easier maintenance. Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Diffstat (limited to 'include/linux/mmc')
-rw-r--r--include/linux/mmc/host.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 43bf6a5c398d..efae87b5c4e7 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -131,6 +131,8 @@ struct mmc_host {
131 unsigned int max_blk_count; /* maximum number of blocks in one req */ 131 unsigned int max_blk_count; /* maximum number of blocks in one req */
132 132
133 /* private data */ 133 /* private data */
134 spinlock_t lock; /* lock for claim and bus ops */
135
134 struct mmc_ios ios; /* current io bus settings */ 136 struct mmc_ios ios; /* current io bus settings */
135 u32 ocr; /* the current OCR setting */ 137 u32 ocr; /* the current OCR setting */
136 138
@@ -141,7 +143,6 @@ struct mmc_host {
141 struct mmc_card *card; /* device attached to this host */ 143 struct mmc_card *card; /* device attached to this host */
142 144
143 wait_queue_head_t wq; 145 wait_queue_head_t wq;
144 spinlock_t lock; /* claimed lock */
145 unsigned int claimed:1; /* host exclusively claimed */ 146 unsigned int claimed:1; /* host exclusively claimed */
146 147
147 struct delayed_work detect; 148 struct delayed_work detect;
@@ -149,6 +150,10 @@ struct mmc_host {
149 unsigned int removed:1; /* host is being removed */ 150 unsigned int removed:1; /* host is being removed */
150#endif 151#endif
151 152
153 const struct mmc_bus_ops *bus_ops; /* current bus driver */
154 unsigned int bus_refs; /* reference counter */
155 unsigned int bus_dead:1; /* bus has been released */
156
152 unsigned long private[0] ____cacheline_aligned; 157 unsigned long private[0] ____cacheline_aligned;
153}; 158};
154 159