diff options
author | Ahmad Fatoum <a.fatoum@pengutronix.de> | 2019-10-28 00:18:32 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-11-06 11:22:35 +0100 |
commit | 530fb27a57d18128e47cd1530470425436a697d1 (patch) | |
tree | 05d675847d5e971ddca56aa2c08c4a2696375ee0 /arch/arm/mach-stm32mp/include/mach/revision.h | |
parent | 3bf910ddb0488689860e8ee6893142a93fdb3cf1 (diff) | |
download | barebox-530fb27a57d18128e47cd1530470425436a697d1.tar.gz barebox-530fb27a57d18128e47cd1530470425436a697d1.tar.xz |
ARM: stm32mp: implement SoC and boot source identification
The BSEC OTP holds information about SoC type and package.
The Tamp registers hold information from the BootROM about boot
source. Add support for both.
Additionally, the tamp registers can also hold a request from the
operating system about what mode to enter after boot, e.g.
boot-into-recovery. A global function is exported for this, but
unused so far.
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-stm32mp/include/mach/revision.h')
-rw-r--r-- | arch/arm/mach-stm32mp/include/mach/revision.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/arch/arm/mach-stm32mp/include/mach/revision.h b/arch/arm/mach-stm32mp/include/mach/revision.h new file mode 100644 index 0000000000..387201421d --- /dev/null +++ b/arch/arm/mach-stm32mp/include/mach/revision.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */ +/* + * Copyright (C) 2015-2017, STMicroelectronics - All Rights Reserved + */ + +#ifndef __MACH_CPUTYPE_H__ +#define __MACH_CPUTYPE_H__ + +/* ID = Device Version (bit31:16) + Device Part Number (RPN) (bit15:0)*/ +#define CPU_STM32MP157Cxx 0x05000000 +#define CPU_STM32MP157Axx 0x05000001 +#define CPU_STM32MP153Cxx 0x05000024 +#define CPU_STM32MP153Axx 0x05000025 +#define CPU_STM32MP151Cxx 0x0500002E +#define CPU_STM32MP151Axx 0x0500002F + +/* silicon revisions */ +#define CPU_REV_A 0x1000 +#define CPU_REV_B 0x2000 + +int stm32mp_silicon_revision(void); +int stm32mp_cputype(void); +int stm32mp_package(void); + +#define cpu_is_stm32mp157c() (stm32mp_cputype() == CPU_STM32MP157Cxx) +#define cpu_is_stm32mp157a() (stm32mp_cputype() == CPU_STM32MP157Axx) +#define cpu_is_stm32mp153c() (stm32mp_cputype() == CPU_STM32MP153Cxx) +#define cpu_is_stm32mp153a() (stm32mp_cputype() == CPU_STM32MP153Axx) +#define cpu_is_stm32mp151c() (stm32mp_cputype() == CPU_STM32MP151Cxx) +#define cpu_is_stm32mp151a() (stm32mp_cputype() == CPU_STM32MP151Axx) + +#endif /* __MACH_CPUTYPE_H__ */ |