diff options
author | Sudip Mukherjee <sudipm.mukherjee@gmail.com> | 2016-01-07 05:12:37 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-01-09 21:02:05 -0500 |
commit | 824b1a97400338e47ba7f878a42cd89d80cd5b81 (patch) | |
tree | 8c2a3d66e79127b034094114d62ac807a33300f4 /drivers/net/plip | |
parent | d86cdfcd5d7e1179e695977b7088882822f365c4 (diff) |
net: plip: use new parport device model
Modify plip driver to use the new parallel port device model.
Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/plip')
-rw-r--r-- | drivers/net/plip/plip.c | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/drivers/net/plip/plip.c b/drivers/net/plip/plip.c index 040b8978d6ca..9c4b41a4df7d 100644 --- a/drivers/net/plip/plip.c +++ b/drivers/net/plip/plip.c | |||
@@ -1249,6 +1249,7 @@ static void plip_attach (struct parport *port) | |||
1249 | struct net_device *dev; | 1249 | struct net_device *dev; |
1250 | struct net_local *nl; | 1250 | struct net_local *nl; |
1251 | char name[IFNAMSIZ]; | 1251 | char name[IFNAMSIZ]; |
1252 | struct pardev_cb plip_cb; | ||
1252 | 1253 | ||
1253 | if ((parport[0] == -1 && (!timid || !port->devices)) || | 1254 | if ((parport[0] == -1 && (!timid || !port->devices)) || |
1254 | plip_searchfor(parport, port->number)) { | 1255 | plip_searchfor(parport, port->number)) { |
@@ -1273,9 +1274,15 @@ static void plip_attach (struct parport *port) | |||
1273 | 1274 | ||
1274 | nl = netdev_priv(dev); | 1275 | nl = netdev_priv(dev); |
1275 | nl->dev = dev; | 1276 | nl->dev = dev; |
1276 | nl->pardev = parport_register_device(port, dev->name, plip_preempt, | 1277 | |
1277 | plip_wakeup, plip_interrupt, | 1278 | memset(&plip_cb, 0, sizeof(plip_cb)); |
1278 | 0, dev); | 1279 | plip_cb.private = dev; |
1280 | plip_cb.preempt = plip_preempt; | ||
1281 | plip_cb.wakeup = plip_wakeup; | ||
1282 | plip_cb.irq_func = plip_interrupt; | ||
1283 | |||
1284 | nl->pardev = parport_register_dev_model(port, dev->name, | ||
1285 | &plip_cb, unit); | ||
1279 | 1286 | ||
1280 | if (!nl->pardev) { | 1287 | if (!nl->pardev) { |
1281 | printk(KERN_ERR "%s: parport_register failed\n", name); | 1288 | printk(KERN_ERR "%s: parport_register failed\n", name); |
@@ -1315,10 +1322,23 @@ static void plip_detach (struct parport *port) | |||
1315 | /* Nothing to do */ | 1322 | /* Nothing to do */ |
1316 | } | 1323 | } |
1317 | 1324 | ||
1325 | static int plip_probe(struct pardevice *par_dev) | ||
1326 | { | ||
1327 | struct device_driver *drv = par_dev->dev.driver; | ||
1328 | int len = strlen(drv->name); | ||
1329 | |||
1330 | if (strncmp(par_dev->name, drv->name, len)) | ||
1331 | return -ENODEV; | ||
1332 | |||
1333 | return 0; | ||
1334 | } | ||
1335 | |||
1318 | static struct parport_driver plip_driver = { | 1336 | static struct parport_driver plip_driver = { |
1319 | .name = "plip", | 1337 | .name = "plip", |
1320 | .attach = plip_attach, | 1338 | .probe = plip_probe, |
1321 | .detach = plip_detach | 1339 | .match_port = plip_attach, |
1340 | .detach = plip_detach, | ||
1341 | .devmodel = true, | ||
1322 | }; | 1342 | }; |
1323 | 1343 | ||
1324 | static void __exit plip_cleanup_module (void) | 1344 | static void __exit plip_cleanup_module (void) |
@@ -1326,8 +1346,6 @@ static void __exit plip_cleanup_module (void) | |||
1326 | struct net_device *dev; | 1346 | struct net_device *dev; |
1327 | int i; | 1347 | int i; |
1328 | 1348 | ||
1329 | parport_unregister_driver (&plip_driver); | ||
1330 | |||
1331 | for (i=0; i < PLIP_MAX; i++) { | 1349 | for (i=0; i < PLIP_MAX; i++) { |
1332 | if ((dev = dev_plip[i])) { | 1350 | if ((dev = dev_plip[i])) { |
1333 | struct net_local *nl = netdev_priv(dev); | 1351 | struct net_local *nl = netdev_priv(dev); |
@@ -1339,6 +1357,8 @@ static void __exit plip_cleanup_module (void) | |||
1339 | dev_plip[i] = NULL; | 1357 | dev_plip[i] = NULL; |
1340 | } | 1358 | } |
1341 | } | 1359 | } |
1360 | |||
1361 | parport_unregister_driver(&plip_driver); | ||
1342 | } | 1362 | } |
1343 | 1363 | ||
1344 | #ifndef MODULE | 1364 | #ifndef MODULE |