From patchwork Tue Nov 14 00:00:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 1863414 Return-Path: X-Original-To: incoming-dt@patchwork.ozlabs.org Delivered-To: patchwork-incoming-dt@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=renesas.com header.i=@renesas.com header.a=rsa-sha256 header.s=selector1 header.b=pZZenv6/; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=2604:1380:40f1:3f00::1; helo=sy.mirrors.kernel.org; envelope-from=devicetree+bounces-15515-incoming-dt=patchwork.ozlabs.org@vger.kernel.org; receiver=patchwork.ozlabs.org) Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [IPv6:2604:1380:40f1:3f00::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4STmfT29F2z1yR8 for ; Tue, 14 Nov 2023 11:01:05 +1100 (AEDT) Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id CFAE0B20A45 for ; Tue, 14 Nov 2023 00:01:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4EAAE20FE; Tue, 14 Nov 2023 00:00:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="pZZenv6/" X-Original-To: devicetree@vger.kernel.org Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5621A3D6C; Tue, 14 Nov 2023 00:00:57 +0000 (UTC) Received: from JPN01-OS0-obe.outbound.protection.outlook.com (mail-os0jpn01on2091.outbound.protection.outlook.com [40.107.113.91]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3BC4DD53; Mon, 13 Nov 2023 16:00:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TlIB2JgX+NrymrIhpbLzIUxz1rSfw6IdHUkjslYXC0rPXRNVabJGxRskvqliiZ+yLT+kZ94wDMhg4kOEyoJpHp7kiRlDHxgNgeebN7qYpsRcieK5H2pqrFB9nfYu/SSFm6AIY2bL2ua7v0527/DlM3x2jL0rsT99+hvpIZchNJMz91EvPJrX8ZVERCj3j6Jbg0v7Bf08/JRXQhcASKiVj+nStg/sJVuMw8nArk/5zxO3WHEHkk/gMtyISXEN2/BwB7MwRHSHL5FZcii9ga76FOvfZMXK6FCyXqDOPTRJM3j5dd/GFeQVLUTJqob7S9HK4iaPpcjEDJIDuHqGlfsqBg== 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=+7/3fZ7ogIVnSz0COzEmm35LZFE3vMCvyxCRSfyMNEM=; b=Ep5BZUfNmI61/0LXIHwBtHDIZ/YeTZfz2JlEeQJykr+EIP6ieicyhr/6X4orXOb2ffsINoRycyBYgOl665G93MykW84OaiEJDdB417hXOvKy26e/UAQXAo4Wp1IVAOjro2kKqv8c0L4p4x3wD8yeivLZDadU6QZ7FcFyUJ9uStCSe7B+61Qi+z78KuLWe+9AHZCG6ZUFf0Y+McbEC5lHTr5bhSMVna7puqaJmh4UVWpezjQQh6S97j15aTRzuu5uysfGx+AJzEb3gqXXfYKIznvVEBniNoiRT+XbdHaobZN6JVBRhunr/0Y8PWOUvfffflGP5HKiydyXQZI5dbuGpQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=renesas.com; dmarc=pass action=none header.from=renesas.com; dkim=pass header.d=renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+7/3fZ7ogIVnSz0COzEmm35LZFE3vMCvyxCRSfyMNEM=; b=pZZenv6/dgvdZDu/Mm8Osv+3kp1CdAwdAkf11cBr16KwCyBQBHfABQYM5ljtvQPAh9Cf6e0HtFQgbU5FjGQca5SAPB9V0sEd/nCLRn0+zcaxFXqsVf5WkjXymWb6ctbPrqRTeSqDlwfSKcJkoCKdqRSdNbUlErFLqeE6mbF1QjU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=renesas.com; Received: from OSAPR01MB2178.jpnprd01.prod.outlook.com (2603:1096:603:1a::14) by TYCPR01MB9273.jpnprd01.prod.outlook.com (2603:1096:400:198::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.31; Tue, 14 Nov 2023 00:00:49 +0000 Received: from OSAPR01MB2178.jpnprd01.prod.outlook.com ([fe80::173f:d892:3d66:397d]) by OSAPR01MB2178.jpnprd01.prod.outlook.com ([fe80::173f:d892:3d66:397d%4]) with mapi id 15.20.6977.029; Tue, 14 Nov 2023 00:00:49 +0000 Message-ID: <871qcttd8v.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto To: Frank Rowand , Geert Uytterhoeven , Michael Turquette , Rob Herring , Stephen Boyd Cc: Rob Herring , devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Aymeric Aillet , Yusuke Goda In-Reply-To: <8734x9tda9.wl-kuninori.morimoto.gx@renesas.com> References: <8734x9tda9.wl-kuninori.morimoto.gx@renesas.com> Subject: [PATCH 1/4] of: add __of_device_is_status() and makes more generic status check User-Agent: Wanderlust/2.15.9 Emacs/27.1 Mule/6.0 Date: Tue, 14 Nov 2023 00:00:49 +0000 X-ClientProxiedBy: TY1PR01CA0194.jpnprd01.prod.outlook.com (2603:1096:403::24) To OSAPR01MB2178.jpnprd01.prod.outlook.com (2603:1096:603:1a::14) Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OSAPR01MB2178:EE_|TYCPR01MB9273:EE_ X-MS-Office365-Filtering-Correlation-Id: e95f9ccb-b609-4e00-d338-08dbe4a4c2c1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zzQg63B7tP50+cyvyhL8OvqZx0NuW6F67xUiUTkaXQMiz1k1x2wAYkgP9r4M+6a/1/ySx9muMyJSI9fXfY+YeFNmhS51HKHfdRpJaGb+WGW5ga3qRHrx+n5/EcRRSf4EVH9wXli0S3a1eFtBTmdQYY1J/iI9UE8mAi/p/E0zbNKPN8ZhBzvQL7s7lKFo1qhEKmq0uQHu+8kIq1UeHfDKq50XbnWIqkRRDclqYTsNFrAm9fcDb7mKrbUNbjaVnqw2wHua2pvPHxDZu2ggB6TsnsKoSAWx1NjREOtSctfLuNKOfSAE2oKUgwAvh/vyDIIYp3223ZoT/Zk/axxdU6rCm4DSVGhtMXqSbIFuH/XQDZ547EaycUa+mz8FcX5vMdHSkCr/a18oRzmzVRyUvL55uUf52vcx0WdWZ9ekehF9K0gyi6fTyApHwmIF3XCnw8G5gg3DESXhzP1SvnsW0djPd/xrcwwqSTPnsv3llVzmQOa7xmzJnUL4CQtsTWyq3OkoetVztInxMoRY2C6tceBV/6Nezz1OfbomPZ37TU+1lUlnfC5l83FGGFR2pvp8KWUtOQUq8Ol/xM/JZN7TItb4JZ2owv6UZV6Gan0NgAHc48NHgHoOp7mB/0miX72r3xKRjsUPTUr0CtoVSxfLz+xf5A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OSAPR01MB2178.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(376002)(136003)(366004)(346002)(396003)(230922051799003)(451199024)(1800799009)(186009)(64100799003)(26005)(107886003)(6506007)(52116002)(6512007)(2616005)(83380400001)(4326008)(7416002)(41300700001)(8936002)(5660300002)(2906002)(8676002)(6486002)(478600001)(316002)(110136005)(66476007)(66556008)(66946007)(54906003)(36756003)(86362001)(38100700002)(38350700005)(41533002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7Vw0dN8DdHccii7ykMYY3krtbshvWV892bCMgHVjAoaAIzs6iYixFect3b4GtsINc6wOz/kA+IWysmbsBtqpZglJsxGMHW5BZLDJa+vHHxQORnPlCYDZLxDkjWbm4WBPmlWRm8VkDTkHA8w19N0gw6OadY+gQRqPuYUAVaJ1RhLNON9QD3s+4uI062Pu7jv67JzxooFx1ax3oCj4x8o3ILaJ+q4IcqCx6mQZL1z27sFLruv+bPiIr0iGlx7EgyBGERLzwKFTYBKm6Fy+7bkIqZfpGCq8/0+OMY6BlZEqWvXizYmA9zeuTMs0UP4NwGuFKlXZ0S6lhF3muZXKokxu4+yH4q/A//zVrcE5aWtaWP2pkH3Mt7nFSw2rFRKyW9sC9MprMeJezM4qcnggErghCyIhA7OPif0oYuQjfLeX2pdWERTzosMaKzgUEa4k7IYAHhYpohHUIIr1G6BafSboHHPoFDix9vLpCYyx7IMjgNA7XsKPuVtkNdvm6u5c3cEmA4rWae7KeaL3k92o3UqjMEhoYyZflAM8CScfEuziQmCNGlLISyvyoOP35e2YEA7HuWH2JRFSdcpJU8oBUZplFE+OC0xRH0veBHHOA6V0fW8L/AuMVDDhj9SZLndiMchBnhhHmZ9FYTzPmNJCFJpLK3p5ljEg17G8dipnbGi9o/9WObovjs/oiHuPfCCyKPzGvtq6BfxWD+Y/XDisx0jSUFbnFHYhfNO4kU1ut+i5+iblVuyaxuocsJLvdgYxLyN0K2292XwmBJbXMZ81QjX/X3JTj59oJlFj80BaFt9QD28Ohlmlhe9+CpEmaQncGHDQ526WVcnrYpv2L/Mhv9paVuCJzXfWUtFSZgkig0CZw5EnkRoJOuKQleEO7BTAmRbhUGvFz++vyCFjQsURetakSpbeJwuLJ7+Mw/xEwhoXUmOvRsUGZZVjet9fMt/OyxSXeLaJAA0MJccJlG4SoLnvWfSuUI8IC2DPS0ApoBJ133IA1jX+a6yBy2/XdC8RpK5DyD/qloVtk7cOyF2Z9/1xAysF8cfzByOgvuMm77dHl9HXJzvERMmVawhZfzS5q5nTProSePVJBgB0ZJsiYDw8B3vYpHr9XY1vTR1cHjgRE5R/p7vN/W9362S80KjaH+heq6+qGu2VTDZaZiEeueP/IHMCuT/ZiW/y2JlXP2/lv3JonqLvbXhOaNGvP31SNWkUzceh0vomlTQxL7GFXWR0/5r8CszWx3l5YsnT3RYOdgqyiwGoBkKBhYrUS/14nQbnoeKxQKBcWunSodQgw17eUvm3E5ZYXJjT5PVmKk1r5kuFFlxxUu0xe/kCOkTikYunYXYxFKQlzmJKI8eXlRgxIlh4+ZaSGqgSbMvFeuy4hx7vrGZm6r7869eZMoAvxTidicpwPCJLEggo4b76lIwclVaF/p9jzPgkst1gEzd889wY+6ST1OQCEbRtoj1dcXJpKFzetJCFUAYSvUqGZ4mSyslkEne4t7lXCs/yK/Bw8V7+MEdQVHYUcvi1UrAhgKO71CZU8pw1SV6AbfAdpeoKGLGSowmXkR8ixV/ToXM6QARkF5556dz3x2DLp+FG1TN7lzDD+Rwlj876J0OaCEWJqpl4YuIiXgJf+MbjbosBVkc= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: e95f9ccb-b609-4e00-d338-08dbe4a4c2c1 X-MS-Exchange-CrossTenant-AuthSource: OSAPR01MB2178.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2023 00:00:49.7967 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: L9KmGV+jKCOZbYFOlhcxI5yJZGqjY2kXpPJsIxTfCKjW6n7y0v+swBaF9qBguW9RZfuGZ0VKUFRO9Z1pRxT8mBYX3/iwEtI3vSOy5jzWPlxn4lYUBDNm43xSWB+FWnTM X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB9273 Linux Kernel has __of_device_is_available() / __of_device_is_fail(), these are checking if the status was "okay" / "ok" / "fail" / "fail-". Add more generic __of_device_is_status() function for these. Signed-off-by: Kuninori Morimoto Tested-by: Yusuke Goda --- drivers/of/base.c | 53 ++++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index 8d93cb6ea9cd..d67cb650dcd6 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -415,15 +415,8 @@ int of_machine_is_compatible(const char *compat) } EXPORT_SYMBOL(of_machine_is_compatible); -/** - * __of_device_is_available - check if a device is available for use - * - * @device: Node to check for availability, with locks already held - * - * Return: True if the status property is absent or set to "okay" or "ok", - * false otherwise - */ -static bool __of_device_is_available(const struct device_node *device) +static bool __of_device_is_status(const struct device_node *device, + const char * const*strings, bool default_ret) { const char *status; int statlen; @@ -433,16 +426,41 @@ static bool __of_device_is_available(const struct device_node *device) status = __of_get_property(device, "status", &statlen); if (status == NULL) - return true; + return default_ret; if (statlen > 0) { - if (!strcmp(status, "okay") || !strcmp(status, "ok")) - return true; + while (*strings) { + unsigned int len = strlen(*strings); + + if ((*strings)[len - 1] == '-') { + if (!strncmp(status, *strings, len)) + return true; + } else { + if (!strcmp(status, *strings)) + return true; + } + strings++; + } } return false; } +/** + * __of_device_is_available - check if a device is available for use + * + * @device: Node to check for availability, with locks already held + * + * Return: True if the status property is absent or set to "okay" or "ok", + * false otherwise + */ +static bool __of_device_is_available(const struct device_node *device) +{ + static const char * const ok[] = {"okay", "ok", NULL}; + + return __of_device_is_status(device, ok, true); +} + /** * of_device_is_available - check if a device is available for use * @@ -474,16 +492,9 @@ EXPORT_SYMBOL(of_device_is_available); */ static bool __of_device_is_fail(const struct device_node *device) { - const char *status; - - if (!device) - return false; - - status = __of_get_property(device, "status", NULL); - if (status == NULL) - return false; + static const char * const fail[] = {"fail", "fail-", NULL}; - return !strcmp(status, "fail") || !strncmp(status, "fail-", 5); + return __of_device_is_status(device, fail, false); } /** From patchwork Tue Nov 14 00:00:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 1863415 Return-Path: X-Original-To: incoming-dt@patchwork.ozlabs.org Delivered-To: patchwork-incoming-dt@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=renesas.com header.i=@renesas.com header.a=rsa-sha256 header.s=selector1 header.b=cgT1oSVR; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=147.75.199.223; helo=ny.mirrors.kernel.org; envelope-from=devicetree+bounces-15516-incoming-dt=patchwork.ozlabs.org@vger.kernel.org; receiver=patchwork.ozlabs.org) Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4STmfX4XT5z1yRr for ; Tue, 14 Nov 2023 11:01:08 +1100 (AEDT) Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 63FC51C209FF for ; Tue, 14 Nov 2023 00:01:06 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4C4924407; Tue, 14 Nov 2023 00:01:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="cgT1oSVR" X-Original-To: devicetree@vger.kernel.org Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3F4D73D6C; Tue, 14 Nov 2023 00:01:03 +0000 (UTC) Received: from JPN01-OS0-obe.outbound.protection.outlook.com (mail-os0jpn01on2116.outbound.protection.outlook.com [40.107.113.116]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CE99519E; Mon, 13 Nov 2023 16:01:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=erV4aNeomo1hrOBIzA3VBtpU9S88VVGXewuZ5PvjsAE8qYKWJPzl0Z2jEGTS14KD0KP9Td+4//vFN1qVAuTJtjx999PSptuuN1jA4JeEkCjq7JKNgLMRH82GAsYnE6CVql1CvBMzptGjvfAU8/u/hEnm+wHSPq1fvfKkjX5I/XckHZRko2WOgt55RYpNuJtE9j29b04BGB1YKFebyiqQRQs+BsXktKhsNs6XniN8wgC3BZcAGrz+JNqQlmGYEqhyR7hpaYmC7gKd2vTp6vMEutKBj6VZbmj7GLp/QLREj02eXIEWASi3bR79Wc1UOApl/cQTBVhK5X+uiy7zxyCHWQ== 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=kLWjkKQoXYGsPpMNV2hSaxo7RxLYAnl30h7J7U6Rneg=; b=aJA/vXYr8uLseajweX90RxVEIBF94PSpR6yIQgvWAzzJihms7iO2am+8SMzkZUK2YTG2a4j/BK2pBDkHNRaJyqPKGMQkRelcexkx8IYgtLSwHOcbpYifCmA3FQgSmerpLcKr6VC4TEYZaf7zm958SfeoKAQj6AGL78+Fv0IrmmOtxDVbrc8VgA0UCoa4Y51Q43P8svv9qvaWYMrI7n89fzQznAUn908QXlk6E+89H/p5sEYrNWfvzCdhCWVAjbjvEXSX3+3PfMNlw1hr0sCez4UDp/RJPh7J6/sWxMvVyQAt72YHWNtxr3k2vjSaFAGpO3ciK1TRfHalZ4G2vBQ0sg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=renesas.com; dmarc=pass action=none header.from=renesas.com; dkim=pass header.d=renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kLWjkKQoXYGsPpMNV2hSaxo7RxLYAnl30h7J7U6Rneg=; b=cgT1oSVRP8WIXVPwW+3yRckKHcdTsl+iFP7kao7JeIdEf3rEp4ir8iwOoYwGVIjgtoiAEp2z3FG69iYUwM3dc8TxlkMTbDat+/wBYlCH8KVWm4xkFH9jraIsWAQqBP4fNFF6t8uX2vsy9cBH23vzlIVFO6Y6Z/VaUw5Wb037hGE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=renesas.com; Received: from OSAPR01MB2178.jpnprd01.prod.outlook.com (2603:1096:603:1a::14) by TYCPR01MB9273.jpnprd01.prod.outlook.com (2603:1096:400:198::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.31; Tue, 14 Nov 2023 00:00:58 +0000 Received: from OSAPR01MB2178.jpnprd01.prod.outlook.com ([fe80::173f:d892:3d66:397d]) by OSAPR01MB2178.jpnprd01.prod.outlook.com ([fe80::173f:d892:3d66:397d%4]) with mapi id 15.20.6977.029; Tue, 14 Nov 2023 00:00:57 +0000 Message-ID: <87zfzhryo7.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto To: Frank Rowand , Geert Uytterhoeven , Michael Turquette , Rob Herring , Stephen Boyd Cc: Rob Herring , devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Aymeric Aillet , Yusuke Goda In-Reply-To: <8734x9tda9.wl-kuninori.morimoto.gx@renesas.com> References: <8734x9tda9.wl-kuninori.morimoto.gx@renesas.com> Subject: [PATCH 2/4] of: add __of_get_next_status_child() and makes more generic of_get_next User-Agent: Wanderlust/2.15.9 Emacs/27.1 Mule/6.0 Date: Tue, 14 Nov 2023 00:00:56 +0000 X-ClientProxiedBy: TYCP286CA0008.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:26c::15) To OSAPR01MB2178.jpnprd01.prod.outlook.com (2603:1096:603:1a::14) Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OSAPR01MB2178:EE_|TYCPR01MB9273:EE_ X-MS-Office365-Filtering-Correlation-Id: 449dbbe6-908e-4df3-76be-08dbe4a4c735 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zQWerdLcJURadBxGTi1lW63lhpK42k6j/HrfZrqHI49sfXeJYz0xJ650AKAm1GokqY79GvCGeVi/rSXJZyDDmdGlvdE5qwccBKNXmmRe3DQScN2PQCs0DMeINrGchxETB+v9VUMnHl4Vg294BifyMK5G8G9xAW63ukzkFvmJfLqY2wPTtteOKivNFHS6BARqR8JN2w/B+H+64fVuNVAr3ky+wqMRzejR6AMXsnqLFQBGjLDC5at9TAoYVVn/kDrXwF5HouS/+/hB2ResFcCs2KCri83XdGnO5aVJmFHs89M/PtstHAXOFL0Qelwey+nxzfCoMNgaWnct3iKPfCgFp0vbnUlePAER6JhZ4V+L3LbQlKKYO4PIrRAUgpDO6QdvbPSQh8oG7806AFYYKVISsEZBLxXKLBBq8jsGegrAfx+3QJSLV+ZNx0aq5L6sZea5K9cMzdxgBAasOouobuV6RlnaB4dCP9KGRhU8C+4jyUgNI5SuSf0ZxEvEkgp+ppl9A4tL4M4x2lGPrT4jKMhfm0GCW9XRhDcJbUikIK7ObioutLfwWXPyptptuhNNRPsbQiTmqDTt34t4Uq0GROHzPxin71JulU3UFHezAwEW+BlSzidkEy+dgFq5z720yrlgT4KX/UD4QhKf3Eo7XVvN+A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OSAPR01MB2178.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(376002)(136003)(366004)(346002)(396003)(230922051799003)(451199024)(1800799009)(186009)(64100799003)(26005)(107886003)(6506007)(52116002)(6512007)(2616005)(83380400001)(4326008)(7416002)(41300700001)(8936002)(5660300002)(2906002)(8676002)(6486002)(478600001)(316002)(110136005)(66476007)(66556008)(66946007)(54906003)(36756003)(86362001)(38100700002)(38350700005)(41533002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 42yFSKAw/15zR2NnhB5kYJHBhnuV2KoG1VfCCO96pOareYF3prR1z4gpg89a/OP1jViP76NpUId+JfE0dcrED7PqPPiMn101hVEvATgrwIySUv3iYDeWDHIw8uEm0yl2bv+YIYhMUzi9lWjJ3sshQfun+Ocl6LPephgBvoxA+aZ1cPlFoG9cR2fRFawjz/PsUuSOqwrctuK5DAzVHlUDV7ljz8mWTEFaGPUR9m49GpbUnTzQy98mq1PFzlYdc5Fz8weNSXXxRppFc6LHGuk5qjfw1O6p0ODpIsjyDSfdmRHoxcnFZYuIQTnphZQTidvj9NHUWbib872JhmKoNzZD9pSvBgajeYBNIzi2BGjFkwS66nAReWdX+L1Sn9U3JFrN35mQg0NEjnyH9SC54SlNONIyv7AwPXDGjrNBOzhoYG5QSY71kQomZwxp1dTwpKZa+uHeyv1/Te4oQo83s47IX2pNBRfXHQZ0C8RLscIQ8ACGtWDjrDdV8GttyjLLczq5Qv03iUkruJrbX5Ex17LwYoWzZ7ZJT57rGEtyXjpbj7twceUNLLlQZY3wmMODbNMn3mWkbhjQYn61yDgZLK/+n1culYBDGpX/RNNOA/75ytxy7somSxyNDiqS3jBOjhnb4aeJq4Aere7VYKgqOCzmqlsrJwB/UIylOf8/lOQVZuLrC8NkwngKdlO02TB6UDgCntdtnP6hayzHzWbiF3uhvz0AH/q8TD/AMGjqOIwMsvdjOBJE/X6YhyNWd2mY6wAP7l7QBGKnEnvArOzDVIIbeg2HyG8oGO4LwEbDE/FN7wM//6s/Z9xj8JUjY8z3luQBp36W6cMfiJHHfxhKlJhEF0ua8Tt47nru4VosL2OWpxhoccfeMtGDsTOxd4wsYkK4a+Eq7pFxxjhDsA354+bmKjo+WVgj6nGVGvXgbL9xcv6P5oOZeqawOLtNHurmMsaN3SqglgiDe1FoZklxxIY5nkBrAzv6iIX+aDZ31tkkSktytDAmU+r272SfyPL8/5x6fp/qVAYPvqgTiyi49UCKNMmn9ssBxhB0xBtVo7hivjxgVGC1JiQ9thBHbmPbW61b5z20WqZCaD+iuJ2+4F4fwgRT45jj6MG5Yz+Ij5pzIJlUnKklc3Q4SaLtm8i0vTiuc+oIJLfvYBGf0U8aBb8wEqG3Ixd9Tlwn72P8kQUy9XyUC2C1WB5pPLqqfxSDrhJnWvxGFdb1b9TVsjSR2rTUyx/2OVi3fEiknJS2HbIbiuRze/3NupJ25cTbxCn1tjn0EF+ThEGizSpgwcl7BiQxD0tnn7+MVvWse95n1hPOHCrGdBajwSXkOuAIJ5kfluk8w0L14g4TuXGl7zU0brkc2N1SVZBKCspdVP2r5mGQxvPb8UJ875Hhj/7r0dWcF+v7DSEnrFD9Rv30j8nwNH3SophU0kVjR8uTSPvBVN6VWIcgKhBYRNv6XY2I/4YASFqTNMD1ct7ED3qxXcWxuwAkiL+ehrqxLXaLtEOLRvL76AnHe0gzvhBJ1rgRtvj2lEmKbQV0+5GkgJ2iDkGZ+0edAjKQwaafQNTUldUu0Fkd/sfxAO7oWDResoVBRXuAg5WJ8bU5iD0AyhJBGL/WagIm3HYC6xbowZDXM47Yhra2AM0= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: 449dbbe6-908e-4df3-76be-08dbe4a4c735 X-MS-Exchange-CrossTenant-AuthSource: OSAPR01MB2178.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2023 00:00:57.2506 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: NB+H3h5dHl82GTVT6EAfsn1PVwEYq/yTzgRZciyduG1Q7BFm0nNPNrtLWa+7cUHsWsyh+H2j9zmBBQomPh7JMMDFGu9ROuEql16MUTILCuGGjMGh0dZBcA7Cw+ptmvk2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB9273 Linux Kernel has of_get_next_available_child(). Add more generic __of_get_next_status_child() to enable to use same logic for other status. Signed-off-by: Kuninori Morimoto Tested-by: Yusuke Goda --- drivers/of/base.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index d67cb650dcd6..f0b63e195f66 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -608,16 +608,9 @@ struct device_node *of_get_next_child(const struct device_node *node, } EXPORT_SYMBOL(of_get_next_child); -/** - * of_get_next_available_child - Find the next available child node - * @node: parent node - * @prev: previous child of the parent node, or NULL to get first - * - * This function is like of_get_next_child(), except that it - * automatically skips any disabled nodes (i.e. status = "disabled"). - */ -struct device_node *of_get_next_available_child(const struct device_node *node, - struct device_node *prev) +static struct device_node *__of_get_next_status_child(const struct device_node *node, + struct device_node *prev, + bool (*checker)(const struct device_node *)) { struct device_node *next; unsigned long flags; @@ -628,7 +621,7 @@ struct device_node *of_get_next_available_child(const struct device_node *node, raw_spin_lock_irqsave(&devtree_lock, flags); next = prev ? prev->sibling : node->child; for (; next; next = next->sibling) { - if (!__of_device_is_available(next)) + if (!checker(next)) continue; if (of_node_get(next)) break; @@ -637,6 +630,20 @@ struct device_node *of_get_next_available_child(const struct device_node *node, raw_spin_unlock_irqrestore(&devtree_lock, flags); return next; } + +/** + * of_get_next_available_child - Find the next available child node + * @node: parent node + * @prev: previous child of the parent node, or NULL to get first + * + * This function is like of_get_next_child(), except that it + * automatically skips any disabled nodes (i.e. status = "disabled"). + */ +struct device_node *of_get_next_available_child(const struct device_node *node, + struct device_node *prev) +{ + return __of_get_next_status_child(node, prev, __of_device_is_available); +} EXPORT_SYMBOL(of_get_next_available_child); /** From patchwork Tue Nov 14 00:01:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 1863416 Return-Path: X-Original-To: incoming-dt@patchwork.ozlabs.org Delivered-To: patchwork-incoming-dt@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=renesas.com header.i=@renesas.com header.a=rsa-sha256 header.s=selector1 header.b=DIOwvgMO; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=147.75.48.161; helo=sy.mirrors.kernel.org; envelope-from=devicetree+bounces-15517-incoming-dt=patchwork.ozlabs.org@vger.kernel.org; receiver=patchwork.ozlabs.org) Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4STmfk6m3bz1yR8 for ; Tue, 14 Nov 2023 11:01:18 +1100 (AEDT) Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 81DACB20A3B for ; Tue, 14 Nov 2023 00:01:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 048402CA7; Tue, 14 Nov 2023 00:01:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="DIOwvgMO" X-Original-To: devicetree@vger.kernel.org Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0DA214407; Tue, 14 Nov 2023 00:01:11 +0000 (UTC) Received: from JPN01-OS0-obe.outbound.protection.outlook.com (mail-os0jpn01on2131.outbound.protection.outlook.com [40.107.113.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4FF2BD53; Mon, 13 Nov 2023 16:01:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S/+T+XBNIOE7Bp4UzLIDvDqveSm285SBnS2rh2ZknQtpW6oS+O546wXN7TiispaPqSbfjnWFOU6Jl58IGlf+17JrSBAn4zLF7drLNLivUBntacWbwzzhK2nO7X6Bj4s3ck99ix9a0KxA1Gpy5tc6a8WIc72wf1A8kV9Cr7j1qyCjrrZmhHplk3c7k4u+YgEb2NojX/u5PoMvGOwo92VRPwv4/MkCRxXlsX8e5MYJrTeVKR4isf03WuAkLRG4UWPV0ZgvxRQ6cSZSEh2iClkQbQHJWGTb3xWkWLro1I7SLCGYQd31daQbECiTVlE3ST4Du43ImgHrrZ7uwaTOj2kenA== 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=2OqEDSJLyPuILeooM4pYtHZ6Adusrw5XOEQUy2fm7A8=; b=azIQ6XQyrNBf/Asy6BDmaYbKWpVXyMiTnroAi4X4VV1uUhhpoxGViGOFkZoY1cAKvatMFkvOQ8GcqPRRalU1o2j2Zs07xKYvrUAKzEHxnZqYhvGSSRlaaDBdhgTYcis62MEonB///gkdk7EXR18oG+0EERxk5J4/6iO/xAdnDIaO7RvradHKLtSzXTzLWIUnK/BKnvaIkL5HZyMXQts6JYcNNYRX7B9IPXs+XH3Ipq69onUmT5GdOZ/YTrn9eC9FjgiO2pJfgO6MKfDSjk4kCtOpEjEuS8/u/OnCCwMlCPKfisUePMtSLJ1Pg31dAECwPYKLooka8JW6rYL/jt4eTg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=renesas.com; dmarc=pass action=none header.from=renesas.com; dkim=pass header.d=renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2OqEDSJLyPuILeooM4pYtHZ6Adusrw5XOEQUy2fm7A8=; b=DIOwvgMO4YUZEI6eXOMl6NppnMNa+ZS0DE9/EYz6YYQbfSwY8sPsyJIoIhgqLn+ZlUKBBbuTcAkLn2axzoHQZtwuIMXI5dFe4FiLxbcBWgXeWlFY9CALJq4sSLfZTxr5tAc23xYnkxas0kUDhiVMXDEz3K6zydrcvfwpp/QiC4k= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=renesas.com; Received: from OSAPR01MB2178.jpnprd01.prod.outlook.com (2603:1096:603:1a::14) by TYCPR01MB9273.jpnprd01.prod.outlook.com (2603:1096:400:198::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.31; Tue, 14 Nov 2023 00:01:07 +0000 Received: from OSAPR01MB2178.jpnprd01.prod.outlook.com ([fe80::173f:d892:3d66:397d]) by OSAPR01MB2178.jpnprd01.prod.outlook.com ([fe80::173f:d892:3d66:397d%4]) with mapi id 15.20.6977.029; Tue, 14 Nov 2023 00:01:07 +0000 Message-ID: <87y1f1rynx.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto To: Frank Rowand , Geert Uytterhoeven , Michael Turquette , Rob Herring , Stephen Boyd Cc: Rob Herring , devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Aymeric Aillet , Yusuke Goda In-Reply-To: <8734x9tda9.wl-kuninori.morimoto.gx@renesas.com> References: <8734x9tda9.wl-kuninori.morimoto.gx@renesas.com> Subject: [PATCH 3/4] of: add for_each_reserved_child_of_node() User-Agent: Wanderlust/2.15.9 Emacs/27.1 Mule/6.0 Date: Tue, 14 Nov 2023 00:01:06 +0000 X-ClientProxiedBy: TYCPR01CA0173.jpnprd01.prod.outlook.com (2603:1096:400:2b2::11) To OSAPR01MB2178.jpnprd01.prod.outlook.com (2603:1096:603:1a::14) Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OSAPR01MB2178:EE_|TYCPR01MB9273:EE_ X-MS-Office365-Filtering-Correlation-Id: 86d3f339-2e34-4040-a6ab-08dbe4a4cd1a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IYLIZEsmHeTyLOnkAXMJPktGwOFSjJhnUD6/EARLUWjmPWjf9UroIB448jgM0rEmWMMu2T8V/j8LhMtWaOvIkT1+1VLWFCUipH2meIwLmdcbFIwhe4dT6eIXIPjAj6KZUABT/a6RjdKCoHdc3XpYdoj/GWz+ruzct/ukXs9exJXFaOB4Px4cjPj9apAvIqnRb+q87A33Fa4KA57/czs/5XJdHrjaDgPGsA8ZVzp++J+cQvd83oWz9QIZeoCiLBwCMseUMrWchALLu3O/d6w3Y4vbGwxEmpMeqiXeNCGFDkQjOe6kBLg6Q6Ialk9b1oC9YvPFFIv5jNFypkdAITjh7aNHorBzfz5BzeCNPcStQpm8tFjkxzAJzS28E5D73AvKm630tSxH2b7vVzp2xypUUkkD8h1uJzMXjRE0yvM9SjO0zYaTLxBv16Fe4b/G9dso77iccEOXf9Oo2Dlj6H3vdiJaIozkH71UQDswhz3gnsvib8EPSfh2tYCMmIe8owqFup/xdpCvkuoEdKhVUFyO/PZPQxLjZvlfxDCZQzfwLT86vMct3FVVACZaFPRooV0hDNYzJ0tNwVdARInBKWhUAQajB7aEQLR4Zq120+xS5zDBbsJwVqLLqtoxReYmTBx5 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OSAPR01MB2178.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(376002)(136003)(366004)(346002)(396003)(230922051799003)(451199024)(1800799009)(186009)(64100799003)(26005)(107886003)(6506007)(52116002)(6512007)(2616005)(83380400001)(4326008)(7416002)(41300700001)(8936002)(5660300002)(2906002)(8676002)(6486002)(478600001)(316002)(110136005)(66476007)(66556008)(66946007)(54906003)(36756003)(86362001)(38100700002)(38350700005);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: oSAUmPgCyqkseuMM/6KJG2IqkJBTTlBFS4p1WRVLd/6k2cPed0W+o95HFAd+NEvPE3FIphjvTpARMDASfcwdx4CY2knLvvBd9iHc75VVYdEN9jhGJtt0pildym2jn7havwa6qJd2Hr2u3KcbTBRW5VKuaCj7+CV7fdVWcQ0LSuK3OepQBcDairCaHwAqKmcQ2Z+MmDKtwTp4Ws1qn0/g0gG82hZanaolk8Ue0ew6EmYfCSpie+fn2ay9PPuyHh0opjjaT6ZN2mO7N5B16/WIpGFdJb2fR99hZOg9qBzjq3OIQrSP5zKBlWsxtNCPOZXvlG6S72SfeyVoQYoqK3vIfTgIQsr1QG9paMxFOXv6ppncPx4Q6HK4fb31ZZy7PLRL1rTztPe00bu3UlQK/rMho80A3JGPblyVRKvVj2sEDl2J4oOyrbcmHh42RCRKbmSfUbLVaFzXXW6vub23JNAqJDkcRJyn363rl0BP1d1S1uTqQqpMXHTq/YQsMGGhXS4/gupmyiUHhSgsD2ZR7KdVPOIdsvRUBAQBAiLyBHAryQxp4m/oXGCN9ErwQs1fWCNIiIx3J8d1VxZhLreZu8ZmfCMTtEQNVztNI5TcR9Py7extSPq1E3T6cMHz6/7nBNTK2NOd0isdAcmFbOh9rXxiEl1andWDtN7N9AYGsUlXq7hl4DwVAIuk0Av69IYVsRbUasEi+PmhQWO8ZA8B6t5XA1A62lDlkiRRS9IvGmT5Jfaarno7JYHzy0PPiIn/BE+nOTop51jathZ0vIRSw3PrrbIem5g8ITrYPHyutFkAE/hnYKA90lZXw7Tw0vPdSv6zrbQRkPccitmqk5DYvnO5SFfRKjx0aiJp4TOVrNyAmG6JsysezJQR3Sl0r1cjDfwSv40zHjQlqlw4VUDP4tOQ+/qwF99vtN1PkBokhGxR7pGMOe9jLY5iIpEXkuUHF8755eSs9eBzuV5WNkzhLolXP3+nXvFItS5Nb15VsrU/u58VSl1xBPNSSjS66iPcGkXAKwyIGPMIBchUWAhFBPxurTHTbnqH1F1athPcJWXZLPug0AXq1kcRGmkkem8N4n4ne4+m73WY21Kl2+HnU8gHIIznJxuEuXXWJ6GaSUgk3J9la7PlKXeBbGFFaXt0H6uILHGlOb5HIOSv/a+Rhpb8xCcS//nuSPAt6KWwXBeGrHo/GGIDqUw5lYt9PKxxug2bfcxC9ius6bO7GnRco+2EJ44pA8H3bqtxs4NdzRAvbgWCWTzWXdgYhciK1XpNCJ9g9WprbPZKurypv9Kv6zvBDY/e+NMnIzkLr7MBhNgs1TaSs4Z9yzxygTcpn7Hfucbkf35A5CZC9/PUKWnIYa6AMYWg1u5HoHEIlTo4u48kldbCv1zfuQGAQwwn6suFVQD4/OvbQC6SQsyCWs0FdUeF549MZFQpRnOtrBWAzRE2/vCbX+A9OY9G0nEoO3HjNb6kqoX5Qqr/Ap+fK0zeenn0RdOvqjCwWUTaw40MFedTDId4juPcKgYRulYZZPudnpZM0m9ggp20GqHJXCT+hZ9UmvbZ++cPpV3zXVxci9gwhjejV9wAIWeUUeIcQF/we2v3ZBckV16CQXbsTCzuFEY7aKCewUnh79EBev2iKLuZAGE= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86d3f339-2e34-4040-a6ab-08dbe4a4cd1a X-MS-Exchange-CrossTenant-AuthSource: OSAPR01MB2178.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2023 00:01:07.0919 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: uuMjmnnM+GZXvHPDzMXFzCT09nMerMUhkRyN282oTYeERMBjAjWx4kE6jK3VLqjrONLSwmobcFfFCbll1IjibKPJQ5vlrjiEhIAht5laayJiQwrEgzwiQdVyy3HLTiGQ X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB9273 We would like to use for_each loop for status = "reserved" nodes. Add for_each_reserved_child_of_node() for it. Signed-off-by: Kuninori Morimoto Tested-by: Yusuke Goda --- drivers/of/base.c | 29 +++++++++++++++++++++++++++++ include/linux/of.h | 11 +++++++++++ 2 files changed, 40 insertions(+) diff --git a/drivers/of/base.c b/drivers/of/base.c index f0b63e195f66..341bc45bef05 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -461,6 +461,20 @@ static bool __of_device_is_available(const struct device_node *device) return __of_device_is_status(device, ok, true); } +/** + * __of_device_is_reserved - check if a device is reserved + * + * @device: Node to check for availability, with locks already held + * + * Return: True if the status property is set to "reserved", false otherwise + */ +static bool __of_device_is_reserved(const struct device_node *device) +{ + static const char * const reserved[] = {"reserved", NULL}; + + return __of_device_is_status(device, reserved, false); +} + /** * of_device_is_available - check if a device is available for use * @@ -646,6 +660,21 @@ struct device_node *of_get_next_available_child(const struct device_node *node, } EXPORT_SYMBOL(of_get_next_available_child); +/** + * of_get_next_reserved_child - Find the next reserved child node + * @node: parent node + * @prev: previous child of the parent node, or NULL to get first + * + * This function is like of_get_next_child(), except that it + * automatically skips any disabled nodes (i.e. status = "disabled"). + */ +struct device_node *of_get_next_reserved_child(const struct device_node *node, + struct device_node *prev) +{ + return __of_get_next_status_child(node, prev, __of_device_is_reserved); +} +EXPORT_SYMBOL(of_get_next_reserved_child); + /** * of_get_next_cpu_node - Iterate on cpu nodes * @prev: previous child of the /cpus node, or NULL to get first diff --git a/include/linux/of.h b/include/linux/of.h index 6a9ddf20e79a..331e05918f11 100644 --- a/include/linux/of.h +++ b/include/linux/of.h @@ -294,6 +294,8 @@ extern struct device_node *of_get_next_child(const struct device_node *node, struct device_node *prev); extern struct device_node *of_get_next_available_child( const struct device_node *node, struct device_node *prev); +extern struct device_node *of_get_next_reserved_child( + const struct device_node *node, struct device_node *prev); extern struct device_node *of_get_compatible_child(const struct device_node *parent, const char *compatible); @@ -541,6 +543,12 @@ static inline struct device_node *of_get_next_available_child( return NULL; } +static inline struct device_node *of_get_next_reserved_child( + const struct device_node *node, struct device_node *prev) +{ + return NULL; +} + static inline struct device_node *of_find_node_with_property( struct device_node *from, const char *prop_name) { @@ -1431,6 +1439,9 @@ static inline int of_property_read_s32(const struct device_node *np, #define for_each_available_child_of_node(parent, child) \ for (child = of_get_next_available_child(parent, NULL); child != NULL; \ child = of_get_next_available_child(parent, child)) +#define for_each_reserved_child_of_node(parent, child) \ + for (child = of_get_next_reserved_child(parent, NULL); child != NULL; \ + child = of_get_next_reserved_child(parent, child)) #define for_each_of_cpu_node(cpu) \ for (cpu = of_get_next_cpu_node(NULL); cpu != NULL; \