
Hi Marek
On 3/5/21 3:18 PM, Marek Vasut wrote:
Split up get_soc_name(), clean the decoding up a bit, and set up environment variables which contain the SoC type, package, revision. This is useful on SoMs, where multiple SoC options are populated.
Signed-off-by: Marek Vasut marex@denx.de Cc: Patrick Delaunay patrick.delaunay@st.com Cc: Patrice Chotard patrice.chotard@st.com
arch/arm/mach-stm32mp/cpu.c | 105 ++++++++++++++++++------------------ 1 file changed, 53 insertions(+), 52 deletions(-)
diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c index 3faa4ec18a4..887db9b5b0c 100644 --- a/arch/arm/mach-stm32mp/cpu.c +++ b/arch/arm/mach-stm32mp/cpu.c @@ -349,89 +349,78 @@ u32 get_cpu_package(void) return get_otp(BSEC_OTP_PKG, PKG_SHIFT, PKG_MASK); }
-void get_soc_name(char name[SOC_NAME_SIZE]) +static const char * const soc_type[] = {
- "????",
- "151C", "151A", "151F", "151D",
- "153C", "153A", "153F", "153D",
- "157C", "157A", "157F", "157D"
+};
+static const char * const soc_pkg[] = { "??", "AD", "AC", "AB", "AA" }; +static const char * const soc_rev[] = { "?", "A", "B", "Z" };
+static void get_cpu_string_offsets(unsigned int *type, unsigned int *pkg,
unsigned int *rev)
{
- char *cpu_s, *cpu_r, *pkg;
- u32 cpu_type = get_cpu_type();
- u32 ct = cpu_type & ~(BIT(7) | BIT(0));
- u32 cm = ((cpu_type & BIT(7)) >> 6) | (cpu_type & BIT(0));
- u32 cp = get_cpu_package();
- /* MPUs Part Numbers */
- switch (get_cpu_type()) {
- case CPU_STM32MP157Fxx:
cpu_s = "157F";
break;
- case CPU_STM32MP157Dxx:
cpu_s = "157D";
break;
- case CPU_STM32MP157Cxx:
cpu_s = "157C";
break;
- case CPU_STM32MP157Axx:
cpu_s = "157A";
break;
- case CPU_STM32MP153Fxx:
cpu_s = "153F";
break;
- case CPU_STM32MP153Dxx:
cpu_s = "153D";
- /* Bits 0 and 7 are the ACDF, 00:C 01:A 10:F 11:D */
- switch (ct) {
- case CPU_STM32MP151Cxx:
break; case CPU_STM32MP153Cxx:*type = cm + 1;
cpu_s = "153C";
break;
- case CPU_STM32MP153Axx:
cpu_s = "153A";
break;
- case CPU_STM32MP151Fxx:
cpu_s = "151F";
break;
- case CPU_STM32MP151Dxx:
cpu_s = "151D";
break;*type = cm + 5;
- case CPU_STM32MP151Cxx:
cpu_s = "151C";
break;
- case CPU_STM32MP151Axx:
cpu_s = "151A";
- case CPU_STM32MP157Cxx:
break; default:*type = cm + 9;
cpu_s = "????";
*type = 0;
break; }
/* Package */
- switch (get_cpu_package()) {
- switch (cp) { case PKG_AA_LBGA448:
pkg = "AA";
case PKG_AB_LBGA354:break;
pkg = "AB";
case PKG_AC_TFBGA361:break;
pkg = "AC";
case PKG_AD_TFBGA257:break;
pkg = "AD";
break; default:*pkg = cp;
pkg = "??";
break; }pkg = 0;
- /* REVISION */
- /* Revision */ switch (get_cpu_rev()) { case CPU_REVA:
cpu_r = "A";
break; case CPU_REVB:*rev = 1;
cpu_r = "B";
break; case CPU_REVZ:*rev = 2;
cpu_r = "Z";
break; default:*rev = 3;
cpu_r = "?";
break; }*rev = 0;
+}
+void get_soc_name(char name[SOC_NAME_SIZE]) +{
- unsigned int type, pkg, rev;
- snprintf(name, SOC_NAME_SIZE, "STM32MP%s%s Rev.%s", cpu_s, pkg, cpu_r);
- get_cpu_string_offsets(&type, &pkg, &rev);
- snprintf(name, SOC_NAME_SIZE, "STM32MP%s%s Rev.%s",
soc_type[type], soc_pkg[pkg], soc_rev[rev]);
}
#if defined(CONFIG_DISPLAY_CPUINFO) @@ -620,11 +609,23 @@ static int setup_serial_number(void) return 0; }
+static void setup_soc_type_pkg_rev(void) +{
- unsigned int type, pkg, rev;
- get_cpu_string_offsets(&type, &pkg, &rev);
- env_set("soc_type", soc_type[type]);
- env_set("soc_pkg", soc_pkg[pkg]);
- env_set("soc_rev", soc_rev[rev]);
+}
int arch_misc_init(void) { setup_boot_mode(); setup_mac_address(); setup_serial_number();
setup_soc_type_pkg_rev();
return 0;
}
Reviewed-by: Patrice Chotard patrice.chotard@foss.st.com Thanks Patrice