soc: renesas: rz-sysc: Move RZ/V2H SoC detection to the SYS driver
As per the other SoC variant of the same family, the system controller provides SoC ID in its own registers. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Link: https://lore.kernel.org/20250128031342.52675-5-john.madieu.xa@bp.renesas.com Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
This commit is contained in:
committed by
Geert Uytterhoeven
parent
d07470cff5
commit
4300f38467
@@ -355,6 +355,7 @@ config ARCH_R9A09G047
|
||||
config ARCH_R9A09G057
|
||||
bool "ARM64 Platform support for RZ/V2H(P)"
|
||||
select RENESAS_RZV2H_ICU
|
||||
select SYS_R9A09G057
|
||||
help
|
||||
This enables support for the Renesas RZ/V2H(P) SoC variants.
|
||||
|
||||
@@ -396,4 +397,8 @@ config SYS_R9A09G047
|
||||
bool "Renesas RZ/G3E System controller support" if COMPILE_TEST
|
||||
select SYSC_RZ
|
||||
|
||||
config SYS_R9A09G057
|
||||
bool "Renesas RZ/V2H System controller support" if COMPILE_TEST
|
||||
select SYSC_RZ
|
||||
|
||||
endif # SOC_RENESAS
|
||||
|
||||
@@ -8,6 +8,7 @@ obj-$(CONFIG_ARCH_R9A06G032) += r9a06g032-smp.o
|
||||
endif
|
||||
obj-$(CONFIG_SYSC_R9A08G045) += r9a08g045-sysc.o
|
||||
obj-$(CONFIG_SYS_R9A09G047) += r9a09g047-sys.o
|
||||
obj-$(CONFIG_SYS_R9A09G057) += r9a09g057-sys.o
|
||||
|
||||
# Family
|
||||
obj-$(CONFIG_PWC_RZV2M) += pwc-rzv2m.o
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* RZ/V2H System controller (SYS) driver
|
||||
*
|
||||
* Copyright (C) 2025 Renesas Electronics Corp.
|
||||
*/
|
||||
|
||||
#include <linux/bits.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include "rz-sysc.h"
|
||||
|
||||
static const struct rz_sysc_soc_id_init_data rzv2h_sys_soc_id_init_data __initconst = {
|
||||
.family = "RZ/V2H",
|
||||
.id = 0x847a447,
|
||||
.devid_offset = 0x304,
|
||||
.revision_mask = GENMASK(31, 28),
|
||||
.specific_id_mask = GENMASK(27, 0),
|
||||
};
|
||||
|
||||
const struct rz_sysc_init_data rzv2h_sys_init_data = {
|
||||
.soc_id_init_data = &rzv2h_sys_soc_id_init_data,
|
||||
};
|
||||
@@ -71,10 +71,6 @@ static const struct renesas_family fam_rzg2ul __initconst __maybe_unused = {
|
||||
.name = "RZ/G2UL",
|
||||
};
|
||||
|
||||
static const struct renesas_family fam_rzv2h __initconst __maybe_unused = {
|
||||
.name = "RZ/V2H",
|
||||
};
|
||||
|
||||
static const struct renesas_family fam_rzv2l __initconst __maybe_unused = {
|
||||
.name = "RZ/V2L",
|
||||
};
|
||||
@@ -172,11 +168,6 @@ static const struct renesas_soc soc_rz_g2ul __initconst __maybe_unused = {
|
||||
.id = 0x8450447,
|
||||
};
|
||||
|
||||
static const struct renesas_soc soc_rz_v2h __initconst __maybe_unused = {
|
||||
.family = &fam_rzv2h,
|
||||
.id = 0x847a447,
|
||||
};
|
||||
|
||||
static const struct renesas_soc soc_rz_v2l __initconst __maybe_unused = {
|
||||
.family = &fam_rzv2l,
|
||||
.id = 0x8447447,
|
||||
@@ -280,7 +271,6 @@ static const struct renesas_soc soc_shmobile_ag5 __initconst __maybe_unused = {
|
||||
.id = 0x37,
|
||||
};
|
||||
|
||||
|
||||
static const struct of_device_id renesas_socs[] __initconst __maybe_unused = {
|
||||
#ifdef CONFIG_ARCH_R7S72100
|
||||
{ .compatible = "renesas,r7s72100", .data = &soc_rz_a1h },
|
||||
@@ -404,9 +394,6 @@ static const struct of_device_id renesas_socs[] __initconst __maybe_unused = {
|
||||
#ifdef CONFIG_ARCH_R9A09G011
|
||||
{ .compatible = "renesas,r9a09g011", .data = &soc_rz_v2m },
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_R9A09G057
|
||||
{ .compatible = "renesas,r9a09g057", .data = &soc_rz_v2h },
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_SH73A0
|
||||
{ .compatible = "renesas,sh73a0", .data = &soc_shmobile_ag5 },
|
||||
#endif
|
||||
@@ -432,11 +419,6 @@ static const struct renesas_id id_rzg2l __initconst = {
|
||||
.mask = 0xfffffff,
|
||||
};
|
||||
|
||||
static const struct renesas_id id_rzv2h __initconst = {
|
||||
.offset = 0x304,
|
||||
.mask = 0xfffffff,
|
||||
};
|
||||
|
||||
static const struct renesas_id id_rzv2m __initconst = {
|
||||
.offset = 0x104,
|
||||
.mask = 0xff,
|
||||
@@ -454,7 +436,6 @@ static const struct of_device_id renesas_ids[] __initconst = {
|
||||
{ .compatible = "renesas,r9a07g054-sysc", .data = &id_rzg2l },
|
||||
{ .compatible = "renesas,r9a08g045-sysc", .data = &id_rzg2l },
|
||||
{ .compatible = "renesas,r9a09g011-sys", .data = &id_rzv2m },
|
||||
{ .compatible = "renesas,r9a09g057-sys", .data = &id_rzv2h },
|
||||
{ .compatible = "renesas,prr", .data = &id_prr },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
@@ -519,7 +500,7 @@ static int __init renesas_soc_init(void)
|
||||
eslo = product & 0xf;
|
||||
soc_dev_attr->revision = kasprintf(GFP_KERNEL, "ES%u.%u",
|
||||
eshi, eslo);
|
||||
} else if (id == &id_rzg2l || id == &id_rzv2h) {
|
||||
} else if (id == &id_rzg2l) {
|
||||
eshi = ((product >> 28) & 0x0f);
|
||||
soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%u",
|
||||
eshi);
|
||||
|
||||
@@ -87,6 +87,9 @@ static const struct of_device_id rz_sysc_match[] = {
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_R9A09G047
|
||||
{ .compatible = "renesas,r9a09g047-sys", .data = &rzg3e_sys_init_data },
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_R9A09G057
|
||||
{ .compatible = "renesas,r9a09g057-sys", .data = &rzv2h_sys_init_data },
|
||||
#endif
|
||||
{ }
|
||||
};
|
||||
|
||||
@@ -41,5 +41,6 @@ struct rz_sysc_init_data {
|
||||
|
||||
extern const struct rz_sysc_init_data rzg3e_sys_init_data;
|
||||
extern const struct rz_sysc_init_data rzg3s_sysc_init_data;
|
||||
extern const struct rz_sysc_init_data rzv2h_sys_init_data;
|
||||
|
||||
#endif /* __SOC_RENESAS_RZ_SYSC_H__ */
|
||||
|
||||
Reference in New Issue
Block a user