]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/uio/uio_pdrv_genirq.c
uio: uio_pdrv_genirq: Make UIO name controllable via DT node property
[linux.git] / drivers / uio / uio_pdrv_genirq.c
index 10688d79d18092462370c30f432c9480342fcdbd..1303b165055ba42d87d2f7f77386d7e47eb856b9 100644 (file)
@@ -102,12 +102,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);
@@ -115,8 +118,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 */
        }