mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: Sascha Hauer <s.hauer@pengutronix.de>,
	Barebox List <barebox@lists.infradead.org>
Subject: Re: [PATCH 05/10] ARM: Layerscape: icid: move re-usable code to separate functions
Date: Tue, 9 Jan 2024 10:34:30 +0100	[thread overview]
Message-ID: <b0857ba6-8ed4-48ef-ad2b-5edac8d70fc7@pengutronix.de> (raw)
In-Reply-To: <20240109091603.235589-6-s.hauer@pengutronix.de>

On 09.01.24 10:15, Sascha Hauer wrote:
> Create separate functions from code that can be re-used by upcoming
> LS1028a support.
> 
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> ---
>  arch/arm/mach-layerscape/icid.c | 98 +++++++++++++++++++--------------
>  1 file changed, 57 insertions(+), 41 deletions(-)
> 
> diff --git a/arch/arm/mach-layerscape/icid.c b/arch/arm/mach-layerscape/icid.c
> index f0a9dc8063..dd0e160bde 100644
> --- a/arch/arm/mach-layerscape/icid.c
> +++ b/arch/arm/mach-layerscape/icid.c
> @@ -68,6 +68,58 @@ struct icid_id_table {
>  	phys_addr_t reg_addr;
>  };
>  
> +static void of_set_iommu_prop(struct device_node *np, phandle iommu_handle,
> +			       int stream_id)
> +{
> +	u32 prop[2];
> +
> +	prop[0] = cpu_to_fdt32(iommu_handle);
> +	prop[1] = cpu_to_fdt32(stream_id);
> +
> +	of_set_property(np, "iommus", prop, sizeof(prop), 1);

I know the code is only moved around, but changing this to
of_property_write_u32_array() would make the intent clearer.

> +}
> +
> +static phandle of_get_iommu_handle(struct device_node *root)
> +{
> +	struct device_node *iommu;
> +
> +	iommu = of_find_compatible_node(root, NULL, "arm,mmu-500");
> +	if (!iommu) {
> +		pr_info("No \"arm,mmu-500\" node found, won't fixup\n");
> +		return 0;
> +	}
> +
> +	return of_node_create_phandle(iommu);
> +}
> +
> +static int of_fixup_icid(struct device_node *root, phandle iommu_handle,
> +			 const struct icid_id_table *icid_table, int num_icid)
> +{
> +	int i;
> +
> +	for (i = 0; i < num_icid; i++) {
> +		const struct icid_id_table *icid = &icid_table[i];
> +		struct device_node *np;
> +
> +		if (!icid->compat)
> +			continue;
> +
> +		for_each_compatible_node_from(np, root, NULL, icid->compat) {
> +			struct resource res;
> +
> +			if (of_address_to_resource(np, 0, &res))
> +				continue;
> +
> +			if (res.start == icid->compat_addr) {
> +				of_set_iommu_prop(np, iommu_handle, icid->id);
> +				break;
> +			}
> +		}
> +	}
> +
> +	return 0;
> +}
> +
>  struct fman_icid_id_table {
>  	u32 port_id;
>  	u32 icid;
> @@ -292,17 +344,6 @@ static int get_fman_port_icid(int port_id, const struct fman_icid_id_table *tbl,
>  	return -ENODEV;
>  }
>  
> -static void of_set_iommu_prop(struct device_node *np, phandle iommu_handle,
> -			       int stream_id)
> -{
> -	u32 prop[2];
> -
> -	prop[0] = cpu_to_fdt32(iommu_handle);
> -	prop[1] = cpu_to_fdt32(stream_id);
> -
> -	of_set_property(np, "iommus", prop, sizeof(prop), 1);
> -}
> -
>  static void of_fixup_fman_port_icid_by_compat(struct device_node *root,
>  					       phandle iommu_handle,
>  					       const char *compat)
> @@ -491,40 +532,15 @@ static void of_fixup_qportals(struct device_node *root, phandle iommu_handle)
>  	}
>  }
>  
> -static int icid_of_fixup(struct device_node *root, void *context)
> +static int of_fixup_ls1046a(struct device_node *root, void *context)
>  {
> -	int i;
> -	struct device_node *iommu;
>  	phandle iommu_handle;
>  
> -	iommu = of_find_compatible_node(root, NULL, "arm,mmu-500");
> -	if (!iommu) {
> -		pr_info("No \"arm,mmu-500\" node found, won't fixup\n");
> +	iommu_handle = of_get_iommu_handle(root);
> +	if (!iommu_handle)
>  		return 0;
> -	}
> -
> -	iommu_handle = of_node_create_phandle(iommu);
> -
> -	for (i = 0; i < ARRAY_SIZE(icid_tbl_ls1046a); i++) {
> -		const struct icid_id_table *icid = &icid_tbl_ls1046a[i];
> -		struct device_node *np;
> -
> -		if (!icid->compat)
> -			continue;
> -
> -		for_each_compatible_node_from(np, root, NULL, icid->compat) {
> -			struct resource res;
> -
> -			if (of_address_to_resource(np, 0, &res))
> -				continue;
> -
> -			if (res.start == icid->compat_addr) {
> -				of_set_iommu_prop(np, iommu_handle, icid->id);
> -				break;
> -			}
> -		}
> -	}
>  
> +	of_fixup_icid(root, iommu_handle, icid_tbl_ls1046a, ARRAY_SIZE(icid_tbl_ls1046a));
>  	of_fixup_fman_icids(root, iommu_handle);
>  	of_fixup_qportals(root, iommu_handle);
>  
> @@ -553,5 +569,5 @@ void ls1046a_setup_icids(void)
>  
>  	setup_qbman_portals();
>  
> -	of_register_fixup(icid_of_fixup, NULL);
> +	of_register_fixup(of_fixup_ls1046a, NULL);
>  }

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




  reply	other threads:[~2024-01-09  9:35 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-09  9:15 [PATCH 00/10] Add more Layerscape LS1028a stuff Sascha Hauer
2024-01-09  9:15 ` [PATCH 01/10] ARM: Layerscape: consolidate initcalls into one Sascha Hauer
2024-01-09  9:15 ` [PATCH 02/10] ARM: Layerscape: LS1028a: reserve DDR region for TF-A Sascha Hauer
2024-01-09  9:37   ` Ahmad Fatoum
2024-01-09 10:25     ` Sascha Hauer
2024-01-09  9:15 ` [PATCH 03/10] ARM: Layerscape: icid: make readonly arrays const Sascha Hauer
2024-01-09  9:15 ` [PATCH 04/10] ARM: Layerscape: icid: rename functions Sascha Hauer
2024-01-09  9:15 ` [PATCH 05/10] ARM: Layerscape: icid: move re-usable code to separate functions Sascha Hauer
2024-01-09  9:34   ` Ahmad Fatoum [this message]
2024-01-09  9:15 ` [PATCH 06/10] ARM: Layerscape: icids: factor out setup_icid_offsets() Sascha Hauer
2024-01-09  9:16 ` [PATCH 07/10] immap_lsch3: Add more stuff Sascha Hauer
2024-01-09  9:16 ` [PATCH 08/10] ARM: Layerscape: LS1028a: fixup icids Sascha Hauer
2024-01-09  9:28   ` Ahmad Fatoum
2024-01-09  9:16 ` [PATCH 09/10] ARM: psci: make header self contained Sascha Hauer
2024-01-09  9:27   ` Ahmad Fatoum
2024-01-09  9:16 ` [PATCH 10/10] ARM: Layerscape: LS1028a: fixup psci node Sascha Hauer
2024-01-09  9:26   ` Ahmad Fatoum
2024-01-09  9:37     ` Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b0857ba6-8ed4-48ef-ad2b-5edac8d70fc7@pengutronix.de \
    --to=a.fatoum@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=s.hauer@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox