From patchwork Mon Apr 11 18:00:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Fiergolski X-Patchwork-Id: 1615884 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.a=rsa-sha256 header.s=20210112 header.b=anqh/doB; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4Kcc9w29Jpz9s3q for ; Tue, 12 Apr 2022 04:01:39 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 2D56D83E37; Mon, 11 Apr 2022 20:01:37 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.b="anqh/doB"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 67FC383E37; Mon, 11 Apr 2022 20:01:35 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com [IPv6:2a00:1450:4864:20::629]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 922FC83E2A for ; Mon, 11 Apr 2022 20:01:28 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=none smtp.mailfrom=adrian.fiergolski@fastree3d.com Received: by mail-ej1-x629.google.com with SMTP id lc2so11937231ejb.12 for ; Mon, 11 Apr 2022 11:01:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastree3d-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=n85sCDQbN3cROVVItZ7cEHrxkW1HW/GR/jDQ7vkZKzI=; b=anqh/doByKkD+9GdTnwnU6skhO4Fm3wf1wd5yO2n1d6aV46ThAlL380AxhbOZOT4QW iHgvVymI4gK5um9K4Cz9i3Foyr+2MuyODxO9ZXLRGpludJQHGbq3EWzAEhjWbm0+F6Q8 vz4K0sKIkUdDtpcgXYa7ThDWA8LyxGgbNS2uNXr544jRwOaROsJRoUYEhTIj/7dQDrDf GUo/xEm80WwyXbdflqDwU2H1m/lIJkUQj44MrzWJs8PQCmruxSTtkEqDkoHBFH+92djE wybDbP38S9JfS08G+xt1ZTh/vTE9xIMzrCLCW1m8hJoofkOl/M6UkiXY0yvV62xq8C1U qZ4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=n85sCDQbN3cROVVItZ7cEHrxkW1HW/GR/jDQ7vkZKzI=; b=C0/MdRqTmb/lav9r3RCCGkn73e8VbJJGMpp9NkTys4WO5hNiP5ZK/of7Dw4dgUxFb1 GqZCKf7ub2jPj6RsnhfOGoAjjzsGgaV5WWylCNaLcwYJGbQJPifwKLk8gPSWR/P4zhcQ 7cSV9lsTYxkwM3Ol+3URZUJNz9vGYxCcPcbklloT8vEHqLTj9WJk24OWJY8skQKqpmhk I1ZAGTujcB1JHgTs0UtlTnqveKtYvV+83G85aV2MxxWk2EA/RYAoal47PSXy49MLoBbx OMrRa4cmH46toVbppyMMHWiq6jML3Mdluvzo7JPFdd6N7wIgFq2U2HtwmVji/2LLUfxG aFpQ== X-Gm-Message-State: AOAM5309PuZ41XW2LCB2NZPCzVVoaJVToJttaAoJ0x1qT23jH4q3Js15 O+FCjYJLrUT/bwW0GFXeNggP+z5j2ZcgEXej5g== X-Google-Smtp-Source: ABdhPJz790nIw0kBbydLM7eDH9L+o4+GTLs5/HR0EKflTvrcTucnVaeVQWsG8GwanVKpH3zZQYvJBw== X-Received: by 2002:a17:906:c151:b0:6e8:9cbc:ac04 with SMTP id dp17-20020a170906c15100b006e89cbcac04mr3341096ejc.423.1649700087879; Mon, 11 Apr 2022 11:01:27 -0700 (PDT) Received: from localhost.localdomain (fastree1.epfl.ch. [192.26.37.52]) by smtp.gmail.com with ESMTPSA id d1-20020a170906174100b006e85e9903f2sm3880927eje.89.2022.04.11.11.01.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 11:01:27 -0700 (PDT) From: Adrian Fiergolski To: u-boot@lists.denx.de Cc: oleksandr.suvorov@foundries.io, ricardo@foundries.io, michal.simek@xilinx.com, 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, Adrian Fiergolski Subject: [PATCH v7 1/7] fpga: add option for loading FPGA secure bitstreams Date: Mon, 11 Apr 2022 20:00:40 +0200 Message-Id: <20220411180046.1505209-2-adrian.fiergolski@fastree3d.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> References: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> MIME-Version: 1.0 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 From: Oleksandr Suvorov It allows using this feature without enabling the "fpga loads" command. Signed-off-by: Oleksandr Suvorov Tested-by: Ricardo Salveti Co-developed-by: Adrian Fiergolski Signed-off-by: Adrian Fiergolski --- cmd/Kconfig | 3 ++- drivers/fpga/Kconfig | 14 ++++++++++++++ drivers/fpga/fpga.c | 2 +- drivers/fpga/xilinx.c | 2 +- drivers/fpga/zynqmppl.c | 4 ++-- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/cmd/Kconfig b/cmd/Kconfig index 5e25e45fd2..604ab37f3b 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -949,8 +949,9 @@ config CMD_FPGA_LOADP a partial bitstream. config CMD_FPGA_LOAD_SECURE - bool "fpga loads - loads secure bitstreams (Xilinx only)" + bool "fpga loads - loads secure bitstreams" depends on CMD_FPGA + select FPGA_LOAD_SECURE help Enables the fpga loads command which is used to load secure (authenticated or encrypted or both) bitstreams on to FPGA. diff --git a/drivers/fpga/Kconfig b/drivers/fpga/Kconfig index dc0b3dd31b..6f8ef7b8db 100644 --- a/drivers/fpga/Kconfig +++ b/drivers/fpga/Kconfig @@ -85,4 +85,18 @@ config FPGA_ZYNQPL Enable FPGA driver for loading bitstream in BIT and BIN format on Xilinx Zynq devices. +config FPGA_LOAD_SECURE + bool "Enable loading secure bitstreams" + depends on FPGA + help + Enables the fpga loads() functions that are used to load secure + (authenticated or encrypted or both) bitstreams on to FPGA. + +config SPL_FPGA_LOAD_SECURE + bool "Enable loading secure bitstreams for SPL" + depends on SPL_FPGA + help + Enables the fpga loads() functions that are used to load secure + (authenticated or encrypted or both) bitstreams on to FPGA. + endmenu diff --git a/drivers/fpga/fpga.c b/drivers/fpga/fpga.c index fe3dfa1233..3b0a44b242 100644 --- a/drivers/fpga/fpga.c +++ b/drivers/fpga/fpga.c @@ -220,7 +220,7 @@ int fpga_fsload(int devnum, const void *buf, size_t size, } #endif -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) +#if CONFIG_IS_ENABLED(FPGA_LOAD_SECURE) int fpga_loads(int devnum, const void *buf, size_t size, struct fpga_secure_info *fpga_sec_info) { diff --git a/drivers/fpga/xilinx.c b/drivers/fpga/xilinx.c index cbebefb55f..6bc1bc491f 100644 --- a/drivers/fpga/xilinx.c +++ b/drivers/fpga/xilinx.c @@ -172,7 +172,7 @@ int xilinx_loadfs(xilinx_desc *desc, const void *buf, size_t bsize, } #endif -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) +#if CONFIG_IS_ENABLED(FPGA_LOAD_SECURE) int xilinx_loads(xilinx_desc *desc, const void *buf, size_t bsize, struct fpga_secure_info *fpga_sec_info) { diff --git a/drivers/fpga/zynqmppl.c b/drivers/fpga/zynqmppl.c index 6b394869db..8ff12bf50a 100644 --- a/drivers/fpga/zynqmppl.c +++ b/drivers/fpga/zynqmppl.c @@ -245,7 +245,7 @@ static int zynqmp_load(xilinx_desc *desc, const void *buf, size_t bsize, return ret; } -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) && !defined(CONFIG_SPL_BUILD) +#if CONFIG_IS_ENABLED(FPGA_LOAD_SECURE) static int zynqmp_loads(xilinx_desc *desc, const void *buf, size_t bsize, struct fpga_secure_info *fpga_sec_info) { @@ -306,7 +306,7 @@ static int zynqmp_pcap_info(xilinx_desc *desc) struct xilinx_fpga_op zynqmp_op = { .load = zynqmp_load, -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) && !defined(CONFIG_SPL_BUILD) +#if CONFIG_IS_ENABLED(FPGA_LOAD_SECURE) .loads = zynqmp_loads, #endif .info = zynqmp_pcap_info, From patchwork Mon Apr 11 18:00:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Fiergolski X-Patchwork-Id: 1615886 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.a=rsa-sha256 header.s=20210112 header.b=qA31N58a; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KccBN38yJz9s3q for ; Tue, 12 Apr 2022 04:02:04 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 0FA7E83E0E; Mon, 11 Apr 2022 20:01:50 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.b="qA31N58a"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 0B0D783E46; Mon, 11 Apr 2022 20:01:38 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id CE2DD83E0A for ; Mon, 11 Apr 2022 20:01:31 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=none smtp.mailfrom=adrian.fiergolski@fastree3d.com Received: by mail-ed1-x52c.google.com with SMTP id u18so8775557eda.3 for ; Mon, 11 Apr 2022 11:01:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastree3d-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KbaHLWTz3LzJTLSB6yKNxN2YbBW2koZbDgfBjjoom/E=; b=qA31N58apGnSqRCNpKXyBw2XuijIo5fNc1BTfeHlwRDm7s+BntpJM+S29GX00l+3rI 8cdlmhBu1b7c2yAwPtohZW6UsRAfPSnpC4N3WHBiLXI24wkbmz/8/m7aech1+GZeB6Kp 8Xhm6gaou6rMbJKTshRUdAlT6X2Vp3jpXkOWNXlCW3bICtkzHS68yBKNebwTPuECFq+x sHwIGxOeFA9pXOORRLH9rLZN7xDj2F7fCxvihwfgChET+EFx6zXs9FyRpo1LihNLJkH9 9uEZD+2Dk75iKxr2/r2S5P7FYb9TadTVZSVpQuk7ZqNTYeRnX6eAG5upee8rjfFKRQ09 f+4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KbaHLWTz3LzJTLSB6yKNxN2YbBW2koZbDgfBjjoom/E=; b=wZUBikAniq6Yb4bXpvC18MHl1eqIfWoCNzqCZlgH/iZLVcSPwOPk8cD70xyalJ0B6W 2fSHsYcTekZc0640Zv28T07B9ZXtl8hjkJtgw/Z/zSDZaSJazyDhIEuoFgPkuiBJan4L mi7nOaeGAoJFendWgV8ifDfJAbc87i8AAnr9xFhzXZTppRMixWr3+4+I5W3mhVk+WzG8 lY7QdGPgdeleHCKzjn4R136E7oYpHhwNsQImec3VQExdLrWXOvpiEqxPG8FQnRmYDoYr DSUMu6COw3zWpfoOzYhhVKn4tTijSQ4P78mgOS3elUzLWkGgKxelUqaXFt2637pHRwZQ qgEg== X-Gm-Message-State: AOAM5334NNO1UtYil9K/fXyX01fpBZWRnRDvO7ZsTDitNb7xXydhyNTE yzdvjeizv045g/3PzBkLaEZfVeR0+YcRnOVJaA== X-Google-Smtp-Source: ABdhPJzqGsjYnVFWh2S0lLuU/Shi/2Z/rikBs4fJpm8iI9KoFwp4ExnBZ4qJgpVPzUh4licFmPQrLg== X-Received: by 2002:a05:6402:27d4:b0:419:5105:f7e7 with SMTP id c20-20020a05640227d400b004195105f7e7mr34428837ede.356.1649700088953; Mon, 11 Apr 2022 11:01:28 -0700 (PDT) Received: from localhost.localdomain (fastree1.epfl.ch. [192.26.37.52]) by smtp.gmail.com with ESMTPSA id d1-20020a170906174100b006e85e9903f2sm3880927eje.89.2022.04.11.11.01.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 11:01:28 -0700 (PDT) From: Adrian Fiergolski To: u-boot@lists.denx.de Cc: oleksandr.suvorov@foundries.io, ricardo@foundries.io, michal.simek@xilinx.com, 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, Adrian Fiergolski Subject: [PATCH v7 2/7] fpga: add fit_fpga_load function Date: Mon, 11 Apr 2022 20:00:41 +0200 Message-Id: <20220411180046.1505209-3-adrian.fiergolski@fastree3d.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> References: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> MIME-Version: 1.0 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 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); + + /* + * 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, From patchwork Mon Apr 11 18:00:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Fiergolski X-Patchwork-Id: 1615885 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.a=rsa-sha256 header.s=20210112 header.b=L+KegY0t; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KccB85lvXz9s3q for ; Tue, 12 Apr 2022 04:01:52 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A972483E45; Mon, 11 Apr 2022 20:01:46 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.b="L+KegY0t"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id AF9D783E2A; Mon, 11 Apr 2022 20:01:36 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 91AA483E39 for ; Mon, 11 Apr 2022 20:01:30 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=none smtp.mailfrom=adrian.fiergolski@fastree3d.com Received: by mail-ej1-x630.google.com with SMTP id bg10so32532011ejb.4 for ; Mon, 11 Apr 2022 11:01:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastree3d-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=T6lvnhvldSY5Wty+pv1HBaWg6dKpuzoZdE7Igaqbl+8=; b=L+KegY0tRiwQ5gYuiu4+RAZyD1rGMUu2l8T7jdFVcsDRe9A/zLFxHM3ewqS02c0h+3 qGsr5Ajhu4v9eanTDdv1T4H/KFHR4P6c4acvDfJMceSAnJHyLisKGIRYq5YdN0WJ1Ozc Og4Se+EU6l7KuiaGD95roBgibbCLON+SRSPsLz5fxGXTYEud/ALwkqUejd4N25k3gJjy 9kyFG64JmbREj365qD5F/hhxS9y1c7dP4ZofFP06n17kftSlu83N95DTtv2BykZe6S23 +dewIW/uXJse6LuweMUjinlm/lQkokxAi5v4smAy92O32mru8vBQUTqljETT1//XKoNs VtPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=T6lvnhvldSY5Wty+pv1HBaWg6dKpuzoZdE7Igaqbl+8=; b=7lLXY6B8+oLXMu+Lv7clRPXQb1LkPPGuwlJC+plIKYJAAvpR4uZhX3IzhRD1vhFjY7 SECDtQs4icv9S0q4OnOtPlowVPYiBgJ9TwMReo+j9BGyPJI+H1ZRn2OdWS/KBHGjRQVE zEMAr6UzR6fhrFVH7mvvqYX2cCOyO3f0Y5NUOp2Qis3m+a4Ii0DDmIqG4JM77mKlK8u2 ZAG1zqQxH8A0FAU41Xk7AhYrESMdu5ZcHkglJMcjiyy2ER+lmpSY9qoC7b5OO6qskMOf J7RN0sXmE248U36nbyCY/kPuh0PnlqqXxzEHI4W+7qb4ufNohZmn7bxl2EAXnzMF4QNy 9uiQ== X-Gm-Message-State: AOAM533qzOUu5U3Q/0z3lPgKLR/tT/YmI2b95ZKWE7Rx9ZumsPEbhhwq xBgiy9FAAbUBtnFRsiE+gOmyUol0vgfuGl8qdA== X-Google-Smtp-Source: ABdhPJwWMNQsrt7T4fjG6nAcCC9OqcLADmkbuEAfN/sNzNTdIZ3xt8O3EYQ2rtRwIs7yQqDhqq/dig== X-Received: by 2002:a17:906:e110:b0:6e6:75e0:946c with SMTP id gj16-20020a170906e11000b006e675e0946cmr30451414ejb.611.1649700090088; Mon, 11 Apr 2022 11:01:30 -0700 (PDT) Received: from localhost.localdomain (fastree1.epfl.ch. [192.26.37.52]) by smtp.gmail.com with ESMTPSA id d1-20020a170906174100b006e85e9903f2sm3880927eje.89.2022.04.11.11.01.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 11:01:29 -0700 (PDT) From: Adrian Fiergolski To: u-boot@lists.denx.de Cc: oleksandr.suvorov@foundries.io, ricardo@foundries.io, michal.simek@xilinx.com, 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, Adrian Fiergolski Subject: [PATCH v7 3/7] fpga: xilinx: pass an address of xilinx_desc in fpga_desc Date: Mon, 11 Apr 2022 20:00:42 +0200 Message-Id: <20220411180046.1505209-4-adrian.fiergolski@fastree3d.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> References: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> MIME-Version: 1.0 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 From: Oleksandr Suvorov Pass an address of xilinx_desc pointer in an fpga_desc to use parent fpga_desc structure members inside a xilinx fpga driver. Signed-off-by: Oleksandr Suvorov Tested-by: Ricardo Salveti Co-developed-by: Adrian Fiergolski Signed-off-by: Adrian Fiergolski --- drivers/fpga/fpga.c | 4 ++-- drivers/fpga/xilinx.c | 4 +++- include/xilinx.h | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/fpga/fpga.c b/drivers/fpga/fpga.c index a306dd81f9..5e2288a124 100644 --- a/drivers/fpga/fpga.c +++ b/drivers/fpga/fpga.c @@ -277,8 +277,8 @@ int fpga_load(int devnum, const void *buf, size_t bsize, bitstream_type bstype) switch (desc->devtype) { case fpga_xilinx: #if defined(CONFIG_FPGA_XILINX) - ret_val = xilinx_load(desc->devdesc, buf, bsize, - bstype); + ret_val = xilinx_load((xilinx_desc **)&desc->devdesc, + buf, bsize, bstype); #else fpga_no_sup((char *)__func__, "Xilinx devices"); #endif diff --git a/drivers/fpga/xilinx.c b/drivers/fpga/xilinx.c index 6bc1bc491f..640baac66e 100644 --- a/drivers/fpga/xilinx.c +++ b/drivers/fpga/xilinx.c @@ -138,9 +138,11 @@ int fpga_loadbitstream(int devnum, char *fpgadata, size_t size, return fpga_load(devnum, dataptr, swapsize, bstype); } -int xilinx_load(xilinx_desc *desc, const void *buf, size_t bsize, +int xilinx_load(xilinx_desc **desc_ptr, const void *buf, size_t bsize, bitstream_type bstype) { + xilinx_desc *desc = *desc_ptr; + if (!xilinx_validate (desc, (char *)__FUNCTION__)) { printf ("%s: Invalid device descriptor\n", __FUNCTION__); return FPGA_FAIL; diff --git a/include/xilinx.h b/include/xilinx.h index ab4537becf..57b0e7be11 100644 --- a/include/xilinx.h +++ b/include/xilinx.h @@ -58,7 +58,7 @@ struct xilinx_fpga_op { /* Generic Xilinx Functions *********************************************************************/ -int xilinx_load(xilinx_desc *desc, const void *image, size_t size, +int xilinx_load(xilinx_desc **desc_ptr, const void *image, size_t size, bitstream_type bstype); int xilinx_dump(xilinx_desc *desc, const void *buf, size_t bsize); int xilinx_info(xilinx_desc *desc); From patchwork Mon Apr 11 18:00:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Fiergolski X-Patchwork-Id: 1615887 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.a=rsa-sha256 header.s=20210112 header.b=MTeVCTL2; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KccBc208dz9s3q for ; Tue, 12 Apr 2022 04:02:16 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D4E7E83E4C; Mon, 11 Apr 2022 20:01:52 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.b="MTeVCTL2"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D7A8483E4F; Mon, 11 Apr 2022 20:01:38 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id B3E7483E0E for ; Mon, 11 Apr 2022 20:01:31 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=none smtp.mailfrom=adrian.fiergolski@fastree3d.com Received: by mail-ej1-x62f.google.com with SMTP id r13so32538390ejd.5 for ; Mon, 11 Apr 2022 11:01:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastree3d-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=G76UG/6fcHC4opbmyqNaZWMgO9Zx/PzedRE8cYSJc60=; b=MTeVCTL22hb2wxmvX8iIPN5fsNqiQE+W5QdNfEzTuNqJ84xXn7ZbjTWHXS0/rJZ6b6 W0JixNSC4G/oKjWgBkWDBJ2ylubV8c8Lzwgfb96/mohFh5x9x7eefslchJH2WLEsvN3C h3rCuE+Y0z3mubm9x2OxvYvuFY/R2vENlZFKyNmbdr1D0KVPXEXHOkJnnuUF+nHHsJWy g3+3la8OP1sf6MAf08H+bGpBgI7c4W7SKn0aYS3AAlSdM8k0BsC1E+wgZPVcR+pRPEAQ tRWNdA/1FnbVM9Bc3fUbyHvRl+V85/AFlZnEISE+Rei/v7vhddOrO0U1foEfmLDwljIb WNiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=G76UG/6fcHC4opbmyqNaZWMgO9Zx/PzedRE8cYSJc60=; b=LE4BvnzYHs8SVZP6YosGI/UVCpEbVmVbZRvcUyFMxXrkiBN+rQltbpCFNXVxIRkONr b752R/qyUxfIzLpP5KiX87SK1YaU4377y9hltTnNqZIfDGcT/8CEXvOv+NLdeAouXYxv YCdDkS12pvrkwfn1QZfNTVFYZ0pvn75g54QG+v9Wy5Hc4RjrxsZYAqGEIHMQDY2TC81/ YXmTTGy1xC3TjDJLM0P6vG2lRs54DWuypXVWXSxvdBRsD6l7Ek3mHoLKjcOY4YiD2DEd pl5svf3Us9KD0Q1TpygPZ/TUy5AuYyalsVvJ5VqP6ShCgqKYS4y8CpMGrBHHdABQf8Ac JDSQ== X-Gm-Message-State: AOAM530zcf+ZHP6dUaTHdxUsl9xqNt7oiQ9o8uPMXpNqs8v6NL1CxWFy nAzJh+moE7nX+0viq98v1YV89Zy2HrNpAIdO+g== X-Google-Smtp-Source: ABdhPJybjdIwImAkwqF0oDV/tamSCj3CnKseCqlKfCEzANc8OzAtzNSQIb1GJNdOu3jXGtfzg9xf6w== X-Received: by 2002:a17:907:1ca3:b0:6e0:5a9:37a1 with SMTP id nb35-20020a1709071ca300b006e005a937a1mr30884758ejc.651.1649700091077; Mon, 11 Apr 2022 11:01:31 -0700 (PDT) Received: from localhost.localdomain (fastree1.epfl.ch. [192.26.37.52]) by smtp.gmail.com with ESMTPSA id d1-20020a170906174100b006e85e9903f2sm3880927eje.89.2022.04.11.11.01.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 11:01:30 -0700 (PDT) From: Adrian Fiergolski To: u-boot@lists.denx.de Cc: oleksandr.suvorov@foundries.io, ricardo@foundries.io, michal.simek@xilinx.com, 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 Subject: [PATCH v7 4/7] fpga: xilinx: add missed identifier names Date: Mon, 11 Apr 2022 20:00:43 +0200 Message-Id: <20220411180046.1505209-5-adrian.fiergolski@fastree3d.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> References: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> MIME-Version: 1.0 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 From: Oleksandr Suvorov Function definition arguments should also have identifier names. Add missed ones to struct xilinx_fpga_op callbacks, unifying code. Signed-off-by: Oleksandr Suvorov --- include/xilinx.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/include/xilinx.h b/include/xilinx.h index 57b0e7be11..06ecc9a842 100644 --- a/include/xilinx.h +++ b/include/xilinx.h @@ -48,12 +48,14 @@ typedef struct { /* typedef xilinx_desc */ } xilinx_desc; /* end, typedef xilinx_desc */ struct xilinx_fpga_op { - int (*load)(xilinx_desc *, const void *, size_t, bitstream_type); - int (*loadfs)(xilinx_desc *, const void *, size_t, fpga_fs_info *); + int (*load)(xilinx_desc *desc, const void *buf, size_t bsize, + bitstream_type bstype); + int (*loadfs)(xilinx_desc *desc, const void *buf, size_t bsize, + fpga_fs_info *fpga_fsinfo); int (*loads)(xilinx_desc *desc, const void *buf, size_t bsize, struct fpga_secure_info *fpga_sec_info); - int (*dump)(xilinx_desc *, const void *, size_t); - int (*info)(xilinx_desc *); + int (*dump)(xilinx_desc *desc, const void *buf, size_t bsize); + int (*info)(xilinx_desc *desc); }; /* Generic Xilinx Functions From patchwork Mon Apr 11 18:00:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Fiergolski X-Patchwork-Id: 1615888 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.a=rsa-sha256 header.s=20210112 header.b=jYZTEIzX; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KccBq1RcWz9s3q for ; Tue, 12 Apr 2022 04:02:26 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 656B683E70; Mon, 11 Apr 2022 20:01:55 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.b="jYZTEIzX"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id EBFD083E02; Mon, 11 Apr 2022 20:01:39 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 7824583E12 for ; Mon, 11 Apr 2022 20:01:32 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=none smtp.mailfrom=adrian.fiergolski@fastree3d.com Received: by mail-ej1-x630.google.com with SMTP id i27so32500429ejd.9 for ; Mon, 11 Apr 2022 11:01:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastree3d-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nJGlbZ3mIzHb6htwQhBtfs+Wdg2l3CTlZRpszdBNQeE=; b=jYZTEIzXD6Zg9vjFBuXILfC+9dvI7cHD0TNsC515qBlg6li2tZSiFcmvKjFpBY9yNK mQ3yP8Yy03SJwMiGwT4r7/4FSd16OgPnYX97It7IV1W0iOy8GWKdaNHqLSPC1AjvsSn+ bbxiBQ37U+7keOI48DVlXVcuxUUrpLqcla9DMsdk66RTGjj72DHC7zvCt4k7HszMTAS2 4sVBM1X3+wAPbo+huWydV/IMHYr7OT+S0atX3g+cTVFumGRqLlXLaTor+NVxt+jwwksK gUoMOVGbkes/NdGNBX2tSA4rL6GROE53xqLeOtqoxgbAYZsKvRSK6+8ZV/LOcFjy44+b U2dA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nJGlbZ3mIzHb6htwQhBtfs+Wdg2l3CTlZRpszdBNQeE=; b=G3eQiCrU4YImnZ/7doz6iHQ5yZAj3MRGEivPoaLskzEtzgCHZVDO7MrAgic6V4skvl xvDUYDCt3iXTV4FaYx22eF1MJybFtXNqe6WcWQkn5okEFd9MIUwttnlsxr0+c9ubiZFM urJNtzuzTZlwNx+ogZZ8QZSI5DORtl4mAktywA49BJ6HihEyis6thMqLCOlbqdFzD+tE jqHM/B3g9u3IP0ROBxdclwXA+l23ggCwyaHPMkTQANI+t5I9ihlvGGWQFeo+buqtdSf+ XwQAulkeyF8M40I0Tkz8hsg2GcWsqOOKj49DBiWHb10j6v0W1nJZD0ePcaKkz+USzzlS sqLA== X-Gm-Message-State: AOAM5305hf0FRy9wBkFE++IXgNz7XCfa0gPxSak0pRU9CcLRr/NXA178 2Wd7ddp0K+wxrCEmUq6aiAQ5smrZUK5iCOzoPQ== X-Google-Smtp-Source: ABdhPJzzmVglgMy1pVtq2E9NwYZTXJQtNLak17ncj9DwwcKffgiRsiE3oG2jr/SpRMBpqwGULGzJyw== X-Received: by 2002:a17:907:7f9f:b0:6e8:ade2:2308 with SMTP id qk31-20020a1709077f9f00b006e8ade22308mr381575ejc.88.1649700092031; Mon, 11 Apr 2022 11:01:32 -0700 (PDT) Received: from localhost.localdomain (fastree1.epfl.ch. [192.26.37.52]) by smtp.gmail.com with ESMTPSA id d1-20020a170906174100b006e85e9903f2sm3880927eje.89.2022.04.11.11.01.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 11:01:31 -0700 (PDT) From: Adrian Fiergolski To: u-boot@lists.denx.de Cc: oleksandr.suvorov@foundries.io, ricardo@foundries.io, michal.simek@xilinx.com, 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 Subject: [PATCH v7 5/7] fpga: xilinx: pass xilinx_desc pointer address into load() ops Date: Mon, 11 Apr 2022 20:00:44 +0200 Message-Id: <20220411180046.1505209-6-adrian.fiergolski@fastree3d.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> References: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> MIME-Version: 1.0 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 From: Oleksandr Suvorov Pass an address of xilinx_desc pointer in an fpga_desc into a load() callback of struct xilinx_fpga_op. It allows getting parent fpga_desc structure members inside xilinx fpga drivers. Signed-off-by: Oleksandr Suvorov Tested-by: Ricardo Salveti --- drivers/fpga/spartan2.c | 3 ++- drivers/fpga/spartan3.c | 3 ++- drivers/fpga/versalpl.c | 2 +- drivers/fpga/virtex2.c | 3 ++- drivers/fpga/xilinx.c | 2 +- drivers/fpga/zynqmppl.c | 5 +++-- drivers/fpga/zynqpl.c | 3 ++- include/xilinx.h | 2 +- 8 files changed, 14 insertions(+), 9 deletions(-) diff --git a/drivers/fpga/spartan2.c b/drivers/fpga/spartan2.c index 3435400e58..f40edb1747 100644 --- a/drivers/fpga/spartan2.c +++ b/drivers/fpga/spartan2.c @@ -40,10 +40,11 @@ static int spartan2_ss_dump(xilinx_desc *desc, const void *buf, size_t bsize); /* ------------------------------------------------------------------------- */ /* Spartan-II Generic Implementation */ -static int spartan2_load(xilinx_desc *desc, const void *buf, size_t bsize, +static int spartan2_load(xilinx_desc **desc_ptr, const void *buf, size_t bsize, bitstream_type bstype) { int ret_val = FPGA_FAIL; + xilinx_desc *desc = *desc_ptr; switch (desc->iface) { case slave_serial: diff --git a/drivers/fpga/spartan3.c b/drivers/fpga/spartan3.c index 4850c99352..b7c1ddd40f 100644 --- a/drivers/fpga/spartan3.c +++ b/drivers/fpga/spartan3.c @@ -44,10 +44,11 @@ static int spartan3_ss_dump(xilinx_desc *desc, const void *buf, size_t bsize); /* ------------------------------------------------------------------------- */ /* Spartan-II Generic Implementation */ -static int spartan3_load(xilinx_desc *desc, const void *buf, size_t bsize, +static int spartan3_load(xilinx_desc **desc_ptr, const void *buf, size_t bsize, bitstream_type bstype) { int ret_val = FPGA_FAIL; + xilinx_desc *desc = *desc_ptr; switch (desc->iface) { case slave_serial: diff --git a/drivers/fpga/versalpl.c b/drivers/fpga/versalpl.c index c44a7d3455..9464cae22e 100644 --- a/drivers/fpga/versalpl.c +++ b/drivers/fpga/versalpl.c @@ -26,7 +26,7 @@ static ulong versal_align_dma_buffer(ulong *buf, u32 len) return (ulong)buf; } -static int versal_load(xilinx_desc *desc, const void *buf, size_t bsize, +static int versal_load(xilinx_desc **desc_ptr, const void *buf, size_t bsize, bitstream_type bstype) { ulong bin_buf; diff --git a/drivers/fpga/virtex2.c b/drivers/fpga/virtex2.c index b3e0537bab..d0369d320b 100644 --- a/drivers/fpga/virtex2.c +++ b/drivers/fpga/virtex2.c @@ -93,10 +93,11 @@ static int virtex2_ssm_dump(xilinx_desc *desc, const void *buf, size_t bsize); static int virtex2_ss_load(xilinx_desc *desc, const void *buf, size_t bsize); static int virtex2_ss_dump(xilinx_desc *desc, const void *buf, size_t bsize); -static int virtex2_load(xilinx_desc *desc, const void *buf, size_t bsize, +static int virtex2_load(xilinx_desc **desc_ptr, const void *buf, size_t bsize, bitstream_type bstype) { int ret_val = FPGA_FAIL; + xilinx_desc *desc = *desc_ptr; switch (desc->iface) { case slave_serial: diff --git a/drivers/fpga/xilinx.c b/drivers/fpga/xilinx.c index 640baac66e..f89ae8fe10 100644 --- a/drivers/fpga/xilinx.c +++ b/drivers/fpga/xilinx.c @@ -153,7 +153,7 @@ int xilinx_load(xilinx_desc **desc_ptr, const void *buf, size_t bsize, return FPGA_FAIL; } - return desc->operations->load(desc, buf, bsize, bstype); + return desc->operations->load(desc_ptr, buf, bsize, bstype); } #if defined(CONFIG_CMD_FPGA_LOADFS) diff --git a/drivers/fpga/zynqmppl.c b/drivers/fpga/zynqmppl.c index 8ff12bf50a..c7f9f4ae84 100644 --- a/drivers/fpga/zynqmppl.c +++ b/drivers/fpga/zynqmppl.c @@ -199,8 +199,8 @@ static int zynqmp_validate_bitstream(xilinx_desc *desc, const void *buf, return 0; } -static int zynqmp_load(xilinx_desc *desc, const void *buf, size_t bsize, - bitstream_type bstype) +static int zynqmp_load(xilinx_desc **desc_ptr, const void *buf, size_t bsize, + bitstream_type bstype) { ALLOC_CACHE_ALIGN_BUFFER(u32, bsizeptr, 1); u32 swap = 0; @@ -209,6 +209,7 @@ static int zynqmp_load(xilinx_desc *desc, const void *buf, size_t bsize, u32 buf_lo, buf_hi; u32 ret_payload[PAYLOAD_ARG_CNT]; bool xilfpga_old = false; + xilinx_desc *desc = *desc_ptr; if (zynqmp_firmware_version() <= PMUFW_V1_0) { puts("WARN: PMUFW v1.0 or less is detected\n"); diff --git a/drivers/fpga/zynqpl.c b/drivers/fpga/zynqpl.c index 2de40109a8..c5d9dbcedf 100644 --- a/drivers/fpga/zynqpl.c +++ b/drivers/fpga/zynqpl.c @@ -370,11 +370,12 @@ static int zynq_validate_bitstream(xilinx_desc *desc, const void *buf, return 0; } -static int zynq_load(xilinx_desc *desc, const void *buf, size_t bsize, +static int zynq_load(xilinx_desc **desc_ptr, const void *buf, size_t bsize, bitstream_type bstype) { unsigned long ts; /* Timestamp */ u32 isr_status, swap; + xilinx_desc *desc = *desc_ptr; /* * send bsize inplace of blocksize as it was not a bitstream diff --git a/include/xilinx.h b/include/xilinx.h index 06ecc9a842..a7efe0e876 100644 --- a/include/xilinx.h +++ b/include/xilinx.h @@ -48,7 +48,7 @@ typedef struct { /* typedef xilinx_desc */ } xilinx_desc; /* end, typedef xilinx_desc */ struct xilinx_fpga_op { - int (*load)(xilinx_desc *desc, const void *buf, size_t bsize, + int (*load)(xilinx_desc **desc_ptr, const void *buf, size_t bsize, bitstream_type bstype); int (*loadfs)(xilinx_desc *desc, const void *buf, size_t bsize, fpga_fs_info *fpga_fsinfo); From patchwork Mon Apr 11 18:00:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Fiergolski X-Patchwork-Id: 1615889 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.a=rsa-sha256 header.s=20210112 header.b=Cd92wPRR; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KccC21LQ9z9s3q for ; Tue, 12 Apr 2022 04:02:38 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id E273383E62; Mon, 11 Apr 2022 20:01:58 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.b="Cd92wPRR"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 787B283E2D; Mon, 11 Apr 2022 20:01:41 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com [IPv6:2a00:1450:4864:20::632]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id D13CD83E4B for ; Mon, 11 Apr 2022 20:01:33 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=none smtp.mailfrom=adrian.fiergolski@fastree3d.com Received: by mail-ej1-x632.google.com with SMTP id u15so13865076ejf.11 for ; Mon, 11 Apr 2022 11:01:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastree3d-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gAu2Ifje4bvp55cyOvjtR59R8gikaedks7onWfsXCTw=; b=Cd92wPRRF/4hYGnrjD4SecPqifJ0BW4uIGqxffUJp88oAcHrZJlEOqTVXVFkQSBxqA B2tb1yFi9MYQWUeXfkcYVjq+aKPn/dxaViuKqkO7pQ3pUJMpfh9H0TYWat+caMFsSH1K VpmsOBS2NFtaSaPj4aqXWXSEoZm6PWYq6+efFdplzQZ5SDnwLtRhVl0wjM9GuoJzecTN lkD+Ei9azMgFxZRRSolGW9gBw0/Ue2kQGxdlIYeZ4AtroIafuY8Q+RSzUWcSF8vSYhq+ JfRADJsKVjARCMoToL6FAXvs4+Jj15M3C/UFSWnIIVPciFlY7wihk4IdgnkljyoivpXd 5+hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gAu2Ifje4bvp55cyOvjtR59R8gikaedks7onWfsXCTw=; b=pzEF1TyIb6rQI6rYwf9VvelAqQcEHiBmyia4WGuke5w1TxMmGzu1lcYc8L9GKi8/7+ U6FLzUdFPasL57wswzf4fDLKWPsXPYyZjZ50K34lqADlvhGsDVfpmZivxMmDE9tni8+3 0I49AaZYlJuRIB5HFhKmE7ECqrJw5E+NPc2nJGRzZkiE5uGirJes4RXPmQ0HVvopAy6/ xbDgGyRVfQpOfe9mzKlfVCnRKuTV6wfBL9fNjnd+MCzexMO+hlj/ZEyswHhw2fIyeHCA 6gt+s8HrIvmA+6koZEJIJC7cc/asbg42XmCSkD/YQECIoduuo0v0slcb4Q/1pCFx/fcO EeeQ== X-Gm-Message-State: AOAM532iInWvQxND2xKwqFGj3KWY66+cv6fJw49gANFlGGt6EWT6P2/S ELDv3ZwITgdM6k8lbGXvUWoIVwEsNJ4p7+VZaA== X-Google-Smtp-Source: ABdhPJxmPFZCIkptUr6LpUJHGU7r7hizGNdx2s5AU+vUZxoSQZkejKIhpLcGWdOinyQXdbe+PP8m7g== X-Received: by 2002:a17:906:dc8f:b0:6e0:5ce7:d80e with SMTP id cs15-20020a170906dc8f00b006e05ce7d80emr32195697ejc.435.1649700093407; Mon, 11 Apr 2022 11:01:33 -0700 (PDT) Received: from localhost.localdomain (fastree1.epfl.ch. [192.26.37.52]) by smtp.gmail.com with ESMTPSA id d1-20020a170906174100b006e85e9903f2sm3880927eje.89.2022.04.11.11.01.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 11:01:32 -0700 (PDT) From: Adrian Fiergolski To: u-boot@lists.denx.de Cc: oleksandr.suvorov@foundries.io, ricardo@foundries.io, michal.simek@xilinx.com, 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, Adrian Fiergolski Subject: [PATCH v7 6/7] fpga: zynqmp: support loading authenticated images Date: Mon, 11 Apr 2022 20:00:45 +0200 Message-Id: <20220411180046.1505209-7-adrian.fiergolski@fastree3d.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> References: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> MIME-Version: 1.0 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 From: Oleksandr Suvorov Add supporting new compatible string "u-boot,zynqmp-fpga-ddrauth" to handle loading authenticated images (DDR). Based on solution by Jorge Ramirez-Ortiz Signed-off-by: Oleksandr Suvorov Co-developed-by: Ricardo Salveti Signed-off-by: Ricardo Salveti Tested-by: Ricardo Salveti Co-developed-by: Adrian Fiergolski Signed-off-by: Adrian Fiergolski --- boot/Kconfig | 4 ++-- doc/uImage.FIT/source_file_format.txt | 5 ++++- drivers/fpga/zynqmppl.c | 21 +++++++++++++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/boot/Kconfig b/boot/Kconfig index b83a4e8400..f7faafb29f 100644 --- a/boot/Kconfig +++ b/boot/Kconfig @@ -209,8 +209,8 @@ config SPL_LOAD_FIT 1. "loadables" images, other than FDTs, which do not have a "load" property will not be loaded. This limitation also applies to FPGA images with the correct "compatible" string. - 2. For FPGA images, only the "compatible" = "u-boot,fpga-legacy" - loading method is supported. + 2. For FPGA images, the supported "compatible" list is in the + doc/uImage.FIT/source_file_format.txt. 3. FDTs are only loaded for images with an "os" property of "u-boot". "linux" images are also supported with Falcon boot mode. diff --git a/doc/uImage.FIT/source_file_format.txt b/doc/uImage.FIT/source_file_format.txt index f93ac6d1c7..461e2af2a8 100644 --- a/doc/uImage.FIT/source_file_format.txt +++ b/doc/uImage.FIT/source_file_format.txt @@ -184,7 +184,10 @@ the '/images' node should have the following layout: Mandatory for types: "firmware", and "kernel". - compatible : compatible method for loading image. Mandatory for types: "fpga", and images that do not specify a load address. - To use the generic fpga loading routine, use "u-boot,fpga-legacy". + Supported compatible methods: + "u-boot,fpga-legacy" - the generic fpga loading routine. + "u-boot,zynqmp-fpga-ddrauth" - signed non-encrypted FPGA bitstream for + Xilinx Zynq UltraScale+ (ZymqMP) device. Optional nodes: - hash-1 : Each hash sub-node represents separate hash or checksum diff --git a/drivers/fpga/zynqmppl.c b/drivers/fpga/zynqmppl.c index c7f9f4ae84..0ce641e495 100644 --- a/drivers/fpga/zynqmppl.c +++ b/drivers/fpga/zynqmppl.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -210,6 +211,26 @@ static int zynqmp_load(xilinx_desc **desc_ptr, const void *buf, size_t bsize, u32 ret_payload[PAYLOAD_ARG_CNT]; bool xilfpga_old = false; xilinx_desc *desc = *desc_ptr; + fpga_desc *fdesc = container_of((void *)desc_ptr, fpga_desc, devdesc); + + if (fdesc && fdesc->compatible && + !strcmp(fdesc->compatible, "u-boot,zynqmp-fpga-ddrauth")) { + struct fpga_secure_info info = { 0 }; + + if (!CONFIG_IS_ENABLED(FPGA_LOAD_SECURE)) { + printf("No support for %s\n", fdesc->compatible); + return FPGA_FAIL; + } + + if (!desc->operations->loads) { + printf("%s: Missing load operation\n", __func__); + return FPGA_FAIL; + } + /* DDR authentication */ + info.authflag = 1; + info.encflag = 2; + return desc->operations->loads(desc, buf, bsize, &info); + } if (zynqmp_firmware_version() <= PMUFW_V1_0) { puts("WARN: PMUFW v1.0 or less is detected\n"); From patchwork Mon Apr 11 18:00:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Fiergolski X-Patchwork-Id: 1615890 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.a=rsa-sha256 header.s=20210112 header.b=LTkD+6i5; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KccCF5QjDz9s3q for ; Tue, 12 Apr 2022 04:02:49 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D90D983E75; Mon, 11 Apr 2022 20:02:02 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=fastree3d-com.20210112.gappssmtp.com header.i=@fastree3d-com.20210112.gappssmtp.com header.b="LTkD+6i5"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 0609883E4F; Mon, 11 Apr 2022 20:01:44 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id BF5F783E2C for ; Mon, 11 Apr 2022 20:01:34 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=fastree3d.com Authentication-Results: phobos.denx.de; spf=none smtp.mailfrom=adrian.fiergolski@fastree3d.com Received: by mail-ej1-x634.google.com with SMTP id lc2so11937859ejb.12 for ; Mon, 11 Apr 2022 11:01:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastree3d-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lxp66c3ufPdG02U2aY+gm1aE9TGFRrU/VMn8dxRtyJs=; b=LTkD+6i5AcAPVAkovSU8XFdbMCUsSpt2DA4TRq5rCeWWQJoBFW3DbdIxx5CzblrOoX gQDjDMjpl7zycXXkx0HIft2eUwhApLCau06EFzGeuIhPXwjwJ/m3/CgGKIYCW6IZLJwU sqjLCcQd9Jl29ytYYQ8K9h3wxtxHKxxQpzOuvyoTRGO9OKBLoe5fIhChkDne0dnKIsdD XNF6bgRdBxelJ1PHH4SzRFFLys4boICBXIjtXzGXMyBgP5NYQfjkZx4XWJFN35JBE0hK EdQjEm/APYVsAa4R4331VeKu5aN2//7ANiNY8pOmrnuRK35Pq/lw6pxzHLwqqcYgB4Xj Y8VQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lxp66c3ufPdG02U2aY+gm1aE9TGFRrU/VMn8dxRtyJs=; b=RAgCyOeL96Mqa0tezYzQcmpm6dXLKeDmcI8JKAiUVHv9luMAugFrFT/K1rbGKQGFWm A8fZyY3Og1q7IHDF6OFhbyVRLSBhznZhDVAxiAEasjf1bYS/9tY1AbIoqofUEOjFwMEB +crsRd1KSy69zUysJYFupoIieQnfQKQZKIPWctQKeZ88N6NXqH9BXUGs4AhqV6cRJYoU 91f+MX+1/xiakukfxjtW+E0SxxeqjvLA8hq3RnkJXPKS/0ijT5yNiavE7nYuJ3HCMpu6 8rlMjm4CbquT4yRW40xbCxuoadyRNu1BmFrUAW6VdLocznZDMjvUWEGEUw9o4xK0sTgr V4pA== X-Gm-Message-State: AOAM531yaLALa4E9B/1w+8mbnU7cnkumsn0KZRLUjiSIE0huezk3/cqf YLBQKXJv8U5d3dOR2nssgD86XJpN7iDPRV7STg== X-Google-Smtp-Source: ABdhPJwoNqyZ7f1+VV6unEaaycp5WIF91G5/0VZJGUVHvLKORiN6zEQ1UrIbLWTbsuwMHrtUKshHwQ== X-Received: by 2002:a17:907:2d93:b0:6e8:9838:339c with SMTP id gt19-20020a1709072d9300b006e89838339cmr4299323ejc.655.1649700094229; Mon, 11 Apr 2022 11:01:34 -0700 (PDT) Received: from localhost.localdomain (fastree1.epfl.ch. [192.26.37.52]) by smtp.gmail.com with ESMTPSA id d1-20020a170906174100b006e85e9903f2sm3880927eje.89.2022.04.11.11.01.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 11:01:33 -0700 (PDT) From: Adrian Fiergolski To: u-boot@lists.denx.de Cc: oleksandr.suvorov@foundries.io, ricardo@foundries.io, michal.simek@xilinx.com, 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, Adrian Fiergolski Subject: [PATCH v7 7/7] fpga: zynqmp: support loading encrypted bitfiles Date: Mon, 11 Apr 2022 20:00:46 +0200 Message-Id: <20220411180046.1505209-8-adrian.fiergolski@fastree3d.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> References: <20220411180046.1505209-1-adrian.fiergolski@fastree3d.com> MIME-Version: 1.0 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 Add supporting new compatible string "u-boot,zynqmp-fpga-enc" to handle loading encrypted bitfiles. This feature requires encrypted FSBL,as according to UG1085: "The CSU automatically locks out the AES key, stored in either BBRAM or eFUSEs, as a key source to the AES engine if the FSBL is not encrypted. This prevents using the BBRAM or eFUSE as the key source to the AES engine during run-time applications." Signed-off-and-tested-by: Adrian Fiergolski --- doc/uImage.FIT/source_file_format.txt | 2 ++ drivers/fpga/zynqmppl.c | 14 ++++++++++---- include/fpga.h | 1 + 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/doc/uImage.FIT/source_file_format.txt b/doc/uImage.FIT/source_file_format.txt index 461e2af2a8..6870111840 100644 --- a/doc/uImage.FIT/source_file_format.txt +++ b/doc/uImage.FIT/source_file_format.txt @@ -188,6 +188,8 @@ the '/images' node should have the following layout: "u-boot,fpga-legacy" - the generic fpga loading routine. "u-boot,zynqmp-fpga-ddrauth" - signed non-encrypted FPGA bitstream for Xilinx Zynq UltraScale+ (ZymqMP) device. + "u-boot,zynqmp-fpga-enc" - encrypted FPGA bitstream for Xilinx Zynq + UltraScale+ (ZynqMP) device. Optional nodes: - hash-1 : Each hash sub-node represents separate hash or checksum diff --git a/drivers/fpga/zynqmppl.c b/drivers/fpga/zynqmppl.c index 0ce641e495..1090734936 100644 --- a/drivers/fpga/zynqmppl.c +++ b/drivers/fpga/zynqmppl.c @@ -214,7 +214,7 @@ static int zynqmp_load(xilinx_desc **desc_ptr, const void *buf, size_t bsize, fpga_desc *fdesc = container_of((void *)desc_ptr, fpga_desc, devdesc); if (fdesc && fdesc->compatible && - !strcmp(fdesc->compatible, "u-boot,zynqmp-fpga-ddrauth")) { + strncmp(fdesc->compatible, "u-boot,fpga-legacy", 18)) { struct fpga_secure_info info = { 0 }; if (!CONFIG_IS_ENABLED(FPGA_LOAD_SECURE)) { @@ -226,9 +226,15 @@ static int zynqmp_load(xilinx_desc **desc_ptr, const void *buf, size_t bsize, printf("%s: Missing load operation\n", __func__); return FPGA_FAIL; } - /* DDR authentication */ - info.authflag = 1; - info.encflag = 2; + if (!strncmp(fdesc->compatible+19, "enc", 3)) { + /* Encryption using device key */ + info.authflag = FPGA_NO_ENC_OR_NO_AUTH; + info.encflag = FPGA_ENC_DEV_KEY; + } else { + /* DDR authentication */ + info.authflag = ZYNQMP_FPGA_AUTH_DDR; + info.encflag = FPGA_NO_ENC_OR_NO_AUTH; + } return desc->operations->loads(desc, buf, bsize, &info); } diff --git a/include/fpga.h b/include/fpga.h index 2891f32106..cdf80fedf6 100644 --- a/include/fpga.h +++ b/include/fpga.h @@ -20,6 +20,7 @@ /* device numbers must be non-negative */ #define FPGA_INVALID_DEVICE -1 +#define FPGA_ENC_DEV_KEY 0 #define FPGA_ENC_USR_KEY 1 #define FPGA_NO_ENC_OR_NO_AUTH 2