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 EBE88C433EF for ; Tue, 3 May 2022 07:42:43 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id CD48583C08; Tue, 3 May 2022 09:42:40 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=xilinx.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=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="LQV3VvDF"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 48565839DF; Tue, 3 May 2022 09:42:39 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2061d.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eab::61d]) (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 BCF3F83C08 for ; Tue, 3 May 2022 09:42:33 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=xilinx.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=michals@xilinx.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LCrjmTqV4eEgRyAPMoem6JI2yrCrmbkUiyEXkh8cVOEQdkGaMmtoc7rp7dIz7VKvzbTs6OaKeUOJKNYbZc0uvebrfHPdTGJ2OzzCACvRqxHiTKiepRbS8bSVq5FNp1jUWBRQ1IZzwM6FnkcfhEFZBvlcyRHZjkChvZLJp4bT26QYe0CIac58kqda/CLZRedCRvMGqbJuhQaxce9c9fwMw8HY7V8nH31mEQ3+Sz53J6GXQQ2pwj+Pdg8u4Q3XjaooPRjqEBQ9Sls0jNVvcdwXi4fv2JH6OcaOoIrXCipLu0CfpfzmCdoHFyM9KYoA3wQ0iClEd3XzkofoGpPINt/Miw== 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=oBG99FL9fR2WzFdT9EOt0+YopSD0wBDltDF4HpEUa18=; b=KdI7EgEeUMA+CnZNpOg55WrbQmCeRooVaHT9IYctvzsvaPLmrNvgI9DcUCz/gWvA3ttO5Fxepvx/HIA/0Ta8HX/jgg4s4/ECC2FyZjTUmeV7Nt+M0Tcn/HDFmu42Ll4liaBhiQEggsD7vhdIupZ0jKRzQoeJsDrisECdX7HJbf9ygY7wutlFoayvLbe9SVJyAjcV+YqEKdlKOYuElcz5QssnjVXxuzkTItermKLmiKAEOQ6EvCBHIBi+2fAKBSvDG6X9rzVE4K40C8LaUsUdFPqeJUV0hvpxbGy4kgwn7/jCB4wwcjJ//INTqxFdqjOYn75TUiyD5icP7rp43h8zWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 149.199.62.198) smtp.rcpttodomain=fastree3d.com smtp.mailfrom=xilinx.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=xilinx.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector2-xilinx-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oBG99FL9fR2WzFdT9EOt0+YopSD0wBDltDF4HpEUa18=; b=LQV3VvDFA5Ibf+9Ms2SE52huneauu++P5KhtJkOQvJTCnCOGuxn1P3jx0VRNM+3voQm65hn0U3lvqqcCTzC5gNRZ6W7rX/tn0hrWv2XFTO80ENCSpJukfvZPjghTZR/X53Pv40S1IXG0c4bTgi/Qx7pl4KV5VkCM0K905maXYdA= Received: from BN8PR04CA0043.namprd04.prod.outlook.com (2603:10b6:408:d4::17) by DM6PR02MB4185.namprd02.prod.outlook.com (2603:10b6:5:a3::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Tue, 3 May 2022 07:42:29 +0000 Received: from BN1NAM02FT029.eop-nam02.prod.protection.outlook.com (2603:10b6:408:d4:cafe::fe) by BN8PR04CA0043.outlook.office365.com (2603:10b6:408:d4::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.24 via Frontend Transport; Tue, 3 May 2022 07:42:29 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 149.199.62.198) smtp.mailfrom=xilinx.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.62.198 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.62.198; helo=xsj-pvapexch01.xlnx.xilinx.com; Received: from xsj-pvapexch01.xlnx.xilinx.com (149.199.62.198) by BN1NAM02FT029.mail.protection.outlook.com (10.13.2.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5206.12 via Frontend Transport; Tue, 3 May 2022 07:42:28 +0000 Received: from xsj-pvapexch02.xlnx.xilinx.com (172.19.86.41) by xsj-pvapexch01.xlnx.xilinx.com (172.19.86.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14; Tue, 3 May 2022 00:42:28 -0700 Received: from smtp.xilinx.com (172.19.127.96) by xsj-pvapexch02.xlnx.xilinx.com (172.19.86.41) with Microsoft SMTP Server id 15.1.2176.14 via Frontend Transport; Tue, 3 May 2022 00:42:28 -0700 Envelope-to: adrian.fiergolski@fastree3d.com, u-boot@lists.denx.de, oleksandr.suvorov@foundries.io, ricardo@foundries.io, igor.opaniuk@foundries.io, jorge@foundries.io, mr.nuke.me@gmail.com, bmeng.cn@gmail.com, hs@denx.de, jagan@amarulasolutions.com, klaus@linux.vnet.ibm.com, seanga2@gmail.com, sjg@chromium.org, jaeckel-floss@eyet-services.de Received: from [10.254.241.50] (port=58566) by smtp.xilinx.com with esmtp (Exim 4.90) (envelope-from ) id 1nlnAy-0003wx-09; Tue, 03 May 2022 00:42:28 -0700 Message-ID: <3929af10-3e4e-82bb-b5dc-d75e8d3a27d9@xilinx.com> Date: Tue, 3 May 2022 09:42:24 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 Subject: Re: [PATCH v7 2/7] fpga: add fit_fpga_load function Content-Language: en-US To: Adrian Fiergolski , CC: , , , , , , , , , , , , References: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> <20220411180046.1505209-3-adrian.fiergolski@fastree3d.com> From: Michal Simek In-Reply-To: <20220411180046.1505209-3-adrian.fiergolski@fastree3d.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6c7cbd63-d3ac-486e-7d3e-08da2cd87995 X-MS-TrafficTypeDiagnostic: DM6PR02MB4185:EE_ X-Microsoft-Antispam-PRVS: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XG4uJzsv+8hMh7ashM2F619gipRsCQkQ4YSBwGjyvjtbAZAIcEcXDmMOcFyfljHf41q2GH1uXhFjPRZ9g1Ima7pZsJT0lUO8J41w37MfXm1u1Bi3PywgW/ErUfmvhMF87ouepBDMDVPiiWsPnoopDZt7ddmkHlgK91cV9IqkNvRG6lj+s9r2MimXjOHHzUY6RD3OxIXQHBhi62XfrzTUcF+PnLGAzlTfoWe0y9mOCjoI/OgeKWEUTrDl1AF8XuiAZsTNX1RKVaNdN//sKB1nPIx2fjkIqwuD8IA6JY0LtisB7RZrfhAh0Hqyh8Q947z40pYEVmiHFa2q2LmL2OBqKikUjSAcVyKeGdqAPnLpzPh7iFTgVgKHEex2cus4EakA5WasA29l0jSbcWLeromZIHOsQU7EBI9ubMCIPJ8b1kWE/ynAtqLTE3uwSF/63JwqFBaOX9lepF4mtfvUBuVajrnQKn+REIV8SponS1KMvB63NgY/FzqpoFnyN6j0UNMEpyfste4SHUgwOeJWDOju1HThaNMtgVhuFLg09QJOeJKs60cX9Fqos/yTDs3U3C5LcsP40AES3Mtrn6SRa4Q44UUvFsVAtk/Ma6blnx0vY9zsdV2RbTbQLiWCcVnsHxedvWCN1AFwjpj0MuQ1ebpJ762YRnhgq8H8vSVNcD7BYewWVdgUzvlidBMuRMHd992lOIqSvXFlmgunsgWTIA/HhbHE6MEnhHqOc8Nlya87yss= X-Forefront-Antispam-Report: CIP:149.199.62.198; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:xsj-pvapexch01.xlnx.xilinx.com; PTR:unknown-62-198.xilinx.com; CAT:NONE; SFS:(13230001)(4636009)(40470700004)(36840700001)(46966006)(44832011)(316002)(7416002)(5660300002)(9786002)(8936002)(110136005)(2906002)(36756003)(6666004)(31686004)(53546011)(54906003)(7636003)(356005)(26005)(70586007)(70206006)(8676002)(40460700003)(83380400001)(36860700001)(4326008)(508600001)(186003)(47076005)(426003)(336012)(82310400005)(31696002)(2616005)(50156003)(43740500002); DIR:OUT; SFP:1101; X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 May 2022 07:42:28.9494 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6c7cbd63-d3ac-486e-7d3e-08da2cd87995 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.62.198]; Helo=[xsj-pvapexch01.xlnx.xilinx.com] X-MS-Exchange-CrossTenant-AuthSource: BN1NAM02FT029.eop-nam02.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR02MB4185 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 4/11/22 20:00, Adrian Fiergolski wrote: > From: Oleksandr Suvorov > > Introduce a function which passes an fpga compatible string from > FIT images to FPGA drivers. This lets the different implementations > decide how to handle it. > > Some code of Jorge Ramirez-Ortiz is reused. > > Signed-off-by: Oleksandr Suvorov > Tested-by: Ricardo Salveti > Co-developed-by: Adrian Fiergolski > Signed-off-by: Adrian Fiergolski > --- > common/spl/spl_fit.c | 6 ++---- > drivers/fpga/fpga.c | 23 ++++++++++++++++++++++- > include/fpga.h | 4 ++++ > 3 files changed, 28 insertions(+), 5 deletions(-) > > diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c > index 1bbf824684..0e3c2a94b6 100644 > --- a/common/spl/spl_fit.c > +++ b/common/spl/spl_fit.c > @@ -588,11 +588,9 @@ static int spl_fit_upload_fpga(struct spl_fit_info *ctx, int node, > compatible = fdt_getprop(ctx->fit, node, "compatible", NULL); > if (!compatible) > warn_deprecated("'fpga' image without 'compatible' property"); > - else if (strcmp(compatible, "u-boot,fpga-legacy")) > - printf("Ignoring compatible = %s property\n", compatible); > > - ret = fpga_load(0, (void *)fpga_image->load_addr, fpga_image->size, > - BIT_FULL); > + ret = fit_fpga_load(0, (void *)fpga_image->load_addr, fpga_image->size, > + BIT_FULL, compatible); > if (ret) { > printf("%s: Cannot load the image to the FPGA\n", __func__); > return ret; > diff --git a/drivers/fpga/fpga.c b/drivers/fpga/fpga.c > index 3b0a44b242..a306dd81f9 100644 > --- a/drivers/fpga/fpga.c > +++ b/drivers/fpga/fpga.c > @@ -249,8 +249,23 @@ int fpga_loads(int devnum, const void *buf, size_t size, > } > #endif > > +int fit_fpga_load(int devnum, const void *buf, size_t bsize, > + bitstream_type bstype, const char *compatible) > +{ > + fpga_desc *desc = fpga_get_desc(devnum); this generates warning which you should fix. + fpga_desc *desc = fpga_get_desc(devnum); + ^~~~~~~~~~~~~ w+../drivers/fpga/fpga.c: In function ‘fit_fpga_load’: w+../drivers/fpga/fpga.c:255:20: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] > + > + /* > + * Store the compatible string to proceed it in underlying > + * functions > + */ > + desc->compatible = (char *)compatible; > + > + return fpga_load(devnum, buf, bsize, bstype); > +} > + > /* > - * Generic multiplexing code > + * Generic multiplexing code: > + * Each architecture must handle the mandatory FPGA DT compatible property. > */ > int fpga_load(int devnum, const void *buf, size_t bsize, bitstream_type bstype) > { > @@ -270,6 +285,9 @@ int fpga_load(int devnum, const void *buf, size_t bsize, bitstream_type bstype) > break; > case fpga_altera: > #if defined(CONFIG_FPGA_ALTERA) > + if (strncmp(desc->compatible, "u-boot,fpga-legacy", 18)) > + printf("Ignoring compatible = %s property\n", > + desc->compatible); > ret_val = altera_load(desc->devdesc, buf, bsize); > #else > fpga_no_sup((char *)__func__, "Altera devices"); > @@ -277,6 +295,9 @@ int fpga_load(int devnum, const void *buf, size_t bsize, bitstream_type bstype) > break; > case fpga_lattice: > #if defined(CONFIG_FPGA_LATTICE) > + if (strncmp(desc->compatible, "u-boot,fpga-legacy", 18)) > + printf("Ignoring compatible = %s property\n", > + desc->compatible); > ret_val = lattice_load(desc->devdesc, buf, bsize); > #else > fpga_no_sup((char *)__func__, "Lattice devices"); > diff --git a/include/fpga.h b/include/fpga.h > index ec5144334d..2891f32106 100644 > --- a/include/fpga.h > +++ b/include/fpga.h > @@ -35,6 +35,7 @@ typedef enum { /* typedef fpga_type */ > typedef struct { /* typedef fpga_desc */ > fpga_type devtype; /* switch value to select sub-functions */ > void *devdesc; /* real device descriptor */ > + char *compatible; /* device compatible string */ > } fpga_desc; /* end, typedef fpga_desc */ > > typedef struct { /* typedef fpga_desc */ > @@ -63,6 +64,9 @@ int fpga_add(fpga_type devtype, void *desc); > int fpga_count(void); > const fpga_desc *const fpga_get_desc(int devnum); > int fpga_is_partial_data(int devnum, size_t img_len); > +/* the DT compatible property must be handled by the different FPGA archs */ > +int fit_fpga_load(int devnum, const void *buf, size_t bsize, > + bitstream_type bstype, const char *compatible); > int fpga_load(int devnum, const void *buf, size_t bsize, > bitstream_type bstype); > int fpga_fsload(int devnum, const void *buf, size_t size, M