From patchwork Thu Apr 13 15:17:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rasmus Villemoes X-Patchwork-Id: 1768536 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=prevas.dk header.i=@prevas.dk header.a=rsa-sha256 header.s=selector1 header.b=I2jak5xm; dkim-atps=neutral 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 ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Py38w2MHXz1yZn for ; Fri, 14 Apr 2023 01:17:20 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 69537859C4; Thu, 13 Apr 2023 17:17:17 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=prevas.dk Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=prevas.dk header.i=@prevas.dk header.b="I2jak5xm"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D9A5D85A83; Thu, 13 Apr 2023 17:17:15 +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=-1.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,SPF_HELO_PASS, T_SPF_PERMERROR autolearn=no autolearn_force=no version=3.4.2 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on0729.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0c::729]) (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 74B658003E for ; Thu, 13 Apr 2023 17:17:13 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=prevas.dk Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=rasmus.villemoes@prevas.dk ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KnbcTW/FflV63k1siB2jR5fsuOSmXNpCg2OSKD58TIzE0vCKtbp0aJsg2gQMHHjjd+6cDNFxujTZNs7UQ65oyaW8dlfjYu4iGlKVRB0Ly4P/232dcc7ATo4L3A+/GUnY0TjEv6+r0mwI0z2EGnnc8cD6vE9KHRB0+BdQHDXPc2pGeYwyrRL1xMDbMoWHAlDKg5uV991yUiyx69J+B0qh5gkmuR2T71lzzueW4bAVXHWertZ6xwgafACraKEaCIVwUE5n7QDAj6O5/grfY/+Q3xKhERUP7UAiyUZxPk3wezNa4fGTcTpVGTbCdb3DG2ZV82pkl4+2QeUZeZZKcaUS9Q== 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=PgJsYb1egAd2A+8TOZuHnygdlfBWAMWnJZxYV6O5k3w=; b=H5RwyCrF9lc5p7dqhKxAC7hnIwNShT3sSCLlo7mykHyY3j8vSKQWn3RVMvdTw/Wxq1gBRW5qx/SCGLEV1vxBweE7ZV0gBHS7abs4eiXPwZeIvihapA4aQfqw1JS4nHkVf0A/QP3IDqwJqOFJPiLsFpDKcolIBhhQqQr0guzDnvut1gx93KZCJGt29uWWTS3XC6cEm+FJZYBCZvsqthmWM5NfCekD9q9ZbXtlM1aamluTa7wQ1YVNrE+BPFEtIakNIiilUOMWngqarys/DV/fejq9EgE0bVwRw+IiV+1rbppKwMMzfabczeWiPaxHtpsWkupq1thIgIGAtIKmPseOCA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=prevas.dk; dmarc=pass action=none header.from=prevas.dk; dkim=pass header.d=prevas.dk; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=prevas.dk; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PgJsYb1egAd2A+8TOZuHnygdlfBWAMWnJZxYV6O5k3w=; b=I2jak5xmMWHejANlM+dOM6LBVqMDMUxfkbjBvmBo9HEUkfv6w+7yj1SByYJ9XNcKkrBrodT3HFwx0KIPowRSldCdkjDhQtMoFyqJnrv430X6V8rYijNYwgBue/8RfZLZD6KzBWivJIA/5p4Op1jq61cv96NFvs1UB4zcpdP8JUU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=prevas.dk; Received: from DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:45a::14) by DB9PR10MB7595.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:3d1::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.30; Thu, 13 Apr 2023 15:17:11 +0000 Received: from DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM ([fe80::18c1:25d1:3fb0:1439]) by DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM ([fe80::18c1:25d1:3fb0:1439%9]) with mapi id 15.20.6298.027; Thu, 13 Apr 2023 15:17:11 +0000 From: Rasmus Villemoes To: u-boot@lists.denx.de Cc: Simon Glass , Rasmus Villemoes Subject: [PATCH] dm: core: introduce uclass_get_device_by_of_path() Date: Thu, 13 Apr 2023 17:17:03 +0200 Message-Id: <20230413151703.3567431-1-rasmus.villemoes@prevas.dk> X-Mailer: git-send-email 2.37.2 X-ClientProxiedBy: MM0P280CA0079.SWEP280.PROD.OUTLOOK.COM (2603:10a6:190:8::12) To DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:45a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB9PR10MB7100:EE_|DB9PR10MB7595:EE_ X-MS-Office365-Filtering-Correlation-Id: 55ed9674-db0c-45d6-e7d3-08db3c32274d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5mzbAgwlo/AsmSrH2L55STXEJoNKCB+Hlnjzuy2KhVHCeE8Z1yebsVrF96fTQc9Ek1n4KTvYMjbuJR7godFuZGTu2nrkHkXd4wZo1u6pIUQYRvIRUCwBFSL/b8kcjF16VP4fFx9UfP34PcdqHFlqLZPM6a3lmJaufDpx3O3TOITTLNfUZ/7kF+fUY823uuEZv1s1D/B9ayV0bIeyaTGtup4WT9bonwt0seLGjTtHcYXOo4JebAuD4aim3BdgAS0V0F7fFW9j5GHWCXmkIPAkjP6KL5H0D4IOVCBLn9XkL8Du7qtCIIziE6U8RZ9kAd+P2K3Z8mIcRlJn8mo/3nXhnfo2CpIMb300rzUvang6BhueaO4eRcPv9SppXg35N8OWsepeTJp7CWn14mlZ/f/L2EKtcs6uABV9suXl28MGWw27FaDXv4uHGGnaWe6ZQbzgtXjbEVavchSs70F44FB+TjdX9rvD2wvWIHIVmJVchD9lvrQndpo+O6KArgF7ZTAqPB+3+/vG0aThb0fKGv2domnRouCdm7xKgl/lG69BFEiCvuYP1WgiVdnnw8IQLlC1fH721atO9SLjINz/io8gL+9vOH7XY0KeZKsEBTDoXV9ERB9HRllwvrttRqEXfyU6 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230028)(4636009)(396003)(136003)(376002)(346002)(39850400004)(366004)(451199021)(5660300002)(54906003)(478600001)(41300700001)(52116002)(316002)(6486002)(8976002)(8936002)(6666004)(26005)(44832011)(66946007)(66556008)(6916009)(4326008)(66476007)(8676002)(107886003)(6506007)(1076003)(6512007)(186003)(2906002)(2616005)(83380400001)(38100700002)(86362001)(38350700002)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GkSKc5tuuemr3Dwrj+iKAf5GsvrA50wOQgqMcPZZIDEGaxFNxmyOe77+f6YvwweXOyx5eOs3YF35pMb42Jk4w8lSTflIXfFbcdNERI8gaNrin94BmT7KGV3Bv52jzSGcKpyjdWyVzHpn75eSsEjZWZ/nut+sgxZNf0qxzG5zmyvJ1Ed5AqepqbBuln81hvYLLI1BVFtufGOovkz/IYhheJzBgDTwGC3HglsbdwHwbeZK2cohd0OI8zbZ1PqhJeNixKB4K4uODjp1yV0hiek4sv4R+IqwoeBqa58af4mc93f+vjHWJRDpIzZ4DQVbeJpzwbptE1u3YX4MElSvAdzbaWLzAi9mTgmjGouXGtUT84fukNuusjdbk8sK2v0CtBgjYgqMTxuiLFD7pfm+mkuLG5csSObtoL6zF0bWVwLpaYxIO6y0du5wXjRwYXHZBttHyBXhdnAyh5HPpDVKKTSRW+wpFE7lQTSlMmHyEpyeI5JwFgcSsX7IAJ+2wuJ97yC9rCRL3QYgTlmdBHCk3lDt3RxsKKbBtixcD/YutFeIeQJSRppI/k84fNREQPS8GPHkPztpncvF5hedMnmtcuWGKzbmTCoz7SpjcQJFz3M2mN8YHxQtlmKrMvJwBqvDu1HDe4PdtkAQttpK3iIYG+4GPk1fg2gJttnlBRJktBaFnd5/Dnm2lrUWpYUhI9+/LfqiTKhqiF/zJKxDvP3pvDW7oUvMPp2KWM3Ja2OD/DuICATwcgrHRSB8E5cGASTdhgX7DObDeJOP96QFMzvzkM5TiEbZS964INnu4Mjy0eEyBBMgJva5kPOeHqN4VCeerAPLK2g0w2AUnZHTqUdw+PGZJ68+gd6vc1N8CJYjY79WIQG3OA0NzF+tkwpeB4p7rpcHZdnTXvNfehnL+PSDjF6mxaKo4MaDDnlgACA4GxeU2XqWeY15c5i2IG6eLUECbbr8I6k2XBHsry6fTGS2TiTrMDKNUf9zluLoQG8yvQUeDU4S5WDkrdsZL9qoOmwO5r7pEKI5eq3if9Q03xS5JrjX9h8wO9N6mKtOLQHBNtP9/2GOWMxqsdX+4N29lxkY6pJtmNUSi1BltSHdkR4PDFmGdHjOPATCTgYibo1scJJ5ZeU/4wKkAaOJ84PkrC7O8qmTkKnIoAbamJ/alZgmu0kVQe4oHi7StejoiG8yH+rIeFVjbx8Ahdtm0vhQFqEk+toVeYAnReRJE640CYPW9uQ5q7AeZq2aZrERahi23RU0pLawjgnG39NQ5Xc3xguIbRaUYfhH/67oqmMZRsV3fy41EghaJSEFvFOUYEuoPDE4H1yMz9pfwyq4m2Qb0M0oeNs7Pp0CWWM+qu/pek3kZTLv8SZomyjEBBCMI2t4+6vSyWOlY0US64BkaHfyyxSKS8kKk8pqFokr0amvV3QtqR8cm0+5I0PF4C2QVW+oBBKfo89+kSTS7peGG8vgleI89GRWb1BlmZ04PP+IL60Ryy9cvMhlwXxVHIW+54KywuZmI325oU2qnSOMRr/Q/fuj2Aa+XPaqIqj3zUQFYpZOnlqhsPfApP1Vxvwrvffa/SCEqFNlc9Zv/faQIncL+CbaOhqVbQy8OJ/URXRN6AhUWB00Og== X-OriginatorOrg: prevas.dk X-MS-Exchange-CrossTenant-Network-Message-Id: 55ed9674-db0c-45d6-e7d3-08db3c32274d X-MS-Exchange-CrossTenant-AuthSource: DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2023 15:17:10.9968 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: d350cf71-778d-4780-88f5-071a4cb1ed61 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Pkb2MKBNnrhR7PrQVofvieu0PPpxM3JsEg/MIDlA2SQE28OP2Wsw9pRJz/GpnzQQ5kl78lF8XKtB5pNVpFU5adpohbGw8V0NOO+k/8JsFDA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR10MB7595 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.8 at phobos.denx.de X-Virus-Status: Clean There's quite a few instances of board-specific code doing off = fdt_path_offset(gd->fdt_blob, ...); ... ret = uclass_get_device_by_of_offset(..., off, &dev); looking for an eeprom or a pmic via some alias. Such code can be simplified a little if we have a helper for directly getting a device via device tree path (including being given as an alias). Implement it in terms of ofnode rather than raw offsets so that this will work whether live tree is enabled or not. Signed-off-by: Rasmus Villemoes --- drivers/core/uclass.c | 6 ++++++ include/dm/uclass.h | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c index 3a919104a6..56ea878701 100644 --- a/drivers/core/uclass.c +++ b/drivers/core/uclass.c @@ -544,6 +544,12 @@ int uclass_get_device_by_ofnode(enum uclass_id id, ofnode node, return uclass_get_device_tail(dev, ret, devp); } +int uclass_get_device_by_of_path(enum uclass_id id, const char *path, + struct udevice **devp) +{ + return uclass_get_device_by_ofnode(id, ofnode_path(path), devp); +} + #if CONFIG_IS_ENABLED(OF_CONTROL) int uclass_get_device_by_phandle_id(enum uclass_id id, uint phandle_id, struct udevice **devp) diff --git a/include/dm/uclass.h b/include/dm/uclass.h index ee15c92063..5c5fb9acac 100644 --- a/include/dm/uclass.h +++ b/include/dm/uclass.h @@ -264,6 +264,23 @@ int uclass_get_device_by_of_offset(enum uclass_id id, int node, int uclass_get_device_by_ofnode(enum uclass_id id, ofnode node, struct udevice **devp); +/** + * uclass_get_device_by_of_path() - Get a uclass device by device tree path + * + * This searches the devices in the uclass for one attached to the + * device tree node corresponding to the given path (which may also be + * an alias). + * + * The device is probed to activate it ready for use. + * + * @id: ID to look up + * @node: Device tree path to search for (if no such path then -ENODEV is returned) + * @devp: Returns pointer to device (there is only one for each node) + * Return: 0 if OK, -ve on error + */ +int uclass_get_device_by_of_path(enum uclass_id id, const char *path, + struct udevice **devp); + /** * uclass_get_device_by_phandle_id() - Get a uclass device by phandle id *