* [PATCH v4] uio/pdrv_genirq: Add OF support
@ 2011-05-02 6:51 Michal Simek
[not found] ` <1304319115-32745-1-git-send-email-monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org>
2011-05-04 13:12 ` Arnd Bergmann
0 siblings, 2 replies; 10+ messages in thread
From: Michal Simek @ 2011-05-02 6:51 UTC (permalink / raw)
To: devicetree-discuss
Cc: grant.likely, john.williams, linux-kernel, hjk, w.sang, arnd,
Michal Simek
Adding OF binding to genirq.
Version string is setup to the "devicetree".
Compatible string is not setup for now but you can add your
custom compatible string to uio_of_genirq_match structure.
For example with "vendor,device" compatible string:
static const struct of_device_id __devinitconst uio_of_genirq_match[] = {
{ .compatible = "vendor,device", },
{ /* empty for now */ },
};
Signed-off-by: Michal Simek <monstr@monstr.eu>
---
v4: Remove dev_info messages
Check irq against -ENXIO for no irq
v3: Fix irq binding
Use "devicetree" as version string
v2: Remove additional resource binding
Setup correct version string
Clear compatible string
---
drivers/uio/uio_pdrv_genirq.c | 39 +++++++++++++++++++++++++++++++++++++++
1 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/drivers/uio/uio_pdrv_genirq.c b/drivers/uio/uio_pdrv_genirq.c
index 7174d51..ed6bf64 100644
--- a/drivers/uio/uio_pdrv_genirq.c
+++ b/drivers/uio/uio_pdrv_genirq.c
@@ -23,6 +23,10 @@
#include <linux/pm_runtime.h>
#include <linux/slab.h>
+#include <linux/of.h>
+#include <linux/of_platform.h>
+#include <linux/of_address.h>
+
#define DRIVER_NAME "uio_pdrv_genirq"
struct uio_pdrv_genirq_platdata {
@@ -97,6 +101,27 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev)
int ret = -EINVAL;
int i;
+ if (!uioinfo) {
+ int irq;
+
+ /* alloc uioinfo for one device */
+ uioinfo = kzalloc(sizeof(*uioinfo), GFP_KERNEL);
+ if (!uioinfo) {
+ ret = -ENOMEM;
+ dev_err(&pdev->dev, "unable to kmalloc\n");
+ goto bad2;
+ }
+ 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) {
dev_err(&pdev->dev, "missing platform_data\n");
goto bad0;
@@ -180,6 +205,10 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev)
kfree(priv);
pm_runtime_disable(&pdev->dev);
bad0:
+ /* kfree uioinfo for CONFIG_OF */
+ if (!pdev->dev.platform_data)
+ kfree(uioinfo);
+ bad2:
return ret;
}
@@ -215,6 +244,15 @@ static const struct dev_pm_ops uio_pdrv_genirq_dev_pm_ops = {
.runtime_resume = uio_pdrv_genirq_runtime_nop,
};
+#ifdef CONFIG_OF
+static const struct of_device_id __devinitconst uio_of_genirq_match[] = {
+ { /* empty for now */ },
+};
+MODULE_DEVICE_TABLE(of, uio_of_genirq_match);
+#else
+# define uio_of_genirq_match NULL
+#endif
+
static struct platform_driver uio_pdrv_genirq = {
.probe = uio_pdrv_genirq_probe,
.remove = uio_pdrv_genirq_remove,
@@ -222,6 +260,7 @@ static struct platform_driver uio_pdrv_genirq = {
.name = DRIVER_NAME,
.owner = THIS_MODULE,
.pm = &uio_pdrv_genirq_dev_pm_ops,
+ .of_match_table = uio_of_genirq_match,
},
};
--
1.5.5.6
^ permalink raw reply related [flat|nested] 10+ messages in thread[parent not found: <1304319115-32745-1-git-send-email-monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org>]
* Re: [PATCH v4] uio/pdrv_genirq: Add OF support [not found] ` <1304319115-32745-1-git-send-email-monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org> @ 2011-05-03 19:57 ` Hans J. Koch 2011-05-03 20:34 ` Wolfram Sang 1 sibling, 0 replies; 10+ messages in thread From: Hans J. Koch @ 2011-05-03 19:57 UTC (permalink / raw) To: Michal Simek Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, linux-kernel-u79uwXL29TY76Z2rM5mHXA, hjk-vqZO0P4V72/QD6PfKP4TzA, john.williams-g5w7nrANp4BDPfheJLI6IQ On Mon, May 02, 2011 at 08:51:55AM +0200, Michal Simek wrote: > Adding OF binding to genirq. > Version string is setup to the "devicetree". > > Compatible string is not setup for now but you can add your > custom compatible string to uio_of_genirq_match structure. > > For example with "vendor,device" compatible string: > static const struct of_device_id __devinitconst uio_of_genirq_match[] = { > { .compatible = "vendor,device", }, > { /* empty for now */ }, > }; > Looks OK to me. Thanks, Hans > Signed-off-by: Michal Simek <monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org> Signed-off-by: Hans J. Koch <hjk-vqZO0P4V72/QD6PfKP4TzA@public.gmane.org> > > --- > > v4: Remove dev_info messages > Check irq against -ENXIO for no irq > > v3: Fix irq binding > Use "devicetree" as version string > > v2: Remove additional resource binding > Setup correct version string > Clear compatible string > --- > drivers/uio/uio_pdrv_genirq.c | 39 +++++++++++++++++++++++++++++++++++++++ > 1 files changed, 39 insertions(+), 0 deletions(-) > > diff --git a/drivers/uio/uio_pdrv_genirq.c b/drivers/uio/uio_pdrv_genirq.c > index 7174d51..ed6bf64 100644 > --- a/drivers/uio/uio_pdrv_genirq.c > +++ b/drivers/uio/uio_pdrv_genirq.c > @@ -23,6 +23,10 @@ > #include <linux/pm_runtime.h> > #include <linux/slab.h> > > +#include <linux/of.h> > +#include <linux/of_platform.h> > +#include <linux/of_address.h> > + > #define DRIVER_NAME "uio_pdrv_genirq" > > struct uio_pdrv_genirq_platdata { > @@ -97,6 +101,27 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev) > int ret = -EINVAL; > int i; > > + if (!uioinfo) { > + int irq; > + > + /* alloc uioinfo for one device */ > + uioinfo = kzalloc(sizeof(*uioinfo), GFP_KERNEL); > + if (!uioinfo) { > + ret = -ENOMEM; > + dev_err(&pdev->dev, "unable to kmalloc\n"); > + goto bad2; > + } > + 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) { > dev_err(&pdev->dev, "missing platform_data\n"); > goto bad0; > @@ -180,6 +205,10 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev) > kfree(priv); > pm_runtime_disable(&pdev->dev); > bad0: > + /* kfree uioinfo for CONFIG_OF */ > + if (!pdev->dev.platform_data) > + kfree(uioinfo); > + bad2: > return ret; > } > > @@ -215,6 +244,15 @@ static const struct dev_pm_ops uio_pdrv_genirq_dev_pm_ops = { > .runtime_resume = uio_pdrv_genirq_runtime_nop, > }; > > +#ifdef CONFIG_OF > +static const struct of_device_id __devinitconst uio_of_genirq_match[] = { > + { /* empty for now */ }, > +}; > +MODULE_DEVICE_TABLE(of, uio_of_genirq_match); > +#else > +# define uio_of_genirq_match NULL > +#endif > + > static struct platform_driver uio_pdrv_genirq = { > .probe = uio_pdrv_genirq_probe, > .remove = uio_pdrv_genirq_remove, > @@ -222,6 +260,7 @@ static struct platform_driver uio_pdrv_genirq = { > .name = DRIVER_NAME, > .owner = THIS_MODULE, > .pm = &uio_pdrv_genirq_dev_pm_ops, > + .of_match_table = uio_of_genirq_match, > }, > }; > > -- > 1.5.5.6 > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4] uio/pdrv_genirq: Add OF support [not found] ` <1304319115-32745-1-git-send-email-monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org> 2011-05-03 19:57 ` Hans J. Koch @ 2011-05-03 20:34 ` Wolfram Sang [not found] ` <20110503203412.GA2119-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 1 sibling, 1 reply; 10+ messages in thread From: Wolfram Sang @ 2011-05-03 20:34 UTC (permalink / raw) To: Michal Simek Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, linux-kernel-u79uwXL29TY76Z2rM5mHXA, hjk-vqZO0P4V72/QD6PfKP4TzA, john.williams-g5w7nrANp4BDPfheJLI6IQ [-- Attachment #1.1: Type: text/plain, Size: 853 bytes --] On Mon, May 02, 2011 at 08:51:55AM +0200, Michal Simek wrote: > Adding OF binding to genirq. > Version string is setup to the "devicetree". > > Compatible string is not setup for now but you can add your > custom compatible string to uio_of_genirq_match structure. > > For example with "vendor,device" compatible string: > static const struct of_device_id __devinitconst uio_of_genirq_match[] = { > { .compatible = "vendor,device", }, > { /* empty for now */ }, > }; > > Signed-off-by: Michal Simek <monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org> [...] > + /* alloc uioinfo for one device */ > + uioinfo = kzalloc(sizeof(*uioinfo), GFP_KERNEL); kfree in remove? -- Pengutronix e.K. | Wolfram Sang | Industrial Linux Solutions | http://www.pengutronix.de/ | [-- Attachment #1.2: Digital signature --] [-- Type: application/pgp-signature, Size: 198 bytes --] [-- Attachment #2: Type: text/plain, Size: 192 bytes --] _______________________________________________ devicetree-discuss mailing list devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org https://lists.ozlabs.org/listinfo/devicetree-discuss ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <20110503203412.GA2119-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>]
* Re: [PATCH v4] uio/pdrv_genirq: Add OF support [not found] ` <20110503203412.GA2119-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> @ 2011-05-03 22:14 ` Hans J. Koch 2011-05-04 13:21 ` Michal Simek 0 siblings, 1 reply; 10+ messages in thread From: Hans J. Koch @ 2011-05-03 22:14 UTC (permalink / raw) To: Wolfram Sang Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, linux-kernel-u79uwXL29TY76Z2rM5mHXA, hjk-vqZO0P4V72/QD6PfKP4TzA, john.williams-g5w7nrANp4BDPfheJLI6IQ On Tue, May 03, 2011 at 10:34:12PM +0200, Wolfram Sang wrote: > On Mon, May 02, 2011 at 08:51:55AM +0200, Michal Simek wrote: > > Adding OF binding to genirq. > > Version string is setup to the "devicetree". > > > > Compatible string is not setup for now but you can add your > > custom compatible string to uio_of_genirq_match structure. > > > > For example with "vendor,device" compatible string: > > static const struct of_device_id __devinitconst uio_of_genirq_match[] = { > > { .compatible = "vendor,device", }, > > { /* empty for now */ }, > > }; > > > > Signed-off-by: Michal Simek <monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org> > > [...] > > > + /* alloc uioinfo for one device */ > > + uioinfo = kzalloc(sizeof(*uioinfo), GFP_KERNEL); > > kfree in remove? Oh yes. Missed that one. It should probably look like the "bad0" case in probe(). Thanks, Hans ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4] uio/pdrv_genirq: Add OF support 2011-05-03 22:14 ` Hans J. Koch @ 2011-05-04 13:21 ` Michal Simek 2011-05-04 19:47 ` Hans J. Koch 0 siblings, 1 reply; 10+ messages in thread From: Michal Simek @ 2011-05-04 13:21 UTC (permalink / raw) To: Hans J. Koch Cc: Wolfram Sang, devicetree-discuss, grant.likely, john.williams, linux-kernel, arnd Hans J. Koch wrote: > On Tue, May 03, 2011 at 10:34:12PM +0200, Wolfram Sang wrote: >> On Mon, May 02, 2011 at 08:51:55AM +0200, Michal Simek wrote: >>> Adding OF binding to genirq. >>> Version string is setup to the "devicetree". >>> >>> Compatible string is not setup for now but you can add your >>> custom compatible string to uio_of_genirq_match structure. >>> >>> For example with "vendor,device" compatible string: >>> static const struct of_device_id __devinitconst uio_of_genirq_match[] = { >>> { .compatible = "vendor,device", }, >>> { /* empty for now */ }, >>> }; >>> >>> Signed-off-by: Michal Simek <monstr@monstr.eu> >> [...] >> >>> + /* alloc uioinfo for one device */ >>> + uioinfo = kzalloc(sizeof(*uioinfo), GFP_KERNEL); >> kfree in remove? > > Oh yes. Missed that one. It should probably look like the "bad0" case in probe(). Yes, freeing uioinfo in uio_pdrv_genirq_remove make sense for CONFIG_OF. Please correct me if I am wrong dev.of_node is not NULL for OF. I think yes that's why I would prefer to use this construct instead of #ifdef CONFIG_OF. if (pdev->dev.of_node) kfree(pdev->dev.platform_data); What do you think? Michal -- Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4] uio/pdrv_genirq: Add OF support 2011-05-04 13:21 ` Michal Simek @ 2011-05-04 19:47 ` Hans J. Koch 2011-05-04 20:29 ` Grant Likely 2011-05-05 5:26 ` Michal Simek 0 siblings, 2 replies; 10+ messages in thread From: Hans J. Koch @ 2011-05-04 19:47 UTC (permalink / raw) To: Michal Simek Cc: Hans J. Koch, Wolfram Sang, devicetree-discuss, grant.likely, john.williams, linux-kernel, arnd On Wed, May 04, 2011 at 03:21:55PM +0200, Michal Simek wrote: > Hans J. Koch wrote: > >On Tue, May 03, 2011 at 10:34:12PM +0200, Wolfram Sang wrote: > >>On Mon, May 02, 2011 at 08:51:55AM +0200, Michal Simek wrote: > >>>Adding OF binding to genirq. > >>>Version string is setup to the "devicetree". > >>> > >>>Compatible string is not setup for now but you can add your > >>>custom compatible string to uio_of_genirq_match structure. > >>> > >>>For example with "vendor,device" compatible string: > >>>static const struct of_device_id __devinitconst uio_of_genirq_match[] = { > >>> { .compatible = "vendor,device", }, > >>> { /* empty for now */ }, > >>>}; > >>> > >>>Signed-off-by: Michal Simek <monstr@monstr.eu> > >>[...] > >> > >>>+ /* alloc uioinfo for one device */ > >>>+ uioinfo = kzalloc(sizeof(*uioinfo), GFP_KERNEL); > >>kfree in remove? > > > >Oh yes. Missed that one. It should probably look like the "bad0" case in probe(). > > Yes, freeing uioinfo in uio_pdrv_genirq_remove make sense for CONFIG_OF. > > Please correct me if I am wrong dev.of_node is not NULL for OF. I > think yes that's why I would prefer to use this construct instead of > #ifdef CONFIG_OF. > > if (pdev->dev.of_node) > kfree(pdev->dev.platform_data); Huh? You didn't allocate platform_data, so you shouldn't free it. It's uioinfo you allocated. Thanks, Hans ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4] uio/pdrv_genirq: Add OF support 2011-05-04 19:47 ` Hans J. Koch @ 2011-05-04 20:29 ` Grant Likely 2011-05-05 5:26 ` Michal Simek 1 sibling, 0 replies; 10+ messages in thread From: Grant Likely @ 2011-05-04 20:29 UTC (permalink / raw) To: Hans J. Koch Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, linux-kernel-u79uwXL29TY76Z2rM5mHXA, john.williams-g5w7nrANp4BDPfheJLI6IQ On Wed, May 4, 2011 at 1:47 PM, Hans J. Koch <hjk-vqZO0P4V72/QD6PfKP4TzA@public.gmane.org> wrote: > On Wed, May 04, 2011 at 03:21:55PM +0200, Michal Simek wrote: >> Hans J. Koch wrote: >> >On Tue, May 03, 2011 at 10:34:12PM +0200, Wolfram Sang wrote: >> >>On Mon, May 02, 2011 at 08:51:55AM +0200, Michal Simek wrote: >> >>>Adding OF binding to genirq. >> >>>Version string is setup to the "devicetree". >> >>> >> >>>Compatible string is not setup for now but you can add your >> >>>custom compatible string to uio_of_genirq_match structure. >> >>> >> >>>For example with "vendor,device" compatible string: >> >>>static const struct of_device_id __devinitconst uio_of_genirq_match[] = { >> >>> { .compatible = "vendor,device", }, >> >>> { /* empty for now */ }, >> >>>}; >> >>> >> >>>Signed-off-by: Michal Simek <monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org> >> >>[...] >> >> >> >>>+ /* alloc uioinfo for one device */ >> >>>+ uioinfo = kzalloc(sizeof(*uioinfo), GFP_KERNEL); >> >>kfree in remove? >> > >> >Oh yes. Missed that one. It should probably look like the "bad0" case in probe(). >> >> Yes, freeing uioinfo in uio_pdrv_genirq_remove make sense for CONFIG_OF. >> >> Please correct me if I am wrong dev.of_node is not NULL for OF. I >> think yes that's why I would prefer to use this construct instead of >> #ifdef CONFIG_OF. >> >> if (pdev->dev.of_node) >> kfree(pdev->dev.platform_data); > > Huh? You didn't allocate platform_data, so you shouldn't free it. > It's uioinfo you allocated. *never* set or modify the pdev->dev.platform_data pointer from a device driver. If the data needs to be modified, or a new structure allocated, then rework the driver to store it in it's private data structure. platform_data must be considered immutable by drivers. Otherwise you'll break unbindng and rebinding device drivers. g. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4] uio/pdrv_genirq: Add OF support 2011-05-04 19:47 ` Hans J. Koch 2011-05-04 20:29 ` Grant Likely @ 2011-05-05 5:26 ` Michal Simek [not found] ` <4DC23513.2090007-pSz03upnqPeHXe+LvDLADg@public.gmane.org> 1 sibling, 1 reply; 10+ messages in thread From: Michal Simek @ 2011-05-05 5:26 UTC (permalink / raw) To: Hans J. Koch Cc: Wolfram Sang, devicetree-discuss, grant.likely, john.williams, linux-kernel, arnd Hans J. Koch wrote: > On Wed, May 04, 2011 at 03:21:55PM +0200, Michal Simek wrote: >> Hans J. Koch wrote: >>> On Tue, May 03, 2011 at 10:34:12PM +0200, Wolfram Sang wrote: >>>> On Mon, May 02, 2011 at 08:51:55AM +0200, Michal Simek wrote: >>>>> Adding OF binding to genirq. >>>>> Version string is setup to the "devicetree". >>>>> >>>>> Compatible string is not setup for now but you can add your >>>>> custom compatible string to uio_of_genirq_match structure. >>>>> >>>>> For example with "vendor,device" compatible string: >>>>> static const struct of_device_id __devinitconst uio_of_genirq_match[] = { >>>>> { .compatible = "vendor,device", }, >>>>> { /* empty for now */ }, >>>>> }; >>>>> >>>>> Signed-off-by: Michal Simek <monstr@monstr.eu> >>>> [...] >>>> >>>>> + /* alloc uioinfo for one device */ >>>>> + uioinfo = kzalloc(sizeof(*uioinfo), GFP_KERNEL); >>>> kfree in remove? >>> Oh yes. Missed that one. It should probably look like the "bad0" case in probe(). >> Yes, freeing uioinfo in uio_pdrv_genirq_remove make sense for CONFIG_OF. >> >> Please correct me if I am wrong dev.of_node is not NULL for OF. I >> think yes that's why I would prefer to use this construct instead of >> #ifdef CONFIG_OF. >> >> if (pdev->dev.of_node) >> kfree(pdev->dev.platform_data); > > Huh? You didn't allocate platform_data, so you shouldn't free it. > It's uioinfo you allocated. grrr. I am stupid! /* kfree uioinfo for CONFIG_OF */ if (pdev->dev.of_node) kfree(priv->uioinfo); Michal -- Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <4DC23513.2090007-pSz03upnqPeHXe+LvDLADg@public.gmane.org>]
* Re: [PATCH v4] uio/pdrv_genirq: Add OF support [not found] ` <4DC23513.2090007-pSz03upnqPeHXe+LvDLADg@public.gmane.org> @ 2011-05-06 0:55 ` Hans J. Koch 0 siblings, 0 replies; 10+ messages in thread From: Hans J. Koch @ 2011-05-06 0:55 UTC (permalink / raw) To: Michal Simek Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Hans J. Koch, john.williams-g5w7nrANp4BDPfheJLI6IQ On Thu, May 05, 2011 at 07:26:43AM +0200, Michal Simek wrote: > Hans J. Koch wrote: > >On Wed, May 04, 2011 at 03:21:55PM +0200, Michal Simek wrote: > >>Hans J. Koch wrote: > >>>On Tue, May 03, 2011 at 10:34:12PM +0200, Wolfram Sang wrote: > >>>>On Mon, May 02, 2011 at 08:51:55AM +0200, Michal Simek wrote: > >>>>>Adding OF binding to genirq. > >>>>>Version string is setup to the "devicetree". > >>>>> > >>>>>Compatible string is not setup for now but you can add your > >>>>>custom compatible string to uio_of_genirq_match structure. > >>>>> > >>>>>For example with "vendor,device" compatible string: > >>>>>static const struct of_device_id __devinitconst uio_of_genirq_match[] = { > >>>>> { .compatible = "vendor,device", }, > >>>>> { /* empty for now */ }, > >>>>>}; > >>>>> > >>>>>Signed-off-by: Michal Simek <monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org> > >>>>[...] > >>>> > >>>>>+ /* alloc uioinfo for one device */ > >>>>>+ uioinfo = kzalloc(sizeof(*uioinfo), GFP_KERNEL); > >>>>kfree in remove? > >>>Oh yes. Missed that one. It should probably look like the "bad0" case in probe(). > >>Yes, freeing uioinfo in uio_pdrv_genirq_remove make sense for CONFIG_OF. > >> > >>Please correct me if I am wrong dev.of_node is not NULL for OF. I > >>think yes that's why I would prefer to use this construct instead of > >>#ifdef CONFIG_OF. > >> > >> if (pdev->dev.of_node) > >> kfree(pdev->dev.platform_data); > > > >Huh? You didn't allocate platform_data, so you shouldn't free it. > >It's uioinfo you allocated. > > grrr. I am stupid! We all are, sometimes. That's why we have a public review process so that collective stupidity can lead to good code. Thanks, Hans ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4] uio/pdrv_genirq: Add OF support 2011-05-02 6:51 [PATCH v4] uio/pdrv_genirq: Add OF support Michal Simek [not found] ` <1304319115-32745-1-git-send-email-monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org> @ 2011-05-04 13:12 ` Arnd Bergmann 1 sibling, 0 replies; 10+ messages in thread From: Arnd Bergmann @ 2011-05-04 13:12 UTC (permalink / raw) To: Michal Simek Cc: devicetree-discuss, grant.likely, john.williams, linux-kernel, hjk, w.sang On Monday 02 May 2011, Michal Simek wrote: > Adding OF binding to genirq. > Version string is setup to the "devicetree". > > Compatible string is not setup for now but you can add your > custom compatible string to uio_of_genirq_match structure. > > For example with "vendor,device" compatible string: > static const struct of_device_id __devinitconst uio_of_genirq_match[] = { > { .compatible = "vendor,device", }, > { /* empty for now */ }, > }; > > Signed-off-by: Michal Simek <monstr@monstr.eu> Reviewed-by: Arnd Bergmann <arnd@arndb.de> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-05-06 0:55 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-02 6:51 [PATCH v4] uio/pdrv_genirq: Add OF support Michal Simek
[not found] ` <1304319115-32745-1-git-send-email-monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org>
2011-05-03 19:57 ` Hans J. Koch
2011-05-03 20:34 ` Wolfram Sang
[not found] ` <20110503203412.GA2119-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2011-05-03 22:14 ` Hans J. Koch
2011-05-04 13:21 ` Michal Simek
2011-05-04 19:47 ` Hans J. Koch
2011-05-04 20:29 ` Grant Likely
2011-05-05 5:26 ` Michal Simek
[not found] ` <4DC23513.2090007-pSz03upnqPeHXe+LvDLADg@public.gmane.org>
2011-05-06 0:55 ` Hans J. Koch
2011-05-04 13:12 ` Arnd Bergmann
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).