Commit eff1dd87 authored by Alexandru Ardelean's avatar Alexandru Ardelean Committed by Greg Kroah-Hartman

uio: uio_pdrv_genirq: use new devm_uio_register_device() function

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: default avatarAlexandru Ardelean <alexandru.ardelean@analog.com>
Link: https://lore.kernel.org/r/20200306161853.25368-2-alexandru.ardelean@analog.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 86a78b1c
...@@ -99,6 +99,13 @@ static int uio_pdrv_genirq_irqcontrol(struct uio_info *dev_info, s32 irq_on) ...@@ -99,6 +99,13 @@ static int uio_pdrv_genirq_irqcontrol(struct uio_info *dev_info, s32 irq_on)
return 0; 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) static int uio_pdrv_genirq_probe(struct platform_device *pdev)
{ {
struct uio_info *uioinfo = dev_get_platdata(&pdev->dev); struct uio_info *uioinfo = dev_get_platdata(&pdev->dev);
...@@ -213,28 +220,16 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev) ...@@ -213,28 +220,16 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev)
*/ */
pm_runtime_enable(&pdev->dev); pm_runtime_enable(&pdev->dev);
ret = uio_register_device(&pdev->dev, priv->uioinfo); ret = devm_add_action_or_reset(&pdev->dev, uio_pdrv_genirq_cleanup,
if (ret) { &pdev->dev);
dev_err(&pdev->dev, "unable to register uio device\n"); if (ret)
pm_runtime_disable(&pdev->dev);
return ret; return ret;
}
platform_set_drvdata(pdev, priv); ret = devm_uio_register_device(&pdev->dev, priv->uioinfo);
return 0; if (ret)
} dev_err(&pdev->dev, "unable to register uio device\n");
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;
return 0; return ret;
} }
static int uio_pdrv_genirq_runtime_nop(struct device *dev) static int uio_pdrv_genirq_runtime_nop(struct device *dev)
...@@ -271,7 +266,6 @@ MODULE_PARM_DESC(of_id, "Openfirmware id of the device to be handled by uio"); ...@@ -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 = { static struct platform_driver uio_pdrv_genirq = {
.probe = uio_pdrv_genirq_probe, .probe = uio_pdrv_genirq_probe,
.remove = uio_pdrv_genirq_remove,
.driver = { .driver = {
.name = DRIVER_NAME, .name = DRIVER_NAME,
.pm = &uio_pdrv_genirq_dev_pm_ops, .pm = &uio_pdrv_genirq_dev_pm_ops,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment