From patchwork Mon Dec 18 06:46:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 1877231 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=kk948c3y; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=2604:1380:45e3:2400::1; helo=sv.mirrors.kernel.org; envelope-from=devicetree+bounces-26418-incoming-dt=patchwork.ozlabs.org@vger.kernel.org; receiver=patchwork.ozlabs.org) Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [IPv6:2604:1380:45e3:2400::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 4Str321sDWz23p3 for ; Mon, 18 Dec 2023 17:46:54 +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 sv.mirrors.kernel.org (Postfix) with ESMTPS id A348B282B33 for ; Mon, 18 Dec 2023 06:46:52 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9E7F96FD0; Mon, 18 Dec 2023 06:46:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="kk948c3y" X-Original-To: devicetree@vger.kernel.org Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01on2110.outbound.protection.outlook.com [40.107.114.110]) (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 33E4D6FCB; Mon, 18 Dec 2023 06:46:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gv3Xn2br0LXbv5Pqs3lvHUvrAZk9CUtQ44KuZ+uwLfSW3b77TLHWtTPGgQJHHZUbAfU9R9ZEAgO0/Zog6L/NXFhwzzEFpd93su0f81NASH1WwTCbeC12VoBKmPm/qnlHR423QnJAen1yIB//ltHYi6hECj3wDErmWwh9q0zZ6pn5urParbpYsALS9hd23Y3LIc9RBL01mGfPO/JEthan50vcMSdmicjKEcr2Ac1vpqQ+u920pjMQEG2eJpFqmL2uK9P0rFTYeUy6StX9QlQF2M6+MVitAJfqoCQ+AnEAAanDCV7fCX1tocidnzm5Vw8+JGA7KFX7cKoRrVPeKVuYvg== 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=1XQHWRTVIn3IR/BVQKSU7VmzH27RAnJGrU21XEgwWMw=; b=ZrVtdrUVj+22qvDzDKJUAxYnKAQbUmZEhi0u50KCYXURGsLsInNy4w8vmTcMwQqLJMoXkGl54BEEXlZiT81PUE055UlA1/cWi/vVFdPSJkBw8O719eUKlMtW4erx6JJZZH2SkBMnWRyv1qUziZgaT96YPzqvnm8DB31xCyJCfp9R18jX3o3dTi4c1hsthpVRDzGzwU05G6DDw3RYCfAQMBxGbERkZy0oipi+X//Qm+5TzWQxg76OIYg+YsausZkkkvplaaWECkexHcCgB9gfnc8TuWNb0qjJw+GOpYZK1WDUJ/G30l/1rkrUaqwjCeNcdFiPV3XUcYrprg2Zcc3CPw== 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=1XQHWRTVIn3IR/BVQKSU7VmzH27RAnJGrU21XEgwWMw=; b=kk948c3y6l3dD4iK6g5YSbjlma29/VcMClzIYhWV8Bk5NSnSLDDJ/jw9/U7D8UnQqExocYgEsUOTzqGDyyFNwxSJ7kKJDR1cxnduTbRa2DjDPD/eXY+Vd0+z4H1pK9Vsk08GYs35FdqzZLQXA5cRqpM4uCH9VpYAQWiJN/tonHI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=renesas.com; Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) by TYWPR01MB8348.jpnprd01.prod.outlook.com (2603:1096:400:177::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7113.15; Mon, 18 Dec 2023 06:46:41 +0000 Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::eadb:ae7b:5fed:8377]) by TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::eadb:ae7b:5fed:8377%5]) with mapi id 15.20.7113.010; Mon, 18 Dec 2023 06:46:41 +0000 Message-ID: <87msu8m2id.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH v5 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 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: <87o7eom2jn.wl-kuninori.morimoto.gx@renesas.com> References: <87o7eom2jn.wl-kuninori.morimoto.gx@renesas.com> Date: Mon, 18 Dec 2023 06:46:40 +0000 X-ClientProxiedBy: TYCP286CA0031.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29d::6) To TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) 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: TYCPR01MB10914:EE_|TYWPR01MB8348:EE_ X-MS-Office365-Filtering-Correlation-Id: 3c1e0674-6980-464f-451c-08dbff95177a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6v6UMsFkgBMDGsVtz5Nif7dwhE12f8f7003ok5Qmu9znw2BKbOWMFXtAY9HTDSy5JYZm5Yn7tN66jGfMbyItx0gPd0dyeDg5lAMtSXvZad/h+dX5dXKlvHBBiJe/L+MsUuXZ87O9z0yJClfn0NqzqOL0/stUSUJFQkdu4N8MBsjWfN95ea72CTrshB/WnRHAZLGue/0dHcWPcighuz8jMgfnlRD172XWbi0qVU/gEVQXtqjEt3AfVULrn9jr0Xirm0SVkkOGHIf19Sw75SBo5yF/Fy+t+dZcjlALDhj/p9tT+LRTB4sfRPUxnko93bOgo6c5Rgr3p0VjEpH/H+5GeRcNvp4PHrKN1bntjRVHagiYXWctdt6F+/5bYihn+Uasd6SqWr99XCKUmuUim9gilFFAohm9OYLarWCHSudaFHYlz21Lgvq5JF729rYt0gs6tumygWU3M+6q9t2vZLjRl01BjtK1W8NS46ezGh7aoDunZP2+le7sPcvaHr94MkleEBkFG1W1UaeeKR/0q5Y5QIuweDOhLWvYTih5rjPro0Zy/7Ke5sqB7+O5q83rbaUbAyKpoqoOz8m8zRClLZdjW6+AduFCtaC9s061dWaya2N5eCVRMCE+3xX3Km6fsc6TcnJ8XRLhS2pBVdGDHtMZnQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB10914.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(346002)(39860400002)(136003)(376002)(366004)(230922051799003)(186009)(1800799012)(64100799003)(451199024)(66556008)(110136005)(41300700001)(54906003)(316002)(66476007)(52116002)(6512007)(6506007)(66946007)(2906002)(6486002)(86362001)(8936002)(2616005)(8676002)(478600001)(107886003)(38100700002)(26005)(4326008)(7416002)(36756003)(83380400001)(38350700005)(5660300002)(41533002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: B+BwJ5hzJkNU/HBCfQ/B5KZiXj7FI27XjuXZhzDjutJRm7ymoi1B3/+z3Qnf49FG8swjpguOFMGSuDMDkJnktPu71Y2Fgu0BJo0cqZu/ODgNQYhNkWAEDw90TqDiz1I1sIa5Vs022SbQoANsJhLHGO2lUyKZN8E4OkdBGGFd6NkaARYyFmzMJTlm55uyzBIyOwUcax/Ra3VRiWj14FCeV9Jycukui+/0vuIJfxSRwjqKFqHmaI22xJ+Qi4r9JfQ56K48AEsTiQkGwLT28T5OgoVKjDu29VhGg2sZjJaIcUoY9hOEoFI/2oEgKly+1CkOxVsubsyO79SlrKeUnDG5883+FPhnNY+WFkcC7r0zADJZRIZMEKQR9G7XZgrwUAtIrCieO0/o4JBbxCjPpuxexVGMBjsf75tPBl5XRE0az+MhSkZuSVj0hRWumU8xsJ+jGCBIZsQKWUpUdTE8Xi+41w2SgRaBfxBogSXsUi1Js4+GEkPsWGS/r7hQXa3bs3bDx1XdlR9mQNrox75vBUQfQhWJy6/458P1eXA1kAkFJ+csYstlMd1epHnHVwydzOu/BPtiORRP4HByN1llebVv6NLC3XhlteXia3CCzsovc7kDYYiGtl+yu+/hnGDGNcq2kdEVr5oR1VZeGwYaiTeEZ1VAVvRyRT2QgiGYV1p2ugY8fp8bgMyGCd+JekiqGnaLcGEhjchp8gHiEsQFAfEfTzR5zZUJgYwyBtrC295GknQq0cgn/VsL48AdBtSeqa8qFtov+Zonp1T8TeYmVJvdfjnmxsV6g45kcYpcIBfQuzzvNK5lYLOssM5K4MOJ+r03Dj57tO3NUXXmItTl02pDbsiPXJ5dOZdS6OIdal8DwOr6iNBQCnKpaen4SEI+7uMYtNmDoZUI6H1E/6diZ7ox29Gf6iCdXA6PtpVSzIpPpQkFKFaDP9NsdnGWALrhqfFeBOq2KA8T3ghCLUIJ58KtS3l94n4IRdidlG6Z5GoXAu+lHBSzwJpLX1T8aaBmNiG583z66qqV7bp/hh8NDNBmKG/gVP9QlWGs1s0Rjt2l37OduDeROYmNyQ1qd3Pmb1hqpcQfSWHYtU0DIek9aDr0M1GflmTmupmKl4hI70Szz43gsWSU8nGNKzvo5osfhaPYw6UAhdQ/1zSadky58tUKMxeiFI5bRvYuEPsF83WLDRAqHPzbAAFud2lJjgXk7d/a50Fv9gefArcgP9PEcO8FmEOVDMdfgZ8hncXQI6/jqkjwZeSGp1eiDdxLgAOvACcTwU7RVi0MuOA1XaeR98F/vWfo9K7+SKfKG2ZmCcw3dHEJFeEfBe+adwNZEZi7zJJER3eOR9W26IE5lE3mUaLxHiGmBs0ZszHxQbOD/jcTXCqW0q0piPkeOb3QnxEg006rHcR6KADcwx/5aLgS+eb0Qbpu4x5BQFpHcgk5LQ+BWJTO6spOvhkPZnVC8qNgE2i/bQvo6+SKvN/oJLmDVhuPdO5ybrha7VfPhB4X5V2eqERI9uTCwPTnk+RQsXtRrEuM3PG3hiUQQ9HVyQ54f07MaX7nrTN/TzOf5NxI5JOHPNiMZ4sAhsOrjPgFlGs0EA2S19DDaZOYIn0rQNJHyBRjVJ7c/OTQfLdzKiFl7NvLfQk= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c1e0674-6980-464f-451c-08dbff95177a X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB10914.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Dec 2023 06:46:41.3144 (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: TYM8qzCYEIwJdk11X7FKecvKlPF57U1Dv7HjvRTs0nEmMFLEkkgV/mgPGh4HlEJ4c8DJl8SXf+0cd6Jw/vmtQI8vHzdtzpGGDugBki4zrfgroBfTvlImLjs6eJA6zXD+ X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB8348 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 Reviewed-by: Rob Herring Reviewed-by: Geert Uytterhoeven --- drivers/of/base.c | 57 ++++++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index 8d93cb6ea9cd..3cb467a7e747 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) { const char *status; int statlen; @@ -433,16 +426,45 @@ static bool __of_device_is_available(const struct device_node *device) status = __of_get_property(device, "status", &statlen); if (status == NULL) - return true; + return false; 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}; + + if (!device) + return false; + + return !__of_get_property(device, "status", NULL) || + __of_device_is_status(device, ok); +} + /** * of_device_is_available - check if a device is available for use * @@ -474,16 +496,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); } /** From patchwork Mon Dec 18 06:46:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 1877232 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=D91H3Th8; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=139.178.88.99; helo=sv.mirrors.kernel.org; envelope-from=devicetree+bounces-26419-incoming-dt=patchwork.ozlabs.org@vger.kernel.org; receiver=patchwork.ozlabs.org) Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99]) (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 4Str3C1Wf5z23p3 for ; Mon, 18 Dec 2023 17:47:03 +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 sv.mirrors.kernel.org (Postfix) with ESMTPS id F064B282B63 for ; Mon, 18 Dec 2023 06:47:01 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CA8686FD0; Mon, 18 Dec 2023 06:46:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="D91H3Th8" X-Original-To: devicetree@vger.kernel.org Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01on2098.outbound.protection.outlook.com [40.107.114.98]) (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 719D57461; Mon, 18 Dec 2023 06:46:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=erCizFCWpLz2aonr3JAn0jmvoReH7sLg4BrxbDsxjdqpY/+u0wZM0WbLbe696mv8kHgPdErMABd6E+Dh5S8b+cpXAUZaU9RcY2If9fgaie+1AZJPhuTpLXmkU8HpJmgw7/UxZ/BcfVTaDx7HfLZtM6tE5TVkClE6rhWGqR4N1mFp2TU0fJxWccKaOZG1i0g3Rqj/SkHjidNbyKNiPydsBjIxa5T5qTxgT83R0/c+7sa8pszfJ2kjIcdjO1YzvEiO0qxu9Qjzi5lQcOQQ+O8/wgKe1xflD+aXLbHSop2Li9hsqoiBm+T5xVCWvmaa51C+ssziIJBEfrLgVId4c8YR8w== 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=RgUkUYtygoxiqzMiBVycBlhtPag3tFrU4SqtSRyEFyI=; b=THGaBd8pR5sySjnn+pPGMI82Taf9PLRLUNIQ8bqzirp+mDIldnoktBdMVULB3x5VVDKMwBysesWv3u3/s5GFcK9siIm85xddgAhfMUvOrltpqRPevOWvwRqwJcIFzM6LXWWJ8goT9/egG7RBhVLw2oIsyU++2KOrtPJeFvcQjTPR2gyPyPxfpzGOikP0iN0SeKqDSc6uesLJYWl3onIneRZlff91zyUKdKQE32BKttdCD5JyS9wfks3MxcaE1rvdLYvYd/P102YloziA7PXpCPDRbX6pL7fEp4SGGns9VQNHNqspoITLSsT1rlQckrkowJy6nbcZ5rC1N7Nqr5jlfQ== 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=RgUkUYtygoxiqzMiBVycBlhtPag3tFrU4SqtSRyEFyI=; b=D91H3Th8KXphSuSnENkHO3IENVCJ2R1S6G5vfDfJihPMIQOKit7sEFLuVU/qa9ZPBv4pFm4HTBakNwl9fUVjAz4SsKCo2vDtI9mLYociHpvbQYVXW92zXLE7OMAwj042YjRp5G+l4A4lSkKXXSyBOSAC7wykPtvNYA/oRuRb39g= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=renesas.com; Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) by TYAPR01MB5852.jpnprd01.prod.outlook.com (2603:1096:404:8053::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7113.16; Mon, 18 Dec 2023 06:46:52 +0000 Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::eadb:ae7b:5fed:8377]) by TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::eadb:ae7b:5fed:8377%5]) with mapi id 15.20.7113.010; Mon, 18 Dec 2023 06:46:52 +0000 Message-ID: <87le9sm2hx.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH v5 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 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: <87o7eom2jn.wl-kuninori.morimoto.gx@renesas.com> References: <87o7eom2jn.wl-kuninori.morimoto.gx@renesas.com> Date: Mon, 18 Dec 2023 06:46:51 +0000 X-ClientProxiedBy: TYWPR01CA0018.jpnprd01.prod.outlook.com (2603:1096:400:a9::23) To TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) 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: TYCPR01MB10914:EE_|TYAPR01MB5852:EE_ X-MS-Office365-Filtering-Correlation-Id: 459888ce-7567-4b14-72b9-08dbff951dd4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W/zPpI+Z1IXFEFtYytcfSMFxY46Z6UvSTyHwIG3uBMO6nNPUvRM2FpwCPkv9v+wDJf7xQdTyGoOeFhNfsxouWVhwPgkGzCLzP4QX5ImLMihxSaW9NJWQ3RqYFMeDVN8AFmrtcd0jxE98vwUgsMjS5QCmXl2+jYsQeewuuRpB3bSmVZma4yxOQUp14kdgApEGUokFR4ATXwhyn15nullngekOJPp01WFcahQJLUtH89eX84T5655/FLYd5h6mfkE+Z/PtwE9hvCSm5qZWBpzuI7+dx39wJY0BT6cJO2/iwh/F8eDm30yf64AqdsqF4WPQBqGHapTZVhACGGs4mMq07UoaZ9SKB3OQQVTbIUHovgvD2Nw2m3aSC4vYTjpU80H9ZzE1eDA1IhzyPqAkVLz04parXFM4hflFyiqm7FfLwAWhf4MBm6QTOCCUa+a+3HxebiIBbSc/1YWG7Z6Fr7wa0/WIhbZ7jNo+zKa3rgI55aCdmyDimr7akfASLy0BVxvdPaDkR2w0eThI+vGVUzVNYHg9ijz6pnPtprHTRCNRRH2Hrg2RmMTyZUWCqh78QN8T0eHmWNZoaQZqOz8rSgGfYT0cqcBvcUUCUNyZuPrbD9gdN8fG0SuYALfip8AtBefT5KlpwX/uT91c5fG2wD969P9Fjscf4WR9ABpbFypZgGa0LIPFAl7NdvutcAbC2Txu X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB10914.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(366004)(376002)(346002)(136003)(39860400002)(230922051799003)(64100799003)(1800799012)(451199024)(186009)(36756003)(38350700005)(316002)(83380400001)(110136005)(66476007)(66946007)(54906003)(66556008)(7416002)(2906002)(4326008)(8676002)(8936002)(5660300002)(52116002)(6512007)(38100700002)(107886003)(26005)(478600001)(6486002)(2616005)(86362001)(41300700001)(6506007)(41533002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: F3Un4D3GnHwjrLrtDgsUqj2nXuWAqF83KsABvuYWyXnLbNivX1PEDQHPEEwPt5AVarEsyNUaAHTo0Qjsym8Y7iSTWo+2bLXpc55u0kZrNcnMT897nzsQX4icOsJqLtPh883KR2cgSSoL2JlapByJiKIfOmqT6dPx7535EKAdGWKKA0+iO9r9Nj6ZMDv4ZVBYNynV6go2HVuVlHdo4e0cAGwkc/mUMpni4xBd8hIgPIcWYrBVySSvm2v+acrebaPhwmfb+puzG+10mCG7gPWJ9B4RXjtg37K7s3aQTWaPvhkZL9p13TY/bFrF2CvhFCG49kspjzSDHCe4MTJ14sS1tW22Eu1Mz+guZxqCre2TWFq9KVf/iB/+JyGrXOKM4Rp9+UGv+KKVZH5dvobJH0dZHq9gOgtImyR1Y13Od2+z1djaF/pEq1bkAhenn3F50Cx3U+fMMRx6M37RrM+Pgj1W5sTzS/zqYDq3onqmzPTaqS7/BNMrTYaAaD8vdqYtuiD9PpuhvAtzzkPDE/He4LImzq4mAwjlewUt6vek2baIBB6w02rM+U6AUxO1WXxQfJgYjDm4AmK+pGxGitqZ1roL3hDTTXEoOu43NCXuXW8BNYetbbvnN+4508DlxE90ycNy0o59clbq1uz2zDLsATdDZT2MP5yFZ9aBHZwy3knMOgf/1jsQVc0v/JULPClD3iEsedWpusxrTQg4IGJT40wbtd8ynOLwCsi60RIEMwgaLhxg01a2dgULd8Wo5r8Xlb5X3QoBMR4dNSwmtFa2Dr9xsgR5haJae/POSyOc7c6er8Mz6jlHBiyPYVjWyFZRySk1OC00cuq8qiCayumTviubIaDjsbGo9tlHW/BYQrotZuiztBkH6Hrk2QVoqoM2UKaKZve6BHiGy+sqlqHqmQPPGSjkhUvz9btw7qtjIoU97zx30yLDaWz8aUb34xKrFtrz51DBjddVtGBN218+Y+ldJpzhhsJhc4STySEFjygsgJY3E0n6KuTZLw1eQV+3Y4b68GLps2vdGu0xbZuXSwfgat+OZQcWRmnmqxsAOJyoAejU3STVs4SFoPz4ApNWW8d3zI1WgsFiNRnBuj429ZewBUlJm+AWTxJHuPZRRYu/bGonGJ2lePtweWbQARipNw2il+NrEouA2WPe0/H8M7F6BiW4rC7Wc2s8MUGAxQOWsoT+SoUCw/RaISnFXHBixHtIWsFeQ8EMOhM9nfZ8neZk2NjyfPezVYuQ2pfZqkrYl9XSkGBz8Wpm6WW1hFMYNGMN7heBZf8PVqRT3CFQaexG2eLbGYBctxOfWQocw3JncKLbO/esuo/a3vx2CbriTyNVfiXiDs2WRo4v6OjYFocSy6FNGNHucBKs4SZO5HHiyQOFWGVEyX+j5HE+9ktN/MuhY091//33SFkhZkkW8TlPTVT2TZeYWFNZeXdunG7iCVz49YlWgpAo2zGtjcpjp21NvIz3lDGTxoacsUmvAcT9qIowsleF7vNMZ3pKX1+F8IwcRHJWbInc0sdQc0pwtWLLH1HIao5vuiUpZxuZuF70yCua8rydj72MwBe2SUfMNqt6EA1nBn8uX75MFm4+v+5sHbFVspWRkBgF74ZE76/2pFXCI5zHuf4EoZYNfUavRZM= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: 459888ce-7567-4b14-72b9-08dbff951dd4 X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB10914.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Dec 2023 06:46:51.9851 (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: 9ExfKObXlAYDhcMFCNSsa9sXKrTGRmrmqIQ/1Lw2l2zTU7HgjOyzwreE7rUPfhOaSSwnDmFETjcorBkmSgcqLWcq6pSynKcYM8mCxPHZxcJgg9kcl8XqnDbMC33ngms+ X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB5852 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 Reviewed-by: Rob Herring Reviewed-by: Geert Uytterhoeven --- 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 3cb467a7e747..25c841a3882f 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -612,16 +612,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; @@ -632,7 +625,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; @@ -641,6 +634,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 Mon Dec 18 06:47:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 1877233 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=pH/g3Nfb; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=2604:1380:4601:e00::3; helo=am.mirrors.kernel.org; envelope-from=devicetree+bounces-26420-incoming-dt=patchwork.ozlabs.org@vger.kernel.org; receiver=patchwork.ozlabs.org) Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [IPv6:2604:1380:4601:e00::3]) (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 4Str3R14BHz23p3 for ; Mon, 18 Dec 2023 17:47:15 +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 am.mirrors.kernel.org (Postfix) with ESMTPS id 65AF31F21BFF for ; Mon, 18 Dec 2023 06:47:12 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0CBAF6FD3; Mon, 18 Dec 2023 06:47:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="pH/g3Nfb" X-Original-To: devicetree@vger.kernel.org Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01on2106.outbound.protection.outlook.com [40.107.114.106]) (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 C84B56FC9; Mon, 18 Dec 2023 06:47:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Vh9fvJoJjaXYJQhpUY762bio+68IBifqMVMbh3OtewoeIqKocsoxy7At2HqQPimdwXfepO3XQYly3voQASf9/GsDzU/P68Tjf2v5MMn6AMq+DmyRMcFwBDVYqqDcKlJTcNPugcdWsvOhzgG1rfJRk6o+pwx57sV2CJTXhx8AOJ8nM9y+lgH+rLRnGJTDXUV4DgIiltcrIAl/lGCF2kFeaac5Dr2TstgdxNgdNVXONC0LkK2fwXs8pd8a2SEp59UXXuugy9Ud36F835EF2UZwYDE13UHKu+NvNuj4S4kiDxV77WR2c199KDm0I3fo7yNg37PJmy7/1liVJa10KTEL/g== 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=r13OWdxPFLvNkCATiQvwBjyKSaerWJzbIouZsgZlUWw=; b=E/YbKFMch9m1xtSxAD/LiN0FMfqT7q3lL43HJogW9YatHV++jDI1C5GI2Sey4jaS7sl3QSi+03n8IaCv0jtC4ejP7EHQVjRcqVBaYyxQrcwYbt3WEtlQHxOm3jCGP3j4CWpb84NH+W1S3d/huggQLKt7V/mP+ZJR8vWdDq1xDie18ienI5IxT4+fHgVMaL7KQuLRbJH1hit6omW8qwv0aHY6/EfPE+aerfRwDxWZEaBnUPCpFp0MOXlWxsCChVgwhnDd1uXQrLefmJTpmiErO/s8xO7Fy0m3W9zMoNFhCp8XEjuBEPw2EavA1xub9UuASUyotYNEsdMvLNC+qAMK0A== 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=r13OWdxPFLvNkCATiQvwBjyKSaerWJzbIouZsgZlUWw=; b=pH/g3Nfb6aJT8jofQQ1BzO8xXvCCby7QMp76JwAKSWF8Oa1BN3RsdzV8QIZwDGd51RB7dlOoRbjxBhWEXj7dHVPz0gLKwg+8Py3yqtSx8s66Ms8+Nauk7dMsHcn1Ptzgxc0L1glzANRMnZ7qDfuiNC8W+4lGgJ1JQET9wRyJcys= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=renesas.com; Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) by TYAPR01MB5852.jpnprd01.prod.outlook.com (2603:1096:404:8053::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7113.16; Mon, 18 Dec 2023 06:47:02 +0000 Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::eadb:ae7b:5fed:8377]) by TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::eadb:ae7b:5fed:8377%5]) with mapi id 15.20.7113.010; Mon, 18 Dec 2023 06:47:02 +0000 Message-ID: <87jzpcm2ho.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH v5 3/4] of: add for_each_reserved_child_of_node() User-Agent: Wanderlust/2.15.9 Emacs/27.1 Mule/6.0 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: <87o7eom2jn.wl-kuninori.morimoto.gx@renesas.com> References: <87o7eom2jn.wl-kuninori.morimoto.gx@renesas.com> Date: Mon, 18 Dec 2023 06:47:01 +0000 X-ClientProxiedBy: TY2PR06CA0042.apcprd06.prod.outlook.com (2603:1096:404:2e::30) To TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) 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: TYCPR01MB10914:EE_|TYAPR01MB5852:EE_ X-MS-Office365-Filtering-Correlation-Id: e35fa12a-04e2-4d20-65c1-08dbff952414 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9ER5vJn8FcYZd8qgR0R9KbXIq/t8btMTs2kT9kXhH8ouIgJ9mnH+pbpmMKTTPWSRU6P1M4Zgr55v52KkU2ojk2I/ewaQ6zMAIS6hVPfmFjXaFpTbCCKX3vwHYKsTtk2ZFWGBoOBU96QzzDmfBH8en0MMlwJZfvckSFjilIo2q2CPp5TKidpfZXaAJFUeJhXVo2RNBqMmBgtfZBSJhQ4Nz2WMKj25BPp8r0/csakj/InRlfWra3vHpPsw2PJxYoW6C783U+yjGOTwHX97Dvm6npsigz/qkdFH1a93zwS/RFg/LH3O+v9t8cBSRfyC1QEPLmLRF2HP0R8V8EW8mEmHXHflNo9kAGbaITv+wh2UenLl8+r37HNceUE66m4hf4GNvwgaJlLpe68YpCcsIdPBLMAm98IUnna3a96WZGfxGHOkjRK1JonxdHkAvfzbd+BaLW8NbpVkRHApYVdhuAy00jhg27CvdisPH7vnET0OSzC6JdwpMnvBpzDaFvvIAzKTHWA2IFwHrAcKlKgEUJblutGPaE6Akwuqu3DxEDkz/c49hAdHlPtJP2i+/aAUqJUcuqssktklwso/IlG+uG2x4fgwfZUg14SEGQNUYX/DcRhwwZnpMUdmxrLM3nur5c0qcM3miGbBtOmuiXk5CLSH9TKc1mRWgmB6+pvQpVDOe1E= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB10914.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(366004)(376002)(346002)(136003)(39860400002)(230922051799003)(64100799003)(1800799012)(451199024)(186009)(36756003)(38350700005)(316002)(83380400001)(110136005)(66476007)(66946007)(54906003)(66556008)(7416002)(2906002)(4326008)(8676002)(8936002)(5660300002)(52116002)(6512007)(38100700002)(107886003)(26005)(478600001)(6486002)(2616005)(86362001)(41300700001)(6506007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: k5CwRckzIZH/L1kZUm29DHyBC4gJh/lqSfMloet2Lz0HRruIRc/JyFb/u6M6HxsGYI2QmPK4CreQCgCJJ8fePcY9oSOFz6hK5KQrDlLwF+4U8l4tUqC86lBKBq2m0tUippatmFOESgjtD4D6KOZtcSd1lMXzUiYplhX2h7YSb4QF2wBnZ/CrWKYE3ZKM2jcf9n4paoTXHjJq0Zk+b1EzyIbOtiCxUcNemZulKN+Q8ToWABAhWYiYQRsyVZoBk1pwTos0YZBonRXZO/KxtG7zP0n93EuvIon9AEWfdF79CmiQj4nFPdkllL9WluAyf5Esabwzod7Ko4ezkbg9MFkV360CdYAvGFOnXBXbZehoFagNUAyVPE2hp2a2x6f3UajxN/HyHrzxQQcXe9QwanJVMkm2i18tQUVNifW6wtwKJlFd8j1piM6cyexHQyk5iatNJ08awaMs8g7NfYFkX9gn1+uontR0fUhkkBVC/Dk4aNUouZxZq4vTAwZVLkXGzRDDMdYAPtLDfO9A9fK1YAqaS9ClB9Ys4a/Ks8tcAHnuwewjlacHJuUpUPBOgaXzFte8vFYOSB+ohpYj9Q/sFnCebwFTIr6zMBpjgPLPVk4pdOprk2axb8s1kfHxzZO6oUZ2IX72YrEGMb3Lza05EOdI8Ll/FpHwtiG1ii5omDjeu/GvlZSV5MqAIzqhSzRnvSTRTabZ749g/WoOFI9bdmhZKjt0V9ZDulgmko4n1fIokWBz7ovTat+5dqFEu7MmI4HsmOVUp2Ub52aeUjG4tpRckdhoqtFqOYiUFbmCTcSzCkTy29MxpN+LpMtd2N4rnOudVuofB7ZQ6JJk+pEOhVFGKwmH2BxtxmwwkUjxcPwa0k6B6F79PKLOhl2yuYS/7YyvK+19SNoDzrp0WI8I5WATBpCE3Fjn7KYLqlZcDR7wml9/N2qk/yWcAgrY1ICso23ZysFuqFXVtxfMEkhvEkjQbZWv44DY8pi6a8ayWV9PBOKOYKowmq8Px1gHtVeC6Zr57pRnhK3cyPbMkq8FUqGLwFnxrSOTBfdPDrKM7deDgS+ZQXcLG9o4zJsNybsq51HAuGq7BYkMwl+vAtTKk2EYMilqeVsWjOsbnsaG5WJFGn44aSL5D3UQCVtfmutRdhiagmmJIgyI3Ce50bgLEJaVROxQzEpzIT1I7P/H0AvOsL9sriYQ7tWZG0GIn1cFc5/BWcQGOQcL4mvY2ggWIuzVZO8bccNosz54Rrc9fX6R58B7yGodOpeHKDlRwR8DhtrBXfjuOPEU9qc0bwQH0X0d1lfkodseCPLRYguAKvoBXrNQB++22tLSosF+BCrX3xAxvv1hfRAYdZ+eKZmxd3Y/aNUNQgAUejjQWT73LW9MjJ0rzDSqjAGpCfssmD7/LeT+NsR2Ewq05C4j14kmyBpw245l3Os24jZ1dP8mk/0XouD9Txe2okPy12e7tgTa8mAyJqgftH8VX8l351b0IulMJvmUouoUGJ/2C9k+YO/5SVOO/gbVKliZ+7F0h9+lFON809NbVMBgs1bNE+btjLuSEo5P/uS8nF81JYRu4/QPhaCYaE9CInRJXIWjDmXSIpPGM5TTIjoBaTlpddnQqr/lQK5KYiuomw4Si+RQMXqBBPA= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: e35fa12a-04e2-4d20-65c1-08dbff952414 X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB10914.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Dec 2023 06:47:02.5171 (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: 9L3S43eI3JpHWi3elEXxuFvPyhNoNZ1BVz9ii6NbPQUud4wSkoih/gFepob2aj11i4fMcq4oOxTEGYYBDqeqD+7GzwOqtabHFYI5JjKH0mMujTEoclb1s0p1JbNpYYSN X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB5852 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 Reviewed-by: Geert Uytterhoeven Reviewed-by: Rob Herring --- 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 25c841a3882f..b1ecfcfbb90f 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -465,6 +465,20 @@ static bool __of_device_is_available(const struct device_node *device) __of_device_is_status(device, ok); } +/** + * __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); +} + /** * of_device_is_available - check if a device is available for use * @@ -650,6 +664,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; \