Skip to content

Commit

Permalink
uio: uio_pdrv_genirq: use new devm_uio_register_device() function
Browse files Browse the repository at this point in the history
This change makes use of the new devm_uio_register_device() initializer.
This cleans up the exit path quite nicely, and removes the remove function
of the driver.

Signed-off-by: Alexandru Ardelean <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
commodo authored and gregkh committed Mar 18, 2020
1 parent 86a78b1 commit eff1dd8
Showing 1 changed file with 14 additions and 20 deletions.
34 changes: 14 additions & 20 deletions drivers/uio/uio_pdrv_genirq.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,13 @@ static int uio_pdrv_genirq_irqcontrol(struct uio_info *dev_info, s32 irq_on)
return 0;
}

static void uio_pdrv_genirq_cleanup(void *data)
{
struct device *dev = data;

pm_runtime_disable(dev);
}

static int uio_pdrv_genirq_probe(struct platform_device *pdev)
{
struct uio_info *uioinfo = dev_get_platdata(&pdev->dev);
Expand Down Expand Up @@ -213,28 +220,16 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev)
*/
pm_runtime_enable(&pdev->dev);

ret = uio_register_device(&pdev->dev, priv->uioinfo);
if (ret) {
dev_err(&pdev->dev, "unable to register uio device\n");
pm_runtime_disable(&pdev->dev);
ret = devm_add_action_or_reset(&pdev->dev, uio_pdrv_genirq_cleanup,
&pdev->dev);
if (ret)
return ret;
}

platform_set_drvdata(pdev, priv);
return 0;
}

static int uio_pdrv_genirq_remove(struct platform_device *pdev)
{
struct uio_pdrv_genirq_platdata *priv = platform_get_drvdata(pdev);

uio_unregister_device(priv->uioinfo);
pm_runtime_disable(&pdev->dev);

priv->uioinfo->handler = NULL;
priv->uioinfo->irqcontrol = NULL;
ret = devm_uio_register_device(&pdev->dev, priv->uioinfo);
if (ret)
dev_err(&pdev->dev, "unable to register uio device\n");

return 0;
return ret;
}

static int uio_pdrv_genirq_runtime_nop(struct device *dev)
Expand Down Expand Up @@ -271,7 +266,6 @@ MODULE_PARM_DESC(of_id, "Openfirmware id of the device to be handled by uio");

static struct platform_driver uio_pdrv_genirq = {
.probe = uio_pdrv_genirq_probe,
.remove = uio_pdrv_genirq_remove,
.driver = {
.name = DRIVER_NAME,
.pm = &uio_pdrv_genirq_dev_pm_ops,
Expand Down

0 comments on commit eff1dd8

Please sign in to comment.