# Re: \[PATCH v3 09/20\] iommu/fsl: use platform\_device\_set\_of\_node()

- From: Frank Li \<hidden\>
- Date: 2026-07-06 14:52:15 
- List: linuxppc-dev
- Page: https://ratatoskr.run/linuxppc-dev/2026/07/17219844
- Thread: https://ratatoskr.run/netdev/2026/07/17218951/t.md

```text
On Mon, Jul 06, 2026 at 02:44:21PM +0200, Bartosz Golaszewski wrote:
> Ahead of reworking the reference counting logic for platform devices,
> encapsulate the assignment of the OF node for dynamically allocated
> platform devices with the provided helper.
>
> Acked-by: Robin Murphy <robin.murphy@arm.com>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Signed-off-by: Bartosz Golaszewski <redacted>
> ---

Reviewed-by: Frank Li <Frank.Li@nxp.com>

>  drivers/iommu/fsl_pamu.c | 16 ++++++----------
>  1 file changed, 6 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/iommu/fsl_pamu.c b/drivers/iommu/fsl_pamu.c
> index 25aa477a95a95cb4fa4e132727cde0a936750ee2..c83bbc3faad56d6ee1c89b0a7f74028af02c81e9 100644
> --- a/drivers/iommu/fsl_pamu.c
> +++ b/drivers/iommu/fsl_pamu.c
> @@ -8,6 +8,7 @@
>
>  #include "fsl_pamu.h"
>
> +#include <linux/cleanup.h>
>  #include <linux/fsl/guts.h>
>  #include <linux/interrupt.h>
>  #include <linux/genalloc.h>
> @@ -933,7 +934,6 @@ static struct platform_driver fsl_of_pamu_driver = {
>  static __init int fsl_pamu_init(void)
>  {
>  	struct platform_device *pdev = NULL;
> -	struct device_node *np;
>  	int ret;
>
>  	/*
> @@ -955,7 +955,8 @@ static __init int fsl_pamu_init(void)
>  	 * PAMU node would require significant changes to a lot of code.
>  	 */
>
> -	np = of_find_compatible_node(NULL, NULL, "fsl,pamu");
> +	struct device_node *np __free(device_node) =
> +			of_find_compatible_node(NULL, NULL, "fsl,pamu");
>  	if (!np) {
>  		pr_err("could not find a PAMU node\n");
>  		return -ENODEV;
> @@ -964,7 +965,7 @@ static __init int fsl_pamu_init(void)
>  	ret = platform_driver_register(&fsl_of_pamu_driver);
>  	if (ret) {
>  		pr_err("could not register driver (err=%i)\n", ret);
> -		goto error_driver_register;
> +		return ret;
>  	}
>
>  	pdev = platform_device_alloc("fsl-of-pamu", 0);
> @@ -973,7 +974,8 @@ static __init int fsl_pamu_init(void)
>  		ret = -ENOMEM;
>  		goto error_device_alloc;
>  	}
> -	pdev->dev.of_node = of_node_get(np);
> +
> +	platform_device_set_of_node(pdev, np);
>
>  	ret = pamu_domain_init();
>  	if (ret)
> @@ -988,17 +990,11 @@ static __init int fsl_pamu_init(void)
>  	return 0;
>
>  error_device_add:
> -	of_node_put(pdev->dev.of_node);
> -	pdev->dev.of_node = NULL;
> -
>  	platform_device_put(pdev);
>
>  error_device_alloc:
>  	platform_driver_unregister(&fsl_of_pamu_driver);
>
> -error_driver_register:
> -	of_node_put(np);
> -
>  	return ret;
>  }
>  arch_initcall(fsl_pamu_init);
>
> --
> 2.47.3
>
>

```
