[PATCH] xilinx: common: Add support for SOC detection
Michal Simek
monstr at monstr.eu
Mon Sep 12 11:59:03 CEST 2022
út 6. 9. 2022 v 12:40 odesílatel Michal Simek <michal.simek at amd.com> napsal:
>
> Code supports board detection based on information available in EEPROM in
> legacy or FRU format. But this is not enough for emulation and simulation
> systems which are lacking these identification EEPROMs. But SOC itself has
> normally registers for SOC identification. Based on them it is possible to
> compose detected name. That's why prepare infrastructure in common location
> for SOC platform detection which is called before board platform detection.
> SOC platform detection shouldn't detect real silicon and should fallback to
> current existing mechanism to identify boards based on EEPROMs.
>
> Signed-off-by: Michal Simek <michal.simek at amd.com>
> ---
>
> board/xilinx/common/board.c | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/board/xilinx/common/board.c b/board/xilinx/common/board.c
> index 5e3638636123..e1f71049603f 100644
> --- a/board/xilinx/common/board.c
> +++ b/board/xilinx/common/board.c
> @@ -585,8 +585,33 @@ bool __maybe_unused __weak board_detection(void)
> return false;
> }
>
> +bool __maybe_unused __weak soc_detection(void)
> +{
> + return false;
> +}
> +
> +char * __maybe_unused __weak soc_name_decode(void)
> +{
> + return NULL;
> +}
> +
> int embedded_dtb_select(void)
> {
> + if (soc_detection()) {
> + char *soc_local_name;
> +
> + soc_local_name = soc_name_decode();
> + if (soc_local_name) {
> + board_name = soc_local_name;
> + printf("Detected SOC name: %s\n", board_name);
> +
> + /* Time to change DTB on fly */
> + /* Both ways should work here */
> + /* fdtdec_resetup(&rescan); */
> + return fdtdec_setup();
> + }
> + }
> +
> if (board_detection()) {
> char *board_local_name;
>
> --
> 2.36.1
>
Applied.
M
--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs
More information about the U-Boot
mailing list