aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/core
diff options
context:
space:
mode:
authorUlf Hansson <ulf.hansson@linaro.org>2014-10-06 07:51:40 -0400
committerUlf Hansson <ulf.hansson@linaro.org>2014-11-10 06:40:33 -0500
commit6685ac62b2f08fcff77dc35c6b8bff1b74aaa408 (patch)
tree8fb75914fa7c3bea075f659b1f40524317e47a0c /drivers/mmc/core
parent0967edc6ef5c3c181cabde3178ea9f33e5130e4a (diff)
mmc: core: Convert mmc_driver to device_driver
The struct mmc_driver adds an extra layer on top of the struct device_driver. That would be fine, if there were a good reason, but that's not the case. Let's simplify code by converting to the common struct device_driver instead and thus also removing superfluous overhead. Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'drivers/mmc/core')
-rw-r--r--drivers/mmc/core/bus.c41
1 files changed, 8 insertions, 33 deletions
diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c
index 2f375283c423..5ca562ccfcf3 100644
--- a/drivers/mmc/core/bus.c
+++ b/drivers/mmc/core/bus.c
@@ -25,8 +25,6 @@
25#include "sdio_cis.h" 25#include "sdio_cis.h"
26#include "bus.h" 26#include "bus.h"
27 27
28#define to_mmc_driver(d) container_of(d, struct mmc_driver, drv)
29
30static ssize_t type_show(struct device *dev, 28static ssize_t type_show(struct device *dev,
31 struct device_attribute *attr, char *buf) 29 struct device_attribute *attr, char *buf)
32{ 30{
@@ -106,33 +104,14 @@ mmc_bus_uevent(struct device *dev, struct kobj_uevent_env *env)
106 return retval; 104 return retval;
107} 105}
108 106
109static int mmc_bus_probe(struct device *dev)
110{
111 struct mmc_driver *drv = to_mmc_driver(dev->driver);
112 struct mmc_card *card = mmc_dev_to_card(dev);
113
114 return drv->probe(card);
115}
116
117static int mmc_bus_remove(struct device *dev)
118{
119 struct mmc_driver *drv = to_mmc_driver(dev->driver);
120 struct mmc_card *card = mmc_dev_to_card(dev);
121
122 drv->remove(card);
123
124 return 0;
125}
126
127static void mmc_bus_shutdown(struct device *dev) 107static void mmc_bus_shutdown(struct device *dev)
128{ 108{
129 struct mmc_driver *drv = to_mmc_driver(dev->driver);
130 struct mmc_card *card = mmc_dev_to_card(dev); 109 struct mmc_card *card = mmc_dev_to_card(dev);
131 struct mmc_host *host = card->host; 110 struct mmc_host *host = card->host;
132 int ret; 111 int ret;
133 112
134 if (dev->driver && drv->shutdown) 113 if (dev->driver && dev->driver->shutdown)
135 drv->shutdown(card); 114 dev->driver->shutdown(dev);
136 115
137 if (host->bus_ops->shutdown) { 116 if (host->bus_ops->shutdown) {
138 ret = host->bus_ops->shutdown(host); 117 ret = host->bus_ops->shutdown(host);
@@ -201,8 +180,6 @@ static struct bus_type mmc_bus_type = {
201 .dev_groups = mmc_dev_groups, 180 .dev_groups = mmc_dev_groups,
202 .match = mmc_bus_match, 181 .match = mmc_bus_match,
203 .uevent = mmc_bus_uevent, 182 .uevent = mmc_bus_uevent,
204 .probe = mmc_bus_probe,
205 .remove = mmc_bus_remove,
206 .shutdown = mmc_bus_shutdown, 183 .shutdown = mmc_bus_shutdown,
207 .pm = &mmc_bus_pm_ops, 184 .pm = &mmc_bus_pm_ops,
208}; 185};
@@ -221,24 +198,22 @@ void mmc_unregister_bus(void)
221 * mmc_register_driver - register a media driver 198 * mmc_register_driver - register a media driver
222 * @drv: MMC media driver 199 * @drv: MMC media driver
223 */ 200 */
224int mmc_register_driver(struct mmc_driver *drv) 201int mmc_register_driver(struct device_driver *drv)
225{ 202{
226 drv->drv.bus = &mmc_bus_type; 203 drv->bus = &mmc_bus_type;
227 return driver_register(&drv->drv); 204 return driver_register(drv);
228} 205}
229
230EXPORT_SYMBOL(mmc_register_driver); 206EXPORT_SYMBOL(mmc_register_driver);
231 207
232/** 208/**
233 * mmc_unregister_driver - unregister a media driver 209 * mmc_unregister_driver - unregister a media driver
234 * @drv: MMC media driver 210 * @drv: MMC media driver
235 */ 211 */
236void mmc_unregister_driver(struct mmc_driver *drv) 212void mmc_unregister_driver(struct device_driver *drv)
237{ 213{
238 drv->drv.bus = &mmc_bus_type; 214 drv->bus = &mmc_bus_type;
239 driver_unregister(&drv->drv); 215 driver_unregister(drv);
240} 216}
241
242EXPORT_SYMBOL(mmc_unregister_driver); 217EXPORT_SYMBOL(mmc_unregister_driver);
243 218
244static void mmc_release_card(struct device *dev) 219static void mmc_release_card(struct device *dev)