From patchwork Thu May 5 17:11:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1627053 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=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=eMS3BLyb; 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 (2048 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KvKxt6k3Yz9sCq for ; Fri, 6 May 2022 03:12:18 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D575084021; Thu, 5 May 2022 19:12:13 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.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=seco.com header.i=@seco.com header.b="eMS3BLyb"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id ADA0084011; Thu, 5 May 2022 19:12:11 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on20618.outbound.protection.outlook.com [IPv6:2a01:111:f400:7d00::618]) (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 5C76583FF2 for ; Thu, 5 May 2022 19:12:08 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bdi/CEEIUol9sJxAB0YM0zGETSqMaMV6hWRDsQBpKW5Bx9NIcQ5KMgjxmJ5sLODyp0U115V7i0Qdxl/8IFEWnbwtx8Gaq8BzhcvHA9Z/mN9zRjNt8FKjEwKliLsaM8iK6Nq+08rEDrGRoCehFtZaGxqeBguW1aI09U1EjLT6TnZrtm1HNohPRFjTOk//L8+DWDLYEQw2sa5Oqs/IUSwDhGXh9f4lXI1jZuYPx2HUPjeoFORsFMSdL0Awv+GOPxHtCLrVVIzHKqd4o4opYRLor+nE70o5rYCcVrm0VOyjkB1PLm5F4fN/LHe8Exq5UOlPZdiNidqXpJMM8+ucJwkTbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mGx6HlZhNreev5mv7lT9JifYziqjfD3deNy0EhJWTjs=; b=SfgPmD7xYnxvTE39PC3y30r5eaW48oJtlui2/3eHkydx+ovVQy4+lqaHXXZib/heTvKtUHxRbLeICHq9SmPE0MDwWCyvlq4zis6P8qAbglmZxnqcQfi0XGqzQ6J7g4mRSudrw8tWJ+oc5jyHCt7BI/roUsnSIIqZUeF1YPn+eXJW3innu4q8ywySTAcw+RsmDqKC5KDOPbPsarIDuj4lcrNDDiaDagFw/eBDfbaOXyTDpAyCrmuF5t+XnSvBXM5esjMO3G/FYdpXAQK9+blwUqpJ+CyLjHOaHKHxON6KrI8sj/2p99d0YgjdVGMNkoji/IVq8b9K7lL5gPU24pDASg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mGx6HlZhNreev5mv7lT9JifYziqjfD3deNy0EhJWTjs=; b=eMS3BLybTiX1ohg3Qnp7M/wTTzyIu+oYiXduUANc8IBBtiLZOgt+LC/Z8543W21z9H5qMttzNE09uh/gO2yjY2fX5xaHd6ZG4OdqvJyvPguqESdmKW15tC+oA5KylfGJtOQshWLjEkspBa5A+8XVnIkF5Y6ztxjOTzG+AoAaCCn+V+NtRwfwsV5T7MDngkgZO1jVGjTxNsLBVtctjOrE6PO0pjhsIfOjViO4ayNoE+/UdPMXAqWao8ROO4zQXwDagOnpYho/Kp0Sd0EaCIe03O49+DKS9rCj5ajRBmCrk5+a8QAa7lw4JtQ/1ykl11SSIDRRePmNX0lGHSSi2hTvdA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from VI1PR03MB4973.eurprd03.prod.outlook.com (2603:10a6:803:c5::12) by AM0PR03MB6212.eurprd03.prod.outlook.com (2603:10a6:20b:15a::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.25; Thu, 5 May 2022 17:12:06 +0000 Received: from VI1PR03MB4973.eurprd03.prod.outlook.com ([fe80::dc24:d72c:4fe6:847e]) by VI1PR03MB4973.eurprd03.prod.outlook.com ([fe80::dc24:d72c:4fe6:847e%7]) with mapi id 15.20.5206.027; Thu, 5 May 2022 17:12:06 +0000 From: Sean Anderson To: u-boot@lists.denx.de, Simon Glass Cc: Heinrich Schuchardt , Mario Six , Ramon Fried , Tom Rini , Joe Hershberger , Sean Anderson , Alex Marginean , Claudiu Manoil , =?utf-8?q?Marek_Beh=C3=BAn?= , Vladimir Oltean Subject: [PATCH v4 00/16] Add support for NVMEM API Date: Thu, 5 May 2022 13:11:29 -0400 Message-Id: <20220505171146.557773-1-sean.anderson@seco.com> X-Mailer: git-send-email 2.35.1.1320.gc452695387.dirty X-ClientProxiedBy: MN2PR05CA0044.namprd05.prod.outlook.com (2603:10b6:208:236::13) To VI1PR03MB4973.eurprd03.prod.outlook.com (2603:10a6:803:c5::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1d93fc7b-dee9-4ece-3b66-08da2eba6190 X-MS-TrafficTypeDiagnostic: AM0PR03MB6212:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZiHqC7gNHdgtUBUgNB4FP9AnGAUoBR9s8rrDxazI/JAwkJcYKes1nsJmKlLo3m9d56d8HBUzl6s8jXQ9JyabTR4QNj7UGa5Tk1HxnN2hBu4mcW244k54gRN45Y+qk84ubFiyJ/xXAM5FjeW0ar1ZPS48LjABHZuwZDYGzUW9Z3s7AImRGzoTxVWETq6Yjb1om5xAASF8LMFjT8rY2PpZp35nwHEFFRToSCqnPx7/66BvqczofrEBoonImGJXEdiIUhT8axXg02cXRHnUEL/k0QxAcnEtBy26N5fC+QutOT4025nGFERSftqt2U1sXye/Xvgw2AHc6vJIXH+9xo47TdXJGp5WlBUqfrek+rWGh7uNOEaXM5ZAhmy6wutQhBVAjz+8XpxDnHDbOCMKUF23CHlLKok5Ce5Oqe8ARc/Wv0a0TNoIN1EsjSo0/udq6R6QjeW9cUPJZ6T2iAGasK0SwmZPhJhJuMlygfWPTbtRIpH9VexuJ9Kcws796fe+nfE++DqvgYlF9Pt32iQhN513CAjaw35QLII0kIU1WT70lkpyMhdwR1HSuJReTYBV8VCUqgRGWgixpTykOyu3QnFsEpm7uKOoaRX5TTsWVZOTy2St+3c5OS+7e7k/KYlwdSObQcH4Z99dM3Ps5r20/5PDCKcpOVw/7/Ok2CmWrBHTSqAEzJkBjJgvS3jfQWB+CJ5Cip54NW64WznVMbC7sHrkmnduY6i1kp+BaZ+j/dBqrmhcUbCsmmV3sUmB74C/FjluFjHie4JECJx9LgQXYFXP8/d7opigO1FVpGCm8OBr3oE= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR03MB4973.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(26005)(508600001)(6512007)(186003)(5660300002)(36756003)(7416002)(6916009)(316002)(54906003)(1076003)(66556008)(38100700002)(38350700002)(4326008)(6486002)(8676002)(66476007)(2616005)(66946007)(86362001)(966005)(2906002)(52116002)(83380400001)(8936002)(6666004)(44832011)(6506007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?iQrnBqsKO3MOykmKmZnhFQt70zbd?= =?utf-8?q?8uRlqPo7b9otoPgXPehOYL4C3lYFXpYsrySS9r4Ao9AmdPrMvFci0lH8HSiS/XQLQ?= =?utf-8?q?PaY2sOWb+TO1pen7ZGce31xAaCuFlyH/Qk2mUWe0GJYIgtvYFHw8xcjKCgkkydQPP?= =?utf-8?q?N+F6SbT/mMgnH75okRyC+/OWYL5rAgk8xAlDnn8qt2wiXpn6AeyKrvYk+j6Jm6Wug?= =?utf-8?q?C1d8IIND7d+GRsbMKEc4mlf10ePmBI0Tppqy/hPDmQrkmpZQMvjZTsl5bv9OfRYcr?= =?utf-8?q?k7M1u+uYlCs6huUEARhX86xonR/GaT4zczsbQ7PW4qjXLV2QZpE+y+H8hv2RxG8xh?= =?utf-8?q?YobBGX/KMF/PIfnTPzfFkaZx6SY4mdsuuhvthCSaOI+IU5xWGzP5Z4pdBI8aFiD/H?= =?utf-8?q?c4pLKPT31bz11PhAkajfyZlAJgI8wYK5i2bDH3KX9lVqbjoUzTD1J2YQ1RuwlRdfX?= =?utf-8?q?ZkBCl0P7QObTLWyRpzWqZfdnVNDP4rkDAxQA96LuekjRFnUhyTLd3u1W9dmFzD5kl?= =?utf-8?q?lOzZWtLdIOxrEhfGe1I+7lWWTWUE5VCOPht+CZ+kQZvjs1sxHgIQg2EXkFjIYf8Lo?= =?utf-8?q?gW57fN6H93hogVMmYEEiwRTGtnSfzTk/5QOSz1duEdxLieN1Pn8isilUxNVqTYPMV?= =?utf-8?q?YM1ByLcPlopDRsElFF0kGkfJhaiUyHbL2/p2ECjEAGyJjk0YgvclXlH0eHORMSpKB?= =?utf-8?q?khULvFSwebZoyqEYoy3PosRqESyt/OpEzdKOyrMAaXkgnbjntPFB0d9e/OCwEGdAt?= =?utf-8?q?50bPPHEGg9c/Zc0qEXRXHMbHmGwXns2Tc68flqe49p2ZkiZxIWsHu2PWYpIVMMVky?= =?utf-8?q?DnPmZFkf5inDvzrg4emafsGdwyPf80jGgKjTFpc7Pw3JYDeZ0yOy5QLHfGUlqdkg6?= =?utf-8?q?FD0DlvFO7RGEgVMFGwmQaMGNv2HyKrHES9MRtaUDhKvgtsl1WoAluZ8Dh2+KMhIN1?= =?utf-8?q?z1AcEfrFy1Er6k2Daq7J/rqC+ijm7XKA1Vw00z19/Ntl5xBABcQVpwBYfjpTuNCdQ?= =?utf-8?q?K2rI1wA24/AtR3YevDCb+LPPOBb/UNh9uteQ1jk5btFA0+dRqlr2zAtZviNvtFXpk?= =?utf-8?q?aiJK1HDcvkVS9MnMKkSw7ZPS/NsaIwVKY8mBO+tDhdzMof2mFPW9dfaG4ar3pdfST?= =?utf-8?q?V6rbCLo7l2vTsqv5uYPW35hpxezi8K/nV+mbaDUYZnnSzHaat43W2DgJu7qfkRnLo?= =?utf-8?q?AV1A7WrhcFoPtmD6746KaM4AOHZyLGtd2rR3ShSmNSUJ8SW6qKo0eQgGAasNklQ8i?= =?utf-8?q?Cxhly1a0+S8vEfr5ibs7KGFUtQiHzfIaTZFveVyHmSJciCR0HXhS+Qd/9pyT7Ih9U?= =?utf-8?q?FuD4bREykVw5KRgX/FPPP+V28ZguYgjKD6Aew7y3g/eOQWcTOsivi9POzfEuQRh8O?= =?utf-8?q?NGFEOu1oPwgDQd1XkyZhfukBtos/woiEU1U2YRJLAZ0zsDwUYEwJt1LhR0jK0IN0i?= =?utf-8?q?EzYOuViIp2GAWyQYCgRk2Kkm9EkymcumJAP0YMc1EbZ09/lXloBkoNxoIe2IMVtL8?= =?utf-8?q?W5FQ6eN6HBNvcoSxAxcMKM1+k74WSX2RpEkfKmz64uRzpEz044sPa/Lv/N6EfGMlf?= =?utf-8?q?QlNz9p7BSgn/JPnG0ABQxJnBxnWMwa3WX70EWUBfIC2POkr4YQwFuIcWFysNtGitA?= =?utf-8?q?1bE75YxVRf1ru3ShJguPkUqVqtO/YM5SHvpsH9zTpmFeIja/e5wD8=3D?= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d93fc7b-dee9-4ece-3b66-08da2eba6190 X-MS-Exchange-CrossTenant-AuthSource: VI1PR03MB4973.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2022 17:12:06.3389 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Jx4KB4Ob0T+BHsV4ZzNRxkBpGjgNiHKGjQoDP88tWYi07QjnbKcSyVXiTTfG1vRF2ZdLe+ex/+B9Ug22TaVxxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB6212 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 This adds support for the nvmem-cells properties cropping up in manyb device trees. This is an easy way to load configuration, version information, or calibration data from a non-volatile memory source. For more information, refer to patch 6 ("misc: Add support for nvmem cells"). For the moment I have only added some integration tests using the ethernet addresses. This hits the main code paths (looking up nvmem cells) but doesn't test writing. I can add a few stand-alone tests if desired. CI: https://dev.azure.com/u-boot/u-boot/_build/results?buildId=4167&view=results The patches are structured in the following manner: 1-9: These are general cleanups, and may be applied independently of the rest of the series. 10-12: Add NVMEM support 13-15: Support reading ethernet addresses using the NVMEM API and add some tests. 16: Example demonstrating how this series could be reworked to be a uclass. It should not be applied. Changes in v4: - Fix dm_test_alias_highest_id test failing because we changed the number of aliases - Fix segmentation fault if DSA master fails to probe - Add fallbacks for i2c_eeprom_* functions. This fixes build errors if CONFIG_I2C_EEPROM was not enabled. - Fix failing to find nvmem devices if some supported uclasses were not enabled. - Remove typedefs from documentation - Document some of the design background, and why a new uclass was not created. - Enable CONFIG_NVMEM for sandbox_spl_defconfig - Enable CONFIG_I2C_EEPROM for sandbox_spl_defconfig - Add RFC patch illustrating how this series could be reworked to use a more conventional, uclass-based approach. Changes in v3: - Add aliases for ethernet devices - Add mac address for eth8 to environment - Move patch adding test earlier in the series - Add test for eth8 as well Changes in v2: - Call the appropriate API functions directly from nvmem_cell_(read|write). This means we can drop the nvmem_interface machinery. Sean Anderson (16): sandbox: net: Add aliases for ethernet devices sandbox: net: Add mac address for eth8 to environment test: eth: Add test for ethernet addresses sandbox: net: Remove fake-host-hwaddr sandbox: Remove eth2addr from environment sandbox: Move some mac addresses to device tree net: dsa: Fix segmentation fault if master fails to probe misc: i2c_eeprom: Make i2c_eeprom_write use a const buf misc: i2c_eeprom: Add fallbacks misc: Add support for nvmem cells sandbox: Enable NVMEM net: Add support for reading mac addresses from nvmem cells test: Load mac address with i2c eeprom test: Load mac address using RTC test: Load mac address using misc device [RFC] misc: nvmem: Convert to using udevices MAINTAINERS | 7 ++ arch/sandbox/dts/sandbox.dts | 1 - arch/sandbox/dts/sandbox64.dts | 1 - arch/sandbox/dts/test.dts | 34 +++++- board/sandbox/sandbox.env | 4 - configs/sandbox64_defconfig | 1 + configs/sandbox_defconfig | 1 + configs/sandbox_flattree_defconfig | 1 + configs/sandbox_noinst_defconfig | 1 + configs/sandbox_spl_defconfig | 3 + doc/api/index.rst | 1 + doc/api/nvmem.rst | 7 ++ drivers/misc/Kconfig | 16 +++ drivers/misc/Makefile | 1 + drivers/misc/i2c_eeprom.c | 40 ++++++- drivers/misc/i2c_eeprom_emul.c | 4 + drivers/misc/misc-uclass.c | 58 ++++++++- drivers/misc/misc_sandbox.c | 3 + drivers/misc/nvmem.c | 106 +++++++++++++++++ drivers/net/sandbox.c | 10 +- drivers/rtc/i2c_rtc_emul.c | 10 ++ drivers/rtc/rtc-uclass.c | 46 ++++++- include/dm/uclass-id.h | 1 + include/i2c_eeprom.h | 27 ++++- include/nvmem.h | 185 +++++++++++++++++++++++++++++ net/dsa-uclass.c | 6 +- net/eth-uclass.c | 13 +- test/dm/eth.c | 29 +++++ test/dm/test-fdt.c | 2 +- 29 files changed, 584 insertions(+), 35 deletions(-) create mode 100644 doc/api/nvmem.rst create mode 100644 drivers/misc/nvmem.c create mode 100644 include/nvmem.h