diff options
author | Ulf Hansson <ulf.hansson@linaro.org> | 2014-10-06 07:51:40 -0400 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@linaro.org> | 2014-11-10 06:40:33 -0500 |
commit | 6685ac62b2f08fcff77dc35c6b8bff1b74aaa408 (patch) | |
tree | 8fb75914fa7c3bea075f659b1f40524317e47a0c /drivers/mmc/core | |
parent | 0967edc6ef5c3c181cabde3178ea9f33e5130e4a (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.c | 41 |
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 | |||
30 | static ssize_t type_show(struct device *dev, | 28 | static 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 | ||
109 | static 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 | |||
117 | static 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 | |||
127 | static void mmc_bus_shutdown(struct device *dev) | 107 | static 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 | */ |
224 | int mmc_register_driver(struct mmc_driver *drv) | 201 | int 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 | |||
230 | EXPORT_SYMBOL(mmc_register_driver); | 206 | EXPORT_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 | */ |
236 | void mmc_unregister_driver(struct mmc_driver *drv) | 212 | void 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 | |||
242 | EXPORT_SYMBOL(mmc_unregister_driver); | 217 | EXPORT_SYMBOL(mmc_unregister_driver); |
243 | 218 | ||
244 | static void mmc_release_card(struct device *dev) | 219 | static void mmc_release_card(struct device *dev) |