summaryrefslogtreecommitdiffstats
path: root/drivers/parport
diff options
context:
space:
mode:
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>2019-02-13 03:47:06 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-02-13 13:45:56 -0500
commit1aec4211204d9463d1fd209eb50453de16254599 (patch)
treed54fc893b9e38216e1ce634bf4ad73e7c5a9880d /drivers/parport
parentbde4a19fc04f5f46298c86b1acb7a4af1d5f138d (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.c32
-rw-r--r--drivers/parport/probe.c2
-rw-r--r--drivers/parport/share.c10
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)
213struct pardevice *parport_open(int devnum, const char *name) 213struct 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
486static 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
498static struct parport_driver daisy_driver = {
499 .name = "daisy_drv",
500 .probe = daisy_drv_probe,
501 .devmodel = true,
502};
503
504int daisy_drv_init(void)
505{
506 return parport_register_driver(&daisy_driver);
507}
508
509void 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,
257ssize_t parport_device_id (int devnum, char *buffer, size_t count) 257ssize_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
138int parport_bus_init(void) 138int 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
143void parport_bus_exit(void) 150void 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