summaryrefslogtreecommitdiffstats
path: root/drivers/net/plip
diff options
context:
space:
mode:
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>2016-01-07 05:12:37 -0500
committerDavid S. Miller <davem@davemloft.net>2016-01-09 21:02:05 -0500
commit824b1a97400338e47ba7f878a42cd89d80cd5b81 (patch)
tree8c2a3d66e79127b034094114d62ac807a33300f4 /drivers/net/plip
parentd86cdfcd5d7e1179e695977b7088882822f365c4 (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.c36
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
1325static 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
1318static struct parport_driver plip_driver = { 1336static 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
1324static void __exit plip_cleanup_module (void) 1344static 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