From nobody Mon Apr 6 11:36:28 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 A424E3A4511 for ; Thu, 19 Mar 2026 16:11:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773936677; cv=none; b=Ln1kkI4Z3DNlrebxQVKK6F+b8CAR/yqK81o3UCPIAAvjaZgbQZUOD3RsDy0WhZXwB1tHKmYIDZbpqSZtXzKKhpaLi9Y+ZOf0k6LEGCWXlC6aXo+d3mZBR/on2/icatdprICUFw7r5WX4Pu2lQ03SDo6c6wlmEF6MAq3SNxfmvwI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773936677; c=relaxed/simple; bh=GXiegH5SRMfYAHFveVz49Jd/VzeFD4+D1OYGYQfjqbw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=A+sbJeUXrJIZpAlW2UF7amBmqxQa5MrQE1fIh/aVNNEtsz7cMt1VjDjUnjvMijU4r614maUTp2g4SuwBj0dfrRCsLVvKXCuGV7zA1UYSW7vviPo+tkQ3z5WSiSGXGbO2fpyarqwoS8r1hqCWcjDe7Ly55jmAkpd4iJ4UFTQweOg= 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=Yl6232p3; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CHtTMjyC; arc=none smtp.client-ip=205.220.168.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="Yl6232p3"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CHtTMjyC" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62JFC5Di1772036 for ; Thu, 19 Mar 2026 16:11:12 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= gNEZb3fCa4ZhfpQFG8JrK/v/wHOU6VGHlluFvh+xrDE=; b=Yl6232p3sgiIdBpj 2/UsPXQfBQ9ugWU7BkCKfQK/bQOjGcQ5ti7kkP6JiHOi39f9ojbaoW/hCKp+XvBj CTWO2h0ITqAMq2E0zlquoPRPQqvEwce2006dzV+7pZMhc79lkyN+yrAbbegPob76 IrRCeKLoA6SV4ELbeTa0JvqNZsCZUeYaxmZ3HBNiZrNtCpeLmSVQPNf83XUeAWWn uTGh+XCujiFq+UL3Ez+owaZBwss0DrZ3GaEnSNe2BPlqC1nvO+UjVAy+JPdD8LSk 679lX7leYBWPKHeMZ+kFWlQ/bJTJghqQjF+DpTxTRzio8B+R2pLGYvOtgGIJoX45 POTjIg== Received: from mail-ua1-f70.google.com (mail-ua1-f70.google.com [209.85.222.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cyy75v632-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 19 Mar 2026 16:11:12 +0000 (GMT) Received: by mail-ua1-f70.google.com with SMTP id a1e0cc1a2514c-94eb4245732so1446982241.3 for ; Thu, 19 Mar 2026 09:11:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773936672; x=1774541472; 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=gNEZb3fCa4ZhfpQFG8JrK/v/wHOU6VGHlluFvh+xrDE=; b=CHtTMjyCESW4cC0SZjZBHEYovmhbhygCHeQPgd5ShPW7SdcYn21rCvxsbW4Itgc5sa eq0xWJ6r5BwvnsKtNVNuYpCW310Y62JguxAeQyfxozxZ8BNqVURER1H4wyURPrDllibT rQUE16q8te1PbHviov42G6OU4+PmHZKd0276rEbS7TpVHk1TROwV0N/jbn4AfN6EKM/j DeSgxaA/vopXUrxbpvdqhwfThpNe2FnDcwBqWk/jlx+FQ6BmHeUJqZL2g2fLKyn9RHat 4q05NTnIIgxoll98fUttDzjSaGdzFc0YkdRVnPveq0KSnakHVYcG3v9XNGbI1hVEwmJ7 EmzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773936672; x=1774541472; 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=gNEZb3fCa4ZhfpQFG8JrK/v/wHOU6VGHlluFvh+xrDE=; b=HL7J7XXufKxjItimM/aKAHreIc5nJMueDrhn++yvkidc0UTH/M8lqmTUCsC4jKXaFw rqdeGXVWNoAWVPUGe6OExnz8fA7uwzrHjGF4pV9raceK7SqkTIe4Zhry0m7x6mVdLbq7 nHGpFBTFlmVZHDTfGj0E0RJABZbT6X8aIZBKKRWnMAcYmV93viiiCoAj9srmebZoEqi3 2cXFSd4eYdCTmEHfZCzome7arqc6MbzwXsO3VuW2b5LU9eaYgRT+UsabDfII36VpWJ3V siOwrWYdAgUe/pKlbN7kq1wUHu9ARGllY4hiXO/Jihzdx5kTHXY2HGn8T/UF285Nz5tI cKwA== X-Forwarded-Encrypted: i=1; AJvYcCUwvsKJsomRkPWNTWfOcSmtbEBZ3XO4bzU8MNmo0jTdcXAtNz4YCIhv3KL7LJa2//354qzTpMuDw8p/NAg=@vger.kernel.org X-Gm-Message-State: AOJu0YwgG24gtq6t26EqtSqwyKuzvW1ZCSk3VlQ8+HqgHIPjwa5kIld6 tt63V46GKK6laEL2l9yYwVSPTKe4B+hsTu7sy3W96dhmGddqXXQkI9gQqlyQVPFSinVf3Nn8IHF 4u0jfk0UWDilhCcThnPsB2SHEP/RdoJQ89W59I8wYk7YAiwT/ixTrh7whsNvv0Qv6nPk= X-Gm-Gg: ATEYQzwj3ZpczJdEioCwAn6afe0kVQH3grDSNh1fAtw+2lzTdERKn4qVzfgVa8q2Vsg LPpH4Rvvas1qe/f7nKC7jYpalmWh0AKFJ3eUN4qVVcBeQ7BjCLW9mPaMDfSl9AixpirJr1Tz85h 9U59bK0bvylagRVX5Rz6s2pA9qMTYCaXQa8JECpmph7yleTRutP6cM4LKfRsFEX8zRY9/xUkG4P BDTXUWX4mDa2efge+D1B64sgSBHuOmAIOqffvlFIqfGjJ+KKy2KcZgFOOEzQxsOdXExrpFmjvNb aRdqGi7wmjpPXAMC+UbDqg/87vsKP2lyrqNFXH+iXWebLfuRT8aMwTQKc23f6W43Tz5P6TZi/W0 lo11+J1778D8eafbpqjPj6fvirqWDbh1aLnU0R4+8qlQ4AaCh0HAD X-Received: by 2002:a05:6102:1620:b0:5f5:4d9b:bd67 with SMTP id ada2fe7eead31-602aea8d87amr64292137.6.1773936671566; Thu, 19 Mar 2026 09:11:11 -0700 (PDT) X-Received: by 2002:a05:6102:1620:b0:5f5:4d9b:bd67 with SMTP id ada2fe7eead31-602aea8d87amr64249137.6.1773936671012; Thu, 19 Mar 2026 09:11:11 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:9d74:8015:408c:d719]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486f4e5495csm83756915e9.2.2026.03.19.09.11.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 09:11:10 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 19 Mar 2026 17:10:54 +0100 Subject: [PATCH 1/4] software node: support automatic secondary fwnode assignment 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: <20260319-baytrail-real-swnode-v1-1-75f2264ae49f@oss.qualcomm.com> References: <20260319-baytrail-real-swnode-v1-0-75f2264ae49f@oss.qualcomm.com> In-Reply-To: <20260319-baytrail-real-swnode-v1-0-75f2264ae49f@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 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, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6123; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=GXiegH5SRMfYAHFveVz49Jd/VzeFD4+D1OYGYQfjqbw=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpvCAVp+475D0wjSe7sNWCHgFiPzD5xfW+6V8+s e56aQ4t7r6JAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCabwgFQAKCRAFnS7L/zaE w4rMD/4mXJtbJEJDhQSrVx5z5ehAjOrKhwEW/rwBEzb2I/foHLrrJfCNVaCUxCcItm3N2Y3lCrl ItGljm9OhedLjGBvsMlw8Tdpdn1qxv2NEuLi5poDmB3Su1cvljGHDwBQo32mbFl4SMOoQlgRzUM 9BbdtP5Crgdq1JgJrFPXLw9tSFLHNKEBXqxKqIb0Z+fbTbcI5KkimEdZFj7q/XUMrZut1pyCE5l NNDRieumg0PzpjQxqXTNlktCxsBCvvrhjsxztNodt0VcWYR7YxrWYBpn//h1PE3Rg73nDuSTjSH IhdVfsjwFvTxxIEi5UmB8DcC6Z67IPobAqt4fIaFmDvQbbMWVMX62Y4s+zT1onQgxC6Yi3JuF2W X+TWiyhMPsd5f7oRLjMoRmI8VPsptJnSKeGLo0JMSdvnrlNTlbESzXKrEdmk3pNDFOY6UYslVjX JX8LmPFyClN9sZiBlTle3fuv1Ji0WiRgzbe7bJk8lygR2AnVPptiD1xHLlLMJKtSiJ9GBA5mjCp JvAaCBhXbDi1F1+0hh54Ynvhj3tv8gqveh2g/l1Ke1aKCRqJ/Z513d0mVLe3b4gPvhE9NaFjRJg 7ExTgQEOtVVlHmEL+4BbY08i20ec9aXk47D3ing4v2AvwMrSKoVlagq1uEhuR9ngkiZ/eFguR6J TOrPj0sO8UkykQA== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE5MDEyOSBTYWx0ZWRfX546sT/xs+riR t2P6WD0FguZNDKi+VTUe4dQs+YVEfU21HAqXCHb5wXxRfhAUVVB8qp/5xVmiO1gV53GvMW5FPKS Hv8l+PQqGVN/Hyt1iZFDzVFVcD1CtSGh11eU5lgUYcld7orKFH1bLYzXx6KCivyc/fHVMyBdmqC mUgkdQ3UF5KDMjD2B4rXkLdPD9vreTqnw91LpR6N6L+Ndt60fbpj0geh58AENu2bm78Lv7ugzdx FKljzWSLOYo/wLq7qWIz7vPbJlDFNWYYJJFYY7xLHnaqejCvaL0CqT/C6hpBHGJCK2Cx+36B3uF k/KJGnhu2EjsxPgJbymYPPxQA2tm7psawoqYRHOBkYilIDWCOqHRI4By2MeVJwtJzSvECxYKuDN aDdmwkbDjgQxDKhA9xiMVeEciOu6ALiw1x6kjg73HPl5/i6Sds3dH1pkk4xBODqZ87LXbwURlrz pzHNMOaAkClQx4O1pQw== X-Proofpoint-ORIG-GUID: 1BAKxKKSJQvde3PQ7CF_B2JO0R9HYIp- X-Authority-Analysis: v=2.4 cv=A7hh/qWG c=1 sm=1 tr=0 ts=69bc2020 cx=c_pps a=R6oCqFB+Yf/t2GF8e0/dFg==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=QyXUC8HyAAAA:8 a=lzMY5pp4uJb4PBOz-uUA:9 a=QEXdDO2ut3YA:10 a=TD8TdBvy0hsOASGTdmB-:22 X-Proofpoint-GUID: 1BAKxKKSJQvde3PQ7CF_B2JO0R9HYIp- 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-03-19_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 bulkscore=0 suspectscore=0 impostorscore=0 spamscore=0 phishscore=0 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603190129 Provide a structure and a set of functions allowing to set up automatic secondary firmware node assignment for platform devices. It uses a behind-the-scenes bus notifier for a group of named software nodes. It will wait for bus events and when a device is added, it will check its name against the software node's name and - on match - assign the software node as the secondary firmware node of the device's *real* firmware node. Signed-off-by: Bartosz Golaszewski --- drivers/base/swnode.c | 105 +++++++++++++++++++++++++++++++++++++++++++= ++++ include/linux/property.h | 18 ++++++++ 2 files changed, 123 insertions(+) diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index 51320837f3a9f1bf4f65aa161d9b941affc74936..97e3354cdafd94e175d29acb697= a0dc61186a9c8 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -6,6 +6,7 @@ * Author: Heikki Krogerus */ =20 +#include #include #include #include @@ -1088,6 +1089,110 @@ int device_create_managed_software_node(struct devi= ce *dev, } EXPORT_SYMBOL_GPL(device_create_managed_software_node); =20 +static struct software_node_auto_secondary *to_auto_sec(struct notifier_bl= ock *nb) +{ + return container_of(nb, struct software_node_auto_secondary, nb); +} + +static void swnode_set_secondary_fwnode(struct device *dev, + const struct software_node *swnode) +{ + struct fwnode_handle *fwnode; + + fwnode =3D software_node_fwnode(swnode); + if (WARN(!fwnode, "Software node %s should have been registered before", = swnode->name)) + return; + + set_secondary_fwnode(dev, fwnode); +} + +static int swnode_auto_secondary_notifier(struct notifier_block *nb, + unsigned long action, void *data) +{ + struct software_node_auto_secondary *auto_sec =3D to_auto_sec(nb); + const struct software_node * const *swnode; + struct device *dev =3D data; + + switch (action) { + case BUS_NOTIFY_ADD_DEVICE: + for (swnode =3D auto_sec->node_group; *swnode; swnode++) { + if (strcmp(dev_name(dev), (*swnode)->name)) + continue; + + swnode_set_secondary_fwnode(dev, *swnode); + return NOTIFY_OK; + } + break; + default: + break; + } + + return NOTIFY_DONE; +} + +/** + * software_node_register_auto_secondary() - set up automatic assignment of + * secondary firmware nodes + * @auto_sec: Context data to use. + * + * NOTE: All software nodes passed in @auto_sec must be named. + * + * Returns: + * 0 on success, negative error number on failure. + * + * This registers the software node group passed in @auto_sec and sets up + * automatic assignment of them as secondary firmware nodes of real nodes + * attached to appropriate devices on the bus specified in @auto_sec. The + * software nodes must be named and their names must be the same as the + * devices they should reference. The assignment happens when the device is + * first added to the bus. + */ +int software_node_register_auto_secondary(struct software_node_auto_second= ary *auto_sec) +{ + const struct software_node * const *swnode; + int ret; + + if (!auto_sec->node_group || !auto_sec->bus) + return -EINVAL; + + for (swnode =3D auto_sec->node_group; *swnode; swnode++) { + if (!(*swnode)->name) + return -EINVAL; + } + + ret =3D software_node_register_node_group(auto_sec->node_group); + if (ret) + return ret; + + auto_sec->nb.notifier_call =3D swnode_auto_secondary_notifier; + ret =3D bus_register_notifier(auto_sec->bus, &auto_sec->nb); + if (ret) + software_node_unregister_node_group(auto_sec->node_group); + + /* Device may have been already added. */ + for (swnode =3D auto_sec->node_group; *swnode; swnode++) { + struct device *dev __free(put_device) =3D + bus_find_device_by_name(auto_sec->bus, NULL, (*swnode)->name); + if (dev) + swnode_set_secondary_fwnode(dev, *swnode); + } + + return ret; +} +EXPORT_SYMBOL_GPL(software_node_register_auto_secondary); + +/** + * software_node_unregister_auto_secondary() - unregister automatic assign= ment + * of secondary firmware nodes + * @auto_sec: Address of the context structure used at registration + */ +void software_node_unregister_auto_secondary(struct software_node_auto_sec= ondary *auto_sec) +{ + bus_unregister_notifier(auto_sec->bus, &auto_sec->nb); + software_node_unregister_node_group(auto_sec->node_group); +} +EXPORT_SYMBOL_GPL(software_node_unregister_auto_secondary); + void software_node_notify(struct device *dev) { struct swnode *swnode; diff --git a/include/linux/property.h b/include/linux/property.h index e30ef23a9af3396455d5bb19bb6d41089d81d77f..2a7af60cbb8ecc2ba83819ce925= 62db42705b82a 100644 --- a/include/linux/property.h +++ b/include/linux/property.h @@ -15,10 +15,12 @@ #include #include #include +#include #include #include #include =20 +struct bus_type; struct device; =20 enum dev_prop_type { @@ -610,4 +612,20 @@ int device_create_managed_software_node(struct device = *dev, const struct property_entry *properties, const struct software_node *parent); =20 +/** + * struct software_node_auto_secondary - context data for automatic second= ary + * fwnode assignment + * @nb: Private bus notifier data - don't use + * @node_group: NULL-terminated array of software node addresses + * @bus: Bus on which to wait for devices + */ +struct software_node_auto_secondary { + struct notifier_block nb; + const struct software_node * const *node_group; + const struct bus_type *bus; +}; + +int software_node_register_auto_secondary(struct software_node_auto_second= ary *auto_sec); +void software_node_unregister_auto_secondary(struct software_node_auto_sec= ondary *auto_sec); + #endif /* _LINUX_PROPERTY_H_ */ --=20 2.47.3 From nobody Mon Apr 6 11:36:28 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 EBF693E92B8 for ; Thu, 19 Mar 2026 16:11:15 +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=1773936680; cv=none; b=auybvHYFvTPKIEF6nIjQL1Ef0HToA/7tyRb05abS7hW+7IxSO9IEFHwyMs31EDTdOCfsjHZ/sNXFqHxtMVbIgjOBfXWFp+O5Iwb3Yhin5mvxk2yrn/Uui7ROfd+bQmGbNqQ1Qi5LCuwnw/PTqjah+X/tbukvHeqGC1/PVyR6a+M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773936680; c=relaxed/simple; bh=kyQWpc+s6LyGB+cuyTPjoSS5DZ25LWb/g6VCYSKQJQ4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aZHLhrhDLDpOHwhzqxpjjqEzSxrpUBCXa4EqDOcIhyUI4R2+a2+BG6prbCsBeghj08HJtOf7kjCLGWSxr37eQgi4n3ITIPx7gHTxEoqUs6k3oDzKwiYXbkU9QgK69EyhpXZ3BeRCQ5KALSn2xn/QVzVpQGCIf8E3ki6XuMl5/g8= 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=HNaSJJna; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bnNZAjzh; 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="HNaSJJna"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bnNZAjzh" 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 62JEW7S12981440 for ; Thu, 19 Mar 2026 16:11:14 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= n+3e6RrrE6nJ0WW2f1xgH0NuNkol6/On6k5K+mXa1Qc=; b=HNaSJJnaPZB/375t jgSeiStPttPRFUhjs/PQ8Ngrlbz+QGeqWvWPKcSOZEPFKw8yXBsf8jazlwlbB5HV h/B5bCoYECDdx54tSsVtMdHxcvXARd7FnnqU+P9qOrY8j78zeWmLz7t8AABsOuYb xTKYgIOoDTkSkK769CMn7liHQhlX+iTwX2Tl3FWqDva4iAMAblTIFESNRF+chLZi v/SwlISGNLOmDFswigvcpJ37whKpxSRFkf6hoI3ELK9Iuo9KmNKJULIrgony4/By +UyBbuW8Pb4Lx6GTvzteJBjcmfa6VKStWO1rt8JvaZSQj9JTQMour4OT+1j+xAYl TyQQHQ== Received: from mail-vs1-f70.google.com (mail-vs1-f70.google.com [209.85.217.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0k080bmy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 19 Mar 2026 16:11:14 +0000 (GMT) Received: by mail-vs1-f70.google.com with SMTP id ada2fe7eead31-602878b0398so1432409137.3 for ; Thu, 19 Mar 2026 09:11:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773936674; x=1774541474; 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=n+3e6RrrE6nJ0WW2f1xgH0NuNkol6/On6k5K+mXa1Qc=; b=bnNZAjzhvlrVCQkZ6J1fjE9i53NppxrDFQvNUDZSL7FRJeIU8ELmVMjFk2OdUxUa+6 HSfhCd6CfNR5nmrcTiMKy57Txy/luDi81lxyDutsmAzgBZt1FhoiS7IixYcFObiOD87L l6pxpOHclC3KMqUzWWboIWgMKQBsubwrZ+2XI5bvvpWTCXs6no9IhOHX6uoZs43v3/Dn 19r1E785uNCn6GHI9LIR3Wiy5uDxVY+XD4b3Zh/o9DhXDA9kB8/1q55a1RaLhkfpaddt zi416TDaGh9DN1/o2U0iYF0c5pU/AqRJYYP8ZAL3geKg/tVXwyh/Mg6HTW6SsPY87YMz MAjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773936674; x=1774541474; 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=n+3e6RrrE6nJ0WW2f1xgH0NuNkol6/On6k5K+mXa1Qc=; b=BTPtCfkDrJwdHY84xn/hR0jkB3qDR7E0QOOlNru9AwhFx1/ml6Yqd3hRsiF+jTFoj8 wnmq7dPwHdg7OBaoX2W6rKIu7ftKipeLx4MVKm6KK8C5cV8SSbBy7E3pkpJb0Wo90Jah PudnefZ3/jRdUBu0ZOCwCzS32TM/Eqod8ec+ai7PF6OEiJusFXZgPFLNRZ6Ntpk+TkgF SxORAVs1xICRP2MvP2y8Ek65krpoEwFkoKIKdH7t5mHL/jX3qBC0wQvLRhTK5P9q1aiR sGJwFI2JI/83H/KJEe+2C1kDS59dM9IU4cBpLMeHuGtepDmC1bfB+SWz4WNr9+4Fy7pi c0Ww== X-Forwarded-Encrypted: i=1; AJvYcCUpuECsvsVAySSZkuaj4ySOlVyK+PEIVcY5E2UF81EuC8/6yQyfW6iw0dkAKlpUH6wc07Fky1jMyJ2/IRI=@vger.kernel.org X-Gm-Message-State: AOJu0Yy97Cdm8WcFl30+PEAOh7h0hgVtw+JbwHvPFzdq0OfjgQM/NWhu O3OqrVGRRPO5qZI0mMVCRu9FpxlEqtGFT6K+CIumgk5nu5hXk8eyE6OTyw2YYgWWZxa2uB/oDIK r8EE7CAXClWFMXSagmZNtRZoWXW59HA6D++RcUF5MmM/QedeGtfOLOT4jcsSAgnJkNGo= X-Gm-Gg: ATEYQzyFxZAiygiTEdMMuHPqvQ3drLq/LxTGvwBcEKJBuafJoYe/f72Hs8QybphGNCy oY5agsGO2tToM7achfYaz+T4o9VQpi9BYhhZMivFfUAsLy+CO1b4i7jMfZD6f8Cd5XYH4Gqspmh Rf85ITaLCKI0vRHScncklQxPvMlL1rR8LemQozPGOIVVQ/pObHdP9CVlrJQlQKF/967rirFcoPs 0hfdnX2TQ/8dmt9UQO0CEpI5e6Hl2OP3WNW89UcBQu238cyOIV/YWLJIl58eCEWsWZ0t/Opx8bP N0MskKPv5a3ivOuTcm1ZyMaHGyTpuNSj/IR7oIe7hykL+KWochaleNjU/oug5s3OUkEp/Gs98v1 5J+A5daFvTQCGSuE8SslMs65qXfCi+QY4ZktqyHJRAPwIFj9xbrUP X-Received: by 2002:a05:6102:1620:b0:5db:fe0d:7fd5 with SMTP id ada2fe7eead31-602aeaffb34mr60893137.10.1773936673674; Thu, 19 Mar 2026 09:11:13 -0700 (PDT) X-Received: by 2002:a05:6102:1620:b0:5db:fe0d:7fd5 with SMTP id ada2fe7eead31-602aeaffb34mr60853137.10.1773936673125; Thu, 19 Mar 2026 09:11:13 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:9d74:8015:408c:d719]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486f4e5495csm83756915e9.2.2026.03.19.09.11.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 09:11:12 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 19 Mar 2026 17:10:55 +0100 Subject: [PATCH 2/4] pinctrl: intel: expose software nodes for baytrail GPIO devices 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: <20260319-baytrail-real-swnode-v1-2-75f2264ae49f@oss.qualcomm.com> References: <20260319-baytrail-real-swnode-v1-0-75f2264ae49f@oss.qualcomm.com> In-Reply-To: <20260319-baytrail-real-swnode-v1-0-75f2264ae49f@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 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, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3084; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=kyQWpc+s6LyGB+cuyTPjoSS5DZ25LWb/g6VCYSKQJQ4=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpvCAWd/YCTQb1ZpJO3nLK2ALOKvuo/gh4sQpxD NZKbSmFQVyJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCabwgFgAKCRAFnS7L/zaE w0X8D/0bgfGvEb2pvErq1zJpsj5AKN2FholT28W7NlXp/35ot8SBkYRIp+s0nFspf20bQ7psQTz sWMAraTPQQ9rikZxk6pZ/38l0bUAl74JMpX21PBM4NBZBgoTwZJyLbRTLPWWh9FCFM0PeO5Wd5e Ir/aju4y5ybblGAWOLmnZ9E8CC+OpBod5fgduXJa9Xrfv9OpX1O4DueusUQilG6Id/LlBA0NS7z s2lxyePsa6rPEUGSFxTnyWQieC4bUVtvgynmTpBvIM5sN8oTWwSXISPKt/wvFu3CASmNtuBZr7u e9nIQvOuUUA3wHt2rCcON8UgCtU093uL0YY3LiHppMc0L4dU2FrczGPz08ilQ01RtE0o6vajcvL Yd+ZhjMX/JPa6z37M0W1Bk/Bzbky/Ooy6AgXtJKHuDxGDSbIPN78HMEzhEStMijexYkhkDNjWt6 wJXTQyWX4NmzY/ImFOOn5yvEbat6yqUxyRrNYvAVIE1e7mj2EHw1FjtBPrgkY3iihR7sMAERCHA jAFkanfTkja73k5GyEJnRbqItJnuLeEeKw2RbHole9eevfAtSflfk6EoeReoO/ZHo1M3Vondc/J DTtHvihyA4Rs47Yo64ET4i0N+Web+EqtzT7xPQ2azvY9xzM/30fTYKrF8hLtE5jM+Y70LIDm+94 MqdlioRoOi4r2bw== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=MYhhep/f c=1 sm=1 tr=0 ts=69bc2022 cx=c_pps a=N1BjEkVkxJi3uNfLdpvX3g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=kPuSsqDpjDp9iQEZ0-0A:9 a=QEXdDO2ut3YA:10 a=crWF4MFLhNY0qMRaF8an:22 X-Proofpoint-ORIG-GUID: Mkx_K09VELIs1PeuHieTUco9Wxd-Bn1i X-Proofpoint-GUID: Mkx_K09VELIs1PeuHieTUco9Wxd-Bn1i X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE5MDEyOSBTYWx0ZWRfXxfL0/MrjXlHk zRL/RooqCEldXQb0kIEWIYy8HUnTe9JvbrGuRZfT3DHsFpfpqZ1JMmWLTb+1pWy3rrvj7mwWG3z PPcvCiTICxFsTmrsFcabYSsPJkNrH6DkQ2RcoO8VVO7jPT88Fqqc4xJEFENCQ4SMu4mEymnVCvi 7MqFPDf2iktmJNjZUKy+ayHKsIr+s12f0foIEEERNYWyX60WnK9M6h6NhEhQIBvCBzF8r4d9DFV efVesTeyxJz9uyutuD2rHQ9VgznQn+588hb7Qt/QQyxu8oOW54LRyRG9XWn7LcST9k+oZwLqVSI 1rNuCpInl6KcXAWmwe20HgoxogJLdtMpYN1NyYJkdimNe9sqWMfsLiJuij/gd3SSAIpsrL4DXTQ X/l90MeF1isodEHv2M1tyuNA31vcVptYJa/7kHSSJIhyWspo1U4tcTEc5RbVTlg+8IO7zRA/f7U raNzcBEf51ivMNUQrgw== 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-03-19_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 suspectscore=0 phishscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 impostorscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603190129 Use the new automatic secondary fwnode API to ensure that when the baytrail pinctrl device is added to the platform bus, the static software node provided for drivers not able to use ACPI will get automatically assigned as the secondary fwnode of the primary ACPI node. Create a new header under linux/pinctrl/ containing intel-specific symbols and declare the new variables there. Signed-off-by: Bartosz Golaszewski --- drivers/pinctrl/intel/pinctrl-baytrail.c | 40 ++++++++++++++++++++++++++++= +++- include/linux/pinctrl/intel.h | 12 ++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/intel/pinctrl-baytrail.c b/drivers/pinctrl/int= el/pinctrl-baytrail.c index 02fdadf2189afb0ff654c80c131f813b59d623d6..bd0ba7c3351c021584127b3679c= 59d7463cc8a57 100644 --- a/drivers/pinctrl/intel/pinctrl-baytrail.c +++ b/drivers/pinctrl/intel/pinctrl-baytrail.c @@ -22,6 +22,7 @@ #include #include =20 +#include #include #include #include @@ -1723,9 +1724,46 @@ static struct platform_driver byt_gpio_driver =3D { }, }; =20 +const struct software_node baytrail_gpio_node_00 =3D { + .name =3D "INT33FC:00", +}; +EXPORT_SYMBOL_NS_GPL(baytrail_gpio_node_00, "PINCTRL_INTEL"); + +const struct software_node baytrail_gpio_node_01 =3D { + .name =3D "INT33FC:01", +}; +EXPORT_SYMBOL_NS_GPL(baytrail_gpio_node_01, "PINCTRL_INTEL"); + +const struct software_node baytrail_gpio_node_02 =3D { + .name =3D "INT33FC:02", +}; +EXPORT_SYMBOL_NS_GPL(baytrail_gpio_node_02, "PINCTRL_INTEL"); + +static const struct software_node *baytrail_gpio_node_group[] =3D { + &baytrail_gpio_node_00, + &baytrail_gpio_node_01, + &baytrail_gpio_node_02, + NULL +}; + +static struct software_node_auto_secondary byt_auto_secondary =3D { + .node_group =3D baytrail_gpio_node_group, + .bus =3D &platform_bus_type, +}; + static int __init byt_gpio_init(void) { - return platform_driver_register(&byt_gpio_driver); + int ret; + + ret =3D software_node_register_auto_secondary(&byt_auto_secondary); + if (ret) + return ret; + + ret =3D platform_driver_register(&byt_gpio_driver); + if (ret) + software_node_unregister_auto_secondary(&byt_auto_secondary); + + return ret; } subsys_initcall(byt_gpio_init); =20 diff --git a/include/linux/pinctrl/intel.h b/include/linux/pinctrl/intel.h new file mode 100644 index 0000000000000000000000000000000000000000..d45f090adc1f532f866c98aeca1= 44a4d83fa28f4 --- /dev/null +++ b/include/linux/pinctrl/intel.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef __LINUX_PINCTRL_INTEL_H +#define __LINUX_PINCTRL_INTEL_H + +struct software_node; + +extern const struct software_node baytrail_gpio_node_00; +extern const struct software_node baytrail_gpio_node_01; +extern const struct software_node baytrail_gpio_node_02; + +#endif /* __LINUX_PINCTRL_INTEL_H */ --=20 2.47.3 From nobody Mon Apr 6 11:36:28 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 CF21C3EB816 for ; Thu, 19 Mar 2026 16:11:17 +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=1773936681; cv=none; b=TKChhZv8xPt4U9IzjiK6DBWwMxw2ZDZ811ZMdrhVYK6A2eofp3reakfa3waHzzTGlBEa3f6CxgB/9teQQAwknREN1kOrLe7exdVgtaN+hyVrLjjniY0NfVHnjln5eOXjwpkAPfMe1LbyCMC/W6Guk+jh06ftcfGgts55r/7gtW8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773936681; c=relaxed/simple; bh=I67SAyES6GkHk6EVmG3C77aUXjElzOIeuDKZj/y0SCw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=skTjCNNM2MagXBx1fh6ZVRiRhm514zEuOrE2f+494UF3aP5ST3dlUdC5tJp8A4MXvz6iEKNSPHNDTNr7R5Q5RJa0G2uKVNfRDuv6pawlT7cbPC4ETZJhzkuoNY4eGnfNNvvG+iGWT1y+GjfDkuOqDHltHQDeTSagtypGwafNFwA= 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=ae5QsglD; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=duiKaGc2; 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="ae5QsglD"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="duiKaGc2" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62JEXcNm3648553 for ; Thu, 19 Mar 2026 16:11: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= 2Q2GuadJ1cZYo7UfUMdzhOmnFdwm/5ltCsFBL4t2bdA=; b=ae5QsglDralovOmD W5BRrJob800EW4J5Bt5TPADNJHwm8d2oyEvwFqJxsT9PUob2yE0sKM9XBR9pwVgr IfBWroO0UjmT9RkVroOoXZh4CUeHNYycPWa1dFhld3gKgp/a9UYOlRan2duw+sQx qW+ITL3H+6bMORwRf6H36U54tJGyW8TqfGjxZzTidAP6ffk+K71pRicZfDl+WsZr 9rEINrGjWTKYVVLilGUDZ+7G9/kQOscZskXHGvqg7AwFh+iaJRfLQDPwgp+A86KB OGVfWyaCuYBlyfa1HIWa2LdKXCZrKKVdbD63RhUoOFEfv84AwN6e17mKuWksiocj TYULhQ== Received: from mail-vs1-f71.google.com (mail-vs1-f71.google.com [209.85.217.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0k0v8c5y-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 19 Mar 2026 16:11:16 +0000 (GMT) Received: by mail-vs1-f71.google.com with SMTP id ada2fe7eead31-5ffb295babbso1622061137.1 for ; Thu, 19 Mar 2026 09:11:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773936676; x=1774541476; 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=2Q2GuadJ1cZYo7UfUMdzhOmnFdwm/5ltCsFBL4t2bdA=; b=duiKaGc2jqJKJsguBVKGerzYGwgpe0IbfJK8UwyjnpBifwaBJVGv9WwhfND3XMwI9G 47WYThcUtU1111sbCSXXL8vVGE6/xvayPOTR6w4Fn+FHMMbcKQmuuFeQ3p50hL0sQ2wY MFLjpErHTIbmXnbGibg2ayF5RFmH36+Iz/JfCK+CeI55pdNTZiYEjvC99YYqpFdx+h7Z mrnNELN1l9A5ykNvc+1ZDVbFsJQAYbyfjC42tUCqAStA+Stc67OoMZXNa2DTYY1Vdi/z ZIu0PUri/Cwj0u7JCSCsUbupk61tE7TGFC+88lFL2CgFI8lktcc4RLo97lz7JViM93Do 7Hdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773936676; x=1774541476; 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=2Q2GuadJ1cZYo7UfUMdzhOmnFdwm/5ltCsFBL4t2bdA=; b=NHdAqEtRAi5EEWV7ezPp4tNAMOBmlCYOK1piH22erjoGhB9NyG/uzvh9vM4rlMGlK7 26644MKzjXV04zOschtqfKDqUu58/zNIrbDrHk6aVuYvmYf8JAhOKNiWanpB6uCR4zer ZjVhG7SSPtOH6IVBSwNokLQK9abD85Bji+940MoxQtEltkK3WuQUg6LLX/3MBwvA07Nf 88gJrw/eKSv2pmlYgV0V9aZlkj/zc9hCghJJkLH4LDAG+qqBrLsX35kl3QDSYIGMcZKf UWg/VSSbZYGj0Hg+bEHHUOxn3UwVwmxwWXHNjizOytifq5D5vc/AqIpXKBXuccl7ivym 3iFQ== X-Forwarded-Encrypted: i=1; AJvYcCXdRIcDSFMM0PbzK3J3/X902TRjEAk0Tsc4AtAzvjpFf5uRlCXLzP9ygA7x1OkkVUsHkq0fm4TC9bx6IDI=@vger.kernel.org X-Gm-Message-State: AOJu0YxnC3hLsJ2r/vNxRrDYMzUeH6zDQS49EKd8SLjnRe+BHyQAhE5W /mnF4w7F8ysKHO56pUoboYbZsf8TLFdyR6avFa16H0QAAzOzzqcwVa0/fsCDyV+bhkT90yvE76y nNnUOev9hpErll4zfHjKjaQ6AixqUO/WzzVNB+Hy+VR59PZ7/jdvhUqX72S4Sg4k4N1o= X-Gm-Gg: ATEYQzxg3XmYbZKf565LC3jcatunehbNLYb/n7HkZWSnhX23uGyGZbcGKT4MluKoUv3 yqCyC0lUWEuM4r12YZuZaU+2RkiDNjJ6jQY8nUB7kx8cJwpB070HacU68wsI0RMHgxo3V4HIhn2 GgTjirG6TievYAuJL3ImLm2Mz/5BulT94wysU6/erx+nEVHuPMre0D6jjVMe+6rQ17Ed4i32qox 0nfJ9O3mB8rgw27/t+G4LM/k1KDwA2p4sEF2nAEvp1cqHzkhAfXVNX6Nhe2/cX6TgOc0oo3xCXC tegboUM0DgxcKRxmGZFDu219q9YQl7wEh24U47+N5x4yZ9bHj50YyuZLpYN/6VR2yRDxLYki6Vt aWh3PjYi2fHk5H72ZiQ88AYBDFfqQS4I+aYveP11lYc4cfRF5BsVo X-Received: by 2002:a05:6102:578c:b0:5f9:3aaf:fa27 with SMTP id ada2fe7eead31-602aeac9366mr64404137.6.1773936675939; Thu, 19 Mar 2026 09:11:15 -0700 (PDT) X-Received: by 2002:a05:6102:578c:b0:5f9:3aaf:fa27 with SMTP id ada2fe7eead31-602aeac9366mr64347137.6.1773936675430; Thu, 19 Mar 2026 09:11:15 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:9d74:8015:408c:d719]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486f4e5495csm83756915e9.2.2026.03.19.09.11.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 09:11:14 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 19 Mar 2026 17:10:56 +0100 Subject: [PATCH 3/4] pinctrl: intel: expose software nodes for cherryiew GPIO devices 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: <20260319-baytrail-real-swnode-v1-3-75f2264ae49f@oss.qualcomm.com> References: <20260319-baytrail-real-swnode-v1-0-75f2264ae49f@oss.qualcomm.com> In-Reply-To: <20260319-baytrail-real-swnode-v1-0-75f2264ae49f@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 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, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3561; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=I67SAyES6GkHk6EVmG3C77aUXjElzOIeuDKZj/y0SCw=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpvCAXEnJzDyeXAAVMRIOFLd0zwqHan4F1WlNDA lZleC9Bf/OJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCabwgFwAKCRAFnS7L/zaE w7rKD/9ebc0m2OnjoRJCvYcI3h+8uUAgw8SmyXwbhEMtyuB22rwIi+20Uvm2hQC81KqwRrOLzFl nOhDRzRajq9qFORRtv4ZfkqGx5Rpushh9f4Rs766oexYU92ifOlerWTAjmVlrrCes3mR4qRHvoH JA9pz2ihldbfUK4rpJELslC3DWsnQOPc1ePChrZmjpxHmQqvkAsifhrRpAWZFoQx/v+H8ALtPr8 I6nb6gg6gCADVrjIAOn1IUlH5BWubBZQvq5WoDtRlVRfAxGNcRXumvhWIKYUNL0Vtl5O0pS2G/W ZvBLUY2VkUuVjeoCNXVED2wUcfQx+ujYK+RCZ8NGVdvdkcyF7moB+Bc63mlvBoccTlMuWC/lmUY mv52A8XCMB3WBibL3H20AznahHrp7uiIeTL3u/bSJ04+lABriXB1B9tGDQyGbRfsnq3hHHRcEDw R4dl/iwlA6RUWMp6TDdgUQJJsqQfELHD/zfn7RMGiPHoMGznoxUkz/TmuA/W9L0SsFBZuk8S8eT aKQa63Tp+J4WCZFZnP5QdQI9nPvacHN3xJ4Apgf1/Y15kCVx8eo+wzR8P4zw/jVOrIc7jdf8K+w wSUR9ikK6ednoWiCSEAZzmSVkIDceM3m1Vtd/NK7QRfTvt9AYbtDWJaewQjMwLFPs8xgnylW9dW rG2r49dLtIW8VEQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-ORIG-GUID: OljmtS7ef1E6iBd9zxDHPyxdilx4h68m X-Authority-Analysis: v=2.4 cv=EcjFgfmC c=1 sm=1 tr=0 ts=69bc2024 cx=c_pps a=P2rfLEam3zuxRRdjJWA2cw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=nG9bRbd_0SKyiAKh2pMA:9 a=QEXdDO2ut3YA:10 a=ODZdjJIeia2B_SHc_B0f:22 X-Proofpoint-GUID: OljmtS7ef1E6iBd9zxDHPyxdilx4h68m X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE5MDEyOSBTYWx0ZWRfXw+1nwrSY8iQT yl9hOAyP+BtuJ/+qissagCv8aMg+L8JZ26pvnx7yR/Dy8xMBm0tSRDZdO+YDvewKVNnO3wIV3N2 oGnehKOodCHPaSK41qIPG7TUmIK/iqV4K9/Hgc6uzNRCW5SQsCtxG8QMx+vGfmstnBjo8Jz288r lmIVGhpIGIWrQZSZww0WIHzBnChUGgl/jUjxRHHr3vj9VEjH7q1AWWsqefDA/Zfemlns2IP+3Oz vnwQB6M40kc0BZ0DkRP8dydnJsVPNM4kts6U1MNIH0tTPXhs6ZhDKiqxwqlXKBzaYPQ9pWXNT2R /VKmGZ4zibnQ6POIak5DXKqgfizzpfTg06TznFT2RVWSLXcfKjTIFoQWfV2XMhKiPhf2tJqRYhk m49nDqNZL9rNhALU2PBbBi8Y1ae88k0g+bUJCzMBYlvMOzk7z9LrrstLAhqSLcrYXT0QejBs321 Yq6EPJP44ayIncZvpLQ== 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-03-19_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 suspectscore=0 impostorscore=0 spamscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603190129 Use the new automatic secondary fwnode API to ensure that when the cherryview pinctrl device is added to the platform bus, the static software node provided for drivers not able to use ACPI will get automatically assigned as the secondary fwnode of the primary ACPI node. Update the existing intel.h header with new symbols. Signed-off-by: Bartosz Golaszewski --- drivers/pinctrl/intel/pinctrl-cherryview.c | 47 ++++++++++++++++++++++++++= +++- include/linux/pinctrl/intel.h | 5 ++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/i= ntel/pinctrl-cherryview.c index a33eca5eafc44ee3337c4665967682404cb6ece0..45e52a796c8201c844127dbab49= 7b4b3002930dc 100644 --- a/drivers/pinctrl/intel/pinctrl-cherryview.c +++ b/drivers/pinctrl/intel/pinctrl-cherryview.c @@ -21,6 +21,7 @@ #include =20 #include +#include #include #include #include @@ -1769,15 +1770,59 @@ static struct platform_driver chv_pinctrl_driver = =3D { }, }; =20 +const struct software_node cherryview_gpio_node_00 =3D { + .name =3D "INT33FF:00", +}; +EXPORT_SYMBOL_NS_GPL(cherryview_gpio_node_00, "PINCTRL_INTEL"); + +const struct software_node cherryview_gpio_node_01 =3D { + .name =3D "INT33FF:01", +}; +EXPORT_SYMBOL_NS_GPL(cherryview_gpio_node_01, "PINCTRL_INTEL"); + +const struct software_node cherryview_gpio_node_02 =3D { + .name =3D "INT33FF:02", +}; +EXPORT_SYMBOL_NS_GPL(cherryview_gpio_node_02, "PINCTRL_INTEL"); + +const struct software_node cherryview_gpio_node_03 =3D { + .name =3D "INT33FF:03", +}; +EXPORT_SYMBOL_NS_GPL(cherryview_gpio_node_03, "PINCTRL_INTEL"); + +static const struct software_node *chv_gpio_node_group[] =3D { + &cherryview_gpio_node_00, + &cherryview_gpio_node_01, + &cherryview_gpio_node_02, + &cherryview_gpio_node_03, + NULL +}; + +static struct software_node_auto_secondary chv_auto_secondary =3D { + .node_group =3D chv_gpio_node_group, + .bus =3D &platform_bus_type, +}; + static int __init chv_pinctrl_init(void) { - return platform_driver_register(&chv_pinctrl_driver); + int ret; + + ret =3D software_node_register_auto_secondary(&chv_auto_secondary); + if (ret) + return ret; + + ret =3D platform_driver_register(&chv_pinctrl_driver); + if (ret) + software_node_unregister_auto_secondary(&chv_auto_secondary); + + return ret; } subsys_initcall(chv_pinctrl_init); =20 static void __exit chv_pinctrl_exit(void) { platform_driver_unregister(&chv_pinctrl_driver); + software_node_unregister_auto_secondary(&chv_auto_secondary); } module_exit(chv_pinctrl_exit); =20 diff --git a/include/linux/pinctrl/intel.h b/include/linux/pinctrl/intel.h index d45f090adc1f532f866c98aeca144a4d83fa28f4..bd3e6ee8b15ebc492275a14ae6d= 53827b701f783 100644 --- a/include/linux/pinctrl/intel.h +++ b/include/linux/pinctrl/intel.h @@ -9,4 +9,9 @@ extern const struct software_node baytrail_gpio_node_00; extern const struct software_node baytrail_gpio_node_01; extern const struct software_node baytrail_gpio_node_02; =20 +extern const struct software_node cherryview_gpio_node_00; +extern const struct software_node cherryview_gpio_node_01; +extern const struct software_node cherryview_gpio_node_02; +extern const struct software_node cherryview_gpio_node_03; + #endif /* __LINUX_PINCTRL_INTEL_H */ --=20 2.47.3 From nobody Mon Apr 6 11:36:28 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 F1A393EAC9C for ; Thu, 19 Mar 2026 16:11: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=1773936686; cv=none; b=VRPAmbOOM7Hutl5HgKoKBMFRphb5nDDmOggQFVkHntNmCdF52kJzJJMw+pxZmIXcJl06VkhdY2FQ4hHqqPNUwXz4ROXY2OUT1X8EFSASq8aSXU8OmzWT0va2bSYIdYGTT5qEc61aPIRMRsPVWHW9pXWDcn+U88C/wIaO1QgA5Zo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773936686; c=relaxed/simple; bh=SuFvkZu0w4R7ZzUnSsrxLWH1/5TACM1SQa5YDDmP2pQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DKg6HBjZpZmND1cO8gBYJrbq0uJLmyiMJjxOBdUVxpRoaCmLopSBQjMTE0wj539qVkn1amQt25MSHi9zgCk7m1ZtAo+IfVHH1RVpcHZ20bPyiF+SToOTm+ayIf7HnybOmYw3JfIflkAz4l8WFZFhEifEWFfc2CZCCgPd1lyi6Ew= 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=DszeeWBC; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=I8Q6TG5J; 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="DszeeWBC"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="I8Q6TG5J" 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 62JEW7xJ2981458 for ; Thu, 19 Mar 2026 16:11: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= tv1Us6Me9dZWqbW6Qkx0ocwvvBPp2uJQA7v4bCY1YUA=; b=DszeeWBCmzfanmtx RG1/RqCTbFw8muaPbkeUckuNOKHIrNvd3i+Y4crLPS7+Xs12CXgQ2nLNROho2PiH zCuYTmpUXqRWu4YRECceT9nF0BVqqg3xOF+TYWdHoJ+MpNYzE0YW4xHASEEND34i ziIl2UB3A/tfTQ9xTKXgI/CIE+J37tsueZMzGRimjiAAmCkNfWnHRzyJdKFeL9Cp d2XyxuYIg5Afmp0W1nqXPakZyyzlIieToeKtvo5jeRP4h+VzNcWfkh+5sNAwTobg EkW6pokLRzn6bhU7NRHv2414lFFFiiwOhcohEcI2dR1m/hTUgW70dl5O9QoZCY8u ndEaPA== Received: from mail-vs1-f71.google.com (mail-vs1-f71.google.com [209.85.217.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0k080bnc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 19 Mar 2026 16:11:19 +0000 (GMT) Received: by mail-vs1-f71.google.com with SMTP id ada2fe7eead31-5ffcb2bef48so1522329137.0 for ; Thu, 19 Mar 2026 09:11:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773936678; x=1774541478; 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=tv1Us6Me9dZWqbW6Qkx0ocwvvBPp2uJQA7v4bCY1YUA=; b=I8Q6TG5JjZtgTbc0zvMwy3A95fo+gH5vFmHk2CpBl2V8HrXKBoWD72mAQqRK4MrG/j 5Tdqhpbn8WVUnRZaIBTIH64lVO7vlKj2aAvqJHihBVk2XSXtQiuMz/dY8Ng/PEmucHAY fBn0Qnh8jQVJQNglirmrgmKr3P+4ZhSyNi4zh29Cx/DR9m6C5RJovrRnjYVN/8KKTMOl sLgWfHgWUrdSRtZuxsXhnbkidq10ZFAAVSK+kXP+14WVssXwCFmUOblEjsH+vkius433 kELklGfj1hF628VrGvN17Zgv780BLDiPYj4TeUOnaKAHBy3sHjUWvjQ2bxMRhbVq854O +dBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773936678; x=1774541478; 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=tv1Us6Me9dZWqbW6Qkx0ocwvvBPp2uJQA7v4bCY1YUA=; b=X6iJrFmoYEPCYB22tXolYW8Wgqx0fS2UQV0XVT3ooPjG1WvWbfkuiPzSTcnBfwAi/j 1A5oC1nbArnspmj0sqhn7G35zOR7sWjJVFgEWMUnOgbkN0GFsegjKor2dckitMo0snbI 78pb95PMl2zQtym/tpjAnvVbGTFFfCu9MVIEv5Me78qhqtzoeTftxiOg42iEUBHdHAAx 84Ff3NCqLLfSau9s2rnmCku+c1LEn5Zvlek6mBHNmqCmKbj0M8uu6lnAB1/gbeFIN+/y IshfckPkAJu1UKKyNRu3Q9dVxGOfd4O0XGhT4kgfiC4B2u+ihw1ne+dZ2PFOaI4HOKCT DsOA== X-Forwarded-Encrypted: i=1; AJvYcCXlm59nHSEfOx76PBBp/JnFrGLQcf5rHotfTXufphaMxRxKR48NkkQXbiSOdIrqrBrainoi08XeP1RHMhU=@vger.kernel.org X-Gm-Message-State: AOJu0YyxZNQ8C6AiN5XRAo+lGMOQZ4vZF5Qmi50bHnetRcf6btvH0qVa TBZhooowiRQyNubC5gBVDBFv/oeM+DjAk0y/ACInPgPJcvJaLJijhdGNwuesDLwo6Kkd4B09Lh7 r/Ydx8WL4zUnInXow8puPFYrpszf+jab1nY7LK0T3Ha+3oEfNYntMXfPW3eO+6W1IAbw= X-Gm-Gg: ATEYQzxEjVzBbCZVxf56Nab2t2d4ao3r5/KojvDeAtSN+xwW4jzkcCTYecxi81sZr2y H8O8V0vssgDchBbqX23ceFx+25rcIXWBRwtxxB8z//LyoVgj45F2Tlqcv9Xv02zApORFwbWmbz6 mbfkwNQzGAvadBhJr2ubhpezu1qrK3+ik+ze/jiQ44tPc1hvfg1Ej2CfUzx+IVDOWHTox4xsLQm 1Nalrj9QQGquzocVxVWx3CrIQPaP2i1GFUA6Uj5VYTMbzLOwNxUBzq9Cv758Odw1Rf6yvam7MA/ 4lajQZl2QEHgeKTxkcK6gLtF1T5YYc1qpjSKaA4NS3dKeQ5KQOn7VwkuWWf44wEVArKQ/RCNhe2 ssbSC4k2fdoHKiOAwMI7FmQWlQ3fdHQAMC7KOE4PhvslxMCDUsPYJ X-Received: by 2002:a05:6102:5a94:b0:5ff:cee8:6620 with SMTP id ada2fe7eead31-602aeb00f67mr62202137.11.1773936678005; Thu, 19 Mar 2026 09:11:18 -0700 (PDT) X-Received: by 2002:a05:6102:5a94:b0:5ff:cee8:6620 with SMTP id ada2fe7eead31-602aeb00f67mr62154137.11.1773936677349; Thu, 19 Mar 2026 09:11:17 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:9d74:8015:408c:d719]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486f4e5495csm83756915e9.2.2026.03.19.09.11.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 09:11:16 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 19 Mar 2026 17:10:57 +0100 Subject: [PATCH 4/4] 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: <20260319-baytrail-real-swnode-v1-4-75f2264ae49f@oss.qualcomm.com> References: <20260319-baytrail-real-swnode-v1-0-75f2264ae49f@oss.qualcomm.com> In-Reply-To: <20260319-baytrail-real-swnode-v1-0-75f2264ae49f@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 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, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=22246; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=SuFvkZu0w4R7ZzUnSsrxLWH1/5TACM1SQa5YDDmP2pQ=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpvCAZqsPSbGlNA08Bmjvo7tguYTpJ3MBsT9gi7 WdBlY7rnW6JAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCabwgGQAKCRAFnS7L/zaE w5HMD/4nPduMHiU5usi6yhd/1uO76BKKIsYlKSwqbpX0o/68w74F/x0YE6tNrusj9Iig5D43miG bzkjIa45nCuHiggYdwV55ZkBDpmd00SwsVRWWqs+KFTiGFpGQPA76IKpiBsmx78kvbgjC62NgFl VhnN26UTt4KgjqqQc5wLk5XekPss6vLc3ecH+q+XrTBAIlUnzvHNlu2RaZtavVKVvwPQJaskmFU l9KB+gihTrOnBN3iu/iPScSKIRFFpEp3exk+YHD62ASOxK6clGnl7X+ZvAWQgR8FrdWfGA5vXOL roRRl2Fn51F1ffTCOnjtD3j3drbRPDoNtlb2jYqRZ+/s2wvkuFTnqiGePiHHS/7/93uy2PdVu09 QGiMRq7/6tTSjc6jZkTzwh2iHlyvTr+RwNXgNbY0Yvn35+zmcobkO/Kh8HW91bURL8G7sAI5+yW r8l5uvddES9ln7XxaPpWRR65Q+3DLiAiAArJ7xYzobT67hnv+i9+4WCNQXqxOiSEnQcOKkznUNa M36e+UpA/mRIQv14IsUYQ4Vl7mM0M1j2yL55of0avZwE5FsZz7MqmJyV5lJAF7FHKSJ494VpIVe N5BCuvVbjkXwXWP7IxBihtPTTFJI8Gfso2nbn654brX9KzQoHADj0SRNKRWIvkXIEifs578P0SC ZZpGJN8d72B9aKg== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=MYhhep/f c=1 sm=1 tr=0 ts=69bc2027 cx=c_pps a=P2rfLEam3zuxRRdjJWA2cw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=I3_DoLzjCvalTPEyn3MA:9 a=QEXdDO2ut3YA:10 a=ODZdjJIeia2B_SHc_B0f:22 X-Proofpoint-ORIG-GUID: dqIuHpwGlzdUkDKeQYx7ndYyP6xcSQea X-Proofpoint-GUID: dqIuHpwGlzdUkDKeQYx7ndYyP6xcSQea X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE5MDEyOSBTYWx0ZWRfX0+vJqPTqJInz 2prdu8o+EY5e7MhF9lJceOZ1zdbDGIthltchTAm3us8WvM0Tzf7NzRk5Ugtg3EkmoHL9l2nH6zi nUK/P7YG4KIUZcJeP5zTIpy/vgh1C4F9lj2+6vRNaZcPsxgpzLoQLia/9JpjKySXXm6WR7reWws hngqFD59SV2ox0THHe4qs5uTEGSQFGOYLzCXVXz7zznwWhKbrt78R9IqChK3VeL3GEV5XOfW50D +73mLrKZ1ImFs2Bb/l4MKx49sHkewUEBKlFDXwyAi/mUOk5M9dGMY4ijQyr891ZlS67nW+M4Axg 4t+lluanS6n3rszNGOBh2Z/QC+CxBKyxbccuoVEbeDn5N3xsmkszZxY2MohRl+YeuE1mM5qyUA1 jnq9ZelYghJ0TRr1lqfZrKis8nGW5Wf0531Is48ZE7VXZ9BrRaTBKZoNrY3k8j0CT0rFxZDcLs7 +GGa+uxfYVGR0MSSpaQ== 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-03-19_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 suspectscore=0 phishscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 impostorscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603190129 With cherryview and baytrail drivers now exposing software nodes that will actually be set as secondary firmware nodes of their primary ACPI nodes and with GPIOLIB supporting fwnode matching for secondary fwnodes as well, we can finally replace the dummy software nodes defined locally in the x86-android-tablets driver and not attached to anything with ones for which true fwnode GPIO lookup will work correctly and not require the fallback to name matching. Signed-off-by: Bartosz Golaszewski --- drivers/platform/x86/x86-android-tablets/Kconfig | 1 + drivers/platform/x86/x86-android-tablets/acer.c | 11 ++--- drivers/platform/x86/x86-android-tablets/asus.c | 9 +++-- drivers/platform/x86/x86-android-tablets/core.c | 47 +-----------------= ---- drivers/platform/x86/x86-android-tablets/lenovo.c | 31 +++++++------- drivers/platform/x86/x86-android-tablets/other.c | 23 ++++++----- .../x86/x86-android-tablets/shared-psy-info.c | 7 ++-- .../x86/x86-android-tablets/x86-android-tablets.h | 4 -- 8 files changed, 45 insertions(+), 88 deletions(-) diff --git a/drivers/platform/x86/x86-android-tablets/Kconfig b/drivers/pla= tform/x86/x86-android-tablets/Kconfig index 193da15ee01ca5943581d800d5d2f82f39aee196..18425f787e933927add436c3354= 460fad166f092 100644 --- a/drivers/platform/x86/x86-android-tablets/Kconfig +++ b/drivers/platform/x86/x86-android-tablets/Kconfig @@ -8,6 +8,7 @@ config X86_ANDROID_TABLETS depends on I2C && SPI && SERIAL_DEV_BUS depends on GPIOLIB && PMIC_OPREGION depends on ACPI && EFI && PCI + depends on PINCTRL_BAYTRAIL && PINCTRL_CHERRYVIEW select NEW_LEDS select LEDS_CLASS select POWER_SUPPLY diff --git a/drivers/platform/x86/x86-android-tablets/acer.c b/drivers/plat= form/x86/x86-android-tablets/acer.c index d48c70ffd9925033ec4ab937a7e55622e3f7a374..037648a45fa78679e5e6df13243= 3c8e6fa4e991f 100644 --- a/drivers/platform/x86/x86-android-tablets/acer.c +++ b/drivers/platform/x86/x86-android-tablets/acer.c @@ -10,6 +10,7 @@ =20 #include #include +#include #include #include =20 @@ -31,7 +32,7 @@ static const struct software_node acer_a1_840_bq24190_nod= e =3D { static const struct property_entry acer_a1_840_touchscreen_props[] =3D { PROPERTY_ENTRY_U32("touchscreen-size-x", 800), PROPERTY_ENTRY_U32("touchscreen-size-y", 1280), - PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[1], 26, GPIO_= ACTIVE_LOW), + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpio_node_01, 26, GPIO_ACTIV= E_LOW), { } }; =20 @@ -91,8 +92,8 @@ static const struct x86_i2c_client_info acer_a1_840_i2c_c= lients[] __initconst =3D }; =20 static const struct property_entry acer_a1_840_int3496_props[] __initconst= =3D { - PROPERTY_ENTRY_GPIO("mux-gpios", &baytrail_gpiochip_nodes[2], 1, GPIO_ACT= IVE_HIGH), - PROPERTY_ENTRY_GPIO("id-gpios", &baytrail_gpiochip_nodes[2], 18, GPIO_ACT= IVE_HIGH), + PROPERTY_ENTRY_GPIO("mux-gpios", &baytrail_gpio_node_02, 1, GPIO_ACTIVE_H= IGH), + PROPERTY_ENTRY_GPIO("id-gpios", &baytrail_gpio_node_02, 18, GPIO_ACTIVE_H= IGH), { } }; =20 @@ -109,7 +110,7 @@ static const struct platform_device_info acer_a1_840_pd= evs[] __initconst =3D { static const struct property_entry acer_a1_840_fg_props[] =3D { PROPERTY_ENTRY_REF("monitored-battery", &generic_lipo_4v2_battery_node), PROPERTY_ENTRY_STRING_ARRAY_LEN("supplied-from", bq24190_psy, 1), - PROPERTY_ENTRY_GPIO("charged-gpios", &baytrail_gpiochip_nodes[2], 10, GPI= O_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("charged-gpios", &baytrail_gpio_node_02, 10, GPIO_ACT= IVE_HIGH), { } }; =20 @@ -193,7 +194,7 @@ static const struct software_node acer_b1_750_bma250e_n= ode =3D { }; =20 static const struct property_entry acer_b1_750_novatek_props[] =3D { - PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[1], 26, GPIO_= ACTIVE_LOW), + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpio_node_01, 26, GPIO_ACTIV= E_LOW), { } }; =20 diff --git a/drivers/platform/x86/x86-android-tablets/asus.c b/drivers/plat= form/x86/x86-android-tablets/asus.c index 7d29c7654d214029720f444a17326851629c0342..42adf2a82bd4749f8b4c1d3ce9f= 733949292fd1b 100644 --- a/drivers/platform/x86/x86-android-tablets/asus.c +++ b/drivers/platform/x86/x86-android-tablets/asus.c @@ -12,13 +12,14 @@ #include #include #include +#include =20 #include "shared-psy-info.h" #include "x86-android-tablets.h" =20 /* Asus ME176C and TF103C tablets shared data */ static const struct property_entry asus_me176c_tf103c_int3496_props[] __in= itconst =3D { - PROPERTY_ENTRY_GPIO("id-gpios", &baytrail_gpiochip_nodes[2], 22, GPIO_ACT= IVE_HIGH), + PROPERTY_ENTRY_GPIO("id-gpios", &baytrail_gpio_node_02, 22, GPIO_ACTIVE_H= IGH), { } }; =20 @@ -39,7 +40,7 @@ static const struct property_entry asus_me176c_tf103c_lid= _props[] =3D { PROPERTY_ENTRY_U32("linux,input-type", EV_SW), PROPERTY_ENTRY_U32("linux,code", SW_LID), PROPERTY_ENTRY_STRING("label", "lid_sw"), - PROPERTY_ENTRY_GPIO("gpios", &baytrail_gpiochip_nodes[2], 12, GPIO_ACTIVE= _LOW), + PROPERTY_ENTRY_GPIO("gpios", &baytrail_gpio_node_02, 12, GPIO_ACTIVE_LOW), PROPERTY_ENTRY_U32("debounce-interval", 50), PROPERTY_ENTRY_BOOL("wakeup-source"), { } @@ -97,8 +98,8 @@ static const struct software_node asus_me176c_ug3105_node= =3D { }; =20 static const struct property_entry asus_me176c_touchscreen_props[] =3D { - PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[0], 60, GPIO_= ACTIVE_HIGH), - PROPERTY_ENTRY_GPIO("irq-gpios", &baytrail_gpiochip_nodes[2], 28, GPIO_AC= TIVE_HIGH), + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpio_node_00, 60, GPIO_ACTIV= E_HIGH), + PROPERTY_ENTRY_GPIO("irq-gpios", &baytrail_gpio_node_02, 28, GPIO_ACTIVE_= HIGH), { } }; =20 diff --git a/drivers/platform/x86/x86-android-tablets/core.c b/drivers/plat= form/x86/x86-android-tablets/core.c index 021009e9085bec3db9c4daa1f6235600210a6099..7e8c0eb9792cac493268e6ecc3b= 3a0ecf8dccc4e 100644 --- a/drivers/platform/x86/x86-android-tablets/core.c +++ b/drivers/platform/x86/x86-android-tablets/core.c @@ -154,7 +154,6 @@ static struct platform_device **pdevs; static struct serdev_device **serdevs; static const struct software_node **gpio_button_swnodes; static const struct software_node **swnode_group; -static const struct software_node **gpiochip_node_group; static void (*exit_handler)(void); =20 static __init struct i2c_adapter * @@ -332,34 +331,6 @@ static __init int x86_instantiate_serdev(const struct = x86_dev_info *dev_info, in return ret; } =20 -const struct software_node baytrail_gpiochip_nodes[] =3D { - { .name =3D "INT33FC:00" }, - { .name =3D "INT33FC:01" }, - { .name =3D "INT33FC:02" }, -}; - -static const struct software_node *baytrail_gpiochip_node_group[] =3D { - &baytrail_gpiochip_nodes[0], - &baytrail_gpiochip_nodes[1], - &baytrail_gpiochip_nodes[2], - NULL -}; - -const struct software_node cherryview_gpiochip_nodes[] =3D { - { .name =3D "INT33FF:00" }, - { .name =3D "INT33FF:01" }, - { .name =3D "INT33FF:02" }, - { .name =3D "INT33FF:03" }, -}; - -static const struct software_node *cherryview_gpiochip_node_group[] =3D { - &cherryview_gpiochip_nodes[0], - &cherryview_gpiochip_nodes[1], - &cherryview_gpiochip_nodes[2], - &cherryview_gpiochip_nodes[3], - NULL -}; - static void x86_android_tablet_remove(struct platform_device *pdev) { int i; @@ -391,7 +362,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) @@ -415,22 +385,6 @@ static __init int x86_android_tablet_probe(struct plat= form_device *pdev) for (i =3D 0; dev_info->modules && dev_info->modules[i]; i++) request_module(dev_info->modules[i]); =20 - switch (dev_info->gpiochip_type) { - case X86_GPIOCHIP_BAYTRAIL: - gpiochip_node_group =3D baytrail_gpiochip_node_group; - break; - case X86_GPIOCHIP_CHERRYVIEW: - gpiochip_node_group =3D cherryview_gpiochip_node_group; - break; - case X86_GPIOCHIP_UNSPECIFIED: - gpiochip_node_group =3D NULL; - break; - } - - ret =3D software_node_register_node_group(gpiochip_node_group); - if (ret) - return ret; - ret =3D software_node_register_node_group(dev_info->swnode_group); if (ret) { x86_android_tablet_remove(pdev); @@ -563,3 +517,4 @@ module_exit(x86_android_tablet_exit); MODULE_AUTHOR("Hans de Goede "); MODULE_DESCRIPTION("X86 Android tablets DSDT fixups driver"); MODULE_LICENSE("GPL"); +MODULE_IMPORT_NS("PINCTRL_INTEL"); diff --git a/drivers/platform/x86/x86-android-tablets/lenovo.c b/drivers/pl= atform/x86/x86-android-tablets/lenovo.c index 8d825e0b4661c0be879160ea963ac167112c41ea..bd4e0ca2c1ef35ab9e6b1bf9dbb= 91936e2815b84 100644 --- a/drivers/platform/x86/x86-android-tablets/lenovo.c +++ b/drivers/platform/x86/x86-android-tablets/lenovo.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -72,8 +73,8 @@ static const struct software_node crystalcove_gpiochip_no= de =3D { /* Lenovo Yoga Book X90F / X90L's Android factory image has everything har= dcoded */ =20 static const struct property_entry lenovo_yb1_x90_goodix_props[] =3D { - PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpiochip_nodes[1], 53, GPI= O_ACTIVE_HIGH), - PROPERTY_ENTRY_GPIO("irq-gpios", &cherryview_gpiochip_nodes[1], 56, GPIO_= ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpio_node_01, 53, GPIO_ACT= IVE_HIGH), + PROPERTY_ENTRY_GPIO("irq-gpios", &cherryview_gpio_node_01, 56, GPIO_ACTIV= E_HIGH), { } }; =20 @@ -84,7 +85,7 @@ static const struct software_node lenovo_yb1_x90_goodix_n= ode =3D { static const struct property_entry lenovo_yb1_x90_wacom_props[] =3D { PROPERTY_ENTRY_U32("hid-descr-addr", 0x0001), PROPERTY_ENTRY_U32("post-reset-deassert-delay-ms", 150), - PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpiochip_nodes[0], 82, GPI= O_ACTIVE_LOW), + PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpio_node_00, 82, GPIO_ACT= IVE_LOW), { } }; =20 @@ -106,7 +107,7 @@ static const struct property_entry lenovo_yb1_x90_hidee= p_ts_props[] =3D { PROPERTY_ENTRY_U32("touchscreen-size-y", 1920), PROPERTY_ENTRY_U32("touchscreen-max-pressure", 16384), PROPERTY_ENTRY_BOOL("hideep,force-native-protocol"), - PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpiochip_nodes[0], 7, GPIO= _ACTIVE_LOW), + PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpio_node_00, 7, GPIO_ACTI= VE_LOW), { } }; =20 @@ -221,7 +222,7 @@ static const struct property_entry lenovo_yb1_x90_lid_p= rops[] =3D { PROPERTY_ENTRY_U32("linux,input-type", EV_SW), PROPERTY_ENTRY_U32("linux,code", SW_LID), PROPERTY_ENTRY_STRING("label", "lid_sw"), - PROPERTY_ENTRY_GPIO("gpios", &cherryview_gpiochip_nodes[2], 19, GPIO_ACTI= VE_LOW), + PROPERTY_ENTRY_GPIO("gpios", &cherryview_gpio_node_02, 19, GPIO_ACTIVE_LO= W), PROPERTY_ENTRY_U32("debounce-interval", 50), PROPERTY_ENTRY_BOOL("wakeup-source"), { } @@ -305,7 +306,7 @@ static const struct property_entry lenovo_yoga_tab2_830= _1050_lid_props[] =3D { PROPERTY_ENTRY_U32("linux,input-type", EV_SW), PROPERTY_ENTRY_U32("linux,code", SW_LID), PROPERTY_ENTRY_STRING("label", "lid_sw"), - PROPERTY_ENTRY_GPIO("gpios", &baytrail_gpiochip_nodes[2], 26, GPIO_ACTIVE= _LOW), + PROPERTY_ENTRY_GPIO("gpios", &baytrail_gpio_node_02, 26, GPIO_ACTIVE_LOW), PROPERTY_ENTRY_U32("debounce-interval", 50), PROPERTY_ENTRY_BOOL("wakeup-source"), { } @@ -400,8 +401,8 @@ static struct x86_i2c_client_info lenovo_yoga_tab2_830_= 1050_i2c_clients[] __init }; =20 static const struct property_entry lenovo_yoga_tab2_830_1050_int3496_props= [] __initconst =3D { - PROPERTY_ENTRY_GPIO("mux-gpios", &baytrail_gpiochip_nodes[2], 1, GPIO_ACT= IVE_LOW), - PROPERTY_ENTRY_GPIO("id-gpios", &baytrail_gpiochip_nodes[2], 24, GPIO_ACT= IVE_HIGH), + PROPERTY_ENTRY_GPIO("mux-gpios", &baytrail_gpio_node_02, 1, GPIO_ACTIVE_L= OW), + PROPERTY_ENTRY_GPIO("id-gpios", &baytrail_gpio_node_02, 24, GPIO_ACTIVE_H= IGH), { } }; =20 @@ -420,7 +421,7 @@ static const struct property_entry lenovo_yoga_tab2_830= _1050_wm1502_props[] =3D { PROPERTY_ENTRY_GPIO("reset-gpios", &crystalcove_gpiochip_node, 3, GPIO_ACTIVE_HIGH), PROPERTY_ENTRY_GPIO("wlf,ldoena-gpios", - &baytrail_gpiochip_nodes[1], 23, GPIO_ACTIVE_HIGH), + &baytrail_gpio_node_01, 23, GPIO_ACTIVE_HIGH), PROPERTY_ENTRY_GPIO("wlf,spkvdd-ena-gpios", &arizona_gpiochip_node, 2, GPIO_ACTIVE_HIGH), PROPERTY_ENTRY_GPIO("wlf,micd-pol-gpios", @@ -759,8 +760,8 @@ static const struct x86_i2c_client_info lenovo_yoga_tab= 2_1380_i2c_clients[] __in }; =20 static const struct property_entry lenovo_yoga_tab2_1380_fc_props[] __init= const =3D { - PROPERTY_ENTRY_GPIO("uart3_txd-gpios", &baytrail_gpiochip_nodes[0], 57, G= PIO_ACTIVE_HIGH), - PROPERTY_ENTRY_GPIO("uart3_rxd-gpios", &baytrail_gpiochip_nodes[0], 61, G= PIO_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("uart3_txd-gpios", &baytrail_gpio_node_00, 57, GPIO_A= CTIVE_HIGH), + PROPERTY_ENTRY_GPIO("uart3_rxd-gpios", &baytrail_gpio_node_00, 61, GPIO_A= CTIVE_HIGH), { } }; =20 @@ -850,7 +851,7 @@ static const struct property_entry lenovo_yt3_hideep_ts= _props[] =3D { PROPERTY_ENTRY_U32("touchscreen-size-x", 1600), PROPERTY_ENTRY_U32("touchscreen-size-y", 2560), PROPERTY_ENTRY_U32("touchscreen-max-pressure", 255), - PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpiochip_nodes[0], 7, GPIO= _ACTIVE_LOW), + PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpio_node_00, 7, GPIO_ACTI= VE_LOW), { } }; =20 @@ -987,10 +988,10 @@ static struct arizona_pdata lenovo_yt3_wm5102_pdata = =3D { =20 static const struct property_entry lenovo_yt3_wm1502_props[] =3D { PROPERTY_ENTRY_GPIO("wlf,spkvdd-ena-gpios", - &cherryview_gpiochip_nodes[0], 75, GPIO_ACTIVE_HIGH), + &cherryview_gpio_node_00, 75, GPIO_ACTIVE_HIGH), PROPERTY_ENTRY_GPIO("wlf,ldoena-gpios", - &cherryview_gpiochip_nodes[0], 81, GPIO_ACTIVE_HIGH), - PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpiochip_nodes[0], 82, GPI= O_ACTIVE_HIGH), + &cherryview_gpio_node_00, 81, GPIO_ACTIVE_HIGH), + PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpio_node_00, 82, GPIO_ACT= IVE_HIGH), PROPERTY_ENTRY_GPIO("wlf,micd-pol-gpios", &arizona_gpiochip_node, 2, GPIO= _ACTIVE_HIGH), { } }; diff --git a/drivers/platform/x86/x86-android-tablets/other.c b/drivers/pla= tform/x86/x86-android-tablets/other.c index 7532af2d72d1d9de807a1f371425249ac5ff86da..b61930ef51570be402df04c5c2a= 646217908a8fc 100644 --- a/drivers/platform/x86/x86-android-tablets/other.c +++ b/drivers/platform/x86/x86-android-tablets/other.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include =20 @@ -35,7 +36,7 @@ static const struct software_node advantech_mica_071_gpio= _keys_node =3D { static const struct property_entry advantech_mica_071_prog1_key_props[] = =3D { PROPERTY_ENTRY_U32("linux,code", KEY_PROG1), PROPERTY_ENTRY_STRING("label", "prog1_key"), - PROPERTY_ENTRY_GPIO("gpios", &baytrail_gpiochip_nodes[0], 2, GPIO_ACTIVE_= LOW), + PROPERTY_ENTRY_GPIO("gpios", &baytrail_gpio_node_00, 2, GPIO_ACTIVE_LOW), PROPERTY_ENTRY_U32("debounce-interval", 50), { } }; @@ -156,7 +157,7 @@ static const struct software_node cyberbook_t116_gpio_k= eys_node =3D { static const struct property_entry cyberbook_t116_prog1_key_props[] =3D { PROPERTY_ENTRY_U32("linux,code", KEY_PROG1), PROPERTY_ENTRY_STRING("label", "prog1_key"), - PROPERTY_ENTRY_GPIO("gpios", &cherryview_gpiochip_nodes[0], 30, GPIO_ACTI= VE_LOW), + PROPERTY_ENTRY_GPIO("gpios", &cherryview_gpio_node_00, 30, GPIO_ACTIVE_LO= W), PROPERTY_ENTRY_U32("debounce-interval", 50), { } }; @@ -169,7 +170,7 @@ static const struct software_node cyberbook_t116_prog1_= key_node =3D { static const struct property_entry cyberbook_t116_prog2_key_props[] =3D { PROPERTY_ENTRY_U32("linux,code", KEY_PROG2), PROPERTY_ENTRY_STRING("label", "prog2_key"), - PROPERTY_ENTRY_GPIO("gpios", &cherryview_gpiochip_nodes[3], 48, GPIO_ACTI= VE_LOW), + PROPERTY_ENTRY_GPIO("gpios", &cherryview_gpio_node_03, 48, GPIO_ACTIVE_LO= W), PROPERTY_ENTRY_U32("debounce-interval", 50), { } }; @@ -244,8 +245,8 @@ static const struct software_node medion_lifetab_s10346= _accel_node =3D { static const struct property_entry medion_lifetab_s10346_touchscreen_props= [] =3D { PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"), PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), - PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[1], 26, GPIO_= ACTIVE_HIGH), - PROPERTY_ENTRY_GPIO("irq-gpios", &baytrail_gpiochip_nodes[2], 3, GPIO_ACT= IVE_HIGH), + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpio_node_01, 26, GPIO_ACTIV= E_HIGH), + PROPERTY_ENTRY_GPIO("irq-gpios", &baytrail_gpio_node_02, 3, GPIO_ACTIVE_H= IGH), { } }; =20 @@ -378,7 +379,7 @@ static const struct software_node nextbook_ares8a_accel= _node =3D { static const struct property_entry nextbook_ares8a_ft5416_props[] =3D { PROPERTY_ENTRY_U32("touchscreen-size-x", 800), PROPERTY_ENTRY_U32("touchscreen-size-y", 1280), - PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpiochip_nodes[1], 25, GPI= O_ACTIVE_LOW), + PROPERTY_ENTRY_GPIO("reset-gpios", &cherryview_gpio_node_01, 25, GPIO_ACT= IVE_LOW), { } }; =20 @@ -435,7 +436,7 @@ static const struct software_node peaq_c1010_gpio_keys_= node =3D { static const struct property_entry peaq_c1010_dolby_key_props[] =3D { PROPERTY_ENTRY_U32("linux,code", KEY_SOUND), PROPERTY_ENTRY_STRING("label", "dolby_key"), - PROPERTY_ENTRY_GPIO("gpios", &baytrail_gpiochip_nodes[0], 3, GPIO_ACTIVE_= LOW), + PROPERTY_ENTRY_GPIO("gpios", &baytrail_gpio_node_00, 3, GPIO_ACTIVE_LOW), PROPERTY_ENTRY_U32("debounce-interval", 50), { } }; @@ -481,8 +482,8 @@ static const struct property_entry whitelabel_tm800a550= l_goodix_props[] =3D { PROPERTY_ENTRY_STRING("firmware-name", "gt912-tm800a550l.fw"), PROPERTY_ENTRY_STRING("goodix,config-name", "gt912-tm800a550l.cfg"), PROPERTY_ENTRY_U32("goodix,main-clk", 54), - PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[1], 26, GPIO_= ACTIVE_HIGH), - PROPERTY_ENTRY_GPIO("irq-gpios", &baytrail_gpiochip_nodes[2], 3, GPIO_ACT= IVE_HIGH), + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpio_node_01, 26, GPIO_ACTIV= E_HIGH), + PROPERTY_ENTRY_GPIO("irq-gpios", &baytrail_gpio_node_02, 3, GPIO_ACTIVE_H= IGH), { } }; =20 @@ -531,7 +532,7 @@ const struct x86_dev_info whitelabel_tm800a550l_info __= initconst =3D { static const struct property_entry vexia_edu_atla10_5v_touchscreen_props[]= =3D { PROPERTY_ENTRY_U32("hid-descr-addr", 0x0000), PROPERTY_ENTRY_U32("post-reset-deassert-delay-ms", 120), - PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[1], 26, GPIO_= ACTIVE_LOW), + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpio_node_01, 26, GPIO_ACTIV= E_LOW), { } }; =20 @@ -605,7 +606,7 @@ static const struct software_node vexia_edu_atla10_9v_a= ccel_node =3D { static const struct property_entry vexia_edu_atla10_9v_touchscreen_props[]= =3D { PROPERTY_ENTRY_U32("hid-descr-addr", 0x0000), PROPERTY_ENTRY_U32("post-reset-deassert-delay-ms", 120), - PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[0], 60, GPIO_= ACTIVE_LOW), + PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpio_node_00, 60, GPIO_ACTIV= E_LOW), { } }; =20 diff --git a/drivers/platform/x86/x86-android-tablets/shared-psy-info.c b/d= rivers/platform/x86/x86-android-tablets/shared-psy-info.c index 29fc466f76fe7a99f7cb853e38f62593d7464138..f214152a9b0455089d40b977bf1= 116098afac764 100644 --- a/drivers/platform/x86/x86-android-tablets/shared-psy-info.c +++ b/drivers/platform/x86/x86-android-tablets/shared-psy-info.c @@ -10,6 +10,7 @@ =20 #include #include +#include #include #include #include @@ -169,9 +170,9 @@ const char * const bq24190_modules[] __initconst =3D { }; =20 static const struct property_entry int3496_reference_props[] __initconst = =3D { - PROPERTY_ENTRY_GPIO("vbus-gpios", &baytrail_gpiochip_nodes[1], 15, GPIO_A= CTIVE_HIGH), - PROPERTY_ENTRY_GPIO("mux-gpios", &baytrail_gpiochip_nodes[2], 1, GPIO_ACT= IVE_HIGH), - PROPERTY_ENTRY_GPIO("id-gpios", &baytrail_gpiochip_nodes[2], 18, GPIO_ACT= IVE_HIGH), + PROPERTY_ENTRY_GPIO("vbus-gpios", &baytrail_gpio_node_01, 15, GPIO_ACTIVE= _HIGH), + PROPERTY_ENTRY_GPIO("mux-gpios", &baytrail_gpio_node_02, 1, GPIO_ACTIVE_H= IGH), + PROPERTY_ENTRY_GPIO("id-gpios", &baytrail_gpio_node_02, 18, GPIO_ACTIVE_H= IGH), { } }; =20 diff --git a/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h= b/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h index 2498390958ad44e89b1c929ff46397e3f9e0c74b..cc61e49f93890e3cde16ea549d2= a4f9fd11a41ac 100644 --- a/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h +++ b/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h @@ -103,10 +103,6 @@ int x86_android_tablet_get_gpiod(const char *chip, int= pin, const char *con_id, struct gpio_desc **desc); int x86_acpi_irq_helper_get(const struct x86_acpi_irq_data *data); =20 -/* Software nodes representing GPIO chips used by various tablets */ -extern const struct software_node baytrail_gpiochip_nodes[]; -extern const struct software_node cherryview_gpiochip_nodes[]; - /* * Extern declarations of x86_dev_info structs so there can be a single * MODULE_DEVICE_TABLE(dmi, ...), while splitting the board descriptions. --=20 2.47.3