All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Simek <monstr@monstr.eu>
To: "Hans J. Koch" <hjk@hansjkoch.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 2/2] uio: Add two platform uio drivers to one
Date: Mon, 03 Jun 2013 14:34:11 +0200	[thread overview]
Message-ID: <51AC8D43.100@monstr.eu> (raw)
In-Reply-To: <51A5E644.1040901@monstr.eu>

[-- Attachment #1: Type: text/plain, Size: 7564 bytes --]

Hi Hans and Greg,

can you please comment this?

Thanks,
Michal


On 05/29/2013 01:28 PM, Michal Simek wrote:
> Hi Hans,
> 
> any comment on this?
> 
> Thanks,
> Michal
> 
> On 05/23/2013 04:01 PM, Michal Simek wrote:
>> - Remove Userspace I/O platform driver without IRQ support
>>   but add this functionality to genirq driver
>> - Remove code duplication from OF binding
>>
>> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
>> ---
>> The main reason for this change is to have one
>> compatibility string for UIO with and without IRQ.
>>
>> ---
>>  drivers/uio/Kconfig           |   7 ---
>>  drivers/uio/Makefile          |   1 -
>>  drivers/uio/uio_pdrv.c        | 113 ------------------------------------------
>>  drivers/uio/uio_pdrv_genirq.c |  30 ++++-------
>>  4 files changed, 9 insertions(+), 142 deletions(-)
>>  delete mode 100644 drivers/uio/uio_pdrv.c
>>
>> diff --git a/drivers/uio/Kconfig b/drivers/uio/Kconfig
>> index e92eeaf..2ff4c90 100644
>> --- a/drivers/uio/Kconfig
>> +++ b/drivers/uio/Kconfig
>> @@ -23,13 +23,6 @@ config UIO_CIF
>>  	  To compile this driver as a module, choose M here: the module
>>  	  will be called uio_cif.
>>
>> -config UIO_PDRV
>> -	tristate "Userspace I/O platform driver"
>> -	help
>> -	  Generic platform driver for Userspace I/O devices.
>> -
>> -	  If you don't know what to do here, say N.
>> -
>>  config UIO_PDRV_GENIRQ
>>  	tristate "Userspace I/O platform driver with generic IRQ handling"
>>  	help
>> diff --git a/drivers/uio/Makefile b/drivers/uio/Makefile
>> index b354c53..ea015a2 100644
>> --- a/drivers/uio/Makefile
>> +++ b/drivers/uio/Makefile
>> @@ -1,6 +1,5 @@
>>  obj-$(CONFIG_UIO)	+= uio.o
>>  obj-$(CONFIG_UIO_CIF)	+= uio_cif.o
>> -obj-$(CONFIG_UIO_PDRV)	+= uio_pdrv.o
>>  obj-$(CONFIG_UIO_PDRV_GENIRQ)	+= uio_pdrv_genirq.o
>>  obj-$(CONFIG_UIO_DMEM_GENIRQ)	+= uio_dmem_genirq.o
>>  obj-$(CONFIG_UIO_AEC)	+= uio_aec.o
>> diff --git a/drivers/uio/uio_pdrv.c b/drivers/uio/uio_pdrv.c
>> deleted file mode 100644
>> index 39be9e0..0000000
>> --- a/drivers/uio/uio_pdrv.c
>> +++ /dev/null
>> @@ -1,113 +0,0 @@
>> -/*
>> - * drivers/uio/uio_pdrv.c
>> - *
>> - * Copyright (C) 2008 by Digi International Inc.
>> - * All rights reserved.
>> - *
>> - * This program is free software; you can redistribute it and/or modify it
>> - * under the terms of the GNU General Public License version 2 as published by
>> - * the Free Software Foundation.
>> - */
>> -#include <linux/platform_device.h>
>> -#include <linux/uio_driver.h>
>> -#include <linux/stringify.h>
>> -#include <linux/module.h>
>> -#include <linux/slab.h>
>> -
>> -#define DRIVER_NAME "uio_pdrv"
>> -
>> -struct uio_platdata {
>> -	struct uio_info *uioinfo;
>> -};
>> -
>> -static int uio_pdrv_probe(struct platform_device *pdev)
>> -{
>> -	struct uio_info *uioinfo = pdev->dev.platform_data;
>> -	struct uio_platdata *pdata;
>> -	struct uio_mem *uiomem;
>> -	int ret = -ENODEV;
>> -	int i;
>> -
>> -	if (!uioinfo || !uioinfo->name || !uioinfo->version) {
>> -		dev_dbg(&pdev->dev, "%s: err_uioinfo\n", __func__);
>> -		goto err_uioinfo;
>> -	}
>> -
>> -	pdata = kzalloc(sizeof(*pdata), GFP_KERNEL);
>> -	if (!pdata) {
>> -		ret = -ENOMEM;
>> -		dev_dbg(&pdev->dev, "%s: err_alloc_pdata\n", __func__);
>> -		goto err_alloc_pdata;
>> -	}
>> -
>> -	pdata->uioinfo = uioinfo;
>> -
>> -	uiomem = &uioinfo->mem[0];
>> -
>> -	for (i = 0; i < pdev->num_resources; ++i) {
>> -		struct resource *r = &pdev->resource[i];
>> -
>> -		if (r->flags != IORESOURCE_MEM)
>> -			continue;
>> -
>> -		if (uiomem >= &uioinfo->mem[MAX_UIO_MAPS]) {
>> -			dev_warn(&pdev->dev, "device has more than "
>> -					__stringify(MAX_UIO_MAPS)
>> -					" I/O memory resources.\n");
>> -			break;
>> -		}
>> -
>> -		uiomem->memtype = UIO_MEM_PHYS;
>> -		uiomem->addr = r->start;
>> -		uiomem->size = resource_size(r);
>> -		uiomem->name = r->name;
>> -		++uiomem;
>> -	}
>> -
>> -	while (uiomem < &uioinfo->mem[MAX_UIO_MAPS]) {
>> -		uiomem->size = 0;
>> -		++uiomem;
>> -	}
>> -
>> -	pdata->uioinfo->priv = pdata;
>> -
>> -	ret = uio_register_device(&pdev->dev, pdata->uioinfo);
>> -
>> -	if (ret) {
>> -		kfree(pdata);
>> -err_alloc_pdata:
>> -err_uioinfo:
>> -		return ret;
>> -	}
>> -
>> -	platform_set_drvdata(pdev, pdata);
>> -
>> -	return 0;
>> -}
>> -
>> -static int uio_pdrv_remove(struct platform_device *pdev)
>> -{
>> -	struct uio_platdata *pdata = platform_get_drvdata(pdev);
>> -
>> -	uio_unregister_device(pdata->uioinfo);
>> -
>> -	kfree(pdata);
>> -
>> -	return 0;
>> -}
>> -
>> -static struct platform_driver uio_pdrv = {
>> -	.probe = uio_pdrv_probe,
>> -	.remove = uio_pdrv_remove,
>> -	.driver = {
>> -		.name = DRIVER_NAME,
>> -		.owner = THIS_MODULE,
>> -	},
>> -};
>> -
>> -module_platform_driver(uio_pdrv);
>> -
>> -MODULE_AUTHOR("Uwe Kleine-Koenig");
>> -MODULE_DESCRIPTION("Userspace I/O platform driver");
>> -MODULE_LICENSE("GPL v2");
>> -MODULE_ALIAS("platform:" DRIVER_NAME);
>> diff --git a/drivers/uio/uio_pdrv_genirq.c b/drivers/uio/uio_pdrv_genirq.c
>> index d7ba355..ccd2750 100644
>> --- a/drivers/uio/uio_pdrv_genirq.c
>> +++ b/drivers/uio/uio_pdrv_genirq.c
>> @@ -103,8 +103,6 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev)
>>  	int i;
>>
>>  	if (pdev->dev.of_node) {
>> -		int irq;
>> -
>>  		/* alloc uioinfo for one device */
>>  		uioinfo = kzalloc(sizeof(*uioinfo), GFP_KERNEL);
>>  		if (!uioinfo) {
>> @@ -114,13 +112,6 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev)
>>  		}
>>  		uioinfo->name = pdev->dev.of_node->name;
>>  		uioinfo->version = "devicetree";
>> -
>> -		/* Multiple IRQs are not supported */
>> -		irq = platform_get_irq(pdev, 0);
>> -		if (irq == -ENXIO)
>> -			uioinfo->irq = UIO_IRQ_NONE;
>> -		else
>> -			uioinfo->irq = irq;
>>  	}
>>
>>  	if (!uioinfo || !uioinfo->name || !uioinfo->version) {
>> @@ -146,14 +137,6 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev)
>>  	priv->flags = 0; /* interrupt is enabled to begin with */
>>  	priv->pdev = pdev;
>>
>> -	if (!uioinfo->irq) {
>> -		ret = platform_get_irq(pdev, 0);
>> -		if (ret < 0) {
>> -			dev_err(&pdev->dev, "failed to get IRQ\n");
>> -			goto bad0;
>> -		}
>> -		uioinfo->irq = ret;
>> -	}
>>  	uiomem = &uioinfo->mem[0];
>>
>>  	for (i = 0; i < pdev->num_resources; ++i) {
>> @@ -190,10 +173,15 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev)
>>  	 * Interrupt sharing is not supported.
>>  	 */
>>
>> -	uioinfo->handler = uio_pdrv_genirq_handler;
>> -	uioinfo->irqcontrol = uio_pdrv_genirq_irqcontrol;
>> -	uioinfo->open = uio_pdrv_genirq_open;
>> -	uioinfo->release = uio_pdrv_genirq_release;
>> +	ret = platform_get_irq(pdev, 0);
>> +	if (ret >= 0) {
>> +		uioinfo->irq = ret;
>> +		uioinfo->handler = uio_pdrv_genirq_handler;
>> +		uioinfo->irqcontrol = uio_pdrv_genirq_irqcontrol;
>> +		uioinfo->open = uio_pdrv_genirq_open;
>> +		uioinfo->release = uio_pdrv_genirq_release;
>> +	}
>> +
>>  	uioinfo->priv = priv;
>>
>>  	/* Enable Runtime PM for this device:
>> --
>> 1.8.2.3
>>
> 
> 


-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]

  reply	other threads:[~2013-06-03 12:34 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-23 14:01 [RFC PATCH 1/2] uio: Use Use of_match_ptr() macro in uio_pdrv_genirq.c Michal Simek
2013-05-23 14:01 ` Michal Simek
2013-05-23 14:01 ` [RFC PATCH 2/2] uio: Add two platform uio drivers to one Michal Simek
2013-05-29 11:28   ` Michal Simek
2013-06-03 12:34     ` Michal Simek [this message]
2013-06-03 21:05       ` Greg Kroah-Hartman
2013-06-12  5:43         ` Michal Simek
2013-06-20 16:01         ` Pavel Machek
2013-06-20 16:20           ` [lm-sensors] [PATCH] MAINTAINERS: Remove Hans J. Koch entries Joe Perches
2013-06-20 16:20             ` Joe Perches
2013-06-20 16:30             ` [lm-sensors] " Guenter Roeck
2013-06-20 16:30               ` Guenter Roeck
2013-06-20 17:09               ` Joe Perches
2013-06-20 17:09                 ` Joe Perches
2013-06-21  2:50             ` Hans J. Koch
2013-06-21  2:50               ` Hans J. Koch
2013-06-21  3:08               ` [lm-sensors] " Joe Perches
2013-06-21  3:08                 ` Joe Perches
2013-06-21  7:47               ` [lm-sensors] " Jean Delvare
2013-06-21  7:47                 ` Jean Delvare
2013-06-21  9:15               ` Michal Simek
2013-06-21  9:15                 ` Michal Simek
2013-06-20 17:11           ` [RFC PATCH 2/2] uio: Add two platform uio drivers to one Michal Simek
2013-06-20 23:13             ` Pavel Machek
2013-06-21  9:06               ` Michal Simek
2013-06-10  8:59   ` Michal Simek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51AC8D43.100@monstr.eu \
    --to=monstr@monstr.eu \
    --cc=gregkh@linuxfoundation.org \
    --cc=hjk@hansjkoch.de \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.