From patchwork Thu Feb 24 18:05:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sughosh Ganu X-Patchwork-Id: 545600 Delivered-To: patch@linaro.org Received: by 2002:ac0:d8d1:0:0:0:0:0 with SMTP id b17csp438324imj; Thu, 24 Feb 2022 10:08:03 -0800 (PST) X-Google-Smtp-Source: ABdhPJwJ1tdXCN1pPuDTQwjPyTsJS0X2EYipApDtjflDrFX6yTMp082YiRfjQ0BzC6HnzesmeM6d X-Received: by 2002:a17:906:2608:b0:6ce:60fa:12ad with SMTP id h8-20020a170906260800b006ce60fa12admr3335113ejc.231.1645726083256; Thu, 24 Feb 2022 10:08:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645726083; cv=none; d=google.com; s=arc-20160816; b=yO3HzAz9zSB84W3DXh/JMNZPgyvOEF0JLwcE6wnmzyG/4ep79XUC/qeNRtuzB54mWI 27y2ZCkg+VFSg56KDx5qWqwtXo3mPHTH2kMgExmb8HSdBKVhCDIyUNP/xMwN18jx81i6 rZgGcPGSGLbrXc9l5R8iT6BkpsOb1BZQy1CyEfAGoVss0q3KjgH1fCUuPnrwYVASkCq3 rgakhrNgMoSPFtUYk9Lmra/gSw49njB/4c0Xs3grbKXefGUANm94LF3LNx1Thzy03ZdL +/gMIskbwLs5i2ugzhVOnG4sy2WZF/UNqeZnj4c/8VeAoLq6UMDG4bORlRiIKjX0e9J6 5anw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:references:in-reply-to :message-id:date:subject:cc:to:from; bh=nBp81m+aDuG8A8lbRPjVYjW7mUTOuRI7ZUmJMuSZBeM=; b=s/TAVqlBrBODkzQqw/IVcFzLwW86wypHX9PsyrxLlgjzkFwNuMqE96IHd5tbBxP6Ed aJBEGrH/4MRhLAVDogkFQvnZbCa2e35l+DQlWkfJCv4lrmCMPVkK8zscY1FL6Z+3FZK2 mdpguK17qIF29FSnzuBcnyIO9qtB9XIVNXnjHBWI60XUoLVLFvZolV42lL7d/KcYXguU OkmtJNK8ML5ZgOmeYPNYQhxWeXecksAiZyJgzvRmn3eKTkLwRg9JZnZXyHI8baEUcO4d 87kPExwICQJ3A04BnGca0CnC16hLUdxPeG7ILeWo8bmegHDCJPjNfTt3jTpWJC5s2xKy 5hwA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [85.214.62.61]) by mx.google.com with ESMTPS id dm28-20020a05640222dc00b004109b9fa7ddsi190243edb.306.2022.02.24.10.08.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 10:08:03 -0800 (PST) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) client-ip=85.214.62.61; Authentication-Results: mx.google.com; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 354AF83CF4; Thu, 24 Feb 2022 19:07:13 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) id 2282383CE2; Thu, 24 Feb 2022 19:06:47 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_SOFTFAIL,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.2 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by phobos.denx.de (Postfix) with ESMTP id A703983CB1 for ; Thu, 24 Feb 2022 19:06:43 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=fail smtp.mailfrom=sughosh.ganu@linaro.org Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1E4AA106F; Thu, 24 Feb 2022 10:06:43 -0800 (PST) Received: from a076522.blr.arm.com (a076522.blr.arm.com [10.162.16.44]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id AFB2D3F70D; Thu, 24 Feb 2022 10:06:40 -0800 (PST) From: Sughosh Ganu To: u-boot@lists.denx.de Cc: Ilias Apalodimas , Simon Glass , Heinrich Schuchardt , Mario Six , Sughosh Ganu Subject: [PATCH 10/10] cmd: rng: Add support for selecting RNG device Date: Thu, 24 Feb 2022 23:35:52 +0530 Message-Id: <20220224180552.26901-11-sughosh.ganu@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220224180552.26901-1-sughosh.ganu@linaro.org> References: <20220224180552.26901-1-sughosh.ganu@linaro.org> 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 The 'rng' u-boot command is used for printing a select number of random bytes on the console. Currently, the RNG device from which the random bytes are read is fixed. However, a platform can have multiple RNG devices, one example being qemu, which has a virtio RNG device and the RNG pseudo device through the TPM chip. Extend the 'rng' command so that the user can provide the RNG device number from which the random bytes are to be read. This will be the device index under the RNG uclass. Signed-off-by: Sughosh Ganu Tested-by: Heinrich Schuchardt --- cmd/rng.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/cmd/rng.c b/cmd/rng.c index 1ad5a096c0..2b197e322e 100644 --- a/cmd/rng.c +++ b/cmd/rng.c @@ -13,19 +13,34 @@ static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { - size_t n = 0x40; + size_t n; struct udevice *dev; void *buf; + int devnum; int ret = CMD_RET_SUCCESS; - if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { + switch (argc) { + case 1: + devnum = 0; + n = 0x40; + break; + case 2: + devnum = hextoul(argv[1], NULL); + n = 0x40; + break; + case 3: + devnum = hextoul(argv[1], NULL); + n = hextoul(argv[2], NULL); + break; + default: + return CMD_RET_USAGE; + } + + if (uclass_get_device(UCLASS_RNG, devnum, &dev) || !dev) { printf("No RNG device\n"); return CMD_RET_FAILURE; } - if (argc >= 2) - n = hextoul(argv[1], NULL); - buf = malloc(n); if (!buf) { printf("Out of memory\n"); @@ -46,12 +61,12 @@ static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #ifdef CONFIG_SYS_LONGHELP static char rng_help_text[] = - "[n]\n" - " - print n random bytes\n"; + "[dev] [n]\n" + " - print n random bytes read from dev\n"; #endif U_BOOT_CMD( - rng, 2, 0, do_rng, + rng, 3, 0, do_rng, "print bytes from the hardware random number generator", rng_help_text );