From nobody Tue Jun 16 17:03:31 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 137613D6CC8 for ; Thu, 30 Apr 2026 07:34:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777534470; cv=none; b=Og+ex7X2qRdQHe0IFNG/1HC3gYvD878zA7LH/2W2lrZSwGu3n+e2xqy2faXaAQbFWm+U8nW2E/kTc8ZTmp5Mkr8e2pOCEj8nC+x3J/uXUznvwoTebM+jI8Wzh+y+IE33zOXFinSr1kJQyBxdH02gitvCX9Y+zdW+8EZ+yxvKcp8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777534470; c=relaxed/simple; bh=0isVpghelXoSKwPd5BDTOfUOhe8G+mSFyfnWyqokP+g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oPghXCdmbVP+wKOUtamVTbOYYL65kYe+DU2Wh2qYF5/q/HpiKUiNa6VtEnYcHSvgGCOxl/i7T+WowB6boEaJgrd9w8lsNuqgI911qhhnR8uXAyhJjc7bxiCvG4Yhr7aMysc9adyxq9oaYu+PPhA73oHdjzj6fraxIxngxSQNGhY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Q3yCv+eO; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=b+pJ/Zj0; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Q3yCv+eO"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="b+pJ/Zj0" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63TNum453732434 for ; Thu, 30 Apr 2026 07:34:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= +SWNLR9PCkztSIAkA+PWHwuqxCpfkGWdZHp+l4RUhvE=; b=Q3yCv+eOgXQ6X9GR HugoST/ZYazdpYD04NUoQfKTPUUUkr+bviWG894/1rte7U6CCzEsLSKw3u0fixOZ Mqc+GfJzjuqLjeTcsSH9K3CkkdBO1et1je2keJEH9RHpJkLVXmbI7jZdL4TwPhTe eU+LLvI5V5kukD+yX1NVQewxDj+BQns2jvR8XckgbGXpzoZcAZXzQw3PIB26lbDw Nig/WDbQbohnZLBi/wsPrf2HuH9i2SHYgKh2kg1ydmu+Pv+3Eu9Sp1uM+VS9cCzi b5+z1kE6DDrHbpE6FbHWe5y5ONfXO17QZX4UBdhTM7/SBOvifI7mkDEJBA62xd40 0dOcXg== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4duv3x9ccy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 30 Apr 2026 07:34:16 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50d9a6a853bso1496911cf.0 for ; Thu, 30 Apr 2026 00:34:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777534456; x=1778139256; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=+SWNLR9PCkztSIAkA+PWHwuqxCpfkGWdZHp+l4RUhvE=; b=b+pJ/Zj07iy1ppcZcOAlk40Hl2RqGKfsUIMIi2VQXFMe3TwN7ZFAfBogWIhx2Ez6hn qRv2htKbt4qrna9oBRTBMJFVLS2ZkoVLks6fkw5S+kEp0WDpLRPyuHZ2epr/AJ6yXyMx 140HneYsX8A+ybIUB33et2wENa4JCP94EndslGFqDOQpqY6w217JZqAKbjYkTk3K6PrR XyBzf+gS0B9My82Fuf8ko7qrA6iBXjejKkRyj47JHp8qNV04WcuGhKJTp2GxCWyPus7R hmb+KLLCeKaMJ46sSUImzfAE196m0cTvZsGaRfWZ5RSk0P8JSHGX6CYUSY1po92pv5DN e/Mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777534456; x=1778139256; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+SWNLR9PCkztSIAkA+PWHwuqxCpfkGWdZHp+l4RUhvE=; b=Qibc/5597W/jopxr3jbmU6eSNCJoESWTnQRX+61ljfi6bsSYqAx0ft8tq5bCsVwFKp VhLDUMJ6l0NeLsbToLDmnf+uRmRCWVl/lx1KubxVeYtZQftYOaQdUc5R6PAoZMN77rKn ATjeIV2OlZFPi2iRWOiYAhhgyj0T7b/cW9NJBrx8sM2smg8QuUJYfQBX50Ab1nqpLHZF 8b6aZJqXm5JxS0D0Ed+ThkKQ2B4fTHjZC8iPWxwEgTjOjrC74sQcgicIjT3GYnXJ/PnZ 1i6vTW2Pwu3T8/RyX7QW44NlBOfXoWq4pC4na/Qb6YefQdSJ7M4oIJUC9VkPrLKatsX6 CdWA== X-Forwarded-Encrypted: i=1; AFNElJ8+Aq6aR43GHpLMj8v1NhPyw8EP3HLOQyBCjGQ6EsKWtanVJ/MT56rehCWAs728DTDc/lDb9rljXoB6bs0=@vger.kernel.org X-Gm-Message-State: AOJu0YyMovBu/PG9GT2PSmnINSoBicKInexflsH2iAAKUpotBRcSf/T7 ALqHE3NE7MhNJx6VTyanu7BMHXndQ4eLPI+J1StAsUFQ/dkxUNHwWGN1Gv4NEa3ajTr6rlYTeto uFAx7tDjzj31TBxiZySsNgyZZB88hDDyGQQLmbNX8libZBGqfV7QK5HoTOtAgHqhJkmo= X-Gm-Gg: AeBDiettVCVhzYoE5E3AxLoZn77gVfmEcPtAfLuDi2IqDKzP2DmiwOfHuJaH00UF6eE 9q6nX7VlykA3nfokkh11HrBsYkreGFoXqIbmWii/4kLni2dyOUjyw6C496s54qIjPvxi9DYWY0l GW2TIpUEX6g/fW6p3XrB3xF+yc6onZ8Xo8X4MlB3Y4JaWd9b/ab+He2tLJrUibNZ2CfbpCO1iBD 91I1VmNRXQUT5lOdqe1OB0o/UMU5gxftp9ABzvBP9eso3LqMpGRJ/vIH9Rg5tyPuD4TckN2+nt+ NnVRW6namGjrU7OA+nFwrYd9pdfrxRBT5ghEk6SguzmV1MPj8lVQpm5Ie5h3eu2MNiqr7bvkZFc P6+Y5YZqDazpCSqVHpX7sVW6PodMQFG0SLFsvWvkMmmTqOVULRBKG4lw4W9LY X-Received: by 2002:ac8:7d87:0:b0:50d:9b4a:e6f with SMTP id d75a77b69052e-5102aaebd3fmr22954021cf.1.1777534455765; Thu, 30 Apr 2026 00:34:15 -0700 (PDT) X-Received: by 2002:ac8:7d87:0:b0:50d:9b4a:e6f with SMTP id d75a77b69052e-5102aaebd3fmr22953561cf.1.1777534455111; Thu, 30 Apr 2026 00:34:15 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:79a:f446:21cb:22e7]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a81ed6bafsm76132625e9.2.2026.04.30.00.34.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 00:34:14 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 30 Apr 2026 09:34:05 +0200 Subject: [PATCH v4 1/2] ACPI: provide acpi_bus_find_device_by_name() 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: <20260430-baytrail-real-swnode-v4-1-767bcda6667f@oss.qualcomm.com> References: <20260430-baytrail-real-swnode-v4-0-767bcda6667f@oss.qualcomm.com> In-Reply-To: <20260430-baytrail-real-swnode-v4-0-767bcda6667f@oss.qualcomm.com> To: Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Mika Westerberg , Andy Shevchenko , Linus Walleij , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Dmitry Torokhov , Len Brown Cc: linux-acpi@vger.kernel.org, driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, platform-driver-x86@vger.kernel.org, brgl@kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2038; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=0isVpghelXoSKwPd5BDTOfUOhe8G+mSFyfnWyqokP+g=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBp8wXxZC+mASP2ppNNMW84j+0XxHWW5nI+GRHzG tayHaJ0nXqJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCafMF8QAKCRAFnS7L/zaE w8dgEACegJw/nKBn+I0OhND1U3+dBoBHnWiTymvDzlqlzPb8Kqo6c/IazxlfmWakeZi6zVfDURg j/0slWcp1WjemC8d5k/wLUlm9a485s+uTHg/bCwtmYkyjbwem1uUtqttqq/q/0YH0A95OXrU9I/ FLMBxbaUleTzwkszDnqDBvwIMHNn10SwZ4X/qk6iR84oXEo2moYEFECFlkljqfwQNu0H9/o5dVK XuGoydEaaKrCF4mjQl+MpBY3OwK4cUsqZA/WoqJB5oR/6bqBPX68UiDBLgFxBvbKi/Rt0w3m3wU HbK2hc3Ll5MGRnrQmdbgo2t3jfEju1a41cHic6lAXdVD2zNThthh+Swleir8MLduY7XqETGRdc/ 0XbWPfROHaZU+no7NRmhZmZk5ZhvnNj+HKKMsNJH9r0sVybVTLgRhVXfi+FDQAlpbGRNIpDHR2r aYayi6IzNR+QmpuP9hVwpH8dwKzesqggOIChdJlWufiEGUgGv3N4Fim1RfzgqXnsMFlCF1mA2k+ a4pe7kb9CuPYtwlwVtpsXpyUNmMxBVISt+v42bTwJ/ixvHQa5bh37O04OzvUGoADJBfEPs+clCt pwT3ZDhtN4EDdXp+q5JO0rAfMFARf73MtQbXpt9P+VeSAuZXYhNb1n161BgMBv/ay8KDXP78imI RUvXZ6T5ahpsVHQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDMwMDA3MiBTYWx0ZWRfX5RMhpxPAG9nr Ipa8p6I3Jfh6PK2TWMjvZJ84cfdWp47bCE7oLV7y2MhxiyBobo4+ecvmVh+9nmLe9t4VRPulZmS pLRohGK1+zlkRR9ZRF8OfoY+e5RMARPiNVIa2kRT0oeHAxIDrKxQz6GoqRR5BjAQ5b6scpaWHpC 9UxlG9TQy3pRQDcjoR6P8fD5LeEMDh8K+vtsbGjQCCrauu5n7ytYQ50NY2UkWPnByYrlL6J+0hD xF1v18v0mIe0xInUkTQMpWzuUJ897r9rtsksRWOd1hifOH8xjhCjEeeDASDb0KvgTKDczjwxghN AV8ObQK6i5XXv9PffMcvyHGx4E5YoWXea5iwxOz4Ld7h5p93MZ769GI5E4PMwfIuCbgc6BaXCaa Jr34bJBYXN1r8KsKrZ1BWooDLc5+r1Fn/xV+tX9xj/5RLFSVtcHv80RaleQdKakWfVKve+bP6uD WkcndHMSJcNAMO6PLqg== X-Authority-Analysis: v=2.4 cv=Oc2oyBTY c=1 sm=1 tr=0 ts=69f305f8 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=B8ktV2ObmFyAxeXX9HEA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: nLX0aPzEs4vzpig27aTSn98oUqCkLfJ8 X-Proofpoint-ORIG-GUID: nLX0aPzEs4vzpig27aTSn98oUqCkLfJ8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-30_02,2026-04-28_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 impostorscore=0 bulkscore=0 malwarescore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604300072 Provide a helper allowing to locate an ACPI device by its name. Signed-off-by: Bartosz Golaszewski Acked-by: Rafael J. Wysocki (Intel) --- drivers/acpi/bus.c | 13 +++++++++++++ include/linux/acpi.h | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 2ec095e2009e40b0645f654fb051429e5679dc7c..5dd8459be03db4165bcb59943b9= 4ea7db273ad7b 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -1181,6 +1181,19 @@ int acpi_bus_for_each_dev(int (*fn)(struct device *,= void *), void *data) } EXPORT_SYMBOL_GPL(acpi_bus_for_each_dev); =20 +/** + * acpi_bus_find_device_by_name() - Locate an ACPI device by its name + * @name: Name of the device to match + * + * Returns: + * New reference to the matched device or NULL if the device can't be foun= d. + */ +struct device *acpi_bus_find_device_by_name(const char *name) +{ + return bus_find_device_by_name(&acpi_bus_type, NULL, name); +} +EXPORT_SYMBOL_GPL(acpi_bus_find_device_by_name); + struct acpi_dev_walk_context { int (*fn)(struct acpi_device *, void *); void *data; diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 67effb91fa98373d7bf19be5ae3d8baa9328d6e1..10d6c6c11bdffcad14100601e10= 4520366dfc30b 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -798,6 +798,8 @@ int acpi_get_local_u64_address(acpi_handle handle, u64 = *addr); int acpi_get_local_address(acpi_handle handle, u32 *addr); const char *acpi_get_subsystem_id(acpi_handle handle); =20 +struct device *acpi_bus_find_device_by_name(const char *name); + #ifdef CONFIG_ACPI_MRRM int acpi_mrrm_max_mem_region(void); #endif @@ -1106,6 +1108,11 @@ static inline const char *acpi_get_subsystem_id(acpi= _handle handle) return ERR_PTR(-ENODEV); } =20 +static inline struct device *acpi_bus_find_device_by_name(const char *name) +{ + return NULL; +} + static inline int acpi_register_wakeup_handler(int wake_irq, bool (*wakeup)(void *context), void *context) { --=20 2.47.3 From nobody Tue Jun 16 17:03:31 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 38DFD3D8915 for ; Thu, 30 Apr 2026 07:34:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777534474; cv=none; b=AUmGoaeRfismzb/4hrpyyrIA+w7ICtrB8FwfVFGKnSyke60kNj3ewu1m3obFr/YbR7WuAK1a8F8Qu7nAu4ffNGWJtlt1MnQfmEsvc4EO6Hjpq8XYnZjwtMjGbR4pw8PJmGCKgu9Lg9YpF7Iu8mKqO1I9COZqU2Pr2BUuVuG6MkU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777534474; c=relaxed/simple; bh=ftejCI4cDYR15DURdSwoo+KUTTkz4glwgHDYbKITpyw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oQWb3D/F6pdjl+sgMwi2CDH+JImDEDAxnfWdIe33gFdQvQ+E45bIRZfZHib6b8Gekq7TJbop889pN22ar9h90wzSXEJl8I1W8ZuFFNRtOdDOrXng7l8YM2jmX2B+gb9ii75hHXeDrgpYlFEC4QN0Fs1tigTevPyk+TiPQGcVkP0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=YkXGUqc0; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=AGnpajaL; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="YkXGUqc0"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="AGnpajaL" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63U44lTf2099769 for ; Thu, 30 Apr 2026 07:34:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= U1lg30DyGHdc17+B9LzqWTA6Lt4/KitzUTkvawVH9l8=; b=YkXGUqc0UwwFKQda PE1GWHQR2rLBvZZuCvHXOt537eZxo7bpxUkuhu/01yPufMEdgsCS46y3dh2vjshm yOBLMyqduCPu+m8TK48Ct32cK7HWZLIQpgsrW8Kr/mL3VJr2dBJAYN32bWr73v9a sV6yeNJB6MkMuCvDr5qzEshW9EcHuZBSM6XNx6mCL5ZOB9zodEy76yVbvSS5o7Z6 eTpCVHLQ/30HKkVVJ9vYAZmXpuqMLLXRsi33P0AIgfYjEVQApvfjQU13xzkm1aTE KU7qJ14v3rNPnlFNoG1sXF4CE8vXEYqBVY8TZ4uxqjOr/TkOg7U7cl9289PmVSeM xpbHEA== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4duyr40n4b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 30 Apr 2026 07:34:18 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-50ff0bef198so13263501cf.2 for ; Thu, 30 Apr 2026 00:34:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777534457; x=1778139257; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=U1lg30DyGHdc17+B9LzqWTA6Lt4/KitzUTkvawVH9l8=; b=AGnpajaLlAqaHH9EQX2in9CzyIyIvN2OzhTDs/pf6TRE9/HQbDz8vNsFqackNwhQ7T IMloXvno0aERnnbpq/HPZEKpbgv5RBYa1AR/EbI6ZWGQZ9osiGFerSY9vdr+YLpZ8M+g pHlo6XaMKFdh1n8wRCnwSTSdI+GH1yEoyXAup4WAyWNu/SLgJP7WIrYGkyuQUShQKZ0u su3zkP/KTzB01ixAmJBFDME/mDwFp1Xykd/cSTwUyAC1uFWy1tUPSRZONrJpEz/9CVz5 iw888GMsZ1+O/9G3r1CFcAIZ/BBmdWavduf1Zpr1kpJF20besdnQdZBjhyVrnu3SueHS C5BQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777534457; x=1778139257; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=U1lg30DyGHdc17+B9LzqWTA6Lt4/KitzUTkvawVH9l8=; b=GYnN/+hoC/chQk6Ce8TmiSaUwUPzNca4ro7JcDudRLCjKlEQEmRD0pH7l8YEIOQ9/z skm5p/wp71dnwOKbvyliwu05fWidVPrXyGikXKpu/Nhvi6mLiQ5a3yn5GYFkD9IQZKhj qzgSHHUNqiRytoBA0fNLiU6Ov3Ltmjs2W2oG7J29TgtwDDPTDOGQ+/ux44QvWTbm5v+/ Re77kwkbou/NT35nPe7ZvlLJ4a0U3dcag3to1b01JhLAVCsIJ5eUsOncVQSq1mzi2VV7 l6yS5zq4ryXXz8br1RmYcs6Ry2KfaRX70lLtypgnkQtEc/QDW4VofoY0DjbUBlEDNNWN 0oNQ== X-Forwarded-Encrypted: i=1; AFNElJ/h1s7wOUA3IZKNV99VJcLxzpomzB+1BmcQvV/ubtfBfwMvfmCqtigWDSepj6i4ThHRwAGAIbadIDTyhDM=@vger.kernel.org X-Gm-Message-State: AOJu0Yz0Q4v/Hp0MGkGffXUWXYEXbqFoGk1aqJJQipElshjkvbWfP3sB 3GTaipRg7bPQqXwvDmBh19RDZcrhFM/ap8bZXZPJ4uhBfGsihd6zpVS/9Wj048cgVrHSRSOaOw1 FCn1upW2dQ1lEXC1Sm3ThimUd74h8wJTKb3QkRI8kX59kjtrbB2BGQeyoSmyLNIDDPA9zYsxsA7 M= X-Gm-Gg: AeBDievuXDaHgRI/wuoWfXBDbmbhmQ2G8ykD5KqR8vLYY+zwbuxtGPq2IX74UCXRcln 8ta9WZmpRtqQKUV3IhyaPb02EmOFfd0+DrjAyJOzC+hlJfQKdgsc6z3STJ3jPeFo47Nf4CjjsZB yQmGpf3pzFAxI8SrGxrdDQlljKqZ8xTz9crdS6Scwtr9V+DepvMFAnu2yqPir4remlRYZKY8Nsw qb8BJLQmqND+7qfzH64jTs8oYevUCpAlUf2ApGz7UlFRjIU8tmlKKYlJe1ZWgX6xkeaFP8U6pfJ o4fZl/vdaUkt6uWarfMLvaX77xOSzEDhtl6Fym1GHy8agK8sgSI8SE+JqoHYT+hw14Ntn25N4Jj gie+kqwQNr437aPHmBgmx4lOZ/zSxs9U3ReACf84needuOXivuURg0GozDUBy X-Received: by 2002:a05:622a:2296:b0:50d:abc3:eed5 with SMTP id d75a77b69052e-5102ae1dd37mr24163141cf.29.1777534457241; Thu, 30 Apr 2026 00:34:17 -0700 (PDT) X-Received: by 2002:a05:622a:2296:b0:50d:abc3:eed5 with SMTP id d75a77b69052e-5102ae1dd37mr24162871cf.29.1777534456853; Thu, 30 Apr 2026 00:34:16 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:79a:f446:21cb:22e7]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a81ed6bafsm76132625e9.2.2026.04.30.00.34.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 00:34:16 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 30 Apr 2026 09:34:06 +0200 Subject: [PATCH v4 2/2] platform/x86: x86-android-tablets: enable fwnode matching of GPIO chips 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: <20260430-baytrail-real-swnode-v4-2-767bcda6667f@oss.qualcomm.com> References: <20260430-baytrail-real-swnode-v4-0-767bcda6667f@oss.qualcomm.com> In-Reply-To: <20260430-baytrail-real-swnode-v4-0-767bcda6667f@oss.qualcomm.com> To: Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Mika Westerberg , Andy Shevchenko , Linus Walleij , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Dmitry Torokhov , Len Brown Cc: linux-acpi@vger.kernel.org, driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, platform-driver-x86@vger.kernel.org, brgl@kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4114; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=ftejCI4cDYR15DURdSwoo+KUTTkz4glwgHDYbKITpyw=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBp8wXyNbrBg8v29GzWwZQSXhoATQ3VfPNhBQPyX CBTZhwb0VGJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCafMF8gAKCRAFnS7L/zaE w74HD/9R4T00RQB0nP0oxJY0jbchVJlzM2HQLvTUIxu3XYf2kbK+9M5LCXFZDn6pP6shJQG8qg9 jvbNZ48V+8pTQiu2nRdH5ofy4TTP97Be12edItD9zYZc3BZyaIIfoREEHbyOOXcNxbijgu2ZXgK aDnFxWjXdxmcJP3+44LmtBc2f66btigvbsfJ0bqpA+kXXU+pFBtW4do7ukRCaGucdQmblYoufqX aFul+BFkxk6RW4b1C1jMkOnsI57vXPULWviGGg1koW2eTe/uFbexumZFhUbk3lo0nZFqVQXeKTy w1QBbtvIGl07Q1FFKbkbuzNvJerte0vlk2XaTvUnOlqNViiKDhO5dJpPWYQT/Fl0lbJ07uv5yhc A7HAcqvh0fSpG0of8UbqGjbqxuRiZM+E4H8S3qIZXfof/N5D0WDZmfbNSLZVfsqz9gJwSBv1uja aSf/DmIUIvwc8Nq5HINCUozUGe05IUEvmVUyNfxIHkpe3JzYgUd+LNSMKGNXRx6ePOF1tSsQlOH 4hzKHjmxsFkDi5IrYsP+BChzM7/DIcso0+CtHzTNy1fzq9x73NgmvHhL5plWj4KkJqSVDz9q7py BAbKRhko5Ya21J6x1Tg7FjUR0qHOE6OQUOmwLRRZ99r6LSdHxzDlZDihR8wbZyeP42Kh0pJQ1qI oz35jL4OLjuxAVg== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=bJcm5v+Z c=1 sm=1 tr=0 ts=69f305fa cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=k_IdGrc-7EcYSgGcGvIA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDMwMDA3MiBTYWx0ZWRfX0WOp+R1xA3An C4Bx37iNtDVpEqv0P78Bp0/Fvwj0a0UmrMmvUMJx/cq+QCXW89L+/EbyxjsmH/qmOvydjum7D8F s48fh8t1kUq2k1dcE46LpWqIEpsS5mfC/pfaU2R5dZd+lnMpXBVQgT4Fzuc+aXImwvNSa9Y4qOK wTftY4Eeyp1mlf+YwcFjFygSCjNVHc+mu27gv0h4mtSvPM1LUFYRPA0DPhau+cB6GjtD2hjcINF 2zooAJIQsHA+h4xu6mqeYaei1gu0gaA0WSY31kD+59F0aLGU5WgkxU/D68jOhQ1cU6/R2Z87Dq6 k/Ua4tRiFIFU9wQttG5q+V3mIXxR2m2mM8FdTqe8QvXpA+jeUW+ILKT/GEB865fr0QurfS3Jc+v kFHls+ZAfyhLT4XQ3eC2+opdlRmk3LhTkJzp+8hKg2UFJC12iNXVMPV5yUo53ZkM3jkkRNCuiIR YRJy3PRAipSa16sgc+g== X-Proofpoint-GUID: y5jmD5cm0Cq9csN69rJ4-EoKDjS8Jcif X-Proofpoint-ORIG-GUID: y5jmD5cm0Cq9csN69rJ4-EoKDjS8Jcif X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-30_02,2026-04-28_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 suspectscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 phishscore=0 malwarescore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604300072 In order to allow GPIOLIB to match cherryview and baytrail GPIO controllers by their firmware nodes instead of their names, we need to attach the - currently "dangling" - existing software nodes to their target devices dynamically. The driver uses platform_create_bundle() and expects all required providers to be present before it itself is probed. We know the name of the device we're waiting for so look them up and assign the appropriate software node as the secondary firmware node of the underlying ACPI node. Scheduling fine-grained devres actions allows for proper teardown and unsetting of the secondary firmware nodes. Signed-off-by: Bartosz Golaszewski Reviewed-by: Rafael J. Wysocki (Intel) --- drivers/platform/x86/x86-android-tablets/core.c | 78 +++++++++++++++++++++= +++- 1 file changed, 75 insertions(+), 3 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/core.c b/drivers/plat= form/x86/x86-android-tablets/core.c index 021009e9085bec3db9c4daa1f6235600210a6099..8fd0cffe351577182f31c90c104= b616cec78c481 100644 --- a/drivers/platform/x86/x86-android-tablets/core.c +++ b/drivers/platform/x86/x86-android-tablets/core.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -360,6 +361,76 @@ static const struct software_node *cherryview_gpiochip= _node_group[] =3D { NULL }; =20 +static void auto_secondary_unset(void *data) +{ + struct fwnode_handle *fwnode =3D data; + + fwnode->secondary =3D NULL; +} + +static int acpi_set_secondary_fwnode(struct device *parent, struct device = *dev, + const struct software_node *const swnode) +{ + struct acpi_device *device =3D to_acpi_device(dev); + struct fwnode_handle *fwnode; + int ret; + + fwnode =3D software_node_fwnode(swnode); + if (WARN_ON(!fwnode)) + return -ENOENT; + + fwnode->secondary =3D ERR_PTR(-ENODEV); + device->fwnode.secondary =3D fwnode; + + ret =3D devm_add_action_or_reset(parent, auto_secondary_unset, &device->f= wnode); + if (ret) + dev_err(parent, "Failed to schedule the unset action for secondary fwnod= e\n"); + + return ret; +} + +static void auto_secondary_unregister_node_group(void *data) +{ + const struct software_node **nodes =3D data; + + software_node_unregister_node_group(nodes); +} + +static int auto_secondary_fwnode_init(struct device *parent) +{ + const struct software_node *const *swnode; + int ret; + + if (!gpiochip_node_group) + return 0; + + ret =3D software_node_register_node_group(gpiochip_node_group); + if (ret) + return ret; + + ret =3D devm_add_action_or_reset(parent, + auto_secondary_unregister_node_group, + gpiochip_node_group); + if (ret) + return ret; + + for (swnode =3D gpiochip_node_group; *swnode; swnode++) { + struct device *dev __free(put_device) =3D + acpi_bus_find_device_by_name((*swnode)->name); + if (!dev) { + dev_err(parent, "Failed to find the required GPIO controller: %s\n", + (*swnode)->name); + return -ENODEV; + } + + ret =3D acpi_set_secondary_fwnode(parent, dev, *swnode); + if (ret) + return ret; + } + + return 0; +} + static void x86_android_tablet_remove(struct platform_device *pdev) { int i; @@ -391,7 +462,6 @@ static void x86_android_tablet_remove(struct platform_d= evice *pdev) =20 software_node_unregister_node_group(gpio_button_swnodes); software_node_unregister_node_group(swnode_group); - software_node_unregister_node_group(gpiochip_node_group); } =20 static __init int x86_android_tablet_probe(struct platform_device *pdev) @@ -427,9 +497,11 @@ static __init int x86_android_tablet_probe(struct plat= form_device *pdev) break; } =20 - ret =3D software_node_register_node_group(gpiochip_node_group); - if (ret) + ret =3D auto_secondary_fwnode_init(&pdev->dev); + if (ret) { + x86_android_tablet_remove(pdev); return ret; + } =20 ret =3D software_node_register_node_group(dev_info->swnode_group); if (ret) { --=20 2.47.3