From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 358A2C43334 for ; Fri, 17 Jun 2022 10:41:18 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A7F898432F; Fri, 17 Jun 2022 12:41:16 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=amd.com header.i=@amd.com header.b="Neu3Ty0x"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 812CB84335; Fri, 17 Jun 2022 12:41:14 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on20630.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eae::630]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 54262832C3 for ; Fri, 17 Jun 2022 12:41:11 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: phobos.denx.de; spf=fail smtp.mailfrom=michal.simek@amd.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zhyv+wAyhHUsdr2l5F6gtuf3Y5/VyPBEkPcLEdTZAUFtLlT16rbQexqam8SUl6S2cLgSXhVi9t3sz6Sjf1g+OXODspmD99oXWz6I0nsLGbmY+CtTvgYsNk5hU+Rs0VCWcPmRtx9Aae31eN8nESLyfWL3DNZmj2Sp4qDEicxRsJvoh3oOPsnG1udF6JKHt+4BJRj6hnhdbWo6hh0HDXjxtqgHkPO3W250g7r/F0UdhDgRgYllEFxduslE3q8C76z6G9yj0q4zamvPBTL+lWm33LlLlRKW7iayEt/lNxb2E3LFnkqfQE1TY1ORE2yVPwPbAIVzXBzte7kgGsVnQIoIQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=c+FLXIDJEcQAKxq5kvLZitNKmGuB3mHG1+bEeIGqlQk=; b=Vo37ADWHCaLY6R/VKv83dC9UjNbw3NMqmioTgIQhIDY/0gN0QYbwbb9CZH1bP7VI9H842it4ihsGN8TWTKf8z/9SsXuUCWyyEe8LIZ0I45nTychwjS52Ta0HCyyg2sggf09xKQvVgiPZhOWJZVs4W27P+X3ZwAN5yaoVN33uHWdlTcQ9UgQLnx+LQfx628E0MFnt30pSCvQPX5PZ3x0rGpdNEM2PJ+qSyGbsvzEzxtMZwi5Q6XEBgCs4HpEfKDcEuTD52fyBT40PKcWFCQVKKwVKPuGTvJwYdzCXGxT6GXHY4+2VYHIH9G99zG75gplxSm5UQtLKqib99uFXBMB6tw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=weidmueller.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c+FLXIDJEcQAKxq5kvLZitNKmGuB3mHG1+bEeIGqlQk=; b=Neu3Ty0x2eJVuAEaWSBes20VPafui2/ikdKQ4MsEzVjfmpFebwXeiedCL0R2qk81pZ5SuQ5aiZG5+SiLMVIyZexZLfK9NzJ5U/doWjbxRQOSSjxX+C6V/7o2tUKfheewhwVqgd7Cxr8EaUElA9aFe6pZb1Yyk+Jma1B/8x11EO4= Received: from CO2PR07CA0084.namprd07.prod.outlook.com (2603:10b6:100::52) by BN8PR12MB3315.namprd12.prod.outlook.com (2603:10b6:408:41::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.15; Fri, 17 Jun 2022 10:41:08 +0000 Received: from CO1NAM11FT018.eop-nam11.prod.protection.outlook.com (2603:10b6:100:0:cafe::54) by CO2PR07CA0084.outlook.office365.com (2603:10b6:100::52) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.15 via Frontend Transport; Fri, 17 Jun 2022 10:41:07 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT018.mail.protection.outlook.com (10.13.175.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5353.14 via Frontend Transport; Fri, 17 Jun 2022 10:41:07 +0000 Received: from [10.254.241.52] (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 17 Jun 2022 05:41:05 -0500 Message-ID: Date: Fri, 17 Jun 2022 12:41:02 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Subject: Re: [PATCH 03/10] soc: xilinx: zynqmp: Add machine identification support Content-Language: en-US To: Stefan Herbrechtsmeier , CC: Stefan Herbrechtsmeier References: <20220608162054.25641-1-stefan.herbrechtsmeier-oss@weidmueller.com> <20220608162054.25641-4-stefan.herbrechtsmeier-oss@weidmueller.com> From: Michal Simek In-Reply-To: <20220608162054.25641-4-stefan.herbrechtsmeier-oss@weidmueller.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ca74e185-7ec2-4a82-841b-08da504de2d7 X-MS-TrafficTypeDiagnostic: BN8PR12MB3315:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: beO4Dr+bptTG02vBTT8RNhhxteQtbi4vyN2I7LuBvCXZJ1S5YfjNJdxdTvLMN1QrDczgkS/6t+IqE0vy+c/GTuyzL+WMwQFBbEgEXyiJZ2N6GIQg5oQCo8dAs2TKTO6tGHU9voFCfmBTyTulAVo3w/TjTHT3JgJbAK5q2TAyR8zEfmJupvKqoVlAjiUEbqgzg5ccelaM4xglClWnkqKnrBmggKzmEwF8sbbdvEwcjUHosscsdyMH5kPELFknjtvuJfsWINLSQ5PzYD8q+7YenmJoq1ComPkDWtzC519Ri9DT1xC5x/Gj97K9nvhWLyuvYEOGRmiHD9qf2nO/Ow/FZx5+8CUxmTXlExGIi/rpU3b/g2xTaMxhMv+1/8FP9MRcb3jgPWTSWJ5FuFiCBOmC8BvCLn211Z6fjV7rPjRIKXEiNUBOIB+87O0/JCrNoFOX+ybK02n/4GoKqVZtzl0hGljIBW15o3JmAVeF2mkl6tMmy7xkhFrD0HDZmxLV2ReTS9UX8M5uMPyk0QvsZ/3sw9vpOzSMSXrB66aMXe52aTpqsvb2hxd3U+SpudaXVwkGCyI+VA+x5W/bEGWJP48QGpticZUCoAUW6Okr6pQ/kK073YzMXuwATWbqsNzb6xvpyYRYZEmX7zYP6J6Lf2DjANimPgn0vbRnWKxmuAoWprz/vV3gyKHc1I7tf2nH3GgeJVk6Imrjw+j2v5TlmTJXDfI0zTbkKJ+e4mLrKWm87YiFWmnPgTsBaiBgUml2CHXz X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230016)(4636009)(36840700001)(40470700004)(46966006)(66574015)(426003)(6666004)(16526019)(40460700003)(44832011)(5660300002)(2616005)(336012)(81166007)(36756003)(2906002)(508600001)(4326008)(8936002)(70586007)(316002)(31696002)(31686004)(110136005)(70206006)(86362001)(53546011)(356005)(16576012)(47076005)(36860700001)(83380400001)(8676002)(26005)(186003)(82310400005)(43740500002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jun 2022 10:41:07.2950 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ca74e185-7ec2-4a82-841b-08da504de2d7 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT018.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR12MB3315 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean On 6/8/22 18:20, Stefan Herbrechtsmeier wrote: > [CAUTION: External Email] > > From: Stefan Herbrechtsmeier > > Add machine identification support based on the > zynqmp_get_silicon_idcode_name function in board/xilinx/zynqmp/zynqmp.c. > > Signed-off-by: Stefan Herbrechtsmeier > --- > > drivers/soc/soc_xilinx_zynqmp.c | 289 +++++++++++++++++++++++++++++++- > 1 file changed, 286 insertions(+), 3 deletions(-) > > diff --git a/drivers/soc/soc_xilinx_zynqmp.c b/drivers/soc/soc_xilinx_zynqmp.c > index a71115b17c..45592ed534 100644 > --- a/drivers/soc/soc_xilinx_zynqmp.c > +++ b/drivers/soc/soc_xilinx_zynqmp.c > @@ -3,10 +3,15 @@ > * Xilinx ZynqMP SOC driver > * > * Copyright (C) 2021 Xilinx, Inc. > + * Michal Simek > + * > + * Copyright (C) 2022 Weidmüller Interface GmbH & Co. KG > + * Stefan Herbrechtsmeier > */ > > #include > #include > +#include > #include > #include > #include > @@ -20,13 +25,260 @@ > * v2 -> 2(XCZU7EV-ES1, XCZU9EG-ES2, XCZU19EG-ES1) > * v3 -> 3(Production Level) > */ > -static const char zynqmp_family[] = "ZynqMP"; please keep this in origin location. > + > +#define EFUSE_VCU_DIS_SHIFT 8 > +#define EFUSE_VCU_DIS_MASK BIT(EFUSE_VCU_DIS_SHIFT) > +#define EFUSE_GPU_DIS_SHIFT 5 > +#define EFUSE_GPU_DIS_MASK BIT(EFUSE_GPU_DIS_SHIFT) > +#define IDCODE2_PL_INIT_SHIFT 9 > +#define IDCODE2_PL_INIT_MASK BIT(IDCODE2_PL_INIT_SHIFT) > + > +#define ZYNQMP_VERSION_SIZE 7 > + > +enum { > + ZYNQMP_VARIANT_EG = BIT(0), > + ZYNQMP_VARIANT_EV = BIT(1), > + ZYNQMP_VARIANT_CG = BIT(2), > + ZYNQMP_VARIANT_DR = BIT(3), > +}; > + > +struct zynqmp_device { > + u32 id; > + u8 device; > + u8 variants; > +}; > > struct soc_xilinx_zynqmp_priv { > const char *family; > + char machine[ZYNQMP_VERSION_SIZE]; > char revision; > }; > > +static struct zynqmp_device zynqmp_devices[] = { > + { > + .id = 0x04688093, > + .device = 1, > + .variants = ZYNQMP_VARIANT_EG, > + }, > + { > + .id = 0x04711093, > + .device = 2, > + .variants = ZYNQMP_VARIANT_EG | ZYNQMP_VARIANT_CG, > + }, > + { > + .id = 0x04710093, > + .device = 3, > + .variants = ZYNQMP_VARIANT_EG | ZYNQMP_VARIANT_CG, > + }, > + { > + .id = 0x04721093, > + .device = 4, > + .variants = ZYNQMP_VARIANT_EG | ZYNQMP_VARIANT_CG | > + ZYNQMP_VARIANT_EV, > + }, > + { > + .id = 0x04720093, > + .device = 5, > + .variants = ZYNQMP_VARIANT_EG | ZYNQMP_VARIANT_CG | > + ZYNQMP_VARIANT_EV, > + }, > + { > + .id = 0x04739093, > + .device = 6, > + .variants = ZYNQMP_VARIANT_EG | ZYNQMP_VARIANT_CG, > + }, > + { > + .id = 0x04730093, > + .device = 7, > + .variants = ZYNQMP_VARIANT_EG | ZYNQMP_VARIANT_CG | > + ZYNQMP_VARIANT_EV, > + }, > + { > + .id = 0x04738093, > + .device = 9, > + .variants = ZYNQMP_VARIANT_EG | ZYNQMP_VARIANT_CG, > + }, > + { > + .id = 0x04740093, > + .device = 11, > + .variants = ZYNQMP_VARIANT_EG, > + }, > + { > + .id = 0x04750093, > + .device = 15, > + .variants = ZYNQMP_VARIANT_EG, > + }, > + { > + .id = 0x04759093, > + .device = 17, > + .variants = ZYNQMP_VARIANT_EG, > + }, > + { > + .id = 0x04758093, > + .device = 19, > + .variants = ZYNQMP_VARIANT_EG, > + }, > + { > + .id = 0x047E1093, > + .device = 21, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x047E3093, > + .device = 23, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x047E5093, > + .device = 25, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x047E4093, > + .device = 27, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x047E0093, > + .device = 28, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x047E2093, > + .device = 29, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x047E6093, > + .device = 39, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x047FD093, > + .device = 43, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x047F8093, > + .device = 46, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x047FF093, > + .device = 47, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x047FB093, > + .device = 48, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x047FE093, > + .device = 49, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x046d0093, > + .device = 67, > + .variants = ZYNQMP_VARIANT_DR, > + }, > + { > + .id = 0x04714093, > + .device = 24, > + .variants = 0, > + }, > + { > + .id = 0x04724093, > + .device = 26, > + .variants = 0, > + }, This sck merge is good but it is completely hidden in the patch. I would prefer if you can do change in origin code and then c&p new one. And also merged it with 4/10 to directly use it. > +}; > + > +static const char zynqmp_family[] = "ZynqMP"; As mentioned above. > + > +static const struct zynqmp_device *zynqmp_get_device(u32 idcode) > +{ > + idcode &= 0x0FFFFFFF; We should create macro for this. I know in origin code this value is used but macro would be better. > + > + for (int i = 0; i < ARRAY_SIZE(zynqmp_devices); i++) { > + if (zynqmp_devices[i].id == idcode) > + return &zynqmp_devices[i]; > + } > + > + return NULL; > +} > + > +static int soc_xilinx_zynqmp_detect_machine(struct udevice *dev, u32 idcode, > + u32 idcode2) > +{ > + struct soc_xilinx_zynqmp_priv *priv = dev_get_priv(dev); > + const struct zynqmp_device *device; > + int ret; > + > + device = zynqmp_get_device(idcode); > + remove this newline. > + if (!device) > + return 0; > + > + /* Add device prefix to the name */ > + ret = snprintf(priv->machine, sizeof(priv->machine), "%s%d", > + device->variants ? "zu" : "xck", device->device); > + if (ret < 0) > + return ret; > + > + if (device->variants & ZYNQMP_VARIANT_EV) { > + /* Devices with EV variant might be EG/CG/EV family */ > + if (idcode2 & IDCODE2_PL_INIT_MASK) { > + u32 family = ((idcode2 & EFUSE_VCU_DIS_MASK) >> > + EFUSE_VCU_DIS_SHIFT) << 1 | > + ((idcode2 & EFUSE_GPU_DIS_MASK) >> > + EFUSE_GPU_DIS_SHIFT); > + > + /* > + * Get family name based on extended idcode values as > + * determined on UG1087, EXTENDED_IDCODE register > + * description > + */ > + switch (family) { > + case 0x00: > + strlcat(priv->machine, "ev", > + sizeof(priv->machine)); > + break; > + case 0x10: > + strlcat(priv->machine, "eg", > + sizeof(priv->machine)); > + break; > + case 0x11: > + strlcat(priv->machine, "cg", > + sizeof(priv->machine)); > + break; > + default: > + /* Do not append family name*/ > + break; > + } > + } else { > + /* > + * When PL powered down the VCU Disable efuse cannot be > + * read. So, ignore the bit and just findout if it is CG > + * or EG/EV variant. > + */ > + strlcat(priv->machine, (idcode2 & EFUSE_GPU_DIS_MASK) ? > + "cg" : "e", sizeof(priv->machine)); > + } > + } else if (device->variants & ZYNQMP_VARIANT_CG) { > + /* Devices with CG variant might be EG or CG family */ > + strlcat(priv->machine, (idcode2 & EFUSE_GPU_DIS_MASK) ? > + "cg" : "eg", sizeof(priv->machine)); > + } else if (device->variants & ZYNQMP_VARIANT_EG) { > + strlcat(priv->machine, "eg", sizeof(priv->machine)); > + } else if (device->variants & ZYNQMP_VARIANT_DR) { > + strlcat(priv->machine, "dr", sizeof(priv->machine)); > + } > + > + return 0; > +} > + > static int soc_xilinx_zynqmp_get_family(struct udevice *dev, char *buf, int size) > { > struct soc_xilinx_zynqmp_priv *priv = dev_get_priv(dev); > @@ -34,6 +286,17 @@ static int soc_xilinx_zynqmp_get_family(struct udevice *dev, char *buf, int size > return snprintf(buf, size, "%s", priv->family); > } > > +int soc_xilinx_zynqmp_get_machine(struct udevice *dev, char *buf, int size) > +{ > + struct soc_xilinx_zynqmp_priv *priv = dev_get_priv(dev); > + const char *machine = priv->machine; > + > + if (!machine[0]) > + machine = "unknown"; > + > + return snprintf(buf, size, "%s", machine); > +} > + > static int soc_xilinx_zynqmp_get_revision(struct udevice *dev, char *buf, int size) > { > struct soc_xilinx_zynqmp_priv *priv = dev_get_priv(dev); > @@ -44,6 +307,7 @@ static int soc_xilinx_zynqmp_get_revision(struct udevice *dev, char *buf, int si > static const struct soc_ops soc_xilinx_zynqmp_ops = { > .get_family = soc_xilinx_zynqmp_get_family, > .get_revision = soc_xilinx_zynqmp_get_revision, > + .get_machine = soc_xilinx_zynqmp_get_machine, > }; > > static int soc_xilinx_zynqmp_probe(struct udevice *dev) > @@ -54,8 +318,7 @@ static int soc_xilinx_zynqmp_probe(struct udevice *dev) > > priv->family = zynqmp_family; > > - if (IS_ENABLED(CONFIG_SPL_BUILD) || current_el() == 3 || > - !IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE)) > + if (!IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE)) > ret = zynqmp_mmio_read(ZYNQMP_PS_VERSION, &ret_payload[2]); > else > ret = xilinx_pm_request(PM_GET_CHIPID, 0, 0, 0, 0, I was looking at code and this change is very interesting. I think that it can be just ret = xilinx_pm_request(PM_GET_CHIPID, 0, 0, 0, 0,... because message can be sent via IPI directly. That means that this should be completely separate patch. > @@ -65,6 +328,26 @@ static int soc_xilinx_zynqmp_probe(struct udevice *dev) > > priv->revision = ret_payload[2] & ZYNQMP_PS_VER_MASK; > > + if (IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE)) { When above change is there you should be able to remove this checking because you should get all payloads back in proper shape. > + /* > + * Firmware returns: > + * payload[0][31:0] = status of the operation > + * payload[1] = IDCODE > + * payload[2][19:0] = Version > + * payload[2][28:20] = EXTENDED_IDCODE > + * payload[2][29] = PL_INIT > + */ > + u32 idcode = ret_payload[1]; > + u32 idcode2 = ret_payload[2] >> > + ZYNQMP_CSU_VERSION_EMPTY_SHIFT; > + dev_dbg(dev, "IDCODE: 0x%0x, IDCODE2: 0x%0x\n", idcode, > + idcode2); > + > + ret = soc_xilinx_zynqmp_detect_machine(dev, idcode, idcode2); > + if (ret) > + return ret; > + } > + > return 0; > } > > -- > 2.30.2 > Thanks, Michal