]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
memory: pl172: simplify releasing AMBA regions with devm
authorKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Sun, 25 Aug 2024 13:50:00 +0000 (15:50 +0200)
committerKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Sat, 31 Aug 2024 05:44:23 +0000 (07:44 +0200)
Use devm_add_action_or_reset() and dev_err_probe() to make the probe()
error handling simpler around amba_release_regions() cleanup.  This
allows to drop the remove() callback entirely.

Suggested-by: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
Acked-by: Vladimir Zapolskiy <vz@mleia.com>
Reviewed-by: Vladimir Zapolskiy <vz@mleia.com>
Link: https://lore.kernel.org/r/20240825135001.48963-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
drivers/memory/pl172.c

index db5fbee34077c566c9ba91f35800ad6da7473939..be7ba599cccf31b02d462739cc5c2ff3403bdc7c 100644 (file)
@@ -187,6 +187,13 @@ static int pl172_parse_cs_config(struct amba_device *adev,
        return -EINVAL;
 }
 
+static void pl172_amba_release_regions(void *data)
+{
+       struct amba_device *adev = data;
+
+       amba_release_regions(adev);
+}
+
 static const char * const pl172_revisions[] = {"r1", "r2", "r2p3", "r2p4"};
 static const char * const pl175_revisions[] = {"r1"};
 static const char * const pl176_revisions[] = {"r0"};
@@ -232,13 +239,14 @@ static int pl172_probe(struct amba_device *adev, const struct amba_id *id)
                return ret;
        }
 
+       ret = devm_add_action_or_reset(dev, pl172_amba_release_regions, adev);
+       if (ret)
+               return ret;
+
        pl172->base = devm_ioremap(dev, adev->res.start,
                                   resource_size(&adev->res));
-       if (!pl172->base) {
-               dev_err(dev, "ioremap failed\n");
-               ret = -ENOMEM;
-               goto err_no_ioremap;
-       }
+       if (!pl172->base)
+               return dev_err_probe(dev, -ENOMEM, "ioremap failed\n");
 
        amba_set_drvdata(adev, pl172);
 
@@ -256,15 +264,6 @@ static int pl172_probe(struct amba_device *adev, const struct amba_id *id)
        }
 
        return 0;
-
-err_no_ioremap:
-       amba_release_regions(adev);
-       return ret;
-}
-
-static void pl172_remove(struct amba_device *adev)
-{
-       amba_release_regions(adev);
 }
 
 static const struct amba_id pl172_ids[] = {
@@ -292,7 +291,6 @@ static struct amba_driver pl172_driver = {
                .name   = "memory-pl172",
        },
        .probe          = pl172_probe,
-       .remove         = pl172_remove,
        .id_table       = pl172_ids,
 };
 module_amba_driver(pl172_driver);