Hi Greg, On 15/8/2019 11:28 PM, Daniel Mack wrote: > When probed via DT, the uio_pdrv_genirq driver currently uses the name > of the node and exposes that as name of the UIO device to userspace. > > This doesn't work for systems where multiple nodes with the same name > (but different unit addresses) are present, or for systems where the > node names are auto-generated by a third-party tool. > > This patch adds the possibility to read the UIO name from the optional > "linux,uio-name" property.
Any opinion on this one? Thanks, Daniel > > Signed-off-by: Daniel Mack <dan...@zonque.org> > --- > drivers/uio/uio_pdrv_genirq.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > diff --git a/drivers/uio/uio_pdrv_genirq.c b/drivers/uio/uio_pdrv_genirq.c > index 6c759934bff3..24d60eb1bda5 100644 > --- a/drivers/uio/uio_pdrv_genirq.c > +++ b/drivers/uio/uio_pdrv_genirq.c > @@ -105,12 +105,15 @@ static int uio_pdrv_genirq_irqcontrol(struct uio_info > *dev_info, s32 irq_on) > static int uio_pdrv_genirq_probe(struct platform_device *pdev) > { > struct uio_info *uioinfo = dev_get_platdata(&pdev->dev); > + struct device_node *node = pdev->dev.of_node; > struct uio_pdrv_genirq_platdata *priv; > struct uio_mem *uiomem; > int ret = -EINVAL; > int i; > > - if (pdev->dev.of_node) { > + if (node) { > + const char *name; > + > /* alloc uioinfo for one device */ > uioinfo = devm_kzalloc(&pdev->dev, sizeof(*uioinfo), > GFP_KERNEL); > @@ -118,8 +121,13 @@ static int uio_pdrv_genirq_probe(struct platform_device > *pdev) > dev_err(&pdev->dev, "unable to kmalloc\n"); > return -ENOMEM; > } > - uioinfo->name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%pOFn", > - pdev->dev.of_node); > + > + if (!of_property_read_string(node, "linux,uio-name", &name)) > + uioinfo->name = devm_kstrdup(&pdev->dev, name, > GFP_KERNEL); > + else > + uioinfo->name = devm_kasprintf(&pdev->dev, GFP_KERNEL, > + "%pOFn", node); > + > uioinfo->version = "devicetree"; > /* Multiple IRQs are not supported */ > } >