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 CC62AC6FA82 for ; Tue, 13 Sep 2022 06:59:22 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 92FD784A8A; Tue, 13 Sep 2022 08:59:20 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=denx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1663052361; bh=FVUODhwWqDMZ2CCZbRRZ342d91L9bw0SH0z06k85VyM=; h=Date:Subject:To:Cc:References:From:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=oyUcBZWev7YWeBvG0h59QWOsSoE43TIvsx/nGx4egxqNHr2q2ebo1OtylIqHUiA8j S82SU3ZkzIOwoGTou3ODGw7td5pfssw5vqboot0bpNnVRYjmuJtXeVyif+JJLUgLEx 5DJHHjdJPB5f4o4yqlxZZnvGSdBY0t4XBW0RW6kgZZbmK9Onp4zkvQgd9IMtnDj2fe DB9rfNh6HO9GBrD2ig2uwGzrXIpSumgSDfml2VCcoEFh8MEuJJ8SdpBYhMvsMmmxdg GR/TdiNEp7KpG0IFgMS4UWfzmADf2/dOCeKO9/pZMkaxYZKfvXSqMx14/vcKaf9dHM oJWTILT0YwDeg== Received: by phobos.denx.de (Postfix, from userid 109) id 8DFA384B92; Tue, 13 Sep 2022 08:59:19 +0200 (CEST) Received: from mout-u-107.mailbox.org (mout-u-107.mailbox.org [80.241.59.207]) (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 5361584A73 for ; Tue, 13 Sep 2022 08:59:17 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=denx.de Authentication-Results: phobos.denx.de; spf=fail smtp.mailfrom=sr@denx.de Received: from smtp102.mailbox.org (smtp102.mailbox.org [IPv6:2001:67c:2050:b231:465::102]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-u-107.mailbox.org (Postfix) with ESMTPS id 4MRZ833RJpz9sV8; Tue, 13 Sep 2022 08:59:15 +0200 (CEST) Message-ID: Date: Tue, 13 Sep 2022 08:59:14 +0200 MIME-Version: 1.0 Subject: Re: [PATCH] board: turris: Initialize serial# env Content-Language: en-US To: =?UTF-8?Q?Pali_Roh=c3=a1r?= , =?UTF-8?Q?Marek_Beh=c3=ban?= Cc: u-boot@lists.denx.de References: <20220827180630.31933-1-pali@kernel.org> From: Stefan Roese In-Reply-To: <20220827180630.31933-1-pali@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4MRZ833RJpz9sV8 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.6 at phobos.denx.de X-Virus-Status: Clean On 27.08.22 20:06, Pali Rohár wrote: > Store serial number from atsha cryptochip into the serial# env variable. > U-Boot automatically puts content of this variable into the root device > tree property serial-number when booting Linux kernel. Refactor turris > atsha code and from turris_atsha_otp_get_serial_number() function returns > directly string suitable for printing or storing into device tree. Because > during different boot stages is env storage read-only, it is not possible > to always store serial number into env storage. So introduce a new function > turris_atsha_otp_init_serial_number() which is called at later stage and > which ensures that serial number is correctly stored into env. > > Signed-off-by: Pali Rohár Applied to u-boot-marvell/master Thanks, Stefan > --- > board/CZ.NIC/turris_atsha_otp.c | 33 +++++++++++++++++++++--- > board/CZ.NIC/turris_atsha_otp.h | 3 ++- > board/CZ.NIC/turris_omnia/turris_omnia.c | 11 +++----- > 3 files changed, 36 insertions(+), 11 deletions(-) > > diff --git a/board/CZ.NIC/turris_atsha_otp.c b/board/CZ.NIC/turris_atsha_otp.c > index aa4e29b1560e..a29fe3623174 100644 > --- a/board/CZ.NIC/turris_atsha_otp.c > +++ b/board/CZ.NIC/turris_atsha_otp.c > @@ -93,30 +93,57 @@ int turris_atsha_otp_init_mac_addresses(int first_idx) > return 0; > } > > -int turris_atsha_otp_get_serial_number(u32 *version_num, u32 *serial_num) > +int turris_atsha_otp_init_serial_number(void) > +{ > + char serial[17]; > + int ret; > + > + ret = turris_atsha_otp_get_serial_number(serial); > + if (ret) > + return ret; > + > + if (!env_get("serial#")) > + return -1; > + > + return 0; > +} > + > +int turris_atsha_otp_get_serial_number(char serial[17]) > { > struct udevice *dev = get_atsha204a_dev(); > + u32 version_num, serial_num; > + const char *serial_env; > int ret; > > if (!dev) > return -1; > > + serial_env = env_get("serial#"); > + if (serial_env && strlen(serial_env) == 16) { > + memcpy(serial, serial_env, 17); > + return 0; > + } > + > ret = atsha204a_wakeup(dev); > if (ret) > return ret; > > ret = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false, > TURRIS_ATSHA_OTP_VERSION, > - (u8 *)version_num); > + (u8 *)&version_num); > if (ret) > return ret; > > ret = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false, > TURRIS_ATSHA_OTP_SERIAL, > - (u8 *)serial_num); > + (u8 *)&serial_num); > if (ret) > return ret; > > atsha204a_sleep(dev); > + > + sprintf(serial, "%08X%08X", be32_to_cpu(version_num), be32_to_cpu(serial_num)); > + env_set("serial#", serial); > + > return 0; > } > diff --git a/board/CZ.NIC/turris_atsha_otp.h b/board/CZ.NIC/turris_atsha_otp.h > index bd4308fdc3ef..2cfe20bbc3a7 100644 > --- a/board/CZ.NIC/turris_atsha_otp.h > +++ b/board/CZ.NIC/turris_atsha_otp.h > @@ -4,6 +4,7 @@ > #define TURRIS_ATSHA_OTP_H > > int turris_atsha_otp_init_mac_addresses(int first_idx); > -int turris_atsha_otp_get_serial_number(u32 *version_num, u32 *serial_num); > +int turris_atsha_otp_init_serial_number(void); > +int turris_atsha_otp_get_serial_number(char serial[17]); > > #endif > diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c > index ab5061ef582b..cf8a6026702b 100644 > --- a/board/CZ.NIC/turris_omnia/turris_omnia.c > +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c > @@ -963,19 +963,15 @@ int board_late_init(void) > > int show_board_info(void) > { > - u32 version_num, serial_num; > + char serial[17]; > int err; > > - err = turris_atsha_otp_get_serial_number(&version_num, &serial_num); > + err = turris_atsha_otp_get_serial_number(serial); > printf("Model: Turris Omnia\n"); > printf(" MCU type: %s\n", omnia_get_mcu_type()); > printf(" MCU version: %s\n", omnia_get_mcu_version()); > printf(" RAM size: %i MiB\n", omnia_get_ram_size_gb() * 1024); > - if (err) > - printf(" Serial Number: unknown\n"); > - else > - printf(" Serial Number: %08X%08X\n", be32_to_cpu(version_num), > - be32_to_cpu(serial_num)); > + printf(" Serial Number: %s\n", !err ? serial : "unknown"); > > return 0; > } > @@ -983,6 +979,7 @@ int show_board_info(void) > int misc_init_r(void) > { > turris_atsha_otp_init_mac_addresses(1); > + turris_atsha_otp_init_serial_number(); > return 0; > } > Viele Grüße, Stefan Roese -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de