From nobody Mon Apr 6 13:14:38 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