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 |
next prev parent 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