From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 E5507340274; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=rdRKHLq4pr9/Dim+oESFlC+VuXE9IChiXinBXPLJPbpigqF19fOpWO8shCcajYNQI/5lgmlsUvw0eHnJm+HJxEg6oiE1owyinYWqrR9cXzWTvAZqD8C7Rv++SOocWNXXtenS8xoHnwCp9v48/WUkcNZjwvlAJXpF9KNvpN5z0P4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=GlJ71tujJcltgFnDfKrfK0RHu+muqUMEqgwXCraygEc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=E53USvAkhyoJXiwwH8pU/iiOpB0GxDXlX0SwZFFSZaFwM3DB9pkAMNFeYCvCf7oNE8Y+W4Lt0dY9erUGQFoNGNa1xUJeEjVfL9Kep7GRClUp9MOHkB5MbiLkT+iqlGD7gFFgD85xiPVvXd2kQTBZi3OoG6dtpu/kYPEhzUcV3F8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qPK5FJyN; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qPK5FJyN" Received: by smtp.kernel.org (Postfix) with ESMTPS id 76E14C116D0; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028225; bh=GlJ71tujJcltgFnDfKrfK0RHu+muqUMEqgwXCraygEc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=qPK5FJyNyNLOdyFBO1fPmuCs1oOgPLjMQFYe8nXlyuGXL53XShBPW+PahnOSiSMuv qrtOM72eHZPbp8B8u0/5p7UvfFzk11YlV3ZChP9QZyRHqMyO/Il6SYaqei19ylqf9R ZxkkDSbG76bf15nP7ChIFPhRsdBC95jUjDzGE/iixUAtQp11UW0JZcePIzOpjhDl2E YH9uuxpFNldJsn6J+X3wuuCV1t7iaQwB9CxBQ6f9D9LUKXAUncGiOlp7HAC5Up6kAr FwJOcU77FXUbIYVHiN/tNp4afgHIvnBfeskThoeozIV3napWa6tX+Y950AJZx6oHLo /SwrgIOuzdcrQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5F9BCD277CB; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:19 +0530 Subject: [PATCH v3 01/14] serdev: Convert to_serdev_*() helpers to macros and use container_of_const() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-1-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam , Bartosz Golaszewski X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2192; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=07vK9ciXXRPSn3N/nNhnkZAEN4PO5YKuZEczKGyjzQ4=; b=owGbwMvMwMUYOl/w2b+J574ynlZLYshM/GEjYzNRJORqXULiQXedtd3npnI4eaX526fXqrgKb Ej/WVzfyWjMwsDIxSArpsiSvtRZq9Hj9I0lEerTYQaxMoFMYeDiFICJiG9m/2fC+zD5btbTF48C Gd1ZCqdmB4jYNhm8fJwgqDhjxYeqwr28Gyy3aO8KvR54Opv59yLxmPLWqi8b93UIGuWluTFdcV+ c5dljYuG4NNxQ+1OoSH+68jetqKZdgvZhCaXMGYlCITHHDR+5V5fsbbztvdtBcHd5t8rLaYHSG5 bbO/NpPE58sWfJo0LRxub2xkt/f67/t7NXokjpjZHk9MMxl9vvHOfcH/1xPt+R92/fz7oi3V33a T9bmJ+5AwfrYslFLrlvBb7qc0jq2fLOWXqxVelRjJm8+6S+vTu3szAsqeKfNWWKcuD/xb+dDZ4y 2i9+VVIiJ9y5Ufz/kVU7bed89fy5oGVloPsGL4MkVdeJAA== X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam If these helpers receive the 'const struct device' pointer, then the const qualifier will get dropped, leading to below warning: warning: passing argument 1 of =E2=80=98to_serdev_device_driver=E2=80=99 d= iscards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] This is not an issue as of now, but with the future commits adding serdev device based driver matching, this warning will get triggered. Hence, convert these helpers to macros so that the qualifier get preserved and also use container_of_const() as container_of() is deprecated. Reviewed-by: Bartosz Golaszewski Signed-off-by: Manivannan Sadhasivam --- include/linux/serdev.h | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/include/linux/serdev.h b/include/linux/serdev.h index 34562eb99931..ecde0ad3e248 100644 --- a/include/linux/serdev.h +++ b/include/linux/serdev.h @@ -49,10 +49,7 @@ struct serdev_device { struct mutex write_lock; }; =20 -static inline struct serdev_device *to_serdev_device(struct device *d) -{ - return container_of(d, struct serdev_device, dev); -} +#define to_serdev_device(d) container_of_const(d, struct serdev_device, de= v) =20 /** * struct serdev_device_driver - serdev slave device driver @@ -67,10 +64,7 @@ struct serdev_device_driver { void (*remove)(struct serdev_device *); }; =20 -static inline struct serdev_device_driver *to_serdev_device_driver(struct = device_driver *d) -{ - return container_of(d, struct serdev_device_driver, driver); -} +#define to_serdev_device_driver(d) container_of_const(d, struct serdev_dev= ice_driver, driver) =20 enum serdev_parity { SERDEV_PARITY_NONE, @@ -111,10 +105,7 @@ struct serdev_controller { const struct serdev_controller_ops *ops; }; =20 -static inline struct serdev_controller *to_serdev_controller(struct device= *d) -{ - return container_of(d, struct serdev_controller, dev); -} +#define to_serdev_controller(d) container_of_const(d, struct serdev_contro= ller, dev) =20 static inline void *serdev_device_get_drvdata(const struct serdev_device *= serdev) { --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 E546A3385B1; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=NYTCOw7i9dcur0O1dN1ZeLn9kLssFWz63wm78+ZmhXi9ipH5Em12AzNI4HJaVa1J8wJuiAsOn3+c/DpsJJiusPfgQ19WwWZCuI44Pgw+29APXkof6uM5Go7iY6Yy7lCVFZSGCh2Kql9ZFucN5cutA+73oaqeCvF1hdwlcD67lp0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=VwpIUgJ7TQ6NyHLOeJDcf/38Dl2NWNEcsZHgAexS5KQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JqruNggnkdx3t0fEOosNaVWeq/FpUBz0dEtCJQvJYifJFDnQPF73Q0T2++zVBhI6AKTGZE20ZT+E5/+KXWvDlejwUyB1WIegHZvqlJsO5yTEwvYX2krNlxRKqcKT5oKnr5StAtSE4baC0ig0KBxakCmuIuB4Jwr1H9RhQZFl22c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gaNRxwaa; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gaNRxwaa" Received: by smtp.kernel.org (Postfix) with ESMTPS id 88AE2C19423; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028225; bh=VwpIUgJ7TQ6NyHLOeJDcf/38Dl2NWNEcsZHgAexS5KQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=gaNRxwaa1xA53wpR82JRgCJBpVRsFPp4AI1idARPpFuYDLNs5B5Wg1geNQGpPdVuw rvHksekciYtK/BgQj70Yv0LPmJp4OLM7T0czG6OM4HhltsQjvV8JUVQ3lXDRe0rwJU Dxhngxz5wDn2ejCBnDT4qywYL2i8mLl6jKwyz2sbqBW8PAmlioluGYMZyBbxfSYGnB 4/tjGh6dsvtSrR3Io6IxIUHGT1wHLYvjInYaLwpmNlycD6ivD8QUEcmsvUCyxJuKOW /Zg/uyoJtZl+5pXmXQtVf0OoHeeU9kDvlUk7s/xmanZu0qkrZ5juDpxqeJckSuFTzT LL+t4SYFiQojQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72ED9D277D1; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:20 +0530 Subject: [PATCH v3 02/14] serdev: Add an API to find the serdev controller associated with the devicetree node Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-2-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1955; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=J1VmrZOJOQw4R6fDrVVe/0GgAe/UzN5xgoimqww9n5Q=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpYfg9QM8A+1VPvL0rKXJiMoRco+nmRGnRevYTT du98tgz4V6JATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaWH4PQAKCRBVnxHm/pHO 9U4FCACCxwOFdIfnKu6XwNfbf0DiMLVwnYANlCMmV8YvO8SM6DWM4q+V0auY68FxCxuZBxMAe6A y0wdrMcHA4K12q9KSo5OSvK/JVNhSpQ/BtaA2R3cXVMUuTHqkUVQ/EcHThO437kVeHdv60pAr8o /Die73XV8o5rvAG2v6Xxa6ivG8hZljucsJXIKaelDwWPM2tiBe3Y10ihUScbh/YLO3TeMCrapfZ IARiXJ+jEF4w43ZUFpBhI0aVDvpAlzUEtw58HrUdCasviZYFRcEwEnnHjpr4tERJ2K1clRabAha KOv17NjtUG3BGUHV4DPQ63wcEkX8Um5PNMffDNYtNlk7owbS X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Add of_find_serdev_controller_by_node() API to find the serdev controller device associated with the devicetree node. Signed-off-by: Manivannan Sadhasivam --- drivers/tty/serdev/core.c | 16 ++++++++++++++++ include/linux/serdev.h | 9 +++++++++ 2 files changed, 25 insertions(+) diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c index b33e708cb245..25382c2d63e6 100644 --- a/drivers/tty/serdev/core.c +++ b/drivers/tty/serdev/core.c @@ -504,6 +504,22 @@ struct serdev_controller *serdev_controller_alloc(stru= ct device *host, } EXPORT_SYMBOL_GPL(serdev_controller_alloc); =20 +/** + * of_find_serdev_controller_by_node() - Find the serdev controller associ= ated + * with the devicetree node + * @node: Devicetree node + * + * Return: Pointer to the serdev controller associated with the node. NULL= if + * the controller is not found. + */ +struct serdev_controller *of_find_serdev_controller_by_node(struct device_= node *node) +{ + struct device *dev =3D bus_find_device_by_of_node(&serdev_bus_type, node); + + return (dev && dev->type =3D=3D &serdev_ctrl_type) ? to_serdev_controller= (dev) : NULL; +} +EXPORT_SYMBOL_GPL(of_find_serdev_controller_by_node); + static int of_serdev_register_devices(struct serdev_controller *ctrl) { struct device_node *node; diff --git a/include/linux/serdev.h b/include/linux/serdev.h index ecde0ad3e248..db9bfaba0662 100644 --- a/include/linux/serdev.h +++ b/include/linux/serdev.h @@ -333,4 +333,13 @@ static inline bool serdev_acpi_get_uart_resource(struc= t acpi_resource *ares, } #endif /* CONFIG_ACPI */ =20 +#ifdef CONFIG_OF +struct serdev_controller *of_find_serdev_controller_by_node(struct device_= node *node); +#else +struct serdev_controller *of_find_serdev_controller_by_node(struct device_= node *node) +{ + return NULL; +} +#endif /* CONFIG_OF */ + #endif /*_LINUX_SERDEV_H */ --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 E5589340A6A; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=HReDt2J+Fp87gFxOCNcAi8TP4kDRW+2PRIOY1PRIPeQC38kpSosypKTGvxXwu3lrkljOP09ZNm6Z8+EcRieoX0ngciWErTuQBdzzHP6V8pEA3F+rrkRTNpCLoPe6VsFjtZt/iOkv8ZY1lkTzSOkIAJxmDE2eXes1yLq6831Ok44= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=MrBUC1wmi8uciU3bCUYc92QobUNzcBCxMC4SGHPjB9c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CKam7m/Fs36H39eV7PlnMeOPDh7dS5a9ReMCYmrhhpiJqk1ekKoBkZevlQggN2ZTTNIkmtA/15Y6dmpFpJWSS2XLDiIOGdoNoIzNv2ee6L2CdXDnNAnWwQzp1qj1ZTfDZr76SxP3vOfUeHV7qWV9kXw6hsu4NMUiXBKsVo+nVJc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=azu4r3VI; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="azu4r3VI" Received: by smtp.kernel.org (Postfix) with ESMTPS id 96D46C2BC9E; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028225; bh=MrBUC1wmi8uciU3bCUYc92QobUNzcBCxMC4SGHPjB9c=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=azu4r3VIn5+3VoFwJSRLNsyFMrU/pfyTw4J7BPxwhOkykKai8Aqc8kMfqmSVsy3Mt jSkxUuVgnEk5pHSz08Ke1tr6DcYN9KcEVReRDUsCzRp6Rjjiiq9+pDiJjxOxSYsad1 e8UP7I6W8r+7L54K9dnvDJslBErd0wfEjeZs0PRgROGgY1uTTDnhsPCLhlT1H5Z/XS wehYcu4kAz9jOoTXk70CUqvOXZVStvgrSCzzgQei35fBij0BKbXakVs2FjMaAqMsRR CZ8ja//JW9KreE3XfKn4yYbd0WqtrYqGf3GmWra2N0NENVMfKPEtSSbYSqkANevaRP MF90Tl2npzOtg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8A3CFD277C2; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:21 +0530 Subject: [PATCH v3 03/14] software node: Implement device_get_match_data fwnode callback Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-3-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam , Sui Jingfeng X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2751; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=F4x+figNtDXQ6BLWQUSdqEh/6YP1l/9oLa5mqDRbEME=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpYfg92szPUWg0M5Z43p+tA6xqrl3Xl+TIDuuuW XT09vq7oMyJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaWH4PQAKCRBVnxHm/pHO 9Ra+B/9a2vNsci/y7Vpukgq08GScntUk3yAHclypYGi2q/5MqocsLJbX2OW+UJ7m09cC9mwWHW9 AjiVY6ee45aGahT2qvrBUDo8pfqzMgj+XDXR58kY0HeUsdYN2VxhlgdgSbPt8dwbIJRKt01iSbg 6D8jlu6wA6SRpswVZrY+8QCxMfOiylv388qf0ymdwhNz3UDkdbMDKfrHhHOPwXYyf2CMW/2RTCt eVEDd1fcPULjtiOFhKCS0TH9F2L7Fb+nr+ID2XL+RS5IhX773uIyZ+tcRsibmv/iazQy41ImfM1 SUX0ODTN1m2oiueF2rjUeQgUgz8KGWouTV7w9qbBynZj1YKu X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Sui Jingfeng Because the software node backend of the fwnode API framework lacks an implementation for the .device_get_match_data function callback. This makes it difficult to use(and/or test) a few drivers that originates from DT world on the non-DT platform. Implement the .device_get_match_data fwnode callback, which helps to keep the three backends of the fwnode API aligned as much as possible. This is also a fundamental step to make a few drivers OF-independent truely possible. Device drivers or platform setup codes are expected to provide a software node string property, named as "compatible". At this moment, the value of this string property is being used to match against the compatible entries in the of_device_id table. It can be extended in the future though. Signed-off-by: Sui Jingfeng [mani: removed fixes tag] Signed-off-by: Manivannan Sadhasivam --- drivers/base/swnode.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index 16a8301c25d6..cd722712b8e9 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -390,6 +391,33 @@ static void software_node_put(struct fwnode_handle *fw= node) kobject_put(&swnode->kobj); } =20 +static const void * +software_node_get_match_data(const struct fwnode_handle *fwnode, + const struct device *dev) +{ + struct swnode *swnode =3D to_swnode(fwnode); + const struct of_device_id *matches =3D dev->driver->of_match_table; + const char *val =3D NULL; + int ret; + + ret =3D property_entry_read_string_array(swnode->node->properties, + "compatible", &val, 1); + if (ret < 0 || !val) + return NULL; + + if (!matches) + return NULL; + + while (matches->compatible[0]) { + if (!strcmp(matches->compatible, val)) + return matches->data; + + ++matches; + } + + return NULL; +} + static bool software_node_property_present(const struct fwnode_handle *fwn= ode, const char *propname) { @@ -694,6 +722,7 @@ software_node_graph_parse_endpoint(const struct fwnode_= handle *fwnode, static const struct fwnode_operations software_node_ops =3D { .get =3D software_node_get, .put =3D software_node_put, + .device_get_match_data =3D software_node_get_match_data, .property_present =3D software_node_property_present, .property_read_bool =3D software_node_property_present, .property_read_int_array =3D software_node_read_int_array, --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 E534922097; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=k3B0cGl+G4ukdD5CmG3ss+WFMiAviIdduu6K2CFtWV62CcxWgfBpWZB7bwgOqp0iOtpv8QzjavOc1mWn6Kes3NsuD+xAkQOpNXUi1oyq1XUBxKek2JYekVOKZsmLIdd13u+loXC+A08yg45f2M2ANa3+wnhTbGa944xfksruhrA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=hDPnw+4s+5AfhYRapWXIeYIqcco/LOIiPCYIsOdQ49Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mi6D3kbowxFpaPMxmDw5HOgvlYHHs8XncGtC7vWyREuWBcO9Zx1Ed5EkdFSMWU4mC2f0AgoKol+4EIF6rAO6uGRI7vF7D/+qEPOZsJ2RRf5M7NWJ58yp0o9MgkGDMaxPi0g9tlRUFRU3KJnMHsj+R6ReF6Dmf7z6YnidX/uUKLw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VS4YRnk2; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VS4YRnk2" Received: by smtp.kernel.org (Postfix) with ESMTPS id A68B6C2BCB7; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028225; bh=hDPnw+4s+5AfhYRapWXIeYIqcco/LOIiPCYIsOdQ49Q=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=VS4YRnk2PEE25T0jdogoLuk7ga23MFTeQpsg0EMM/7nu0jS88kgaotPPmuBGk+EuZ +ZoAx+ao731/GVK1S4g2KQahecCIVnXAKlxvJ+YjSSCtc7SQSvNqOh+WrdiGniBRYu 61f5T2qcXEaetVGDxZJdyi/E+yRmXo6ocOdPkkqtuq+AiipSuWwhVAWGcM7yql+gBq T0TbNlgmGiklxv49QcgFwZCSmPFhc3vMc62JVNC94G6opHJ6tDbzswSQgJIexXJLPM 09HFZOVUC5qg9SUjfh4frQ8pTw72J2UKrocd7svvhTfEtoV+tdzZXLH/LiSaScA/2J vAPTH010m9j2A== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9AF9FD277CB; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:22 +0530 Subject: [PATCH v3 04/14] software node: Add software_node_match_device() API Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-4-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2069; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=mk+22vELC/3V7yY/NXlFA3vD3kSET8m5DTszs9AvqXY=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpYfg9Y99IanSmu9QJ6YjBWzXaYH1WMkXby+Z1k MFTY95nCtqJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaWH4PQAKCRBVnxHm/pHO 9YtIB/92vQe9mQsngvUdSjaLUQ7AU4/ek+jfJ1Sl4uMFPGnwNkfF/C0CnVYAqlo7kTSx3PMkS6e puOyptgLde2NI/FJAi9xWlPOAGZoEWA0UuR5vm5Ruua5a5pPDl/kN1P8TatbXHLxvZ270irGGgq kOr+XGlTA1xJbJo6dCnn9RnGsT0U71tNueOaiKoR4KuID2xszPv3rzhAVdmgnytX9C/MTCN4O6i uREiUhoOES477d29EqyCMIt0LupgeiftbShlhKO14mp57wvXz6awEaa5Von5aW4gGgSpQFm7PKw TT/z9GfBt82BZcIoCueY5KM9c4bEKdOE3uWmadm+lKv8D2wH X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Add software_node_match_device() API to match the swnode device with the swnode driver. The matching is based on the compatible property in the device and the driver's of_match_table. Signed-off-by: Manivannan Sadhasivam --- drivers/base/swnode.c | 16 ++++++++++++++++ include/linux/property.h | 3 +++ 2 files changed, 19 insertions(+) diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index cd722712b8e9..4a3b367dea02 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -372,6 +372,22 @@ void property_entries_free(const struct property_entry= *properties) } EXPORT_SYMBOL_GPL(property_entries_free); =20 +bool software_node_match_device(struct device *dev, const struct device_dr= iver *drv) +{ + const struct of_device_id *id; + + if (!drv->of_match_table) + return false; + + for (id =3D drv->of_match_table; id->compatible[0]; id++) { + if (device_is_compatible(dev, id->compatible)) + return true; + } + + return false; +} +EXPORT_SYMBOL_GPL(software_node_match_device); + /* -----------------------------------------------------------------------= --- */ /* fwnode operations */ =20 diff --git a/include/linux/property.h b/include/linux/property.h index 272bfbdea7bf..7fe75ab732f6 100644 --- a/include/linux/property.h +++ b/include/linux/property.h @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -597,6 +598,8 @@ void software_node_unregister_node_group(const struct s= oftware_node * const *nod int software_node_register(const struct software_node *node); void software_node_unregister(const struct software_node *node); =20 +bool software_node_match_device(struct device *dev, const struct device_dr= iver *drv); + struct fwnode_handle * fwnode_create_software_node(const struct property_entry *properties, const struct fwnode_handle *parent); --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 4F328347BBE; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=Afvyu5jxc/tCTCj46Beq+K8FAoKdJbKL9nUOMJs9fM0aG3X8Q8S/HLc6FlarKWC8ZLTMhJBlLHcmza/YFxVZS7DBbOh/EgirH9uSqoKJgRLa+HHYiIGFZfZsVjHmkEl5v/5BE74IZh9XTnRcHCVd/4+J5QoI9iBddwam6K9YN0o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=GSgBsfmXVqxUIAIe+iFNAZRTMls5onoQDPmqVp33rg4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lS2S2DM5I9swhql3NSm8vJX1Z3ME6OwriuBPkoERJKTCxuwmoE3zXEcDZ46UmBtv8n+OIEj/SEfHfBG4j4/0dvnayLDm7AvU4PcrtPNPnFfBSK+goaZ+ldJZIhYolFSCVZ5SIybLdSHp0sZKqPsmPE0uVLX+EPQCWZTwiWYCK2M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=vQRW4IOH; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="vQRW4IOH" Received: by smtp.kernel.org (Postfix) with ESMTPS id C122BC4AF17; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028225; bh=GSgBsfmXVqxUIAIe+iFNAZRTMls5onoQDPmqVp33rg4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=vQRW4IOHlxJGj3ZOQSrJGNJ6KPkjQPyYWq2UnPSRfPD6lw/4ZS4O/z6eaov7Hlszg uCR5igMXDsBjf42heQGPQ2Co7MlZFcNIQQ/4WjczxqLCx9taNgvhq8YAH5ZBaWGzUZ ixMf78z+aKZ5DNpHArt6krPUygtRo2PKXFgtD3UQ8QIgrXdYB4woFXgb5bC0I7WMzM mlUNIgsuDuwic75Ptmh9QZWGWg0ncj4p/2AnOhB+OgkAAFGMmxjE4z7hjwVC7S7NPh 0Jr5wHuEhhud2aU3lXdRxRMOE8MndMzfSXr5QayzbN76h0QQaXj5X2E9yuxv5ZNAUQ M1YVjmQxot6LA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id AED55D277D7; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:23 +0530 Subject: [PATCH v3 05/14] software node: Add software_node_device_uevent() API Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-5-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1813; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=sTMShVrVQCSRXm+EW6kXtFuYXE2DwqSFk2YRZJf4cuQ=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpYfg9PRR1H3uAQByiIMRu/XB1zyrz9OoHeUCNf 4L6FFChmYqJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaWH4PQAKCRBVnxHm/pHO 9XbCCACQfptQOyQpTiKUhc8vhSqZyCZasHVZYWlCas1Fbl7JQeB7Y9xLVrM9p7ww2gN0f5ke6rU HMNHCbyhG8i1RrkaTOXyPIPwEOa+WC7sDA12rKWniG7VO5Rlxd314tcUt8FCuDlYaM6QEwUn10d 9isvFw3GqlHEV4Bk9UkZ+YT/ZYhMfKKeteJFF9fk5nMs3qWmjnQA0uUtD4WL6fE99ewKOYda+ll 7VbubsEx58qxgQgqv36e9bV1EQ6YqVRPxJdSQQt/V0dWC8VDZdrrCXNRRujzNtbMJqW9Sr9mYke xclfAySJhKwjECtCGvkF+aNwM/MXE+C3hzNX7BXrm/xtLTgq X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Add software_node_device_uevent() API to return the uevent variable for swnode using the DT compatible property. The uevent will have the DT prefix of "of:N*T*C" to match the DT's module device table. Signed-off-by: Manivannan Sadhasivam --- drivers/base/swnode.c | 13 +++++++++++++ include/linux/property.h | 1 + 2 files changed, 14 insertions(+) diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index 4a3b367dea02..c33e09300e5f 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -388,6 +388,19 @@ bool software_node_match_device(struct device *dev, co= nst struct device_driver * } EXPORT_SYMBOL_GPL(software_node_match_device); =20 +int software_node_device_uevent(const struct device *dev, struct kobj_ueve= nt_env *env) +{ + const char *compatible; + int ret; + + ret =3D device_property_read_string(dev, "compatible", &compatible); + if (ret) + return ret; + + return add_uevent_var(env, "MODALIAS=3Dof:N*T*C%s", compatible); +} +EXPORT_SYMBOL_GPL(software_node_device_uevent); + /* -----------------------------------------------------------------------= --- */ /* fwnode operations */ =20 diff --git a/include/linux/property.h b/include/linux/property.h index 7fe75ab732f6..14f85fd66bfc 100644 --- a/include/linux/property.h +++ b/include/linux/property.h @@ -599,6 +599,7 @@ int software_node_register(const struct software_node *= node); void software_node_unregister(const struct software_node *node); =20 bool software_node_match_device(struct device *dev, const struct device_dr= iver *drv); +int software_node_device_uevent(const struct device *dev, struct kobj_ueve= nt_env *env); =20 struct fwnode_handle * fwnode_create_software_node(const struct property_entry *properties, --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 58E57347FC7; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=WbjjYBZrnaM+/PuDYRV/Nst2rwFRy6UEpFRcRAk895wrolEjZ6DIC4t3BQTa44+ZY2p9cBygu8SCHO9gBJab28gDvNFV4JkV2GRDx1GHn8Bt5vBn70bA5gKlnn1JpofSTOGP3DmQmOp7eiYPc/R6BzAh/3jdVJu+KI4BAn1Xptw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=cfa1aF1gW0vt3JuTTI+jaUP6mzCPbxH1qoIF8G4DDy8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JFjNAqq6HNARP44AH+lR8iwM5ay/bYvzA0MmlSp/IyVTRWM5N27S6e/tLYFdbtNgwEGMvX6KrQ1Rc1U7IQZ1a5S1SPBou91rZqv3fz5ZfP27Viy9LTWHaZjmnHJMps8vw8Xr8QptF9W5qRlsCmzd82VO4XA7Zt3ajcq2A3MwOzM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AM76aYIW; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AM76aYIW" Received: by smtp.kernel.org (Postfix) with ESMTPS id CC21BC2BCB0; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028225; bh=cfa1aF1gW0vt3JuTTI+jaUP6mzCPbxH1qoIF8G4DDy8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=AM76aYIWs+gRDqQDIn1PHvbqXNy2/kRvoXZ/0HJaE1IrYXLNZD3+5ovrmdNasL1BQ 7gNGmBZEiDLTreu8rPjcpIZPW/y3aeoGCPThZe8NO/RcLsWfgqeALiv6rLpf6A8MfD ee5WHDbRabXBkfZYNngnVWY4J5wpzIgCoMVTQFAGh7M4v4foIyw1K60d1wNwDcwODn DTI1bYzzKLAynvTxW2nkwnLPtfNigAWTi0Rrp/Sp6lLpHGiV2SDncNs2GaH2/cjI4O LJMjUFDBO3ih34B4PwPlaWC3EVvPHA9pLtChp2tBFzBtMOR9H94PkT1oLEGaqmQF2q 6GbPlVzblqqIw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id C2A6AD277D6; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:24 +0530 Subject: [PATCH v3 06/14] software node: Add software_node_device_modalias() API Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-6-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1735; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=hP/S8Z4ct7CcIRG39KVjpY1137sEbkCLhENN+ADZYvc=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpYfg9uwIlLNwsjiWJEiqmMui2S6mjeDAmocoYD B3oBp/UHmOJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaWH4PQAKCRBVnxHm/pHO 9ca0B/9SLAMwWT9XvwylsIVN2bRjxI8FjRSwSkLnEt/XBOa61mhgkOFI/IrWMtdGPHN3qdU6Uhm FyudWgJPzcddwKwp3xY5Nf0NTofUzSrcI13Orctcjxc20nKl9mguMlbNmn3Q6kVicCWRFv6ujzY qWvrG1yNtQxEuY4/utH4HWxT2Ex/n1vQ6yYlLmWLPgWTgMoEVju6T4Mckan2+45Wlth/ZbnwMHg DyGfsZhr4dHiuKxmfEqtoy2KGbu+GL396UG2zue95hQuTFv1Mz56313B+GZxCeK5U3LAylTQTkI TqfqNO5gRmqg4kvrK5cEFRJqaM2dQIESVnyvUOaEEvKdqkNz X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Add software_node_device_modalias() API to return the MODALIAS string for swnode based on the swnode's compatible property. Signed-off-by: Manivannan Sadhasivam --- drivers/base/swnode.c | 13 +++++++++++++ include/linux/property.h | 1 + 2 files changed, 14 insertions(+) diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index c33e09300e5f..a9fa19a27dc6 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -401,6 +401,19 @@ int software_node_device_uevent(const struct device *d= ev, struct kobj_uevent_env } EXPORT_SYMBOL_GPL(software_node_device_uevent); =20 +ssize_t software_node_device_modalias(struct device *dev, char *str, ssize= _t len) +{ + const char *compatible; + int ret; + + ret =3D device_property_read_string(dev, "compatible", &compatible); + if (ret) + return ret; + + return sysfs_emit(str, "%s\n", compatible); +} +EXPORT_SYMBOL_GPL(software_node_device_modalias); + /* -----------------------------------------------------------------------= --- */ /* fwnode operations */ =20 diff --git a/include/linux/property.h b/include/linux/property.h index 14f85fd66bfc..94ea02ae1675 100644 --- a/include/linux/property.h +++ b/include/linux/property.h @@ -600,6 +600,7 @@ void software_node_unregister(const struct software_nod= e *node); =20 bool software_node_match_device(struct device *dev, const struct device_dr= iver *drv); int software_node_device_uevent(const struct device *dev, struct kobj_ueve= nt_env *env); +ssize_t software_node_device_modalias(struct device *dev, char *str, ssize= _t len); =20 struct fwnode_handle * fwnode_create_software_node(const struct property_entry *properties, --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 7EE0D34886A; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=QHmZ8XQeLMfeDBbqy3Zd0J5dyDviPPWfqpwqmVCo8Q9aleSHTJQBrcxwzVq3LkwJxcSFSfa+M6MkeF2/l3DmZlZSxqGm6BpQS1J2NMfXgzb42gcZnWucFsTBwjx9103OOLliiUPI+dxmQ99J06EVBkCYe6YRjzNKiWte0JOaLTc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=phbllhBeNk7oBieBbdMZ19g98Tr+ZxNyuZaevxor5S0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HZi+/8Kh7fY1QvxcNi3p7ZH/2CQ/TaTXgo+FqATesgLPGmrSccezKeMayv4cSYS4uNQdLElxs+sHkj+pBjOoHeqzwC2l1ngGwxlQ2VC4wkISrvlYBm8LJeSiIAl9QcbIcI81wIfI0HnthQUd6OQTQlrZj28hFPe/i5zVc8OE03Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rCo3yUZb; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="rCo3yUZb" Received: by smtp.kernel.org (Postfix) with ESMTPS id DD7FFC19424; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028225; bh=phbllhBeNk7oBieBbdMZ19g98Tr+ZxNyuZaevxor5S0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=rCo3yUZbliZxFJjCLNnr3ao/3eKdXJRjdxNCKL1dgAuVR25PrtYUQa++eg4jQk3UG D5cRpH6hfMNavb9G0YSqoVJF+jZguX5F3VVS9S3UbeBEcV1syrJGHPzy1dXpHfv5LF R8jEyANwfouvfvJl++ql4oqJtd5WuVD7wrfOmxOKW4/1B1HGCqa19bFmX0A5GKyFfm G1rU+TaDVbgzDNXZKbEnIaIoGDj6BEj1yQ7SCYG/P53GEOpv2nTKmrQOSZbvq+v0G7 6BwmvUWYRA0zYGYLzKqxcOuW7RrytZ0jl7VKiNkZKOoQX5nwTPgivITAtSez3MlFKz KBd8zizqlYUMA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id D46ACD277D3; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:25 +0530 Subject: [PATCH v3 07/14] serdev: Do not return -ENODEV from of_serdev_register_devices() if external connector is used Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-7-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam , Bartosz Golaszewski X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1366; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=70A6WG9+LyiVcQGDZXLPxALHM/UGaFUvvsHfTehdZzg=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpYfg9Khi7o7bjNURNbJHChi9Xs/IzE+Q745IFg DPzM3xXfTSJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaWH4PQAKCRBVnxHm/pHO 9eknB/95WTOtPz5HLwNUgBkyhmw8DmzD+WDdce0vJG/uQuv0n1DteeIGEGWfk3J+AwD4yw5Qvf3 MBgUN+vYR9nPgUps3USOkcAQY7k2zB0DD+lG740F/O9HMn1QgJVZwJB3z6jZJYX0RYN5E0G+0Ja 5tUIYLvLIkBrA5v+F6zttdaSct+cV61re7lcrHQ3RvQv2/ubaQ7CFBfzH3Y3mTjlmYtswk2vyHL s5FyAXMRn8ufKtq1GigdLpBVZQLrXTOO7AJjbBXHKbCWfyS7O7SevC48eb1xZX+Brv2hCxAqm/0 74flSptHZ9lX9lzSnAWH6QnuQ05WR5/1235YG1Ps0YbVkw4u X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam If an external connector like M.2 is connected to the serdev controller in DT, then the serdev devices may be created dynamically by the connector driver. So do not return -ENODEV from of_serdev_register_devices() if the static nodes are not found and the graph node is used. Reviewed-by: Bartosz Golaszewski Signed-off-by: Manivannan Sadhasivam --- drivers/tty/serdev/core.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c index 25382c2d63e6..f8093b606dda 100644 --- a/drivers/tty/serdev/core.c +++ b/drivers/tty/serdev/core.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -548,7 +549,13 @@ static int of_serdev_register_devices(struct serdev_co= ntroller *ctrl) } else found =3D true; } - if (!found) + + /* + * When the serdev controller is connected to an external connector like + * M.2 in DT, then the serdev devices may be created dynamically by the + * connector driver. + */ + if (!found && !of_graph_is_present(ctrl->dev.of_node)) return -ENODEV; =20 return 0; --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 944E33491DE; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=TvLPciOEh8TPAUACGeCmubyXxPIuRhNwsP5MkgkGqWRBiD088IU5TtcoZZSrdQdwfbMYrmuB+bqITUUyywQaDpHVFiOthBp1TP6Waz0nd7OAS1hN6llUGTQd4V9lh1ztqrh41WK7ByLBjZ1wYpDpN/8+tca4PC5xVffCpQQKeus= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=NDb6qdy0KKw1LrVcPixfJYKC7AVP4amtn2lsxhBekJs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mhSHhXpCzaZsegICH8I96t1C4kJF0Emr5xUt6UjtSRjpigYnV0f6HOZoyAcedDoHNmV7nsjYQTLXPOq6vs2Eiz3XZi0OrwBxfDeH5DW08vrRYwu5nM5fHlL2qQhc0/KEyb1VSt0C/nRPGZYmgOs5HasM+/hJxwM3zBJsca67srM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VfImz76+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VfImz76+" Received: by smtp.kernel.org (Postfix) with ESMTPS id EFDDAC32781; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028226; bh=NDb6qdy0KKw1LrVcPixfJYKC7AVP4amtn2lsxhBekJs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=VfImz76+Hg0IDLKysyMKGUrWwdUx/VCsYU4g9qrhJEHZ8zw8pLhmii+vXt7QjX39b 62GHaOWlveWAwERl3HDa7H8obgi/FVGFvgd62AYArXQNrCBLw7KPfV+ikomTptgoCn cOdXIRYQ57KHdw8zckiW7oW5nT8/j7IGUJiBE9+tVIcVAT8J85zQdrzctw+UXG0k9/ J7k+J6Y6gySo2ZC0ZC1TWi3SSt7xE8VEdtYMEYWMIAyjE6m+ZCbYcVMkXJTHx6/PcT 6XUqskRSIfhFoBpSPpp23fRaYQo41fz+hYAK2VPwVOEWZmAsFEbrZSFZttjT0KUvcu APdda0ab7IcVQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id E5896D277D1; Sat, 10 Jan 2026 06:57:05 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:26 +0530 Subject: [PATCH v3 08/14] serdev: Add support for swnode based driver matching and uevent/modalias Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-8-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1971; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=ztgleD54+6Zk3c7WxZw+JwZdp+qXwtb/lr5ljYSVfhE=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpYfg9QNXjpaheJP5YAT8ny7fL5q87y0Zdwg2/U gsFL4mjHGqJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaWH4PQAKCRBVnxHm/pHO 9T4vCACF2a5507fcpAKDXWuFhB/oYAjv61TYBcrL2Z5hZg5EHYqirBilvLQC9qcrr09bB/BxeJj GG0ov28WTuPluQ6ViKsenJveutLYm4bYch5fgua61cf34pkub6VMv+02aRjItRZ2K9iElznvuAk GDZ8qSNoOmhTAvjnvW32wEFbGgtoS07B9vxbAHJ0nN9JjL57Q4As+cJi6iOLO/ah/os6m+Ya5cS gMe1Be9zM55LiW+SC0VwEdazv1i8hZJ7EoQQqkET+UnZ0Vv0+T6weAIekMUH+y/dsEVsxBe/Or/ f+wnEdqqZiPGbona7MGvCtxh4ncWT3sXCV6FSLbXb9D8EGYt X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Serdev devices that do not use OF or ACPI can use swnode to expose the device specific properties that could be used to match the serdev driver. For such devices, provide the swnode based driver matching and uevent/modalias support. If a serdev device doesn't support neither OF, nor ACPI, swnode will be tried as a last resort. Signed-off-by: Manivannan Sadhasivam --- drivers/tty/serdev/core.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c index f8093b606dda..9d42bd5f550a 100644 --- a/drivers/tty/serdev/core.c +++ b/drivers/tty/serdev/core.c @@ -35,7 +35,11 @@ static ssize_t modalias_show(struct device *dev, if (len !=3D -ENODEV) return len; =20 - return of_device_modalias(dev, buf, PAGE_SIZE); + len =3D of_device_modalias(dev, buf, PAGE_SIZE); + if (len !=3D -ENODEV) + return len; + + return software_node_device_modalias(dev, buf, PAGE_SIZE); } static DEVICE_ATTR_RO(modalias); =20 @@ -49,13 +53,15 @@ static int serdev_device_uevent(const struct device *de= v, struct kobj_uevent_env { int rc; =20 - /* TODO: platform modalias */ - rc =3D acpi_device_uevent_modalias(dev, env); if (rc !=3D -ENODEV) return rc; =20 - return of_device_uevent_modalias(dev, env); + rc =3D of_device_uevent_modalias(dev, env); + if (rc !=3D -ENODEV) + return rc; + + return software_node_device_uevent(dev, env); } =20 static void serdev_device_release(struct device *dev) @@ -91,11 +97,13 @@ static int serdev_device_match(struct device *dev, cons= t struct device_driver *d if (!is_serdev_device(dev)) return 0; =20 - /* TODO: platform matching */ if (acpi_driver_match_device(dev, drv)) return 1; =20 - return of_driver_match_device(dev, drv); + if (of_driver_match_device(dev, drv)) + return 1; + + return software_node_match_device(dev, drv); } =20 /** --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 7CDF9348865; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=C7V9fM/FiEj2WrmzmbYRqTDfHtSF4OsL548N3yA/PClGU6ak8OQ8rS1/GFDOnkAoilIqq/h5xyQZiOOAdqiMIZKYIvJcBm6cXljjeESZShum58HVOPjgICJkmcgQu2fU1cP7XGPaTBlLL1yddJ0i2NVfnj/9NsSbyDQr/wl63kw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=/73Is6LSiZFdQQ1Wgzmm55BHcfPO7Tzrd+XL5DP+qdM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p7AZcYlFa7Fi0+CTgYsSO3RxfQG/s10FiOxK5gnUZOtb7TVEZMsWLQdXcTqyV9+QuPL2FiucTllRM3KyMB4Y7Qxrea1PusiZ8u31Q80hbkkkBj/zM5bglq7SxU5ofBkHb/Kh/tGojdIGCg8PAlf4MIiuWF7M2EwTm5LyZjbSkrc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PevRFR0h; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="PevRFR0h" Received: by smtp.kernel.org (Postfix) with ESMTPS id 0B58FC4AF10; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028226; bh=/73Is6LSiZFdQQ1Wgzmm55BHcfPO7Tzrd+XL5DP+qdM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=PevRFR0huWOxNmIZ2WZdsNenQkI/6u4adPi1dbDkCeDRJRZkUIQ6o1eGNUhFrp5fk ecaYxjxXrMwXJASUlmwcRltPhU4rAa1VF2DEyo8ihF+5FyJ0UL1LaVyEPMmUf8QJJp rDQ0CO0DIRApgfcjjT/Vge3rgtQGJu8Vq3QSrARBQfdKOewSSacZ3y3r6PGU/MRFKh njzX/G3GFTIuyXX2BEKX93NtRP7OnuQGmLGTuIqEc+UzBmDCa6T0Y8peO6qpZ4Q0dU ocf6NRNdqxrCJ/2kgHdgghvWD49NCUm6OqhlHZZW6NjrJA9AHLLzPljMJwQSgCCIEb ujppfrKhf/T+g== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 01D89D277D7; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:27 +0530 Subject: [PATCH v3 09/14] dt-bindings: serial: Document the graph port Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-9-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=924; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=T/idG4KQSOfNt30dCJ08aa+KY4iI2ktYxKaU/4zNwXM=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpYfg9hVx9oXxHFkCZ6ayTfpv7OrIXAlqSTNYnD l8BvU8TehGJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaWH4PQAKCRBVnxHm/pHO 9Zj5B/9FIjw9jA2pUEFQRfVjmhW9kmIDAx8BydxO0AL1yaiDPopbZg6C9WwrJAgtaEx+lk1KRss zrY054C1qo2Jo5Sfbhka1l7iXuVZatzbLl/6ahGv6BHdhxCL4SQNRxiYgk3MUaJ5K/pxXq4TOFg 2RvYtM8kTOfUyrDkMgNJXSdoUIIVfu/UL2XyaBghe+wtpnuidK7CmT0ZYzV2Gj1xVFwYJnFAunn 98Sh/AhLonSS3D7oxftax0zvR64ZtTWh34BjJ5lvYRc8Xxndn+odWCDrJoQP1OEtGmo+9nN6PTy IQqGi5soPZwdnGWzXfT4rhVYuHwmvy0BgULtqpWab9rYTznk X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam A serial controller could be connected to an external connector like PCIe M.2 for controlling the serial interface of the card. Hence, document the OF graph port. Signed-off-by: Manivannan Sadhasivam --- Documentation/devicetree/bindings/serial/serial.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/devicetree/bindings/serial/serial.yaml b/Documen= tation/devicetree/bindings/serial/serial.yaml index 6aa9cfae417b..96eb1de8771e 100644 --- a/Documentation/devicetree/bindings/serial/serial.yaml +++ b/Documentation/devicetree/bindings/serial/serial.yaml @@ -87,6 +87,9 @@ properties: description: TX FIFO threshold configuration (in bytes). =20 + port: + $ref: /schemas/graph.yaml#/properties/port + patternProperties: "^(bluetooth|bluetooth-gnss|embedded-controller|gnss|gps|mcu|onewire)$": if: --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 82955348884; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=QzIuc6jSiBwhiBOZjB+lafAVFSIt44H0YdXK31S9hZghcATBtN1gA0JOKlFtb2WwmTKwzjS/5mYSiQASMemA91iLb/CUzLXtLvtr3qo+sxBphAnypP+zRY8MdeaH2kxNP//6h8BrPo4XAQakUIUnxFU3RC1VsCxEEQBl3n/U0Vo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=dk4mLqGB8HV/CRsqSjV+YvmEuqYCijETIhOorvXYALk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mSSFQvKBpukAYHAqzPf7uUNw7za10kJYWdic7HABzanR+Um4+3d/2hwDDTpHn6zwNcyW3Ef86TpOLZ/Dqjc0nK1ItXDnUWMV+BufoM3IBNtQUAv86hQV+PJhuocYsd6ZvQY2bpHa6LsdUr+qdZ58HfznSO+5cNP4rpgaMowuRj0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Jw1Iik/i; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Jw1Iik/i" Received: by smtp.kernel.org (Postfix) with ESMTPS id 1E212C2BCB4; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028226; bh=dk4mLqGB8HV/CRsqSjV+YvmEuqYCijETIhOorvXYALk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Jw1Iik/iARVb376HXFDhACDPEuj46pFXNLOjXmvN5sowCMss7bqvebU7RttDuWFsU JV7gM8VayIayc+rnU/uvg8WYrdYRv4Y7ZqAzZ8ribdb6K53a3e0Q2/cDjT7zbdHIoO 6WOofl5FiEif+lXF/SU2xB0t51k3GUpNS0ffQIpP9EaWfr2b554EPje60/09JA7+kt 2ee62H+DttTqYNkfdn19cVGfwuvmPFnUUigPBqKzbDwkH0eGril6350+0Al7f7EE8J MeAap8fDNag5AfptxJ+X1cCLJHfGeS4IztSaVXpi9eexo90DrTcK/IjAsR9Ur3Ynt5 uRfmW1Bgt7iWA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 13782D277CB; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:28 +0530 Subject: [PATCH v3 10/14] dt-bindings: connector: Add PCIe M.2 Mechanical Key E connector Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-10-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=6614; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=XIar5qWWuuTCWWImKyuSAf8zg9fVNlxonQh07PPLrYk=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpYfg+xRXbpPHtwk3KsHpf3EwOSySWXW8bf/nSd UXyhKB9mLCJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaWH4PgAKCRBVnxHm/pHO 9fbZCACSW7aWcqHyXp4aPZUQwt7UjaTx+0AaVTgJY/mZlNgyfV6tUlNNUGW6nUc7i9b4Zq+zf73 xNedOM6qkd/5uE8V5uTDALDYsSEf+ut78Q81EZMcnQAAxAC6LJ0L0S5xIBqw9BIeg14frv2z57Q WM3APT5Pk832zXwGg+EMeyPEre3BEJU1LgKOm+S3kp76A3U/+yVKKepWqCO4Zq3eo/Zrun0494A 4uK3pxQD+1mUPA2RFbE8u9o5tgMrgxeddYUzmG1p2uDY/fFoRZHJ0szaliAHzZDJnaWzrMWEyC1 MrO/RaH8Q7TJHcs0tV9RBVAcCs3IYu95mJLvXe0HFvEY8cq0 X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Add the devicetree binding for PCIe M.2 Mechanical Key E connector defined in the PCI Express M.2 Specification, r4.0, sec 5.1.2. This connector provides interfaces like PCIe or SDIO to attach the WiFi devices to the host machine, USB or UART+PCM interfaces to attach the Bluetooth (BT) devices. Spec also provides an optional interface to connect the UIM card, but that is not covered in this binding. The connector provides a primary power supply of 3.3v, along with an optional 1.8v VIO supply for the Adapter I/O buffer circuitry operating at 1.8v sideband signaling. The connector also supplies optional signals in the form of GPIOs for fine grained power management. Signed-off-by: Manivannan Sadhasivam --- .../bindings/connector/pcie-m2-e-connector.yaml | 154 +++++++++++++++++= ++++ MAINTAINERS | 1 + 2 files changed, 155 insertions(+) diff --git a/Documentation/devicetree/bindings/connector/pcie-m2-e-connecto= r.yaml b/Documentation/devicetree/bindings/connector/pcie-m2-e-connector.ya= ml new file mode 100644 index 000000000000..b65b39ddfd19 --- /dev/null +++ b/Documentation/devicetree/bindings/connector/pcie-m2-e-connector.yaml @@ -0,0 +1,154 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/connector/pcie-m2-e-connector.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: PCIe M.2 Mechanical Key E Connector + +maintainers: + - Manivannan Sadhasivam + +description: + A PCIe M.2 E connector node represents a physical PCIe M.2 Mechanical Ke= y E + connector. Mechanical Key E connectors are used to connect Wireless + Connectivity devices including combinations of Wi-Fi, BT, NFC to the host + machine over interfaces like PCIe/SDIO, USB/UART+PCM, and I2C. + +properties: + compatible: + const: pcie-m2-e-connector + + vpcie3v3-supply: + description: A phandle to the regulator for 3.3v supply. + + vpcie1v8-supply: + description: A phandle to the regulator for VIO 1.8v supply. + + ports: + $ref: /schemas/graph.yaml#/properties/ports + description: OF graph bindings modeling the interfaces exposed on the + connector. Since a single connector can have multiple interfaces, ev= ery + interface has an assigned OF graph port number as described below. + + properties: + port@0: + $ref: /schemas/graph.yaml#/properties/port + description: Connector interfaces for Wi-Fi + + properties: + endpoint@0: + $ref: /schemas/graph.yaml#/properties/endpoint + description: PCIe interface + + endpoint@1: + $ref: /schemas/graph.yaml#/properties/endpoint + description: SDIO interface + + anyOf: + - required: + - endpoint@0 + - required: + - endpoint@1 + + port@1: + $ref: /schemas/graph.yaml#/properties/port + description: Connector interfaces for BT + + properties: + endpoint@0: + $ref: /schemas/graph.yaml#/properties/endpoint + description: USB 2.0 interface + + endpoint@1: + $ref: /schemas/graph.yaml#/properties/endpoint + description: UART interface + + anyOf: + - required: + - endpoint@0 + - required: + - endpoint@1 + + port@2: + $ref: /schemas/graph.yaml#/properties/port + description: PCM/I2S interface + + i2c-parent: + $ref: /schemas/types.yaml#/definitions/phandle + description: I2C interface + + oneOf: + - required: + - port@0 + + clocks: + description: 32.768 KHz Suspend Clock (SUSCLK) input from the host sys= tem to + the M.2 card. Refer, PCI Express M.2 Specification r4.0, sec 3.1.12.= 1 for + more details. + maxItems: 1 + + w-disable1-gpios: + description: GPIO input to W_DISABLE1# signal. This signal is used by = the + system to disable WiFi radio in the M.2 card. Refer, PCI Express M.2 + Specification r4.0, sec 3.1.12.3 for more details. + maxItems: 1 + + w-disable2-gpios: + description: GPIO input to W_DISABLE2# signal. This signal is used by = the + system to disable WiFi radio in the M.2 card. Refer, PCI Express M.2 + Specification r4.0, sec 3.1.12.3 for more details. + maxItems: 1 + + viocfg-gpios: + description: GPIO output to IO voltage configuration (VIO_CFG) signal.= This + signal is used by the M.2 card to indicate to the host system that t= he + card supports an independent IO voltage domain for the sideband sign= als. + Refer, PCI Express M.2 Specification r4.0, sec 3.1.15.1 for more det= ails. + maxItems: 1 + +required: + - compatible + - vpcie3v3-supply + +additionalProperties: false + +examples: + # PCI M.2 Key E connector for Wi-Fi/BT with PCIe/UART interfaces + - | + #include + + connector { + compatible =3D "pcie-m2-e-connector"; + vpcie3v3-supply =3D <&vreg_wcn_3p3>; + vpcie1v8-supply =3D <&vreg_l15b_1p8>; + w-disable1-gpios =3D <&tlmm 117 GPIO_ACTIVE_LOW>; + w-disable2-gpios =3D <&tlmm 116 GPIO_ACTIVE_LOW>; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + endpoint@0 { + reg =3D <0>; + remote-endpoint =3D <&pcie4_port0_ep>; + }; + }; + + port@1 { + reg =3D <1>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + endpoint@1 { + reg =3D <1>; + remote-endpoint =3D <&uart14_ep>; + }; + }; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 2eb7b6d26573..451c54675b24 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20795,6 +20795,7 @@ PCIE M.2 POWER SEQUENCING M: Manivannan Sadhasivam L: linux-pci@vger.kernel.org S: Maintained +F: Documentation/devicetree/bindings/connector/pcie-m2-e-connector.yaml F: Documentation/devicetree/bindings/connector/pcie-m2-m-connector.yaml F: drivers/power/sequencing/pwrseq-pcie-m2.c =20 --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 92B413491D3; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=eyt9WZoBFiAHjXQDn6jbg1bKIq5UgQsurIGgVeVa3/1G59e9q7GL2ZDgiYHWyA/1XmQYNg6IjGkgsQ8TszkcuSAiId/XL2WsP/MmZ/jqDCamW0l242wyW/nx46RQjHpIriJqCb4RfC+3TajVFn0yI0ciiIFN64OPJA6i5qe+274= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=uwW8257EhmouZpvkVKGgdUbE780fBLOlGG44AztWPJU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AVNqXCCWp9ssuGRmx67FaECp1DjcTQYTQ2SGkrcplqtPEgurQSZkUxzUJLSs4JIv5LyxziJASycjHNbFyZn1+OsrAd28mFlWgUw7EsIkIEzdv6lPMjx4u2njpM1AcYRbnXBPON5Js+bRbxQCrrXjZJcD4Fwo6G3tHqM4VPql2ZU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kJx9UTMp; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="kJx9UTMp" Received: by smtp.kernel.org (Postfix) with ESMTPS id 2F7E1C4DDE3; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028226; bh=uwW8257EhmouZpvkVKGgdUbE780fBLOlGG44AztWPJU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=kJx9UTMpx7TrzIfOrJ4DfnNUKzqW1idj0HevDma/2mXKgfygJTk6fSe01IfYyRgDR RvZeI/1oMYW6AEPzZegWMrIAerRx6TJ8eY6n3DA18RXbirjiISsDv/rF80kQpQNED2 84z5SbrnFWF4yu411MGAQpCe/dWyIVzi4pBsU99IIAbh2BvIIlPaTpg2/+1iXLX6km QrERoFCiT4v1LNQV6s3NKCRJs2xG3dkjAZNTda4NlA/kTGfj1x0WLQgXd/5Uz98GPn zlkhOjAIAbEGPUvZzGAkeq7c6LjX0XhwBPR8N81kANy4zF/ksudsIo3T4mEF2A7Agy iM56azZqmToqg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2651AD277D6; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:29 +0530 Subject: [PATCH v3 11/14] dt-bindings: connector: m2: Add M.2 1620 LGA soldered down connector Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-11-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1302; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=RWekJdEKdic9EZu4rQGv0fBKORumjbEDCuN8SBTLMc4=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpYfg+TRCoMWdJ2WYv0cU3v57JOA3eOkhRvc9NM QkwIwf2HymJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaWH4PgAKCRBVnxHm/pHO 9bSxCACn3aeHjikwTH34ED8GMiwZYePyUD6dpLxapg7iDk895cVBZ1IZOGZcvaOvrNc+F1Koz76 PsxffieAiZaRoIL3PpDMyaQ49vZ+W/mecd7Q9MmnEPWcU7PF45xDGYGwcU9173vd6GbHICVxJ7a SHWSjXXiP8m3Jmu53tOznAuVAz2qfsbzn0TS3YlhlGRHhi96AmM2hux0doiV1dd0iF40NAEYwXd +n+dmeVZ2v8xXKF0GOHEzBlhU64ECcqKroJegmOdLcwwUdESsfpJS1GPP2IBN8jngvWuLIBasEn LSrsJ1XW1MpT922zo4+84wcVpbNDhq+/x0oz6xMM3qWWq2Y/ X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Lenovo Thinkpad T14s is found to have a soldered down version of M.2 1620 LGA connector. Though, there is no 1620 LGA form factor defined in the M.2 spec, it looks very similar to the M.2 Key M connector. So add the "pcie-m2-1620-lga-connector" compatible with "pcie-m2-e-connector" fallback to reuse the Key M binding. Signed-off-by: Manivannan Sadhasivam --- .../devicetree/bindings/connector/pcie-m2-e-connector.yaml | 9 +++++= +++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/connector/pcie-m2-e-connecto= r.yaml b/Documentation/devicetree/bindings/connector/pcie-m2-e-connector.ya= ml index b65b39ddfd19..9757fe92907b 100644 --- a/Documentation/devicetree/bindings/connector/pcie-m2-e-connector.yaml +++ b/Documentation/devicetree/bindings/connector/pcie-m2-e-connector.yaml @@ -17,7 +17,14 @@ description: =20 properties: compatible: - const: pcie-m2-e-connector + oneOf: + - items: + - enum: + - pcie-m2-1620-lga-connector + - const: pcie-m2-e-connector + - items: + - enum: + - pcie-m2-e-connector =20 vpcie3v3-supply: description: A phandle to the regulator for 3.3v supply. --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 9AFB03491E8; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=hQAb5zW6KER7r9ulwYp70ijgUSJ7uuR6Lhz7fycciKGY6fpWmqMmRS3Ub7SMq6RW80o7hJluxTgfgqe9ALh2soiqewgLAdn7rYfpiGXdNq7E0y7esY5GC6nFws7RFP90cY1ux71X4PT0GFdu9nGIG0cLo7i8hDSSMzx5xjEAfGo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=grrBzUog12+WE5FP8RC1t7J6n4Xk4iWQti4S7q8UyIM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MhXbq+QqEvWb7qZkADR+1IS2E4AhpBl1cccA9R3VF4Y5nxQAKIf4QoBbKGTIS9B7G1EBjM9nwjmJdMzM3sOxBZ/nu7sJox2n2p8KmSLx/cY6FpMjjTsIKsMP/RdiL6ag49FNiLjhfc8huWihkUDlNlp4VhNTJGs1B57Bc/rWe1w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Y+46ZSUV; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Y+46ZSUV" Received: by smtp.kernel.org (Postfix) with ESMTPS id 41874C4DDED; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028226; bh=grrBzUog12+WE5FP8RC1t7J6n4Xk4iWQti4S7q8UyIM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Y+46ZSUVPRG8or10IEAc5K4WnTRcjNLX1zKfpPK/FbnQbt4hkGqutU5/SREEtU2eg sacUr999eMhZJAHDgIo5FDnW2bHvV45IkuVjsvk/RwMK0+oFo5HwhrhdKINBmRQDTx TfQ2kMfParQ1668io3+FOmn/gRU9wAVT3BqDzoJuZRM3PkJtG7UnwizPgYXGhysU5S TiB/URbjNyYYrX5KpylNLT9pkpBM9tMWcGAVUrgw/plNTP1lLW6J+cwMzmNgu3zu3A lYQcY5rWMX0Vb1hJfHFwfp2Ujf76LjQ6vEMAG67CqEnZOfMTmeEhcXRGNbHoFwrjeg rMX+V/clzP7EA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 37621D277D8; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:30 +0530 Subject: [PATCH v3 12/14] Bluetooth: hci_qca: Add M.2 Bluetooth device support using pwrseq Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-12-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1456; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=0KqheeXO4Oi8QyG11TDbNEO023eYG3+bTSLkuoPEKb8=; b=kA0DAAoBVZ8R5v6RzvUByyZiAGlh+D6gx1X1RntZ/K3yScUSxWdo5j4RadVoAdU1StMEGJj+n YkBMwQAAQoAHRYhBGelQyqBSMvYpFgnl1WfEeb+kc71BQJpYfg+AAoJEFWfEeb+kc71mzUIAJKD LOTvAaJoMZCbAEBRXhX0J+Cz3taMSKs4B7qN/TsxqpJVRl+LWaQOw+E9j1hqK3hQYAyWZDV48j5 NG9BdtI0REUp0PVJgnEZuOc37ZTr97/2ybJGi+qgPbpdMp7v7a+JfY7G3sT1p5CKlD5e0YTZpBo X4QzA0Lry9bTVIZJMkbvxdTiUaUhDJONrzt/xZlidYiZ+6wOzzGAVgWmrbb00cEDP4FcqYexCHb Q79eFCjTiTh+mNfyJTtyVtU8nb3sfkdPRjiU3Uxk9oMDoxVp0MLPqVj4CJlfxaogiGv0uonuVxj EsRsjo86nq1xDPs0QI2omQWzootWm2f9IOEOoh8= X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Power supply to the M.2 Bluetooth device attached to the host using M.2 connector is controlled using the 'uart' pwrseq device. So add support for getting the pwrseq device if the OF graph link is present. Once obtained, the existing pwrseq APIs can be used to control the power supplies of the M.2 card. Signed-off-by: Manivannan Sadhasivam --- drivers/bluetooth/hci_qca.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 888176b0faa9..4d562596ebf9 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -2384,6 +2385,14 @@ static int qca_serdev_probe(struct serdev_device *se= rdev) case QCA_WCN6855: case QCA_WCN7850: case QCA_WCN6750: + if (of_graph_is_present(dev_of_node(&serdev->ctrl->dev))) { + qcadev->bt_power->pwrseq =3D devm_pwrseq_get(&serdev->ctrl->dev, + "uart"); + if (IS_ERR(qcadev->bt_power->pwrseq)) + return PTR_ERR(qcadev->bt_power->pwrseq); + break; + } + if (!device_property_present(&serdev->dev, "enable-gpios")) { /* * Backward compatibility with old DT sources. If the --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 9D1903491F1; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=Pmcit5zs7BAOmfZlwIjLcACIdMskisA5Eutawr9yr3ENGTuENmuhUpnWK048rCJguRWxrNDEuNMnSOlPH6KG9q1ooifDqGYrRgtpkIrPAorKi4496bTp3sEoKLUAhcQz5Qnj5MJY5ZnSxZF8UKIZQmDJONtvWFia0ZrZcjF04dc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=o3EP7DGVWpmfQ55FfQ7UE+pTx4x/bF5yjqD4JwZyj9U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jCNyKJRWTwKE6Wv85Yu8Nq5o5t9DUizSTCyjXbM0dY2Pxm4v8IX0yGi4t9QSyE+WHO15jV/xnv2cm7AXetpXN/E+zKiqUo32EwVRTTwQMfIIfsx8JPDvE0s6rJLmGr2jiaJQnaIX3vp82RcsMc7CV8JlN3/Sw/9utkhKxkOZp/Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sA8pu9GE; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="sA8pu9GE" Received: by smtp.kernel.org (Postfix) with ESMTPS id 55D58C2BCC7; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028226; bh=o3EP7DGVWpmfQ55FfQ7UE+pTx4x/bF5yjqD4JwZyj9U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=sA8pu9GEIyJPa3QNQI/TS5i2/e/iQAAncpGc9Y3fClHD2IuknBvV7i46TGKFB4tSl cbU8KdkMUedieGWJ4JxZ0aQf6Q2bH2TSTHpKXZqDlyNJOWQq3iZMf2/lA/rRHEFhID Yyvsh8/AjGmS0f/rBux4RwCxNMFtTrc2aIO792KkK8NuaUrtw13rrJOrxoSzwF6kgY UQtTRUaPW11T+0FSl3Rb0idx0T7CShVRI8v9p609m6WT0ug6n6L7cg+k6QBqvGze+B 0HgvbehGSxKktGMD2JTvZ2wYrMm2PNoMN/1pX3q3bVkhXihORmZIZPmd+O7GmU4Va3 tAfGzEW4Llf9A== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48BDBD277D7; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:31 +0530 Subject: [PATCH v3 13/14] power: sequencing: pcie-m2: Add support for PCIe M.2 Key E connectors Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-13-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=7602; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=L3fLxUcS/ZM0xt0PO5bBvwJwnG6kvAOi0CCQEuHyW0s=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpYfg+BQlwHo9zHpG0NlwLHgSmlY1b6CHVrz8vy s0bRj27vU+JATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaWH4PgAKCRBVnxHm/pHO 9SQYB/0ex3TP2nxHtEyEceU2Th/JH2oer8iesgVLx/UP8np3iySZyYT2OFA1Cbqs/ZR4xErewCS 2hWvJ721GsWbkUVz26X9dsH2dSme6PnaTAvEGUwiMCBXRPKfwt94lOAuFpjJWgjxtI9R88Tlpix dUbDGR04XA2iMPBotQnuxwnTFa7y7aYI0ittOvqoFV7mF23uLRixZD40VAu5KFauATqi6fzvmH4 Uwr2rBqC60bvwg3m0K2HHAeibGuNA8IVeW3kR8J30k3Ed9So9FH+h+EhmX7hgu9yrVOt9pwHniB NQTOqFDk37ZVFvFAlaJ8pWcZriIVFenataSP+ekTCVBBQSvC X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Add support for handling the power sequence of the PCIe M.2 Key E connectors. These connectors are used to attach the Wireless Connectivity devices to the host machine including combinations of WiFi, BT, NFC using interfaces such as PCIe/SDIO for WiFi, USB/UART for BT and I2C for NFC. Currently, this driver supports only the PCIe interface for WiFi and UART interface for BT. The driver also only supports driving the 3.3v/1.8v power supplies and W_DISABLE{1/2}# GPIOs. The optional signals of the Key E connectors are not currently supported. Signed-off-by: Manivannan Sadhasivam --- drivers/power/sequencing/Kconfig | 1 + drivers/power/sequencing/pwrseq-pcie-m2.c | 111 ++++++++++++++++++++++++++= ++-- 2 files changed, 105 insertions(+), 7 deletions(-) diff --git a/drivers/power/sequencing/Kconfig b/drivers/power/sequencing/Kc= onfig index f5fff84566ba..29bd204319cc 100644 --- a/drivers/power/sequencing/Kconfig +++ b/drivers/power/sequencing/Kconfig @@ -38,6 +38,7 @@ config POWER_SEQUENCING_TH1520_GPU config POWER_SEQUENCING_PCIE_M2 tristate "PCIe M.2 connector power sequencing driver" depends on OF || COMPILE_TEST + depends on PCI help Say Y here to enable the power sequencing driver for PCIe M.2 connectors. This driver handles the power sequencing for the M.2 diff --git a/drivers/power/sequencing/pwrseq-pcie-m2.c b/drivers/power/sequ= encing/pwrseq-pcie-m2.c index e01e19123415..ad94090bbdb2 100644 --- a/drivers/power/sequencing/pwrseq-pcie-m2.c +++ b/drivers/power/sequencing/pwrseq-pcie-m2.c @@ -4,12 +4,16 @@ * Author: Manivannan Sadhasivam */ =20 +#include #include +#include +#include #include #include #include #include #include +#include #include #include #include @@ -25,17 +29,20 @@ struct pwrseq_pcie_m2_ctx { const struct pwrseq_pcie_m2_pdata *pdata; struct regulator_bulk_data *regs; size_t num_vregs; - struct notifier_block nb; + struct gpio_desc *w_disable1_gpio; + struct gpio_desc *w_disable2_gpio; + struct device *dev; + }; =20 -static int pwrseq_pcie_m2_m_vregs_enable(struct pwrseq_device *pwrseq) +static int pwrseq_pcie_m2_vregs_enable(struct pwrseq_device *pwrseq) { struct pwrseq_pcie_m2_ctx *ctx =3D pwrseq_device_get_drvdata(pwrseq); =20 return regulator_bulk_enable(ctx->num_vregs, ctx->regs); } =20 -static int pwrseq_pcie_m2_m_vregs_disable(struct pwrseq_device *pwrseq) +static int pwrseq_pcie_m2_vregs_disable(struct pwrseq_device *pwrseq) { struct pwrseq_pcie_m2_ctx *ctx =3D pwrseq_device_get_drvdata(pwrseq); =20 @@ -44,18 +51,84 @@ static int pwrseq_pcie_m2_m_vregs_disable(struct pwrseq= _device *pwrseq) =20 static const struct pwrseq_unit_data pwrseq_pcie_m2_vregs_unit_data =3D { .name =3D "regulators-enable", - .enable =3D pwrseq_pcie_m2_m_vregs_enable, - .disable =3D pwrseq_pcie_m2_m_vregs_disable, + .enable =3D pwrseq_pcie_m2_vregs_enable, + .disable =3D pwrseq_pcie_m2_vregs_disable, }; =20 -static const struct pwrseq_unit_data *pwrseq_pcie_m2_m_unit_deps[] =3D { +static const struct pwrseq_unit_data *pwrseq_pcie_m2_unit_deps[] =3D { &pwrseq_pcie_m2_vregs_unit_data, NULL }; =20 +static int pwrseq_pci_m2_e_uart_enable(struct pwrseq_device *pwrseq) +{ + struct pwrseq_pcie_m2_ctx *ctx =3D pwrseq_device_get_drvdata(pwrseq); + + return gpiod_set_value_cansleep(ctx->w_disable2_gpio, 0); +} + +static int pwrseq_pci_m2_e_uart_disable(struct pwrseq_device *pwrseq) +{ + struct pwrseq_pcie_m2_ctx *ctx =3D pwrseq_device_get_drvdata(pwrseq); + + return gpiod_set_value_cansleep(ctx->w_disable2_gpio, 1); +} + +static const struct pwrseq_unit_data pwrseq_pcie_m2_e_uart_unit_data =3D { + .name =3D "uart-enable", + .deps =3D pwrseq_pcie_m2_unit_deps, + .enable =3D pwrseq_pci_m2_e_uart_enable, + .disable =3D pwrseq_pci_m2_e_uart_disable, +}; + +static int pwrseq_pci_m2_e_pcie_enable(struct pwrseq_device *pwrseq) +{ + struct pwrseq_pcie_m2_ctx *ctx =3D pwrseq_device_get_drvdata(pwrseq); + + return gpiod_set_value_cansleep(ctx->w_disable1_gpio, 0); +} + +static int pwrseq_pci_m2_e_pcie_disable(struct pwrseq_device *pwrseq) +{ + struct pwrseq_pcie_m2_ctx *ctx =3D pwrseq_device_get_drvdata(pwrseq); + + return gpiod_set_value_cansleep(ctx->w_disable1_gpio, 1); +} + +static const struct pwrseq_unit_data pwrseq_pcie_m2_e_pcie_unit_data =3D { + .name =3D "pcie-enable", + .deps =3D pwrseq_pcie_m2_unit_deps, + .enable =3D pwrseq_pci_m2_e_pcie_enable, + .disable =3D pwrseq_pci_m2_e_pcie_disable, +}; + static const struct pwrseq_unit_data pwrseq_pcie_m2_m_pcie_unit_data =3D { .name =3D "pcie-enable", - .deps =3D pwrseq_pcie_m2_m_unit_deps, + .deps =3D pwrseq_pcie_m2_unit_deps, +}; + +static int pwrseq_pcie_m2_e_pwup_delay(struct pwrseq_device *pwrseq) +{ + /* + * FIXME: This delay is only required for some Qcom WLAN/BT cards like + * WCN7850 and not for all devices. But currently, there is no way to + * identify the device model before enumeration. + */ + msleep(50); + + return 0; +} + +static const struct pwrseq_target_data pwrseq_pcie_m2_e_uart_target_data = =3D { + .name =3D "uart", + .unit =3D &pwrseq_pcie_m2_e_uart_unit_data, + .post_enable =3D pwrseq_pcie_m2_e_pwup_delay, +}; + +static const struct pwrseq_target_data pwrseq_pcie_m2_e_pcie_target_data = =3D { + .name =3D "pcie", + .unit =3D &pwrseq_pcie_m2_e_pcie_unit_data, + .post_enable =3D pwrseq_pcie_m2_e_pwup_delay, }; =20 static const struct pwrseq_target_data pwrseq_pcie_m2_m_pcie_target_data = =3D { @@ -63,11 +136,21 @@ static const struct pwrseq_target_data pwrseq_pcie_m2_= m_pcie_target_data =3D { .unit =3D &pwrseq_pcie_m2_m_pcie_unit_data, }; =20 +static const struct pwrseq_target_data *pwrseq_pcie_m2_e_targets[] =3D { + &pwrseq_pcie_m2_e_pcie_target_data, + &pwrseq_pcie_m2_e_uart_target_data, + NULL +}; + static const struct pwrseq_target_data *pwrseq_pcie_m2_m_targets[] =3D { &pwrseq_pcie_m2_m_pcie_target_data, NULL }; =20 +static const struct pwrseq_pcie_m2_pdata pwrseq_pcie_m2_e_of_data =3D { + .targets =3D pwrseq_pcie_m2_e_targets, +}; + static const struct pwrseq_pcie_m2_pdata pwrseq_pcie_m2_m_of_data =3D { .targets =3D pwrseq_pcie_m2_m_targets, }; @@ -126,6 +209,16 @@ static int pwrseq_pcie_m2_probe(struct platform_device= *pdev) return dev_err_probe(dev, ret, "Failed to get all regulators\n"); =20 + ctx->w_disable1_gpio =3D devm_gpiod_get_optional(dev, "w-disable1", GPIOD= _OUT_HIGH); + if (IS_ERR(ctx->w_disable1_gpio)) + return dev_err_probe(dev, PTR_ERR(ctx->w_disable1_gpio), + "Failed to get the W_DISABLE_1# GPIO\n"); + + ctx->w_disable2_gpio =3D devm_gpiod_get_optional(dev, "w-disable2", GPIOD= _OUT_HIGH); + if (IS_ERR(ctx->w_disable2_gpio)) + return dev_err_probe(dev, PTR_ERR(ctx->w_disable2_gpio), + "Failed to get the W_DISABLE_2# GPIO\n"); + ctx->num_vregs =3D ret; =20 ret =3D devm_add_action_or_reset(dev, pwrseq_pcie_free_resources, ctx); @@ -151,6 +244,10 @@ static const struct of_device_id pwrseq_pcie_m2_of_mat= ch[] =3D { .compatible =3D "pcie-m2-m-connector", .data =3D &pwrseq_pcie_m2_m_of_data, }, + { + .compatible =3D "pcie-m2-e-connector", + .data =3D &pwrseq_pcie_m2_e_of_data, + }, { } }; MODULE_DEVICE_TABLE(of, pwrseq_pcie_m2_of_match); --=20 2.48.1 From nobody Sun Feb 8 13:09:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A9660349AE6; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; cv=none; b=j0Vqvts3v1p7X2SY4uYWwGsAOgMb9/7g8vHrmRcDAhR6KFh+5fsSXUWxOTK3nnKbOOAMb8QMYEY0Pmm2vM/Rou/Vjun9RMnck18T8u/TmeBjyqYS/icoTvJXZ/Ykboq7ws0Tm0uovtmVdpzPcOAzojEs06tV5i8n5cUrMO8n5qI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768028226; c=relaxed/simple; bh=M63xYuGhzTnw77y0XcBIHpc3qTNOnrlDzshVGfxXGIc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eo+uSyBwaKQFO/RlG7o0AJ3CmW7nYFjzBRj/ayNdWhXFesGWQ1hb57HvbZwNsQBR2z7MMQZpecd45VZjYMxxpwnBTFUy1hnjcaDw3eJilspVR1IAp2Gt7NYiJ1L66LdCu/bSaQ0J2xfLWf7ujq+CnIdANkVz1R0no1gLH61u/cQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lvAbBmRf; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="lvAbBmRf" Received: by smtp.kernel.org (Postfix) with ESMTPS id 627C1C19423; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768028226; bh=M63xYuGhzTnw77y0XcBIHpc3qTNOnrlDzshVGfxXGIc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=lvAbBmRfc3NdDNO3EaF5NsjOgZEjNcZhWEmfNeQb0Px/Iml5xA7wczcQeXcllpCYj ZjwF3EZ31za3ZRi8exnQ1NsZvvrAKHXG+CNxG/5xWZMLt+gzZEQMbiEuGzJeKBh31k v4OiIfSs3zLl6clB+HJMnkcqnMUyD/8LlVGW/Y0W6LxPINwqbeyAUVcYXyb+vkvcC1 0faiXwo4tR11s4P8+yGM11LOzyblcnB4RO2DaDShTlan0uGQ7EWfE2R+mESuBfxliF Bc93pr2DyDqu25bfdI5EJrS00wdU8v49SH+IxUpKNj3BcZ/CuSml+9PG5ofpxcY2xU k1P7ulPDXN64Q== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5A17DD277CB; Sat, 10 Jan 2026 06:57:06 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Sat, 10 Jan 2026 12:26:32 +0530 Subject: [PATCH v3 14/14] power: sequencing: pcie-m2: Create serdev device for WCN7850 bluetooth Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260110-pci-m2-e-v3-14-4faee7d0d5ae@oss.qualcomm.com> References: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> In-Reply-To: <20260110-pci-m2-e-v3-0-4faee7d0d5ae@oss.qualcomm.com> To: Rob Herring , Greg Kroah-Hartman , Jiri Slaby , Nathan Chancellor , Nicolas Schier , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Mark Pearson , "Derek J. Clark" , Manivannan Sadhasivam , Krzysztof Kozlowski , Conor Dooley , Marcel Holtmann , Luiz Augusto von Dentz , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , "Rafael J. Wysocki" , Danilo Krummrich , Bartosz Golaszewski Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-pm@vger.kernel.org, Stephan Gerhold , Dmitry Baryshkov , linux-acpi@vger.kernel.org, Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5942; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=Vp7zYCRu5g++KTpycV6G46GxYVukXvcLdhL4fCvf0XY=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpYfg++CojcI/ArwvutjAh/aYmpyIOq9cl2wKAe 28Y/hBJCleJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaWH4PgAKCRBVnxHm/pHO 9Ql5B/9E1CdAqnK1mNQgswa7wqthDkSc9rCfk/sIks3lGXEgHCzNRoFIxTTAXs8x9BZ7uoUV6Pw gsJDjJxoTu1H+qIi7ZWQKMbPIPYZDgD2J+NrccRfcR9T05z8r9T/YESRPMeooyA3LwMoosxgLy0 EcLU8B+j7nO5KAHKiGGeNt6kP9A2uFZiJlC7G0uZ8NI7n0v+HDXEZ5HY8QSQ5yPCoyI7+rP75ew EYlAWhJZzZMfe3fFbCOtEQenFlR+HJARr4s78hWj7XAsKbUTkN0iJNIXXdmAb5EGjsW6d2qArxV lterlf/QYVzMwuBnByh/jQ6HHZ8b3ko+MSYmJYmAlNdcDOZh X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam For supporting bluetooth over the non-discoverable UART interface of WCN7850, create the serdev device after enumerating the PCIe interface. This is mandatory since the device ID is only known after the PCIe enumeration and the ID is used for creating the serdev device. Since there is no OF or ACPI table for the created serdev, a software node is created with the 'compatible' property. This property will be used to match the existing OF device id in the bluetooth driver. Signed-off-by: Manivannan Sadhasivam --- drivers/power/sequencing/pwrseq-pcie-m2.c | 125 ++++++++++++++++++++++++++= +++- 1 file changed, 124 insertions(+), 1 deletion(-) diff --git a/drivers/power/sequencing/pwrseq-pcie-m2.c b/drivers/power/sequ= encing/pwrseq-pcie-m2.c index ad94090bbdb2..7c7bde563341 100644 --- a/drivers/power/sequencing/pwrseq-pcie-m2.c +++ b/drivers/power/sequencing/pwrseq-pcie-m2.c @@ -17,6 +17,7 @@ #include #include #include +#include #include =20 struct pwrseq_pcie_m2_pdata { @@ -26,11 +27,14 @@ struct pwrseq_pcie_m2_pdata { struct pwrseq_pcie_m2_ctx { struct pwrseq_device *pwrseq; struct device_node *of_node; + struct fwnode_handle *fwnode; + struct serdev_device *serdev; const struct pwrseq_pcie_m2_pdata *pdata; struct regulator_bulk_data *regs; size_t num_vregs; struct gpio_desc *w_disable1_gpio; struct gpio_desc *w_disable2_gpio; + struct notifier_block nb; struct device *dev; =20 }; @@ -179,9 +183,124 @@ static void pwrseq_pcie_free_resources(void *data) { struct pwrseq_pcie_m2_ctx *ctx =3D data; =20 + fwnode_handle_put(ctx->fwnode); + serdev_device_put(ctx->serdev); + bus_unregister_notifier(&pci_bus_type, &ctx->nb); regulator_bulk_free(ctx->num_vregs, ctx->regs); } =20 +static const struct property_entry wcn7850_bt_props[] =3D { + PROPERTY_ENTRY_STRING("compatible", "qcom,wcn7850-bt"), +}; + +static int pwrseq_m2_pcie_notify(struct notifier_block *nb, unsigned long = action, + void *data) +{ + struct pwrseq_pcie_m2_ctx *ctx =3D container_of(nb, struct pwrseq_pcie_m2= _ctx, nb); + struct pci_dev *pdev =3D to_pci_dev(data); + struct serdev_controller *serdev_ctrl; + struct device *dev =3D ctx->dev; + struct device_node *remote; + int ret; + + /* + * Check whether the PCI device is associated with this M.2 connector or + * not, by comparing the OF node of the PCI device parent and the Port 0 + * (PCIe) remote node parent OF node. + */ + remote =3D of_graph_get_remote_node(dev_of_node(ctx->dev), 0, 0); + if (!remote || (remote !=3D pdev->dev.parent->of_node)) { + of_node_put(remote); + return NOTIFY_DONE; + } + of_node_put(remote); + + switch (action) { + case BUS_NOTIFY_ADD_DEVICE: + /* Create serdev device for WCN7850 */ + if (pdev->vendor =3D=3D PCI_VENDOR_ID_QCOM && pdev->device =3D=3D 0x1107= ) { + remote =3D of_graph_get_remote_node(dev_of_node(ctx->dev), 1, 1); + if (!remote) { + of_node_put(remote); + return NOTIFY_DONE; + } + + serdev_ctrl =3D of_find_serdev_controller_by_node(remote); + of_node_put(remote); + if (!serdev_ctrl) + return NOTIFY_DONE; + + ctx->serdev =3D serdev_device_alloc(serdev_ctrl); + if (!ctx->serdev) + return NOTIFY_BAD; + + ctx->fwnode =3D fwnode_create_software_node(wcn7850_bt_props, NULL); + if (IS_ERR(ctx->fwnode)) + return notifier_from_errno(PTR_ERR(ctx->fwnode)); + + device_set_node(&ctx->serdev->dev, ctx->fwnode); + + ret =3D serdev_device_add(ctx->serdev); + if (ret) { + dev_err(dev, "Failed to add serdev for WCN7850: %d\n", ret); + fwnode_handle_put(ctx->fwnode); + serdev_device_put(ctx->serdev); + return notifier_from_errno(ret); + } + } + break; + case BUS_NOTIFY_REMOVED_DEVICE: + /* Destroy serdev device for WCN7850 */ + if (pdev->vendor =3D=3D PCI_VENDOR_ID_QCOM && pdev->device =3D=3D 0x1107= ) { + fwnode_handle_put(ctx->fwnode); + serdev_device_put(ctx->serdev); + } + break; + } + + return NOTIFY_OK; +} + +static bool pwrseq_pcie_m2_check_remote_node(struct device *dev, u8 port, = u8 endpoint, + const char *node) +{ + struct device_node *remote __free(device_node) =3D + of_graph_get_remote_node(dev_of_node(dev), port, endpoint); + + if (remote && of_node_name_eq(remote, node)) + return true; + + return false; +} + +/* + * If the connector exposes a non-discoverable bus like UART, the respecti= ve + * protocol device needs to be created manually with the help of the notif= ier + * of the discoverable bus like PCIe. + */ +static int pwrseq_pcie_m2_register_notifier(struct pwrseq_pcie_m2_ctx *ctx= , struct device *dev) +{ + int ret; + + /* + * Register a PCI notifier for Key E connector that has PCIe as Port + * 0/Endpoint 0 interface and Serial as Port 1/Endpoint 1 interface. + */ + if (pwrseq_pcie_m2_check_remote_node(dev, 1, 1, "serial")) { + if (pwrseq_pcie_m2_check_remote_node(dev, 0, 0, "pcie")) { + ctx->dev =3D dev; + ctx->nb.notifier_call =3D pwrseq_m2_pcie_notify; + ret =3D bus_register_notifier(&pci_bus_type, &ctx->nb); + if (ret) { + dev_err_probe(dev, ret, "Failed to register notifier for serdev\n"); + return ret; + } + } + } + + return 0; +} + static int pwrseq_pcie_m2_probe(struct platform_device *pdev) { struct device *dev =3D &pdev->dev; @@ -236,7 +355,11 @@ static int pwrseq_pcie_m2_probe(struct platform_device= *pdev) return dev_err_probe(dev, PTR_ERR(ctx->pwrseq), "Failed to register the power sequencer\n"); =20 - return 0; + /* + * Register a notifier for creating protocol devices for + * non-discoverable busses like UART. + */ + return pwrseq_pcie_m2_register_notifier(ctx, dev); } =20 static const struct of_device_id pwrseq_pcie_m2_of_match[] =3D { --=20 2.48.1