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 CACE7C00144 for ; Fri, 29 Jul 2022 11:29:23 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 7769E83FA6; Fri, 29 Jul 2022 13:29:21 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=kernel.org 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=kernel.org header.i=@kernel.org header.b="bI24PD70"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 9C5DD8401C; Fri, 29 Jul 2022 13:29:19 +0200 (CEST) Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) (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 447A183FA6 for ; Fri, 29 Jul 2022 13:29:16 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=kernel.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=pali@kernel.org Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id DA6B6B8267B; Fri, 29 Jul 2022 11:29:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7CBB0C433D6; Fri, 29 Jul 2022 11:29:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1659094154; bh=M3paDLG2/gO7+WtGz+vRMiFcW2hFlW1XCmOJtiqMjKE=; h=From:To:Cc:Subject:Date:From; b=bI24PD70eoGeJHeV+/bbvn2PYDZ3Q3FGx0hlZnd/md+QBm2gKMd+j+RED78sH5NOn /U44/0S5XQEhTS4cPrMTUZYZ6sS7pH1PWZeoO+Jm2P8sASLeD7Kue3s+ulFBQBcDcO AwMV5HaQfZv9ukxCwsWCmc724AkZgLKAHU9/M+4lG6dH4JPd69SDQxRVGbSMO8VqR5 NKvy4YBJ5+UrtcUBjNI5LTgPWFPVMbgDpmX2EflVpEyK9kgQ0JJ9p/F1jD6JQ847sq oBMzWAEMJ8HTzMRiMKEZVQpn4zu9zjxfZW/ixBAY6cI9fhCqKn7Hb1pPPqScw46uRs FE5jam0vZdiwQ== Received: by pali.im (Postfix) id A302A990; Fri, 29 Jul 2022 13:29:11 +0200 (CEST) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: Stefan Roese , =?UTF-8?q?Marek=20Beh=C3=BAn?= Cc: u-boot@lists.denx.de Subject: [PATCH 1/2] arm: mvebu: turris_omnia: Show MCU type in show_board_info() Date: Fri, 29 Jul 2022 13:29:06 +0200 Message-Id: <20220729112907.8207-1-pali@kernel.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Different Turris Omnia HW board revisions contains different MCU. Show type in show_board_info() to easily identify which MCU is populated. Signed-off-by: Pali Rohár --- board/CZ.NIC/turris_omnia/turris_omnia.c | 45 ++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c index b169abca0956..6fc2018c1cfb 100644 --- a/board/CZ.NIC/turris_omnia/turris_omnia.c +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c @@ -62,13 +62,27 @@ enum mcu_commands { CMD_GET_STATUS_WORD = 0x01, CMD_GET_RESET = 0x09, CMD_WATCHDOG_STATE = 0x0b, + + /* available if STS_FEATURES_SUPPORTED bit set in status word */ + CMD_GET_FEATURES = 0x10, }; enum status_word_bits { + STS_MCU_TYPE_MASK = GENMASK(1, 0), + STS_MCU_TYPE_STM32 = 0, + STS_MCU_TYPE_GD32 = 1, + STS_MCU_TYPE_MKL = 2, + STS_MCU_TYPE_UNKN = 3, + STS_FEATURES_SUPPORTED = BIT(2), CARD_DET_STSBIT = 0x0010, MSATA_IND_STSBIT = 0x0020, }; +/* CMD_GET_FEATURES */ +enum features_e { + FEAT_PERIPH_MCU = BIT(0), +}; + /* * Those values and defines are taken from the Marvell U-Boot version * "u-boot-2013.01-2014_T3.0" @@ -371,6 +385,36 @@ static int omnia_get_ram_size_gb(void) return ram_size; } +static const char * const omnia_get_mcu_type(void) +{ + static const char * const mcu_types[] = { + [STS_MCU_TYPE_STM32] = "STM32", + [STS_MCU_TYPE_GD32] = "GD32", + [STS_MCU_TYPE_MKL] = "MKL", + [STS_MCU_TYPE_UNKN] = "unknown", + }; + static const char * const mcu_types_with_perip_resets[] = { + [STS_MCU_TYPE_STM32] = "STM32 (with peripheral resets)", + [STS_MCU_TYPE_GD32] = "GD32 (with peripheral resets)", + [STS_MCU_TYPE_MKL] = "MKL (with peripheral resets)", + [STS_MCU_TYPE_UNKN] = "unknown (with peripheral resets)", + }; + u16 stsword, features; + int ret; + + ret = omnia_mcu_read(CMD_GET_STATUS_WORD, &stsword, sizeof(stsword)); + if (ret) + return "unknown"; + + if (stsword & STS_FEATURES_SUPPORTED) { + ret = omnia_mcu_read(CMD_GET_FEATURES, &features, sizeof(features)); + if (ret == 0 && (features & FEAT_PERIPH_MCU)) + return mcu_types_with_perip_resets[stsword & STS_MCU_TYPE_MASK]; + } + + return mcu_types[stsword & STS_MCU_TYPE_MASK]; +} + /* * Define the DDR layout / topology here in the board file. This will * be used by the DDR3 init code in the SPL U-Boot version to configure @@ -688,6 +732,7 @@ int show_board_info(void) err = turris_atsha_otp_get_serial_number(&version_num, &serial_num); printf("Model: Turris Omnia\n"); + printf(" MCU type: %s\n", omnia_get_mcu_type()); printf(" RAM size: %i MiB\n", omnia_get_ram_size_gb() * 1024); if (err) printf(" Serial Number: unknown\n"); -- 2.20.1