From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: ARC-Seal: i=1; a=rsa-sha256; t=1517181736; cv=none; d=google.com; s=arc-20160816; b=vyhAu1W0H4puO624L6L0wwRvWxAvlLt7CUgg6xtk32vBP928wtM47rnqOZVLnchOiu QbqpLsgsAmjWsIL9+wzc1pcUNF5HD/UuHKFT+hVErdj0wTlfVCfXSDn1Qm4uvqrfQbX1 +x6VYLDpXNJMxyfuuhbiw2fpgzMw9b+NkrS3nnJgIN0vqP308Wl+SVXlNq5HQxb5pV0E gCBiIiZnC3qw4n4WRdQp/V2RwkJHH7y3FBVA4VhWG3Sm2rTG4YEomKQRZA0EpcJ8os6p AXDB+vjb6FHxSOCaL5r5inc+vLrslVE6g9RxGouQRl7SNnNvCz9yeWOtAI0tBI1K8dZZ gjYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=A/JeqdzkeHaO+459o3MI5tMDSoGnMzMSXvQM1U3m1/A=; b=rKQD780a9LpUMquVBGyBMbxvQdA7QbtIaE/Yt5z2bHeTr/FKRM6hj8uFeBHmkvsHwf OpDx7yOa/VQtdVeEf+5uHCpQUj7uw0xSxCCceCGr89CGam/KocwczRPLqnyf/w/01aiE Gh13vQbh8EZL5e3k0dk1BYXO7lClPSzeIVoFCz4eCabaCbJwDlaaVLajxYdumgtqvl5j wmvuS5WvNyivmt9DPl/ZvPt5jseXQUoKloWMA2PIdgvizs/oh78X/8WhX5j8VZRP+etG T4pj+0cbNnBUuzQ823nM9Ri2tB4pJi+Dosh2IcRVemDPmrQpeirD/yABmzso8EraR1eB njfw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=B9Czx4eY; spf=pass (google.com: domain of sudipm.mukherjee@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=sudipm.mukherjee@gmail.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=B9Czx4eY; spf=pass (google.com: domain of sudipm.mukherjee@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=sudipm.mukherjee@gmail.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com X-Google-Smtp-Source: AH8x224VkoHWxvUYDv1+5Pt9iweTEmc2Btrr1yhtgGr3QCdVXq8xT4SHZBt6EbJvfDTnfL5//05kTA== From: Sudip Mukherjee To: Greg Kroah-Hartman , Rodolfo Giometti Cc: linux-kernel@vger.kernel.org, Sudip Mukherjee Subject: [PATCH 1/2] pps: client: use new parport device model Date: Sun, 28 Jan 2018 23:22:08 +0000 Message-Id: <1517181729-5839-1-git-send-email-sudipm.mukherjee@gmail.com> X-Mailer: git-send-email 1.9.1 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1590880356205541714?= X-GMAIL-MSGID: =?utf-8?q?1590880356205541714?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: Modify pps client driver to use the new parallel port device model. In that process, added an index to mention the device number when we have more than one parallel port. Signed-off-by: Sudip Mukherjee Acked-by: Rodolfo Giometti --- Tested on qemu with two parallel ports. drivers/pps/clients/pps_parport.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/pps/clients/pps_parport.c b/drivers/pps/clients/pps_parport.c index 83797d8..4db824f 100644 --- a/drivers/pps/clients/pps_parport.c +++ b/drivers/pps/clients/pps_parport.c @@ -49,6 +49,7 @@ " zero turns clear edge capture off entirely"); module_param(clear_wait, uint, 0); +static DEFINE_IDA(pps_client_index); /* internal per port structure */ struct pps_client_pp { @@ -56,6 +57,7 @@ struct pps_client_pp { struct pps_device *pps; /* PPS device */ unsigned int cw; /* port clear timeout */ unsigned int cw_err; /* number of timeouts */ + int index; /* device number */ }; static inline int signal_is_set(struct parport *port) @@ -136,6 +138,8 @@ static void parport_irq(void *handle) static void parport_attach(struct parport *port) { + struct pardev_cb pps_client_cb; + int index; struct pps_client_pp *device; struct pps_source_info info = { .name = KBUILD_MODNAME, @@ -154,8 +158,15 @@ static void parport_attach(struct parport *port) return; } - device->pardev = parport_register_device(port, KBUILD_MODNAME, - NULL, NULL, parport_irq, PARPORT_FLAG_EXCL, device); + index = ida_simple_get(&pps_client_index, 0, 0, GFP_KERNEL); + memset(&pps_client_cb, 0, sizeof(pps_client_cb)); + pps_client_cb.private = device; + pps_client_cb.irq_func = parport_irq; + pps_client_cb.flags = PARPORT_FLAG_EXCL; + device->pardev = parport_register_dev_model(port, + KBUILD_MODNAME, + &pps_client_cb, + index); if (!device->pardev) { pr_err("couldn't register with %s\n", port->name); goto err_free; @@ -176,6 +187,7 @@ static void parport_attach(struct parport *port) device->cw = clear_wait; port->ops->enable_irq(port); + device->index = index; pr_info("attached to %s\n", port->name); @@ -186,6 +198,7 @@ static void parport_attach(struct parport *port) err_unregister_dev: parport_unregister_device(device->pardev); err_free: + ida_simple_remove(&pps_client_index, index); kfree(device); } @@ -205,13 +218,15 @@ static void parport_detach(struct parport *port) pps_unregister_source(device->pps); parport_release(pardev); parport_unregister_device(pardev); + ida_simple_remove(&pps_client_index, device->index); kfree(device); } static struct parport_driver pps_parport_driver = { .name = KBUILD_MODNAME, - .attach = parport_attach, + .match_port = parport_attach, .detach = parport_detach, + .devmodel = true, }; /* module staff */ -- 1.9.1