diff options
author | Sudip Mukherjee <sudipm.mukherjee@gmail.com> | 2019-02-13 03:47:06 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-02-13 13:45:56 -0500 |
commit | 1aec4211204d9463d1fd209eb50453de16254599 (patch) | |
tree | d54fc893b9e38216e1ce634bf4ad73e7c5a9880d /drivers/parport | |
parent | bde4a19fc04f5f46298c86b1acb7a4af1d5f138d (diff) |
parport: daisy: use new parport device model
Modify parport daisy driver to use the new parallel port device model.
Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/parport')
-rw-r--r-- | drivers/parport/daisy.c | 32 | ||||
-rw-r--r-- | drivers/parport/probe.c | 2 | ||||
-rw-r--r-- | drivers/parport/share.c | 10 |
3 files changed, 41 insertions, 3 deletions
diff --git a/drivers/parport/daisy.c b/drivers/parport/daisy.c index 5484a46dafda..56dd83a45e55 100644 --- a/drivers/parport/daisy.c +++ b/drivers/parport/daisy.c | |||
@@ -213,10 +213,12 @@ void parport_daisy_fini(struct parport *port) | |||
213 | struct pardevice *parport_open(int devnum, const char *name) | 213 | struct pardevice *parport_open(int devnum, const char *name) |
214 | { | 214 | { |
215 | struct daisydev *p = topology; | 215 | struct daisydev *p = topology; |
216 | struct pardev_cb par_cb; | ||
216 | struct parport *port; | 217 | struct parport *port; |
217 | struct pardevice *dev; | 218 | struct pardevice *dev; |
218 | int daisy; | 219 | int daisy; |
219 | 220 | ||
221 | memset(&par_cb, 0, sizeof(par_cb)); | ||
220 | spin_lock(&topology_lock); | 222 | spin_lock(&topology_lock); |
221 | while (p && p->devnum != devnum) | 223 | while (p && p->devnum != devnum) |
222 | p = p->next; | 224 | p = p->next; |
@@ -230,7 +232,7 @@ struct pardevice *parport_open(int devnum, const char *name) | |||
230 | port = parport_get_port(p->port); | 232 | port = parport_get_port(p->port); |
231 | spin_unlock(&topology_lock); | 233 | spin_unlock(&topology_lock); |
232 | 234 | ||
233 | dev = parport_register_device(port, name, NULL, NULL, NULL, 0, NULL); | 235 | dev = parport_register_dev_model(port, name, &par_cb, devnum); |
234 | parport_put_port(port); | 236 | parport_put_port(port); |
235 | if (!dev) | 237 | if (!dev) |
236 | return NULL; | 238 | return NULL; |
@@ -480,3 +482,31 @@ static int assign_addrs(struct parport *port) | |||
480 | kfree(deviceid); | 482 | kfree(deviceid); |
481 | return detected; | 483 | return detected; |
482 | } | 484 | } |
485 | |||
486 | static int daisy_drv_probe(struct pardevice *par_dev) | ||
487 | { | ||
488 | struct device_driver *drv = par_dev->dev.driver; | ||
489 | |||
490 | if (strcmp(drv->name, "daisy_drv")) | ||
491 | return -ENODEV; | ||
492 | if (strcmp(par_dev->name, daisy_dev_name)) | ||
493 | return -ENODEV; | ||
494 | |||
495 | return 0; | ||
496 | } | ||
497 | |||
498 | static struct parport_driver daisy_driver = { | ||
499 | .name = "daisy_drv", | ||
500 | .probe = daisy_drv_probe, | ||
501 | .devmodel = true, | ||
502 | }; | ||
503 | |||
504 | int daisy_drv_init(void) | ||
505 | { | ||
506 | return parport_register_driver(&daisy_driver); | ||
507 | } | ||
508 | |||
509 | void daisy_drv_exit(void) | ||
510 | { | ||
511 | parport_unregister_driver(&daisy_driver); | ||
512 | } | ||
diff --git a/drivers/parport/probe.c b/drivers/parport/probe.c index e035174ba205..e5e6a463a941 100644 --- a/drivers/parport/probe.c +++ b/drivers/parport/probe.c | |||
@@ -257,7 +257,7 @@ static ssize_t parport_read_device_id (struct parport *port, char *buffer, | |||
257 | ssize_t parport_device_id (int devnum, char *buffer, size_t count) | 257 | ssize_t parport_device_id (int devnum, char *buffer, size_t count) |
258 | { | 258 | { |
259 | ssize_t retval = -ENXIO; | 259 | ssize_t retval = -ENXIO; |
260 | struct pardevice *dev = parport_open (devnum, "Device ID probe"); | 260 | struct pardevice *dev = parport_open(devnum, daisy_dev_name); |
261 | if (!dev) | 261 | if (!dev) |
262 | return -ENXIO; | 262 | return -ENXIO; |
263 | 263 | ||
diff --git a/drivers/parport/share.c b/drivers/parport/share.c index 5dc53d420ca8..0171b8dbcdcd 100644 --- a/drivers/parport/share.c +++ b/drivers/parport/share.c | |||
@@ -137,11 +137,19 @@ static struct bus_type parport_bus_type = { | |||
137 | 137 | ||
138 | int parport_bus_init(void) | 138 | int parport_bus_init(void) |
139 | { | 139 | { |
140 | return bus_register(&parport_bus_type); | 140 | int retval; |
141 | |||
142 | retval = bus_register(&parport_bus_type); | ||
143 | if (retval) | ||
144 | return retval; | ||
145 | daisy_drv_init(); | ||
146 | |||
147 | return 0; | ||
141 | } | 148 | } |
142 | 149 | ||
143 | void parport_bus_exit(void) | 150 | void parport_bus_exit(void) |
144 | { | 151 | { |
152 | daisy_drv_exit(); | ||
145 | bus_unregister(&parport_bus_type); | 153 | bus_unregister(&parport_bus_type); |
146 | } | 154 | } |
147 | 155 | ||