arm: airoha: introduce EN7523 helpers to get SCU and CHIP_SCU regmaps

We need access SCU and CHIP_SCU regmaps in several places (clk-airoha,
reset-airoha, airoha_eth). Unfortunately these regmaps can't be easily
retrieved with a common code, because of different Airoha SoCs uses
a different dts structure.

To make life easy we can write a commonly named SoC specific helpers
for these tasks. This patch implements helpers for Airoha EN7523 SoC.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
This commit is contained in:
Mikhail Kshevetskiy 2025-11-01 03:44:48 +03:00 committed by Tom Rini
parent 9aa3e440c6
commit 8e21740b68
3 changed files with 40 additions and 0 deletions

View File

@ -0,0 +1 @@
arch-airoha

View File

@ -1,3 +1,4 @@
# SPDX-License-Identifier: GPL-2.0
obj-y += init.o
obj-y += scu-regmap.o

View File

@ -0,0 +1,38 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Author: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
*/
#include <dm/ofnode.h>
#include <linux/err.h>
#include <asm/arch/scu-regmap.h>
static struct regmap *airoha_scu_node_regmap_by_index(unsigned int index)
{
struct regmap *map;
ofnode node;
int err;
node = ofnode_by_compatible(ofnode_null(), "airoha,en7523-scu");
if (!ofnode_valid(node))
return ERR_PTR(-EINVAL);
/* CHIP_SCU (index=0), SCU (index=1) */
err = regmap_init_mem_index(node, &map, index);
if (err)
return ERR_PTR(err);
return map;
}
struct regmap *airoha_get_scu_regmap(void)
{
/* CHIP_SCU (index=0), SCU (index=1) */
return airoha_scu_node_regmap_by_index(1);
}
struct regmap *airoha_get_chip_scu_regmap(void)
{
/* CHIP_SCU (index=0), SCU (index=1) */
return airoha_scu_node_regmap_by_index(0);
}