Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2227103/?format=api
{ "id": 2227103, "url": "http://patchwork.ozlabs.org/api/patches/2227103/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-tegra/patch/20260423085718.70762-4-akhilrajeev@nvidia.com/", "project": { "id": 21, "url": "http://patchwork.ozlabs.org/api/projects/21/?format=api", "name": "Linux Tegra Development", "link_name": "linux-tegra", "list_id": "linux-tegra.vger.kernel.org", "list_email": "linux-tegra@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260423085718.70762-4-akhilrajeev@nvidia.com>", "list_archive_url": null, "date": "2026-04-23T08:57:02", "name": "[v3,03/13] i3c: master: Use unified device property interface", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "c825d8c628a0fb5db7d67a37cd3b1f91e494a58d", "submitter": { "id": 81965, "url": "http://patchwork.ozlabs.org/api/people/81965/?format=api", "name": "Akhil R", "email": "akhilrajeev@nvidia.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-tegra/patch/20260423085718.70762-4-akhilrajeev@nvidia.com/mbox/", "series": [ { "id": 501164, "url": "http://patchwork.ozlabs.org/api/series/501164/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-tegra/list/?series=501164", "date": "2026-04-23T08:56:59", "name": "Support ACPI and SETAASA device discovery", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/501164/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2227103/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2227103/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-tegra+bounces-13857-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-tegra@vger.kernel.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=kHZabYLA;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-tegra+bounces-13857-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=\"kHZabYLA\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.209.63", "smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com", "smtp.subspace.kernel.org;\n spf=fail smtp.mailfrom=nvidia.com" ], "Received": [ "from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g1VRz5W33z1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 19:00:47 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 0E1CA301E202\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 08:59:15 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id E5D593DFC7D;\n\tThu, 23 Apr 2026 08:59:14 +0000 (UTC)", "from PH8PR06CU001.outbound.protection.outlook.com\n (mail-westus3azon11012063.outbound.protection.outlook.com [40.107.209.63])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 04A722F25F5;\n\tThu, 23 Apr 2026 08:59:12 +0000 (UTC)", "from BYAPR05CA0072.namprd05.prod.outlook.com (2603:10b6:a03:74::49)\n by CH8PR12MB9767.namprd12.prod.outlook.com (2603:10b6:610:275::9) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Thu, 23 Apr\n 2026 08:59:02 +0000", "from CO1PEPF000075F2.namprd03.prod.outlook.com\n (2603:10b6:a03:74:cafe::17) by BYAPR05CA0072.outlook.office365.com\n (2603:10b6:a03:74::49) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.20 via Frontend Transport; Thu,\n 23 Apr 2026 08:59:02 +0000", "from mail.nvidia.com (216.228.117.160) by\n CO1PEPF000075F2.mail.protection.outlook.com (10.167.249.41) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9846.18 via Frontend Transport; Thu, 23 Apr 2026 08:59:01 +0000", "from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com\n (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 23 Apr\n 2026 01:58:38 -0700", "from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail201.nvidia.com\n (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 23 Apr\n 2026 01:58:38 -0700", "from BUILDSERVER-IO-L4T.nvidia.com (10.127.8.9) by mail.nvidia.com\n (10.129.68.7) with Microsoft SMTP Server id 15.2.2562.20 via Frontend\n Transport; Thu, 23 Apr 2026 01:58:29 -0700" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776934754; cv=fail;\n b=JE6l1dZS6FxrQN+nIu7itGf6s/+jnvUdV8P70vSkdS16SltNCHiXCTzFPZuDLdmjpWJlr/s1xedoxOv+fpRJTv8ln3eTyA3Y2t40WvtT0QUZS5A7JHDLAisDdAuej0GjIa5QqB+sQqFJWp8fMkr+vT8TUmSVfa0a8uieVYMfPJU=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=FvztL3n6QewUtNiAEdRMHR/FoRgTkXzAhpGvVz27QtHq87Q3bDwtjYE1+bmZzSqp5KVfHWzJUULMHn/J+aBo3q9O0QSxFUQszjKb+YcVml+k8beTtF7p5WMYwhjwAC1iEY/0JM+5wJDNgkl2TWLIiCU+zGeRSrzD14Wz/B6w/xxsTmCu/Tuqf6O5b1D+T4osEcvWNUF9YtsOUsWCkfeFeSxf4Or3NG+Yxs9Zsto6ZI91OmR9eoSgZlWGuIRjgLUOXnQT3inMhM4lFqjRAiKkjM1fjhZWmyqXhtCk8E6ghsQ58P0+bFrRjIZ8F/aSwp83SoMREH9Q6UUvR7GRlqer8Q==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776934754; c=relaxed/simple;\n\tbh=Cz7qjfne4Sdd1aoiZitknkA959TpN1hPUxgpQL9FHqQ=;\n\th=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version:Content-Type;\n b=CgvQAZiPNJU/3LCJSAp39pfVc6ZQ7ih2wNxYwOMBEj2BGuAM9Ycir932iKMcQ8b46MTKKuQhP8nGXs0NJx5TBsHTXLPcaNfcGZXU0ojRfnOGZ36GXovkInlawlGlk9jfMa/LBC8U/Tgjw4aYa6U5RraRYQTCHuHqpaeFhfAJU24=", "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=cdJR/l7NuFumWPwb4nyp/FXVAJ1HR9ymMBiQPReyrCE=;\n b=VWvrUalPqpfkGIKQVAZqvPRYrnQyqn1CU5bSiu7dq6hPgJldJIazefxY90njkQEhTI7JVBWM/I7SSkeW0oF6HbGgexeERi5ika4e6uNfiFrI26/0sdiaxhEDrLNtwvWpfkLuOa4u7KofVrtiG4jONjNpdqgjcK4taEC8uNgQD5YPHzkJzcHTLsHkJz09ovcDIQkpprUhjmsFFUviMqUBiGHnSX38NkNllxREqxMxO7JJvDEQ3Lz8ks9xvVwoal86+5xcpHDsplqquv6UL7AMBqcdowTigXF7bU5hhNnzwmK0SEvDkR4JXqZVtJM7/XmvNPPkfSlY+8/dMPBPbOjsWQ==" ], "ARC-Authentication-Results": [ "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com;\n spf=fail smtp.mailfrom=nvidia.com;\n dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=kHZabYLA; arc=fail smtp.client-ip=40.107.209.63", "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.160) smtp.rcpttodomain=bootlin.com smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none (0)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=cdJR/l7NuFumWPwb4nyp/FXVAJ1HR9ymMBiQPReyrCE=;\n b=kHZabYLAE/0Q61oeUDZMeohB5d6QRGIr4PihBCPC+hSLKZ3cAUNfkz9xXHBUbzdaQJweaHzBeNf/fj1uj2Oz7hPbgz7Hhu6/OrFiUy4YZeELsWO9du3B5GZkJREGTTM2cM19WjzOCsVPX7njLHdwC7baW5l8vVEvVDrUwCOIwYkFQzwJRdxiy+DaULIhypurT8SBwubFREGOCjNtKyl7LWeOZ0rq8xAOCVBiB35ZiX27PAq5z+YYjQj1EpIr1Qz6DNCZtFilPB49QU+9XFy+MEAg0Nqz+KNrA5AunkigTkv1kkFKKoBeFVwYWTgNksVmyM3ztB5RPOAW+2yUoq1HyQ==", "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.117.160)\n smtp.mailfrom=nvidia.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;", "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.117.160 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C", "From": "Akhil R <akhilrajeev@nvidia.com>", "To": "Alexandre Belloni <alexandre.belloni@bootlin.com>, Frank Li\n\t<Frank.Li@nxp.com>, Rob Herring <robh@kernel.org>, Krzysztof Kozlowski\n\t<krzk+dt@kernel.org>, Conor Dooley <conor+dt@kernel.org>, \"Rafael J .\n Wysocki\" <rafael@kernel.org>, Saket Dumbre <saket.dumbre@intel.com>, \"Len\n Brown\" <lenb@kernel.org>, Guenter Roeck <linux@roeck-us.net>, Philipp Zabel\n\t<p.zabel@pengutronix.de>, Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,\n\tGeert Uytterhoeven <geert@linux-m68k.org>, Dmitry Baryshkov\n\t<dmitry.baryshkov@oss.qualcomm.com>, Arnd Bergmann <arnd@arndb.de>, \"Eric\n Biggers\" <ebiggers@kernel.org>, Wolfram Sang\n\t<wsa+renesas@sang-engineering.com>, Miquel Raynal\n\t<miquel.raynal@bootlin.com>, Jon Hunter <jonathanh@nvidia.com>, \"Thierry\n Reding\" <treding@nvidia.com>, <linux-tegra@vger.kernel.org>,\n\t<linux-i3c@lists.infradead.org>, <devicetree@vger.kernel.org>,\n\t<linux-kernel@vger.kernel.org>, <linux-acpi@vger.kernel.org>,\n\t<acpica-devel@lists.linux.dev>, <linux-hwmon@vger.kernel.org>", "CC": "Akhil R <akhilrajeev@nvidia.com>", "Subject": "[PATCH v3 03/13] i3c: master: Use unified device property interface", "Date": "Thu, 23 Apr 2026 14:27:02 +0530", "Message-ID": "<20260423085718.70762-4-akhilrajeev@nvidia.com>", "X-Mailer": "git-send-email 2.50.1", "In-Reply-To": "<20260423085718.70762-1-akhilrajeev@nvidia.com>", "References": "<20260423085718.70762-1-akhilrajeev@nvidia.com>", "Precedence": "bulk", "X-Mailing-List": "linux-tegra@vger.kernel.org", "List-Id": "<linux-tegra.vger.kernel.org>", "List-Subscribe": "<mailto:linux-tegra+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-tegra+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "X-NVConfidentiality": "public", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-NV-OnPremToCloud": "ExternallySecured", "X-EOPAttributedMessage": "0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "CO1PEPF000075F2:EE_|CH8PR12MB9767:EE_", "X-MS-Office365-Filtering-Correlation-Id": "b7e22a13-9400-4393-3bde-08dea1169034", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|1800799024|82310400026|376014|7416014|36860700016|921020|18002099003|22082099003|56012099003;", "X-Microsoft-Antispam-Message-Info": "\n\t7cm9xnxtx3lIzPnw/2cBNjqVHlfeNHdUFmQPjXoET0fSii/QlFcRPQY2sa2eg9ocKrLDZXpY58eEO0oviY4KmdZ3Mi+5Vqy5SU12oV3r30PwEmV8p+fZzrDXnANbH/Tpx6eesT61oLd/reqpFdztzKS5GeYLeQMKAbSfPhVKqER69dV45oA//3hXDRxYC4+SqM4E8kpdU7q09cSu2oOGYpMB007fsr3Y5sqamlG1TtNqovFbqm9Iz7eabdqMDYGKEO2l7kK2i9amTj9+UMvApnaeZUK5sIQOpLri0OOFBitos8FFx0ZdQeHF4v30oQiR+kjlXnm9JVf7eDTXaOC4VnxURGGG+0xmL6v7xHKX7BM79PEP4mW9N0/BKBJW9xcxHZAobHfOg2FAHsfWxrhCXUVDu7CxaLd23dkrKCO3ql78ftu+Q57o46r5NeFHbV9dfuLHi21Ke35C6tJl2L2FKbObwL0zMS8mdalPGa+HYWWu7TWVxfqv0AS9q1LD9Q/41wuRBSOX6Ex6RaHdeO/tVOXO2s14GG+SGODloL0AnXXn8WhkQOdUX8jVnvvdVlWwt6FO0FzkeUfSPdebjWYZstnszcloUzYjPu6sW8EAS5cQuttYf3O32uvKQqFG5Uv7U4zulqKDJMQ902w2O3w3sMJh3yl121al1dsHUwBTD0QEw5/bNGGEKuOAmy7j5ScT6YepOZ/6PpA0mLb5CVshRywp8JrGtsKRWMjIcSrqfGSdeTDrmuSQn7268JbmZou2Fq06fn/Mkoy3b5Zhm12dxXWAVuf2/NzhEL5NSR5yTORT7HejME15WaPxm9ONZ1r9", "X-Forefront-Antispam-Report": "\n\tCIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(7416014)(36860700016)(921020)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n\tNordSlb6fRuSNzoI0ZH35xEMfbvazt380K6CDjvUgmP4g5j5EJtbw6I9oIEjAQz1KhH8/WWsC4awr3O/PkLBitcmSGy1SvEzJ44jZhwQfO9DsTKbDo/QS7n5ozHZI1S9LVAzGsesyahr29qmB7N2i06mqpM1k9Jn3LfmxJZ8Ke1ilhpF4tUvSyhfF8aCjKJ4hP25/Bh399kFGMcX14qssy12R8kS5FfkSrS3g/DaeUpta96wWIr6RkrBiUA9VFpV2PEgNJFERwJ3Mo12e9x4ada3KLHNYJli5P301aJAQOLu2P6ghGNdJNegyAth5PIGVFZjG73dMpcVhPzVA1lqipT70wfJe3ExVYl4GmMNXx1W67fjhtUQ9bW+OWpDUhYnYmydNgvnF/ltwFFpXzJVq/wcYLJEY2HdY0/Vd0T5fn9R8pHjsreVKwOqAzC333DX", "X-OriginatorOrg": "Nvidia.com", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "23 Apr 2026 08:59:01.2472\n (UTC)", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n b7e22a13-9400-4393-3bde-08dea1169034", "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a", "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com]", "X-MS-Exchange-CrossTenant-AuthSource": "\n\tCO1PEPF000075F2.namprd03.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous", "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CH8PR12MB9767" }, "content": "Replace all OF-specific functions with unified device property functions\nas a prerequisite to support both ACPI and device tree.\n\nReviewed-by: Frank Li <Frank.Li@nxp.com>\nSigned-off-by: Akhil R <akhilrajeev@nvidia.com>\n---\n drivers/i3c/master.c | 77 +++++++++++++++++++++-----------------\n include/linux/i3c/master.h | 5 ++-\n 2 files changed, 46 insertions(+), 36 deletions(-)", "diff": "diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c\nindex 5cd4e5da2233..d0677061faab 100644\n--- a/drivers/i3c/master.c\n+++ b/drivers/i3c/master.c\n@@ -11,10 +11,12 @@\n #include <linux/dma-mapping.h>\n #include <linux/err.h>\n #include <linux/export.h>\n+#include <linux/i2c.h>\n #include <linux/kernel.h>\n #include <linux/list.h>\n #include <linux/of.h>\n #include <linux/pm_runtime.h>\n+#include <linux/property.h>\n #include <linux/slab.h>\n #include <linux/spinlock.h>\n #include <linux/workqueue.h>\n@@ -497,7 +499,7 @@ static void i3c_bus_cleanup(struct i3c_bus *i3cbus)\n \tmutex_unlock(&i3c_core_lock);\n }\n \n-static int i3c_bus_init(struct i3c_bus *i3cbus, struct device_node *np)\n+static int i3c_bus_init(struct i3c_bus *i3cbus, struct fwnode_handle *fwnode)\n {\n \tint ret, start, end, id = -1;\n \n@@ -507,8 +509,8 @@ static int i3c_bus_init(struct i3c_bus *i3cbus, struct device_node *np)\n \ti3c_bus_init_addrslots(i3cbus);\n \ti3cbus->mode = I3C_BUS_MODE_PURE;\n \n-\tif (np)\n-\t\tid = of_alias_get_id(np, \"i3c\");\n+\tif (fwnode && is_of_node(fwnode))\n+\t\tid = of_alias_get_id(to_of_node(fwnode), \"i3c\");\n \n \tmutex_lock(&i3c_core_lock);\n \tif (id >= 0) {\n@@ -811,7 +813,7 @@ static void i3c_masterdev_release(struct device *dev)\n \tWARN_ON(!list_empty(&bus->devs.i2c) || !list_empty(&bus->devs.i3c));\n \ti3c_bus_cleanup(bus);\n \n-\tof_node_put(dev->of_node);\n+\tfwnode_handle_put(dev->fwnode);\n }\n \n static const struct device_type i3c_masterdev_type = {\n@@ -993,7 +995,7 @@ static void i3c_device_release(struct device *dev)\n \n \tWARN_ON(i3cdev->desc);\n \n-\tof_node_put(i3cdev->dev.of_node);\n+\tfwnode_handle_put(dev->fwnode);\n \tkfree(i3cdev);\n }\n \n@@ -1789,7 +1791,7 @@ i3c_master_register_new_i3c_devs(struct i3c_master_controller *master)\n \t\t\t desc->info.pid);\n \n \t\tif (desc->boardinfo)\n-\t\t\tdesc->dev->dev.of_node = desc->boardinfo->of_node;\n+\t\t\tdevice_set_node(&desc->dev->dev, desc->boardinfo->fwnode);\n \n \t\tret = device_register(&desc->dev->dev);\n \t\tif (ret) {\n@@ -2408,8 +2410,8 @@ EXPORT_SYMBOL_GPL(i3c_master_add_i3c_dev_locked);\n #define OF_I3C_REG1_IS_I2C_DEV\t\t\tBIT(31)\n \n static int\n-of_i3c_master_add_i2c_boardinfo(struct i3c_master_controller *master,\n-\t\t\t\tstruct device_node *node, u32 *reg)\n+i3c_master_add_i2c_boardinfo(struct i3c_master_controller *master,\n+\t\t\t struct fwnode_handle *fwnode, u32 *reg)\n {\n \tstruct i2c_dev_boardinfo *boardinfo;\n \tstruct device *dev = &master->dev;\n@@ -2419,9 +2421,13 @@ of_i3c_master_add_i2c_boardinfo(struct i3c_master_controller *master,\n \tif (!boardinfo)\n \t\treturn -ENOMEM;\n \n-\tret = of_i2c_get_board_info(dev, node, &boardinfo->base);\n-\tif (ret)\n-\t\treturn ret;\n+\tif (is_of_node(fwnode)) {\n+\t\tret = of_i2c_get_board_info(dev, to_of_node(fwnode), &boardinfo->base);\n+\t\tif (ret)\n+\t\t\treturn ret;\n+\t} else {\n+\t\treturn -EINVAL;\n+\t}\n \n \t/*\n \t * The I3C Specification does not clearly say I2C devices with 10-bit\n@@ -2437,14 +2443,14 @@ of_i3c_master_add_i2c_boardinfo(struct i3c_master_controller *master,\n \tboardinfo->lvr = reg[2];\n \n \tlist_add_tail(&boardinfo->node, &master->boardinfo.i2c);\n-\tof_node_get(node);\n+\tfwnode_handle_get(fwnode);\n \n \treturn 0;\n }\n \n static int\n-of_i3c_master_add_i3c_boardinfo(struct i3c_master_controller *master,\n-\t\t\t\tstruct device_node *node, u32 *reg)\n+i3c_master_add_i3c_boardinfo(struct i3c_master_controller *master,\n+\t\t\t struct fwnode_handle *fwnode, u32 *reg)\n {\n \tstruct i3c_dev_boardinfo *boardinfo;\n \tstruct device *dev = &master->dev;\n@@ -2467,7 +2473,7 @@ of_i3c_master_add_i3c_boardinfo(struct i3c_master_controller *master,\n \n \tboardinfo->static_addr = reg[0];\n \n-\tif (!of_property_read_u32(node, \"assigned-address\", &init_dyn_addr)) {\n+\tif (!fwnode_property_read_u32(fwnode, \"assigned-address\", &init_dyn_addr)) {\n \t\tif (init_dyn_addr > I3C_MAX_ADDR)\n \t\t\treturn -EINVAL;\n \n@@ -2484,14 +2490,14 @@ of_i3c_master_add_i3c_boardinfo(struct i3c_master_controller *master,\n \t\treturn -EINVAL;\n \n \tboardinfo->init_dyn_addr = init_dyn_addr;\n-\tboardinfo->of_node = of_node_get(node);\n+\tboardinfo->fwnode = fwnode_handle_get(fwnode);\n \tlist_add_tail(&boardinfo->node, &master->boardinfo.i3c);\n \n \treturn 0;\n }\n \n-static int of_i3c_master_add_dev(struct i3c_master_controller *master,\n-\t\t\t\t struct device_node *node)\n+static int i3c_master_add_dev(struct i3c_master_controller *master,\n+\t\t\t struct fwnode_handle *fwnode)\n {\n \tu32 reg[3];\n \tint ret;\n@@ -2499,7 +2505,7 @@ static int of_i3c_master_add_dev(struct i3c_master_controller *master,\n \tif (!master)\n \t\treturn -EINVAL;\n \n-\tret = of_property_read_u32_array(node, \"reg\", reg, ARRAY_SIZE(reg));\n+\tret = fwnode_property_read_u32_array(fwnode, \"reg\", reg, ARRAY_SIZE(reg));\n \tif (ret)\n \t\treturn ret;\n \n@@ -2508,25 +2514,25 @@ static int of_i3c_master_add_dev(struct i3c_master_controller *master,\n \t * dealing with an I2C device.\n \t */\n \tif (!reg[1])\n-\t\tret = of_i3c_master_add_i2c_boardinfo(master, node, reg);\n+\t\tret = i3c_master_add_i2c_boardinfo(master, fwnode, reg);\n \telse\n-\t\tret = of_i3c_master_add_i3c_boardinfo(master, node, reg);\n+\t\tret = i3c_master_add_i3c_boardinfo(master, fwnode, reg);\n \n \treturn ret;\n }\n \n-static int of_populate_i3c_bus(struct i3c_master_controller *master)\n+static int fwnode_populate_i3c_bus(struct i3c_master_controller *master)\n {\n \tstruct device *dev = &master->dev;\n-\tstruct device_node *i3cbus_np = dev->of_node;\n+\tstruct fwnode_handle *fwnode = dev_fwnode(dev);\n \tint ret;\n \tu32 val;\n \n-\tif (!i3cbus_np)\n+\tif (!fwnode)\n \t\treturn 0;\n \n-\tfor_each_available_child_of_node_scoped(i3cbus_np, node) {\n-\t\tret = of_i3c_master_add_dev(master, node);\n+\tfwnode_for_each_available_child_node_scoped(fwnode, child) {\n+\t\tret = i3c_master_add_dev(master, child);\n \t\tif (ret)\n \t\t\treturn ret;\n \t}\n@@ -2536,10 +2542,10 @@ static int of_populate_i3c_bus(struct i3c_master_controller *master)\n \t * on the bus are not supporting typical rates, or if the bus topology\n \t * prevents it from using max possible rate.\n \t */\n-\tif (!of_property_read_u32(i3cbus_np, \"i2c-scl-hz\", &val))\n+\tif (!device_property_read_u32(dev, \"i2c-scl-hz\", &val))\n \t\tmaster->bus.scl_rate.i2c = val;\n \n-\tif (!of_property_read_u32(i3cbus_np, \"i3c-scl-hz\", &val))\n+\tif (!device_property_read_u32(dev, \"i3c-scl-hz\", &val))\n \t\tmaster->bus.scl_rate.i3c = val;\n \n \treturn 0;\n@@ -2594,7 +2600,7 @@ static u8 i3c_master_i2c_get_lvr(struct i2c_client *client)\n \tu8 lvr = I3C_LVR_I2C_INDEX(2) | I3C_LVR_I2C_FM_MODE;\n \tu32 reg[3];\n \n-\tif (!of_property_read_u32_array(client->dev.of_node, \"reg\", reg, ARRAY_SIZE(reg)))\n+\tif (!fwnode_property_read_u32_array(client->dev.fwnode, \"reg\", reg, ARRAY_SIZE(reg)))\n \t\tlvr = reg[2];\n \n \treturn lvr;\n@@ -2713,7 +2719,8 @@ static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master)\n \tstruct i2c_adapter *adap = i3c_master_to_i2c_adapter(master);\n \tstruct i2c_dev_desc *i2cdev;\n \tstruct i2c_dev_boardinfo *i2cboardinfo;\n-\tint ret, id;\n+\tstruct fwnode_handle *fwnode = dev_fwnode(&master->dev);\n+\tint ret, id = -1;\n \n \tadap->dev.parent = master->dev.parent;\n \tadap->owner = master->dev.parent->driver->owner;\n@@ -2722,7 +2729,9 @@ static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master)\n \tadap->timeout = HZ;\n \tadap->retries = 3;\n \n-\tid = of_alias_get_id(master->dev.of_node, \"i2c\");\n+\tif (fwnode && is_of_node(fwnode))\n+\t\tid = of_alias_get_id(to_of_node(fwnode), \"i2c\");\n+\n \tif (id >= 0) {\n \t\tadap->nr = id;\n \t\tret = i2c_add_numbered_adapter(adap);\n@@ -3023,7 +3032,7 @@ int i3c_master_register(struct i3c_master_controller *master,\n \t\treturn ret;\n \n \tmaster->dev.parent = parent;\n-\tmaster->dev.of_node = of_node_get(parent->of_node);\n+\tdevice_set_node(&master->dev, fwnode_handle_get(dev_fwnode(parent)));\n \tmaster->dev.bus = &i3c_bus_type;\n \tmaster->dev.type = &i3c_masterdev_type;\n \tmaster->dev.release = i3c_masterdev_release;\n@@ -3042,13 +3051,13 @@ int i3c_master_register(struct i3c_master_controller *master,\n \tmaster->dev.coherent_dma_mask = parent->coherent_dma_mask;\n \tmaster->dev.dma_parms = parent->dma_parms;\n \n-\tret = i3c_bus_init(i3cbus, master->dev.of_node);\n+\tret = i3c_bus_init(i3cbus, dev_fwnode(&master->dev));\n \tif (ret)\n \t\tgoto err_put_dev;\n \n \tdev_set_name(&master->dev, \"i3c-%d\", i3cbus->id);\n \n-\tret = of_populate_i3c_bus(master);\n+\tret = fwnode_populate_i3c_bus(master);\n \tif (ret)\n \t\tgoto err_put_dev;\n \ndiff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h\nindex 592b646f6134..6b03a3ce574c 100644\n--- a/include/linux/i3c/master.h\n+++ b/include/linux/i3c/master.h\n@@ -177,7 +177,8 @@ struct i3c_device_ibi_info {\n * @pid: I3C Provisioned ID exposed by the device. This is a unique identifier\n *\t that may be used to attach boardinfo to i3c_dev_desc when the device\n *\t does not have a static address\n- * @of_node: optional DT node in case the device has been described in the DT\n+ * @fwnode: Firmware node (DT or ACPI) in case the device has been\n+ *\t described in firmware\n *\n * This structure is used to attach board-level information to an I3C device.\n * Not all I3C devices connected on the bus will have a boardinfo. It's only\n@@ -189,7 +190,7 @@ struct i3c_dev_boardinfo {\n \tu8 init_dyn_addr;\n \tu8 static_addr;\n \tu64 pid;\n-\tstruct device_node *of_node;\n+\tstruct fwnode_handle *fwnode;\n };\n \n /**\n", "prefixes": [ "v3", "03/13" ] }