From patchwork Thu Mar 17 06:36:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1606443 X-Patchwork-Delegate: uboot@andestech.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=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=EJVGhqkV; 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 4KJy9G6NTgz9sBy for ; Thu, 17 Mar 2022 17:36:50 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 6170983CB4; Thu, 17 Mar 2022 07:36:36 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=canonical.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=canonical.com header.i=@canonical.com header.b="EJVGhqkV"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 381E183BC1; Thu, 17 Mar 2022 07:36:31 +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=-3.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from smtp-relay-canonical-0.canonical.com (smtp-relay-canonical-0.canonical.com [185.125.188.120]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 4356183AE8 for ; Thu, 17 Mar 2022 07:36:27 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=canonical.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=heinrich.schuchardt@canonical.com Received: from LT2ubnt.fritz.box (ip-088-152-144-107.um26.pools.vodafone-ip.de [88.152.144.107]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-0.canonical.com (Postfix) with ESMTPSA id 5F5A13F687; Thu, 17 Mar 2022 06:36:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1647498984; bh=jMjSsXmzLA2voOSJrrnjCk0Fo5J4mSuH5Yl/FoKk7EQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EJVGhqkVsLXgIW4YDaL36x1gDvBmY0wXUCa74YwPThThrHYDW0ahPPkFprPPEYmR0 xO4DJZPaRKHcy8TVH1Y9bgk32t04UQZUkNpyyiKR7KRoklc5OesOpXxi/kbYJAqhfE KrhASJ2IwP3td1ZZ2MNe3HMoRr2530A7uZUZCblGIpkAvnxwGjv1KRgIySpErYgRW2 dG6zvS5WaNElTIsWgQYtpVNlgaNlH4GYt3IDJm66wtWr7VVNx//ojKDSbUADuCpZb8 3XNrDhM1Rcq2pCMFp33mV0I3xcEje3qanvZfcEnjnzmp//AOhsqihXzjSM0QZZjFgg FVSfdjWvywuAg== From: Heinrich Schuchardt To: Rick Chen , Leo , u-boot@lists.denx.de Cc: Bin Meng , Sean Anderson , Heinrich Schuchardt Subject: [PATCH v3 1/2] riscv: provide missing base extension functions Date: Thu, 17 Mar 2022 07:36:14 +0100 Message-Id: <20220317063615.20816-2-heinrich.schuchardt@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220317063615.20816-1-heinrich.schuchardt@canonical.com> References: <20220317063615.20816-1-heinrich.schuchardt@canonical.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 Provide library functions to read: * machine vendor ID * machine architecture ID * machine implementation ID Signed-off-by: Heinrich Schuchardt Reviewed-by: Sean Anderson --- arch/riscv/include/asm/sbi.h | 3 ++ arch/riscv/lib/sbi.c | 65 ++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h index 76453121ea..81fcfe0b36 100644 --- a/arch/riscv/include/asm/sbi.h +++ b/arch/riscv/include/asm/sbi.h @@ -155,6 +155,9 @@ long sbi_get_spec_version(void); int sbi_get_impl_id(void); int sbi_get_impl_version(long *version); int sbi_probe_extension(int ext); +int sbi_get_mvendorid(long *mvendorid); +int sbi_get_marchid(long *marchid); +int sbi_get_mimpid(long *mimpid); void sbi_srst_reset(unsigned long type, unsigned long reason); #endif diff --git a/arch/riscv/lib/sbi.c b/arch/riscv/lib/sbi.c index d427d1b29e..8724e3a460 100644 --- a/arch/riscv/lib/sbi.c +++ b/arch/riscv/lib/sbi.c @@ -127,6 +127,71 @@ int sbi_probe_extension(int extid) return -ENOTSUPP; } +/** + * sbi_get_mvendorid() - get machine vendor ID + * + * @mimpid: on return machine vendor ID + * Return: 0 on success + */ +int sbi_get_mvendorid(long *mvendorid) +{ + struct sbiret ret; + + ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MVENDORID, + 0, 0, 0, 0, 0, 0); + if (ret.error) + return -ENOTSUPP; + + if (mvendorid) + *mvendorid = ret.value; + + return 0; +} + +/** + * sbi_get_marchid() - get machine architecture ID + * + * @mimpid: on return machine architecture ID + * Return: 0 on success + */ +int sbi_get_marchid(long *marchid) +{ + struct sbiret ret; + + ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MARCHID, + 0, 0, 0, 0, 0, 0); + + if (ret.error) + return -ENOTSUPP; + + if (marchid) + *marchid = ret.value; + + return 0; +} + +/** + * sbi_get_mimpid() - get machine implementation ID + * + * @mimpid: on return machine implementation ID + * Return: 0 on success + */ +int sbi_get_mimpid(long *mimpid) +{ + struct sbiret ret; + + ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MIMPID, + 0, 0, 0, 0, 0, 0); + + if (ret.error) + return -ENOTSUPP; + + if (mimpid) + *mimpid = ret.value; + + return 0; +} + /** * sbi_srst_reset() - invoke system reset extension *