From patchwork Thu Jan 7 10:12:37 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudip Mukherjee X-Patchwork-Id: 564230 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 925851402E2 for ; Thu, 7 Jan 2016 21:13:09 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=vuNdW6D/; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752783AbcAGKMs (ORCPT ); Thu, 7 Jan 2016 05:12:48 -0500 Received: from mail-pa0-f46.google.com ([209.85.220.46]:33904 "EHLO mail-pa0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752209AbcAGKMq (ORCPT ); Thu, 7 Jan 2016 05:12:46 -0500 Received: by mail-pa0-f46.google.com with SMTP id uo6so236923815pac.1; Thu, 07 Jan 2016 02:12:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=nHQN0oMZCuiE3DjiEREU35Y5pqziT09cjStK0oqmdzY=; b=vuNdW6D/DQkb7w/YsVsWXrA+Mgk7cySf1nTmaU/9jJCGncwu7Aj35jTp630YByAOci uHeQUUaH8yUvUFXf2hlWEgTiWEvwxHItbj5FUmcJHWQAvWUF9Cu8OXs0VVKDIKc/x9+R jQ31cl6iORkgwMWQQY766lZBdZxUsWdaTbLAVGB75my3MKCX0LT87OYFd4W00wM/ifyc i/q8bLrJ/+PcklXtqlqly306+1cxj2fc7galHb5wWKJgf7NxaicSRYB9UAroaui4cb8L k0fTjcoWH+yzhE4d9Fxx0uL/rLwa4hCb/wDZxrJGDaSKyJxo5UpXo9fkWJJytX/+xjHH eGaw== X-Received: by 10.66.185.225 with SMTP id ff1mr138084913pac.97.1452161565943; Thu, 07 Jan 2016 02:12:45 -0800 (PST) Received: from sudip-pc.vectortproxy.org ([183.82.228.160]) by smtp.gmail.com with ESMTPSA id qj8sm11962960pac.40.2016.01.07.02.12.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Jan 2016 02:12:45 -0800 (PST) From: Sudip Mukherjee To: "David S. Miller" Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Sudip Mukherjee Subject: [PATCH] net: plip: use new parport device model Date: Thu, 7 Jan 2016 15:42:37 +0530 Message-Id: <1452161557-6840-1-git-send-email-sudipm.mukherjee@gmail.com> X-Mailer: git-send-email 1.9.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Modify plip driver to use the new parallel port device model. Signed-off-by: Sudip Mukherjee --- drivers/net/plip/plip.c | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/drivers/net/plip/plip.c b/drivers/net/plip/plip.c index 040b897..9c4b41a 100644 --- a/drivers/net/plip/plip.c +++ b/drivers/net/plip/plip.c @@ -1249,6 +1249,7 @@ static void plip_attach (struct parport *port) struct net_device *dev; struct net_local *nl; char name[IFNAMSIZ]; + struct pardev_cb plip_cb; if ((parport[0] == -1 && (!timid || !port->devices)) || plip_searchfor(parport, port->number)) { @@ -1273,9 +1274,15 @@ static void plip_attach (struct parport *port) nl = netdev_priv(dev); nl->dev = dev; - nl->pardev = parport_register_device(port, dev->name, plip_preempt, - plip_wakeup, plip_interrupt, - 0, dev); + + memset(&plip_cb, 0, sizeof(plip_cb)); + plip_cb.private = dev; + plip_cb.preempt = plip_preempt; + plip_cb.wakeup = plip_wakeup; + plip_cb.irq_func = plip_interrupt; + + nl->pardev = parport_register_dev_model(port, dev->name, + &plip_cb, unit); if (!nl->pardev) { printk(KERN_ERR "%s: parport_register failed\n", name); @@ -1315,10 +1322,23 @@ static void plip_detach (struct parport *port) /* Nothing to do */ } +static int plip_probe(struct pardevice *par_dev) +{ + struct device_driver *drv = par_dev->dev.driver; + int len = strlen(drv->name); + + if (strncmp(par_dev->name, drv->name, len)) + return -ENODEV; + + return 0; +} + static struct parport_driver plip_driver = { - .name = "plip", - .attach = plip_attach, - .detach = plip_detach + .name = "plip", + .probe = plip_probe, + .match_port = plip_attach, + .detach = plip_detach, + .devmodel = true, }; static void __exit plip_cleanup_module (void) @@ -1326,8 +1346,6 @@ static void __exit plip_cleanup_module (void) struct net_device *dev; int i; - parport_unregister_driver (&plip_driver); - for (i=0; i < PLIP_MAX; i++) { if ((dev = dev_plip[i])) { struct net_local *nl = netdev_priv(dev); @@ -1339,6 +1357,8 @@ static void __exit plip_cleanup_module (void) dev_plip[i] = NULL; } } + + parport_unregister_driver(&plip_driver); } #ifndef MODULE