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 1EABCC433EF for ; Sat, 19 Mar 2022 12:23:52 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A31DB838E1; Sat, 19 Mar 2022 13:23:30 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.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=gmail.com header.i=@gmail.com header.b="XJHy/qhp"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id C780083966; Sat, 19 Mar 2022 13:23:21 +0100 (CET) Received: from mail-oo1-xc2d.google.com (mail-oo1-xc2d.google.com [IPv6:2607:f8b0:4864:20::c2d]) (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 0F4C983ADC for ; Sat, 19 Mar 2022 13:23:14 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=festevam@gmail.com Received: by mail-oo1-xc2d.google.com with SMTP id g5-20020a4ae885000000b003240bc9b2afso13506650ooe.10 for ; Sat, 19 Mar 2022 05:23:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mFYPlV2y9bKuM0YuR3Gjm8mNPQFVhQnG9GFm76d5Kj4=; b=XJHy/qhpBOZST4FYQT0jVrnJM1pL3U9GigmkCcmg4XIjtGClPaO84Q4lyu8FLwSgjn nHkvLfktBpI3l0hX34rxuurWLI1E6BE6tvGMwgV4X9Anqdg88QulEewOGjAmsVK5r8Na ZYIdeyhT1U2xyl8g+wmizj0TTXCvdlZn9jimAat8STW7i4/iDRGgReOpUbSE2HRMI06D BeLMy+xoElxFdg9ARrSVMbgLUiWi/xpr5cotcoSXDHkUIAo1zrSxF4WDKVvL+fWuzvbj q3n55MOWLePgUyF3KpRXCqYP3AkqkLCAlNLRqcucTNfFrzwZApkBlZOqwu+VmeWwk2hZ 0ukg== 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=mFYPlV2y9bKuM0YuR3Gjm8mNPQFVhQnG9GFm76d5Kj4=; b=v58m+pquHU9siaTnYaFGItFz4XXRD6mYTSnVdHtFVfpgamBAOPmcNBhGA5ZCjy1zVa q1RU8iCnCzLUZvdf+QxhwNi+7YsQfwtImz9AtERwZKsO3pVl2d4csKZpFbFhntYxda15 SRhaLnbgT/0miitWjfHVFNKiZ9PRoBk3Wha8F8W/MTnbBIqi7tGToK227FXFVPMGwJWR Qt1HQtzGCXfBlcQhCGvLW/8AT7VacH5Gi7dgqC/S2AGR24/x6YaVfQbzc75P703/zjcZ j3nG24Wle3Scbf1Hm83XeQ37XYclylqdnI+YkWTUwil6nzue+6y0thaicMD6D5GRYJaE MNnw== X-Gm-Message-State: AOAM531+g7shQ6BtD/U/0i8A6PqWWNpHPMHd9MLlUVvExN8wJWcQs3kl 6+mh4+KNqgPKF5r+gnoqxE4= X-Google-Smtp-Source: ABdhPJzfMrimrbmY/1E5jwMRefCtkr/J8BhPBODj85m7gBpRbYrx/IjUoX5hcs8XmdSpy7iAF06I7A== X-Received: by 2002:a05:6870:a1a3:b0:d3:f4a7:f3e3 with SMTP id a35-20020a056870a1a300b000d3f4a7f3e3mr5375191oaf.109.1647692592796; Sat, 19 Mar 2022 05:23:12 -0700 (PDT) Received: from localhost.localdomain ([2804:431:d77e:806f:6364:2305:261c:c822]) by smtp.gmail.com with ESMTPSA id d2-20020a05683025c200b005c93d78e1f6sm5327983otu.29.2022.03.19.05.23.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Mar 2022 05:23:12 -0700 (PDT) From: Fabio Estevam To: sbabic@denx.de Cc: paul.liu@linaro.org, u-boot@lists.denx.de, Fabio Estevam Subject: [PATCH 4/5] imx8mm-cl-iot-gate: Retrieve the serial number from EEPROM Date: Sat, 19 Mar 2022 09:22:48 -0300 Message-Id: <20220319122249.77456-4-festevam@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220319122249.77456-1-festevam@gmail.com> References: <20220319122249.77456-1-festevam@gmail.com> MIME-Version: 1.0 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.5 at phobos.denx.de X-Virus-Status: Clean From: Fabio Estevam The serial number is located at offset 0x14 of the EEPROM under i2c0 bus at address 0x54. To print the serial number in Linux: SERNUM=$(cat /proc/device-tree/serial-number) echo $SERNUM Signed-off-by: Fabio Estevam --- .../imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c b/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c index 779b64b140ad..27200f728efe 100644 --- a/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c +++ b/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c @@ -463,6 +463,52 @@ static int setup_mac_address(void) return 0; } +static int read_serial_number(void) +{ + unsigned char serialnumber[6]; + unsigned char reversed[6]; + char serial_string[12]; + struct udevice *dev; + int ret, off, i; + + off = fdt_path_offset(gd->fdt_blob, "eeprom0"); + if (off < 0) { + printf("No eeprom0 path offset found in DT\n"); + return off; + } + + ret = uclass_get_device_by_of_offset(UCLASS_I2C_EEPROM, off, &dev); + if (ret) { + printf("%s: Could not find EEPROM\n", __func__); + return ret; + } + + ret = i2c_set_chip_offset_len(dev, 1); + if (ret) + return ret; + + ret = i2c_eeprom_read(dev, 0x14, serialnumber, sizeof(serialnumber)); + if (ret) { + printf("%s: Could not read EEPROM\n", __func__); + return ret; + } + + for (i = sizeof(serialnumber) - 1; i >= 0; i--) + reversed[i] = serialnumber[sizeof(serialnumber) - 1 - i]; + + for (i = 0; i < sizeof(reversed); i++) { + serial_string[i * 2] = (reversed[i] >> 4) & 0xf; + serial_string[i * 2 + 1] = reversed[i] & 0xf; + } + + for (i = 0; i < sizeof(serial_string); i++) + serial_string[i] += '0'; + + env_set("serial#", serial_string); + + return 0; +} + int board_late_init(void) { int ret; @@ -476,5 +522,9 @@ int board_late_init(void) if (ret < 0) printf("Cannot set MAC address from EEPROM\n"); + ret = read_serial_number(); + if (ret < 0) + printf("Cannot read serial number from EEPROM\n"); + return 0; } -- 2.25.1