[PATCH] arm64: versal-net: Add support for SPP production version
Michal Simek
michal.simek at amd.com
Tue May 30 14:23:51 CEST 2023
On 5/17/23 10:21, Michal Simek wrote:
> Production version restarting platform version field from 0 that's why add
> new calculation to be able to use different DT for these platforms.
> Requested DT names for production silicons for IPP/SPP and EMU platform are
> versal-net-ipp-rev2.0.dts and versal-net-emu-rev2.0.dts.
> If platform version increase numbers revision can be even higher.
> As of today platform version is 2 that's why expected is rev2.2.
>
> Signed-off-by: Michal Simek <michal.simek at amd.com>
> ---
>
> .../mach-versal-net/include/mach/hardware.h | 1 +
> board/xilinx/versal-net/board.c | 35 +++++++++++++------
> 2 files changed, 25 insertions(+), 11 deletions(-)
>
> diff --git a/arch/arm/mach-versal-net/include/mach/hardware.h b/arch/arm/mach-versal-net/include/mach/hardware.h
> index c5e4e22040e2..3de9d439bc5c 100644
> --- a/arch/arm/mach-versal-net/include/mach/hardware.h
> +++ b/arch/arm/mach-versal-net/include/mach/hardware.h
> @@ -44,6 +44,7 @@ struct iou_scntrs_regs {
> #define PMC_TAP_VERSION (PMC_TAP + 0x4)
> # define PMC_VERSION_MASK GENMASK(7, 0)
> # define PS_VERSION_MASK GENMASK(15, 8)
> +# define PS_VERSION_PRODUCTION 0x20
> # define RTL_VERSION_MASK GENMASK(23, 16)
> # define PLATFORM_MASK GENMASK(27, 24)
> # define PLATFORM_VERSION_MASK GENMASK(31, 28)
> diff --git a/board/xilinx/versal-net/board.c b/board/xilinx/versal-net/board.c
> index 6724c7290f8e..0e1321734f32 100644
> --- a/board/xilinx/versal-net/board.c
> +++ b/board/xilinx/versal-net/board.c
> @@ -74,32 +74,45 @@ char *soc_name_decode(void)
>
> bool soc_detection(void)
> {
> - u32 version;
> + u32 version, ps_version;
>
> version = readl(PMC_TAP_VERSION);
> platform_id = FIELD_GET(PLATFORM_MASK, version);
> + ps_version = FIELD_GET(PS_VERSION_MASK, version);
>
> debug("idcode %x, version %x, usercode %x\n",
> readl(PMC_TAP_IDCODE), version,
> readl(PMC_TAP_USERCODE));
>
> - debug("pmc_ver %lx, ps version %lx, rtl version %lx\n",
> + debug("pmc_ver %lx, ps version %x, rtl version %lx\n",
> FIELD_GET(PMC_VERSION_MASK, version),
> - FIELD_GET(PS_VERSION_MASK, version),
> + ps_version,
> FIELD_GET(RTL_VERSION_MASK, version));
>
> platform_version = FIELD_GET(PLATFORM_VERSION_MASK, version);
>
> if (platform_id == VERSAL_NET_SPP ||
> platform_id == VERSAL_NET_EMU) {
> - /*
> - * 9 is diff for
> - * 0 means 0.9 version
> - * 1 means 1.0 version
> - * 2 means 1.1 version
> - * etc,
> - */
> - platform_version += 9;
> + if (ps_version == PS_VERSION_PRODUCTION) {
> + /*
> + * ES1 version ends at 1.9 version where there was +9
> + * used because of IPP/SPP conversion. Production
> + * version have platform_version started from 0 again
> + * that's why adding +20 to continue with the same line.
> + * It means the last ES1 version ends at 1.9 version and
> + * new PRODUCTION line starts at 2.0.
> + */
> + platform_version += 20;
> + } else {
> + /*
> + * 9 is diff for
> + * 0 means 0.9 version
> + * 1 means 1.0 version
> + * 2 means 1.1 version
> + * etc,
> + */
> + platform_version += 9;
> + }
> }
>
> debug("Platform id: %d version: %d.%d\n", platform_id,
Applied.
M
More information about the U-Boot
mailing list