From nobody Tue Jun 16 09:59:44 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 8F97137F730 for ; Fri, 17 Apr 2026 23:16:31 +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=1776467792; cv=none; b=VzYdVULtkzTlCosb8tKQbWrsCIyID4F5VjWtzJNdye8NRigkPP1ORi6r/F5mZAlygIaDMesha/bUZD3K80PRQHPjaNn/DbyE0PfrHNWTmjNY6Y5eKVuToKeqNRdXichzux21wwuu77ATXm5ttF0S2c3imWMWRejzGtsg3oUB6qc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776467792; c=relaxed/simple; bh=00/cQNg1NYCrw4ioCag9pzQGr6M5HdXkljprZfWJ4u0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ofka9halrA2TDh8JIzhIX+G4gdGzoEQuAP2LWjLJVn/xpIS+rAqbH5jqIw1WwlMFzxbLkSisPQgixlRZPvf/lF8YsynsvTY56OuCR9KvYT233C0w/ETXXe46yMt6tsc39Dw1kI3H6hbhTDrHJpQW0i3Ibrl5p5SUqkI5NBcQBM4= 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=M6VdFk92; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZN4b0r6I; 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="M6VdFk92"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZN4b0r6I" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63HG4Zxj455059 for ; Fri, 17 Apr 2026 23:16:30 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= UaXfMj4md5QwxeQ+qMkZw/Ldu7dQBBhgDOqaQ8DvWT0=; b=M6VdFk920NS+avqG GjTn/q0E1gYwG1uy/SDwcfo+AIsrrw5nkLAYe6Y6ePj/7zw/p4ojqxZvjIF0IIfL enG1wyz+BBCThgAwiD5yYr3L6Smiq6Ig1Eaxj8M+fr4445d9tf1jGdxUL43qAHa/ y0hIVodbpU4Lzz/uckFim3hFtIhUhg/YASf3F4VRzwIRjITuD6vEhK6USBeF/avx DccxkncHRf7TqK0AqEN/H+ZT6HjpeUUdsUJ5X+mbn7SPgHAi3mW3XP9gEe+LUM9l IXzh2mLJvJRaDreN5pFXAsbBbxzNv8ETzW61NR9L4NE4WTSFfqgmPq3gJpH2pnKn hAv8JA== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dkg88u2s8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Apr 2026 23:16:30 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-50e136aff17so24150511cf.3 for ; Fri, 17 Apr 2026 16:16:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776467790; x=1777072590; 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=UaXfMj4md5QwxeQ+qMkZw/Ldu7dQBBhgDOqaQ8DvWT0=; b=ZN4b0r6Ip6EwUUco8sVj91m/rwsFs7oOVyHYcTHfViRy9n2GQrfFjE1Wwl0WkZSQl3 bvjRVGyM0F0BIGm8p2URLLkhOeWMM/oxR6R1a6r/je1Kvw9VVSebpie562tdN3sHkB2j K5DApow/Cnt5rPG0Tayob+UpPpyrjM3pv5LEOnAwa62X2YjUAGuSmNP80Wv8DzCHe3p3 9H5PEHHEzHLc/qPz+eHNrGMTd/hbLXL4xZEo5DbYpGdtRChYkchllRJCOpQCBd0xP/No FTa0mFQTQrTQPqOxvmd1aEy7D2PnFhsqZ4swkI3mBeBiulva16ucF8LPYqfe0rUxYwsu 0n6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776467790; x=1777072590; 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=UaXfMj4md5QwxeQ+qMkZw/Ldu7dQBBhgDOqaQ8DvWT0=; b=M9FiT9+uBkBuk3kNDWt4x/klwuMG/+K/H039Z+zvlUQqbCRzOLvlDOM4FuOd+2ie+h GTFZNioc5FKKxmYVqvPAQDr9GZlOuLYiYUowsk4RO0gmqVV2EGPQ1EG0yn9w+VjeNHRI ZczIlLdtGs+R+RAdjgOgoSnI29JtKLHv4Xg3gCMUy9Ji8fnK7AU3hMxg+VYYOzgYJbXc LJi7lLgvgCu2IlnElAD2YWg6X4h22ERbCv4OoJ76g7CYG1b/AEggU0/HkOtG5d9/+oBl IvP+TEdLyMFhRLXF1t5zI6a9fQ/AwoD/xxk86KFKIX98SZmgyxfA8ztUXasyXUNfGJ58 U4sA== X-Forwarded-Encrypted: i=1; AFNElJ9qviW/vJ71ZT7RElErqgVpb/VO4kdzbLHB+HYnJTHyTtEsjWsj5ImVIB81yQWe0b3av+mIJICCztxgM4c=@vger.kernel.org X-Gm-Message-State: AOJu0Yzsq4R1fp6cb5/uttZL7UUbhGB1EA9rEXLjAMXFJmahntF75xCP i712U0f0axW+kh26Qw262eveui5uOtVqEUdETGmi1kN1Wcevz9wP27UpI6wubN2JqEjVR1vreqY diy4U3jg3pUzKy6isqWTbwPVIa9BKsGHy94QlxQEfxLCofLGDHezf8sLZkpt4z1PLiyE= X-Gm-Gg: AeBDiesMyiugr0lZdYgef6r+JcQ8d+gZarD6Onh1crqtBYOxWaBrfMC5I189OUFbQ3s 3aY2HrF9Z8HuE69BYJUsYh62+sNfuM+bGq/vE+71DCEdwT79YXdmZPR5w8RJJLwtT3Js0+k3aXw k4j9Ga9G64j62e4O98YMwDDZIN0TMTbU6ENrt4diL1uTnzPKazuPKyawzH9fM8ElA+PlsnDdrmZ V8NFVSx1KTd0+tpuTlgZtwM7qTFjpbEHYurBcSPBpWNSEQPuZfeQVejsEwmRAVs1/48eoxnvsnH ceG/wFb1+CuB8RmXMUVx+miwKJtJh9O8aWHN4S8lEPlQVDv0aS5j6BAXVWxbVQn90AKr6c21HS7 2dFUi+7E1PePc8csYS80SR8KAYrkbEnZO+8nqY6XjPaSd44V05+F31vr8w6cOeiMeYDnZ2umDth oY40JOZ4LTsMkC02874OkY/Nq6xUQxh0ng0qZeYxaRrvnzDw== X-Received: by 2002:a05:622a:a06:b0:509:3141:312c with SMTP id d75a77b69052e-50e36c39df8mr75420811cf.40.1776467789958; Fri, 17 Apr 2026 16:16:29 -0700 (PDT) X-Received: by 2002:a05:622a:a06:b0:509:3141:312c with SMTP id d75a77b69052e-50e36c39df8mr75420261cf.40.1776467789530; Fri, 17 Apr 2026 16:16:29 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a4185ad12asm815695e87.1.2026.04.17.16.16.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Apr 2026 16:16:27 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 18 Apr 2026 02:16:20 +0300 Subject: [PATCH v4 1/4] dt-bindings: display/panel: ilitek,ili9881c: describe Waveshare panel 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: <20260418-waveshare-dsi-touch-v4-1-b249f3e702bd@oss.qualcomm.com> References: <20260418-waveshare-dsi-touch-v4-0-b249f3e702bd@oss.qualcomm.com> In-Reply-To: <20260418-waveshare-dsi-touch-v4-0-b249f3e702bd@oss.qualcomm.com> To: Neil Armstrong , Jessica Zhang , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Cong Yang , Ondrej Jirman , Javier Martinez Canillas , Jagan Teki , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Jie Gan Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Krzysztof Kozlowski X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1208; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=00/cQNg1NYCrw4ioCag9pzQGr6M5HdXkljprZfWJ4u0=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBp4r9I3pRwfKe7m7I0xhk+TZMgKAV07C9sH2XED p3U2kOs/rmJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaeK/SAAKCRCLPIo+Aiko 1RMzCACS8ny///gSx5KtGdFeNzfsEAXWQCiN7UvY7WbiiTv9uAFzhoF2rhcpMq4hUP8XOkBXV+Z aM9Yr2dA7CM5gMEaE7ULarGlYjsr1tgxPn/foPrOGssvxvkkIBhhspHuw9SFU4MVMx/wgDc7DPN XLl9k4rrBa5setOah1P+peF4XISgxSE3uBKrJGLNS/37do+cbIaQS2muEdNT3dDUse+cK8Ce/B7 g3J+EBrojUaK+ersgFWQ/Gj69UXHyrDaRQGepkvaKafWYgcHSVCzMkjmrxaAXHyvqTRFHiqsNVV ogHgfLXUwdYqX+/WT2ZuBEA2sxYGC8fE+mRkWYrLG3QZBbo2 X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: KddEITfj8sQfD9RYI78TuKmNLE8030DS X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDE3MDIzMSBTYWx0ZWRfXym7hwcmXPFGm CnMtVAnkBKQe/h5BFH9NPMWbRvcISCGUDO6aswnxYbNrV4R7VcWSA94pY+2Xcv1UE/+kXLaHbrB JUkGxHc9sNtLsiPzCp5ZAS03l4hBRd7rUNx7obgRCIBjQeX7LJ/hiATcnolQ9tOL6BrzwBFJeFo KmdUcoDea5JzOh3DrAer1hnRdHsDtYS8PFMzi9/x4YCEmrCkOep7sR0OI+6IEiQ0Mxgol4054gA fMfZTe58KdO/LYczdhEQ1x+Bzz6PzkGBcDFdbukLj7qUB62WuTGv6OlsDUZZljXo3njal+rppLZ +8LbdlfjSwhgLlf6hEA8Zf8/7wADuDmnIKY3eucPYEOVwBZ0Pm6JjDWapTefEI8lhQiZAHmBuOK 1vYcEJn61RN836hxPQF5gM0AzhtI9SS69SzOK6eJ5Kj2H8gYNwCLB3xsH2r+B9/Lw2kNkpHCjXV aTRMrjmGYkLgPUiljhw== X-Authority-Analysis: v=2.4 cv=X+Fi7mTe c=1 sm=1 tr=0 ts=69e2bf4e cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=sGmTDZJufn-iKI-mlscA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-GUID: KddEITfj8sQfD9RYI78TuKmNLE8030DS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-17_02,2026-04-17_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 spamscore=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604170231 Describe Waveshare 7" DSI panel which uses ILI9881 as a panel controller. This panel requires two voltags supplies, so add separate iovcc supply. Acked-by: Krzysztof Kozlowski Signed-off-by: Dmitry Baryshkov --- Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/display/panel/ilitek,ili9881= c.yaml b/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.ya= ml index d979701a00a8..42e35986fbf6 100644 --- a/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml +++ b/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml @@ -24,6 +24,7 @@ properties: - raspberrypi,dsi-7inch - startek,kd050hdfia020 - tdo,tl050hdv35 + - waveshare,7.0-dsi-touch-a - wanchanglong,w552946aaa - wanchanglong,w552946aba - const: ilitek,ili9881c @@ -34,6 +35,7 @@ properties: backlight: true port: true power-supply: true + iovcc-supply: true reset-gpios: true rotation: true =20 --=20 2.47.3 From nobody Tue Jun 16 09:59:44 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 D779337FF5B for ; Fri, 17 Apr 2026 23:16:35 +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=1776467798; cv=none; b=qPa8ybo5/eUrdpGZ66WA6dKjyCdQe01t39nPANCd5CKHSqwHkaxgxkMRkMRe4X2rMccQ7tat84lfoHtTdDZ7z/lrfCZiV+HNyqkwry0jbBPQJ4Wo9omAV6m7i/FbMYVZyxqGp98DUg6rMwZPE659NrPGL96veYOsPBSG80KmCx4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776467798; c=relaxed/simple; bh=GeCr1NynOzRyMTA3YNx3AI6OZgpUDXwfoJ9GX7n6oNY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X867IXJpd/ZGLU084C+EwvE5B+R77KTNaJuX2ETKb+S5SFSJBZd1mFXscImi/nVA4rynC1zuMgyxBXFf7sP9CvJ6kmJjxzbMFuS73CWRHNPdmvc4Lm66PkxgldxoIicqBHgcc5CKbyqx7Pdl+1Y8JrFaZ0DeoRE8drSE4QSnKQM= 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=WRR4goOV; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=SBt+OL5+; 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="WRR4goOV"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SBt+OL5+" 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 63HGMe7U3190363 for ; Fri, 17 Apr 2026 23:16:35 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= nZzwGnW+MUE+QNALit7cwinZB2Bkr8D00pSmlzKzjwY=; b=WRR4goOVBdtPjDWj CLSi56YDUgZu8JrDTAJbgVW50RVkuNHK+l1isn97IF06yKsF+uqmPgvbiF8tDqqy gLbtWtmuq4DpwGmq/4L8xBMXab/cIZF/NG5ZTXRlq1LANo0bcKLfqWlRyYw6fAIK a6OYRbpM2OvqCH4hjhNrnENKVSMeL9FckHnwE6FOpdL7L1rH6HbYjsGvZtTbpgyy zFonQbLUWlmsnzqqXnUblOlma0le0EZS6kKbqMHFlrgerXna6UIWPutNGUPdwd53 gGcPCxImk/C5BIZEYGv2m7JqSfHf8WrlRSLaqxOYmAAGNBqzPyu5uvqTOzd4zLXf sjUgEQ== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dkravh2kn-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Apr 2026 23:16:34 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50b4076dc16so21468971cf.2 for ; Fri, 17 Apr 2026 16:16:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776467794; x=1777072594; 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=nZzwGnW+MUE+QNALit7cwinZB2Bkr8D00pSmlzKzjwY=; b=SBt+OL5+ulBIzCUTwxKMJj204jGqi1HNF1FGELF2wS/WpyLmrQruT6YngHz3jJYk/j oe8UsbUy9+qQrkrUJOVHAI+RB3Cey41voMb04g07XFhnLlQLQYBBmuVcCEs494XAW5Gc +qfyMTzKlpVTq+6MDzRofCQ1dmYGrV+y/B2kxxJioE88GeKUdqnXn1ivB3Y98G7fIMAS r4Y8V9b7C8kk6Mbv/VCqsCH8VpJkCN38gLrflXlm1Kp6KtrCzq7nUTpPBn6cHH2e7PYJ I7rMF6L+ox5RfwC/rkW3A/0siTZZG/HNyPfRnxp668rBFS/qOjk3rGggAfd/cZCmgoQN VHEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776467794; x=1777072594; 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=nZzwGnW+MUE+QNALit7cwinZB2Bkr8D00pSmlzKzjwY=; b=iymrShGnji4R/c0M7vSLI0qC6LZRk/ozBGOeDPgSUbU3t7foDAUEy6dXX81AAsoDbP EPtt8y7KMKeVTFlIs0D7rjlAs7eyqkMeQkCdc+6HA5E6VqdW4g3dWUXKETCzJx9dH8Bo K7D7OQvwcZhSaVZAFLDKL1uPtgR/eDhScds6Ighd61wwv+sMrnYBFjDpgeE8xUp3EMzJ GN7vkW3wg2gRs8RWkZ5b+GCTQbPi18TJPhwB9NfEvUywG0gVuYQqZeKaF2b17Q+8bTPc ix/WT8Se2iiax7+neuUa9QWWWfxj1P4zUk9NYhjh8uFGcofk2tOiZKLrQzJLUukBoO5z XJKQ== X-Forwarded-Encrypted: i=1; AFNElJ80OPjRnabJ4Ae96KtZLozRPzj6JARIpto9bpY7+qT8TC2vuwjAENrIpHeb5eHSTeUGkI32kOPTcMo4+Uk=@vger.kernel.org X-Gm-Message-State: AOJu0Yx7G+eTGWCC/1tFWKUnmHinNYePkImIOAtnQB5/ZhsFBXFvPwuN c93663Y0oOnXgo/G6wZUucSscAh/JxP/fejyyBZ7kr9A8SXPcxImJitecLlpv+QfKNpu6Qvbt9h y/ohxljgynR9sYqGKAfOB5zX2VVHnAIau7b20kwoJ+eiwVOBzNX+axT+yhun2hvbI9EU= X-Gm-Gg: AeBDievc+pJbNxhnDFlJ0U5Rg2zSVrjC2NMHLSFoq0H4jGWQnBQJXy9Ca8siHVR29Eh j3ZmbAElp6BaRfyIapl7eiuSmfq1NlnJ6dKOA8uZi7pQGWiLrde1k7flJx+adMRYah/a6xqRH8g Y2MQ+9lWF0Mwovx0P/dl4I1b7OM8VD+vaYcItawhoI+JYsZvAB6HAqLCY5RoaKURqKjQCPQzcv3 7O+6MmkM7HQvcEYvSpBMpPWPt/nqQOs79lUmLSKEQeub/KPl3jDXCTBlfI0Nq8gA7Vc43Vh/P+N 8C7Fkb0MHD++AUxP+4z+QeDUCRmlvSsyzhbuSJZ/+PuquM/ThPskSi77MvbZqNAAqzvl5oBxbwr mRnW+twSVjmjxk5pSFje0TUEM9DAsZeUQKQocyf3wepJfxG1eCLpSnksqnnFv/+jq9rz+ZzSWWx TTQ6t16oZefJLy41CgSCPnssvIijLCUtA8f39oUPURHs0G2A== X-Received: by 2002:ac8:5890:0:b0:50b:48e3:47a7 with SMTP id d75a77b69052e-50e36b44bf4mr74124711cf.18.1776467794089; Fri, 17 Apr 2026 16:16:34 -0700 (PDT) X-Received: by 2002:ac8:5890:0:b0:50b:48e3:47a7 with SMTP id d75a77b69052e-50e36b44bf4mr74124111cf.18.1776467793549; Fri, 17 Apr 2026 16:16:33 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a4185ad12asm815695e87.1.2026.04.17.16.16.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Apr 2026 16:16:31 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 18 Apr 2026 02:16:21 +0300 Subject: [PATCH v4 2/4] drm/panel: ilitek-ili9881c: support Waveshare 7.0" DSI panel 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: <20260418-waveshare-dsi-touch-v4-2-b249f3e702bd@oss.qualcomm.com> References: <20260418-waveshare-dsi-touch-v4-0-b249f3e702bd@oss.qualcomm.com> In-Reply-To: <20260418-waveshare-dsi-touch-v4-0-b249f3e702bd@oss.qualcomm.com> To: Neil Armstrong , Jessica Zhang , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Cong Yang , Ondrej Jirman , Javier Martinez Canillas , Jagan Teki , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Jie Gan Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=11997; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=GeCr1NynOzRyMTA3YNx3AI6OZgpUDXwfoJ9GX7n6oNY=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBp4r9IqBLyDmKyGGjdUQ6zKgk/tmIgRDvURXXum HiqM+FUULaJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaeK/SAAKCRCLPIo+Aiko 1eSNCACYXhDfNqw2O+8ysLY/SShFxYOdr2OisyPyH6TOh5o5hDDJFRdRVtxROzR4ZRXlwnXmwEM pX78xHEJY86RHho0PngVWsnnr8HgdfWe6RcWFP3lyQbREzSUm7KFBf7yRe2nDtTBT/DW0RC47Da O2f5K/h3MhLd9k08FbjAG6+4UHnjiwgLZQRw88S3WrvI6QxuJM7QVpxU2/yGCLlt6VKA8e//TkN pFWK99Os5mwU2GWDri8jCDcot9xVMkEFRNqAcWzelcWI/5hIv3jqwzcduglNIAExYPJkLrQJUwx T/XqjkUFi0AFWYMKn7M8OmMQLwYRNU/p48pAuC0+94+jiUek X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDE3MDIzMSBTYWx0ZWRfXwY9nnL83QJ8h tHopInv17lL463wnyj3mnKTYqiB0XuUuvJSZZ2hAbHiIyeH0O2/iGynkJ3IylURTisS25OnUzjP Bp5tlvTYSOApEd4ZxkYQWERzkVSh2GGqf3pTb70wF8xmUkGdsC7fob4pV/Yd3GVJUWEKp0hAUOg cycJu3aT2h0oE82P3js8nsMeBlaGrvaH8uzdQDdYcydiywX9l4hg0BfraL6PjchuT830BWlgntn HI0/0EzNPdcyL4WqIwLR5ko/Emlt9SWl9uzL6vNnTzORFHNbmrdhFGPy2XHP8YiIYGxDvX7sPnK CG7cRwPtR8WcZcuN+dvHfVePgg8R0CEiuMDoi1MFZb5RzBCCoK51asgCxYKD3jJYKyi/2TkZBCk XFNNopuOBClxFTKfP0fLh4an/Axgi7jYtWVWylCT2KeXoFXg2XQa8FHuLO5w2IXOCdFxjENYPOh DX7niZt2l9hGKNmKtKw== X-Proofpoint-ORIG-GUID: 3j-flx6ttZqdQFmSRfTJCEfYSKnWJG7H X-Authority-Analysis: v=2.4 cv=PIA/P/qC c=1 sm=1 tr=0 ts=69e2bf52 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=Vzx2zukWpxHvXuQtFQgA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: 3j-flx6ttZqdQFmSRfTJCEfYSKnWJG7H X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-17_02,2026-04-17_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 spamscore=0 adultscore=0 malwarescore=0 clxscore=1015 suspectscore=0 priorityscore=1501 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604170231 Enable support for Waveshare 7.0" DSI TOUCH-A panel. It requires additional voltage regulator, iovcc. Signed-off-by: Dmitry Baryshkov Reviewed-by: Linus Walleij --- drivers/gpu/drm/panel/panel-ilitek-ili9881c.c | 251 ++++++++++++++++++++++= +++- 1 file changed, 249 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c b/drivers/gpu/dr= m/panel/panel-ilitek-ili9881c.c index 947b47841b01..0652cdb57d11 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c @@ -52,6 +52,7 @@ struct ili9881c { const struct ili9881c_desc *desc; =20 struct regulator *power; + struct regulator *iovcc; struct gpio_desc *reset; =20 enum drm_panel_orientation orientation; @@ -1997,6 +1998,205 @@ static const struct ili9881c_instr bsd1218_a101kl68= _init[] =3D { ILI9881C_COMMAND_INSTR(0xd3, 0x3f), }; =20 +static const struct ili9881c_instr waveshare_7inch_a_init[] =3D { + ILI9881C_SWITCH_PAGE_INSTR(3), + ILI9881C_COMMAND_INSTR(0x01, 0x00), + ILI9881C_COMMAND_INSTR(0x02, 0x00), + ILI9881C_COMMAND_INSTR(0x03, 0x73), + ILI9881C_COMMAND_INSTR(0x04, 0x00), + ILI9881C_COMMAND_INSTR(0x05, 0x00), + ILI9881C_COMMAND_INSTR(0x06, 0x0a), + ILI9881C_COMMAND_INSTR(0x07, 0x00), + ILI9881C_COMMAND_INSTR(0x08, 0x00), + ILI9881C_COMMAND_INSTR(0x09, 0x61), + ILI9881C_COMMAND_INSTR(0x0a, 0x00), + ILI9881C_COMMAND_INSTR(0x0b, 0x00), + ILI9881C_COMMAND_INSTR(0x0c, 0x01), + ILI9881C_COMMAND_INSTR(0x0d, 0x00), + ILI9881C_COMMAND_INSTR(0x0e, 0x00), + ILI9881C_COMMAND_INSTR(0x0f, 0x61), + ILI9881C_COMMAND_INSTR(0x10, 0x61), + ILI9881C_COMMAND_INSTR(0x11, 0x00), + ILI9881C_COMMAND_INSTR(0x12, 0x00), + ILI9881C_COMMAND_INSTR(0x13, 0x00), + ILI9881C_COMMAND_INSTR(0x14, 0x00), + ILI9881C_COMMAND_INSTR(0x15, 0x00), + ILI9881C_COMMAND_INSTR(0x16, 0x00), + ILI9881C_COMMAND_INSTR(0x17, 0x00), + ILI9881C_COMMAND_INSTR(0x18, 0x00), + ILI9881C_COMMAND_INSTR(0x19, 0x00), + ILI9881C_COMMAND_INSTR(0x1a, 0x00), + ILI9881C_COMMAND_INSTR(0x1b, 0x00), + ILI9881C_COMMAND_INSTR(0x1c, 0x00), + ILI9881C_COMMAND_INSTR(0x1d, 0x00), + ILI9881C_COMMAND_INSTR(0x1e, 0x40), + ILI9881C_COMMAND_INSTR(0x1f, 0x80), + ILI9881C_COMMAND_INSTR(0x20, 0x06), + ILI9881C_COMMAND_INSTR(0x21, 0x01), + ILI9881C_COMMAND_INSTR(0x22, 0x00), + ILI9881C_COMMAND_INSTR(0x23, 0x00), + ILI9881C_COMMAND_INSTR(0x24, 0x00), + ILI9881C_COMMAND_INSTR(0x25, 0x00), + ILI9881C_COMMAND_INSTR(0x26, 0x00), + ILI9881C_COMMAND_INSTR(0x27, 0x00), + ILI9881C_COMMAND_INSTR(0x28, 0x33), + ILI9881C_COMMAND_INSTR(0x29, 0x03), + ILI9881C_COMMAND_INSTR(0x2a, 0x00), + ILI9881C_COMMAND_INSTR(0x2b, 0x00), + ILI9881C_COMMAND_INSTR(0x2c, 0x00), + ILI9881C_COMMAND_INSTR(0x2d, 0x00), + ILI9881C_COMMAND_INSTR(0x2e, 0x00), + ILI9881C_COMMAND_INSTR(0x2f, 0x00), + ILI9881C_COMMAND_INSTR(0x30, 0x00), + ILI9881C_COMMAND_INSTR(0x31, 0x00), + ILI9881C_COMMAND_INSTR(0x32, 0x00), + ILI9881C_COMMAND_INSTR(0x33, 0x00), + ILI9881C_COMMAND_INSTR(0x34, 0x04), + ILI9881C_COMMAND_INSTR(0x35, 0x00), + ILI9881C_COMMAND_INSTR(0x36, 0x00), + ILI9881C_COMMAND_INSTR(0x37, 0x00), + ILI9881C_COMMAND_INSTR(0x38, 0x3c), + ILI9881C_COMMAND_INSTR(0x39, 0x00), + ILI9881C_COMMAND_INSTR(0x3a, 0x00), + ILI9881C_COMMAND_INSTR(0x3b, 0x00), + ILI9881C_COMMAND_INSTR(0x3c, 0x00), + ILI9881C_COMMAND_INSTR(0x3d, 0x00), + ILI9881C_COMMAND_INSTR(0x3e, 0x00), + ILI9881C_COMMAND_INSTR(0x3f, 0x00), + ILI9881C_COMMAND_INSTR(0x40, 0x00), + ILI9881C_COMMAND_INSTR(0x41, 0x00), + ILI9881C_COMMAND_INSTR(0x42, 0x00), + ILI9881C_COMMAND_INSTR(0x43, 0x00), + ILI9881C_COMMAND_INSTR(0x44, 0x00), + ILI9881C_COMMAND_INSTR(0x50, 0x10), + ILI9881C_COMMAND_INSTR(0x51, 0x32), + ILI9881C_COMMAND_INSTR(0x52, 0x54), + ILI9881C_COMMAND_INSTR(0x53, 0x76), + ILI9881C_COMMAND_INSTR(0x54, 0x98), + ILI9881C_COMMAND_INSTR(0x55, 0xba), + ILI9881C_COMMAND_INSTR(0x56, 0x10), + ILI9881C_COMMAND_INSTR(0x57, 0x32), + ILI9881C_COMMAND_INSTR(0x58, 0x54), + ILI9881C_COMMAND_INSTR(0x59, 0x76), + ILI9881C_COMMAND_INSTR(0x5a, 0x98), + ILI9881C_COMMAND_INSTR(0x5b, 0xba), + ILI9881C_COMMAND_INSTR(0x5c, 0xdc), + ILI9881C_COMMAND_INSTR(0x5d, 0xfe), + ILI9881C_COMMAND_INSTR(0x5e, 0x00), + ILI9881C_COMMAND_INSTR(0x5f, 0x0e), + ILI9881C_COMMAND_INSTR(0x60, 0x0f), + ILI9881C_COMMAND_INSTR(0x61, 0x0c), + ILI9881C_COMMAND_INSTR(0x62, 0x0d), + ILI9881C_COMMAND_INSTR(0x63, 0x06), + ILI9881C_COMMAND_INSTR(0x64, 0x07), + ILI9881C_COMMAND_INSTR(0x65, 0x02), + ILI9881C_COMMAND_INSTR(0x66, 0x02), + ILI9881C_COMMAND_INSTR(0x67, 0x02), + ILI9881C_COMMAND_INSTR(0x68, 0x02), + ILI9881C_COMMAND_INSTR(0x69, 0x01), + ILI9881C_COMMAND_INSTR(0x6a, 0x00), + ILI9881C_COMMAND_INSTR(0x6b, 0x02), + ILI9881C_COMMAND_INSTR(0x6c, 0x15), + ILI9881C_COMMAND_INSTR(0x6d, 0x14), + ILI9881C_COMMAND_INSTR(0x6e, 0x02), + ILI9881C_COMMAND_INSTR(0x6f, 0x02), + ILI9881C_COMMAND_INSTR(0x70, 0x02), + ILI9881C_COMMAND_INSTR(0x71, 0x02), + ILI9881C_COMMAND_INSTR(0x72, 0x02), + ILI9881C_COMMAND_INSTR(0x73, 0x02), + ILI9881C_COMMAND_INSTR(0x74, 0x02), + ILI9881C_COMMAND_INSTR(0x75, 0x0e), + ILI9881C_COMMAND_INSTR(0x76, 0x0f), + ILI9881C_COMMAND_INSTR(0x77, 0x0c), + ILI9881C_COMMAND_INSTR(0x78, 0x0d), + ILI9881C_COMMAND_INSTR(0x79, 0x06), + ILI9881C_COMMAND_INSTR(0x7a, 0x07), + ILI9881C_COMMAND_INSTR(0x7b, 0x02), + ILI9881C_COMMAND_INSTR(0x7c, 0x02), + ILI9881C_COMMAND_INSTR(0x7d, 0x02), + ILI9881C_COMMAND_INSTR(0x7e, 0x02), + ILI9881C_COMMAND_INSTR(0x7f, 0x01), + ILI9881C_COMMAND_INSTR(0x80, 0x00), + ILI9881C_COMMAND_INSTR(0x81, 0x02), + ILI9881C_COMMAND_INSTR(0x82, 0x14), + ILI9881C_COMMAND_INSTR(0x83, 0x15), + ILI9881C_COMMAND_INSTR(0x84, 0x02), + ILI9881C_COMMAND_INSTR(0x85, 0x02), + ILI9881C_COMMAND_INSTR(0x86, 0x02), + ILI9881C_COMMAND_INSTR(0x87, 0x02), + ILI9881C_COMMAND_INSTR(0x88, 0x02), + ILI9881C_COMMAND_INSTR(0x89, 0x02), + ILI9881C_COMMAND_INSTR(0x8a, 0x02), + + ILI9881C_SWITCH_PAGE_INSTR(4), + ILI9881C_COMMAND_INSTR(0x38, 0x01), + ILI9881C_COMMAND_INSTR(0x39, 0x00), + ILI9881C_COMMAND_INSTR(0x6c, 0x15), + ILI9881C_COMMAND_INSTR(0x6e, 0x2a), + ILI9881C_COMMAND_INSTR(0x6f, 0x33), + ILI9881C_COMMAND_INSTR(0x3a, 0x94), + ILI9881C_COMMAND_INSTR(0x8d, 0x14), + ILI9881C_COMMAND_INSTR(0x87, 0xba), + ILI9881C_COMMAND_INSTR(0x26, 0x76), + ILI9881C_COMMAND_INSTR(0xb2, 0xd1), + ILI9881C_COMMAND_INSTR(0xb5, 0x06), + ILI9881C_COMMAND_INSTR(0x3b, 0x98), + + ILI9881C_SWITCH_PAGE_INSTR(1), + ILI9881C_COMMAND_INSTR(0x22, 0x0a), + ILI9881C_COMMAND_INSTR(0x31, 0x00), + ILI9881C_COMMAND_INSTR(0x53, 0x71), + ILI9881C_COMMAND_INSTR(0x55, 0x8f), + ILI9881C_COMMAND_INSTR(0x40, 0x33), + ILI9881C_COMMAND_INSTR(0x50, 0x96), + ILI9881C_COMMAND_INSTR(0x51, 0x96), + ILI9881C_COMMAND_INSTR(0x60, 0x23), + ILI9881C_COMMAND_INSTR(0xa0, 0x08), + ILI9881C_COMMAND_INSTR(0xa1, 0x1d), + ILI9881C_COMMAND_INSTR(0xa2, 0x2a), + ILI9881C_COMMAND_INSTR(0xa3, 0x10), + ILI9881C_COMMAND_INSTR(0xa4, 0x15), + ILI9881C_COMMAND_INSTR(0xa5, 0x28), + ILI9881C_COMMAND_INSTR(0xa6, 0x1c), + ILI9881C_COMMAND_INSTR(0xa7, 0x1d), + ILI9881C_COMMAND_INSTR(0xa8, 0x7e), + ILI9881C_COMMAND_INSTR(0xa9, 0x1d), + ILI9881C_COMMAND_INSTR(0xaa, 0x29), + ILI9881C_COMMAND_INSTR(0xab, 0x6b), + ILI9881C_COMMAND_INSTR(0xac, 0x1a), + ILI9881C_COMMAND_INSTR(0xad, 0x18), + ILI9881C_COMMAND_INSTR(0xae, 0x4b), + ILI9881C_COMMAND_INSTR(0xaf, 0x20), + ILI9881C_COMMAND_INSTR(0xb0, 0x27), + ILI9881C_COMMAND_INSTR(0xb1, 0x50), + ILI9881C_COMMAND_INSTR(0xb2, 0x64), + ILI9881C_COMMAND_INSTR(0xb3, 0x39), + ILI9881C_COMMAND_INSTR(0xc0, 0x08), + ILI9881C_COMMAND_INSTR(0xc1, 0x1d), + ILI9881C_COMMAND_INSTR(0xc2, 0x2a), + ILI9881C_COMMAND_INSTR(0xc3, 0x10), + ILI9881C_COMMAND_INSTR(0xc4, 0x15), + ILI9881C_COMMAND_INSTR(0xc5, 0x28), + ILI9881C_COMMAND_INSTR(0xc6, 0x1c), + ILI9881C_COMMAND_INSTR(0xc7, 0x1d), + ILI9881C_COMMAND_INSTR(0xc8, 0x7e), + ILI9881C_COMMAND_INSTR(0xc9, 0x1d), + ILI9881C_COMMAND_INSTR(0xca, 0x29), + ILI9881C_COMMAND_INSTR(0xcb, 0x6b), + ILI9881C_COMMAND_INSTR(0xcc, 0x1a), + ILI9881C_COMMAND_INSTR(0xcd, 0x18), + ILI9881C_COMMAND_INSTR(0xce, 0x4b), + ILI9881C_COMMAND_INSTR(0xcf, 0x20), + ILI9881C_COMMAND_INSTR(0xd0, 0x27), + ILI9881C_COMMAND_INSTR(0xd1, 0x50), + ILI9881C_COMMAND_INSTR(0xd2, 0x64), + ILI9881C_COMMAND_INSTR(0xd3, 0x39), + + ILI9881C_SWITCH_PAGE_INSTR(0), + ILI9881C_COMMAND_INSTR(0x3a, 0x77), + ILI9881C_COMMAND_INSTR(0x36, 0x00), +}; + static inline struct ili9881c *panel_to_ili9881c(struct drm_panel *panel) { return container_of(panel, struct ili9881c, panel); @@ -2035,9 +2235,19 @@ static int ili9881c_prepare(struct drm_panel *panel) int ret; =20 /* Power the panel */ + if (ctx->iovcc) { + ret =3D regulator_enable(ctx->iovcc); + if (ret) + return ret; + } + + msleep(5); ret =3D regulator_enable(ctx->power); - if (ret) - return ret; + if (ret) { + mctx.accum_err =3D ret; + goto disable_iovcc; + } + msleep(5); =20 /* And reset it */ @@ -2074,6 +2284,9 @@ static int ili9881c_prepare(struct drm_panel *panel) =20 disable_power: regulator_disable(ctx->power); +disable_iovcc: + if (ctx->iovcc) + regulator_disable(ctx->iovcc); return mctx.accum_err; } =20 @@ -2085,6 +2298,8 @@ static int ili9881c_unprepare(struct drm_panel *panel) mipi_dsi_dcs_set_display_off_multi(&mctx); mipi_dsi_dcs_enter_sleep_mode_multi(&mctx); regulator_disable(ctx->power); + if (ctx->iovcc) + regulator_disable(ctx->iovcc); gpiod_set_value_cansleep(ctx->reset, 1); =20 return 0; @@ -2260,6 +2475,23 @@ static const struct drm_display_mode bsd1218_a101kl6= 8_default_mode =3D { .height_mm =3D 170, }; =20 +static const struct drm_display_mode waveshare_7inch_a_mode =3D { + .clock =3D 83333, + + .hdisplay =3D 720, + .hsync_start =3D 720 + 120, + .hsync_end =3D 720 + 120 + 100, + .htotal =3D 720 + 120 + 100 + 100, + + .vdisplay =3D 1280, + .vsync_start =3D 1280 + 10, + .vsync_end =3D 1280 + 10 + 10, + .vtotal =3D 1280 + 10 + 10 + 10, + + .width_mm =3D 85, + .height_mm =3D 154, +}; + static int ili9881c_get_modes(struct drm_panel *panel, struct drm_connector *connector) { @@ -2329,6 +2561,11 @@ static int ili9881c_dsi_probe(struct mipi_dsi_device= *dsi) return dev_err_probe(&dsi->dev, PTR_ERR(ctx->power), "Couldn't get our power regulator\n"); =20 + ctx->iovcc =3D devm_regulator_get_optional(&dsi->dev, "iovcc"); + if (IS_ERR(ctx->iovcc)) + return dev_err_probe(&dsi->dev, PTR_ERR(ctx->iovcc), + "Couldn't get our iovcc regulator\n"); + ctx->reset =3D devm_gpiod_get_optional(&dsi->dev, "reset", GPIOD_OUT_LOW); if (IS_ERR(ctx->reset)) return dev_err_probe(&dsi->dev, PTR_ERR(ctx->reset), @@ -2454,6 +2691,15 @@ static const struct ili9881c_desc bsd1218_a101kl68_d= esc =3D { .lanes =3D 4, }; =20 +static const struct ili9881c_desc waveshare_7inch_a_desc =3D { + .init =3D waveshare_7inch_a_init, + .init_length =3D ARRAY_SIZE(waveshare_7inch_a_init), + .mode =3D &waveshare_7inch_a_mode, + .mode_flags =3D MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_HSE | + MIPI_DSI_MODE_LPM | MIPI_DSI_CLOCK_NON_CONTINUOUS, + .lanes =3D 2, +}; + static const struct of_device_id ili9881c_of_match[] =3D { { .compatible =3D "bananapi,lhr050h41", .data =3D &lhr050h41_desc }, { .compatible =3D "bestar,bsd1218-a101kl68", .data =3D &bsd1218_a101kl68_= desc }, @@ -2462,6 +2708,7 @@ static const struct of_device_id ili9881c_of_match[] = =3D { { .compatible =3D "tdo,tl050hdv35", .data =3D &tl050hdv35_desc }, { .compatible =3D "wanchanglong,w552946aaa", .data =3D &w552946aaa_desc }, { .compatible =3D "wanchanglong,w552946aba", .data =3D &w552946aba_desc }, + { .compatible =3D "waveshare,7.0-dsi-touch-a", .data =3D &waveshare_7inch= _a_desc }, { .compatible =3D "ampire,am8001280g", .data =3D &am8001280g_desc }, { .compatible =3D "raspberrypi,dsi-5inch", &rpi_5inch_desc }, { .compatible =3D "raspberrypi,dsi-7inch", &rpi_7inch_desc }, --=20 2.47.3 From nobody Tue Jun 16 09:59:44 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 82F4F37F8AE for ; Fri, 17 Apr 2026 23:16:38 +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=1776467799; cv=none; b=U+KfZA+4YLJQUZRgOX7vSdICzujloswF0Kbj0WPvW/bEJ4ysvqqW8hI3rt4+9PTlUumbGEuXvMvzZyUB+5nn0j61whlGaTl0hX37hEJsEkhpCRB1wA1hvzlCZauCy3XHtT+16tED9pAEeLrx+F+XRAWhFG+CNUlqjK+kg8TCLMk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776467799; c=relaxed/simple; bh=QFyGUBjpv4MqdXiM8mWmHDArDsRkJpFYDlFfKXrJ+qM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jHqDi3qtYE8QIpyG5lUX+LVRYtDjQElweOUpAZb3DwmJBl6Qq/r3l6JoLW6GI6LRQJpQCzqLcTJtc+z67mKxrIo6KdfiW+YxlkRxwkONjANZg6lGJQljwLU+2TXIi/BXJw3gsRLRN7GLDfa43USpnkIpXWG+qXkxeF37f7HItVE= 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=EKfs5IuE; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Sdz4JUp6; 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="EKfs5IuE"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Sdz4JUp6" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63HG4AIo3929274 for ; Fri, 17 Apr 2026 23:16:37 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= k/MReTiZ3YyWJtzTaefEwes+g38rRRobC1lXjVxZm/g=; b=EKfs5IuEqeYFGoiH VpEIJMmAG6oQaB5BWZ+EBd67Afhq/3BWr5T7r4KpAlw+ChVQGry36vHXnztX1glq s5zrcMXHC0p8fVoIuHPXqXq0eoOSLtQql50DMgH5bm0aLBS3cL/AK5nYDr71sTNR /hJ2q6kqfjaR7vEWFTNgz5R9LZtBYjpD+Ra8uGq48qisCmZLsnLWQR0MR0jIkKIm Q94qGYAAKNq8LtKnqfAZvK+QhBxkzC2KMqEFds8lze/eXvYjzzpuiSBymc4hmNH2 0/D2DoTnzZ5nSrqE1yZKafELNlkp51PptJ0R9ZWT1qgChWlB75sKWTyG9FBjDl48 aBod3Q== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dkqujh4v2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Apr 2026 23:16:37 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-50b34223670so20859411cf.0 for ; Fri, 17 Apr 2026 16:16:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776467797; x=1777072597; 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=k/MReTiZ3YyWJtzTaefEwes+g38rRRobC1lXjVxZm/g=; b=Sdz4JUp6QQvmDgH462bEt6X1wptPpubfaBQzPyAo7RTm9TchMau1mOh5P27MA/lWJp QvkfiMUBhbQwgOunT72WNqSFjBaWDvT24MFoOQaD7bvy4vO/yebpw7xPuN69HpvhRzob HhClOtsQ4gyMTkpvc+6az+IEmW5S3qq22QAAv5Nh4lLUdaZtSwrv+ZdXPMNiq5bGzCYR xmfz5EYE8EQkm8C5Y667s1sHklXoew8JVncR7O3AE1QbUnv2urAsWB0tyNDz98ordRTa 8PRX7fIWDJEmK2qwCmDOKlkjkl6HrgRiwuYOsZxwa+TIs/ZtmbcxPqkKxr4yZa8073nY OoKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776467797; x=1777072597; 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=k/MReTiZ3YyWJtzTaefEwes+g38rRRobC1lXjVxZm/g=; b=Ys5vdyy5i9q4Z4LO9mA+zFzWiP1RD+TL1M2IQGqSUv6pj0Cewz9OItK5UfF51TmLYL +T/SSeEF5rLtexIqTnYNBfNIzwUIiiGyZBCIM6VSGrSnZrd9sMpdKRs9NN9fq4h6inVE VVicQtn65MBDboOL902EhMTmwk+Ku7l/t5PVv5qERzplaesrXN+Mm1L4Z+XgTBJUnnHu mi71Z7ioLxeV4oXZ10KJRrpH1dzRJ+AKD6FRcguw86n7VLjOyzFl6mOlNK4Jgis1Ffs4 zw179iOY8J1G/EY1TV+lKzSOamfkVjoKR/PaTscKbw/Fla3vONEokuWVVEGfkL9lNZ0N CS8g== X-Forwarded-Encrypted: i=1; AFNElJ+zHrjKTuyjx36pl3z7p0DeNKZPlVHnXAaUe0LKCfiqXz19B/+YtYMBFiQA94hrqAB3BVObJmNJBWG+Vl4=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+ldwdNPqJmZOedDGWltNhjWKTDDl8iFRTjsL5dnWrynZWhmGQ Wlg70Zk0f355mgs5i6Ng0YFpsnBy1NhUj1xI1cgwKFxIb8YaywM4v1mSDi3qgbru8QK3Rgk+vc0 +i7ZtNVj2E1Yp9puOGpPzTTl9vy+prRyZeyFgl9niopYgK3WjyBqJ+o+dZSm3Z6Fm7kM= X-Gm-Gg: AeBDietgCHAzSDa8AmtYN4fLBFgqiOvFYG4LyCzN9/SKgoLQlBdIZ2CVdPMnMDY/q7d nU9oSehxGY1NGh9Y1k4JnO1uUsYZsfk3Sv8xoA9TJL1Vagauzy8cHnfsfKk0aBVcUtULpIDqOuW 1VNxchM1c3bQO4POQJkoqdUokrBJ/avLYOeuKlcSaG7sFPZ6USkKZNkjid101ZQJY1xdloGCUTv gfbyd4eIZctRlJ9PWm4XcR2ChRKvXvCa9yxxElR8np7Ifzf8GiEtGz+bxnTeKK1EzpqbN07Fc5W cvg7A8gbogKQgSjSZqe7y6116fD54QBsFyknjfisPV6wkdLwdnNBnm58bV51w0RZwAc/94FDE0D +ZX4ql1qJ3Ckw6TmaI575ejUM5vfncNq8SSwegzFZXHGhVdIaFWCJQm6+T9M7cN/hEpLr5rBtOg QVlFnDkh3DLBdrDrYNB/Rbw8/XmEphImmRMYU5kYxlPX2Prg== X-Received: by 2002:ac8:7f16:0:b0:50d:7135:5631 with SMTP id d75a77b69052e-50e368281ecmr75066681cf.6.1776467796853; Fri, 17 Apr 2026 16:16:36 -0700 (PDT) X-Received: by 2002:ac8:7f16:0:b0:50d:7135:5631 with SMTP id d75a77b69052e-50e368281ecmr75066231cf.6.1776467796412; Fri, 17 Apr 2026 16:16:36 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a4185ad12asm815695e87.1.2026.04.17.16.16.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Apr 2026 16:16:35 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 18 Apr 2026 02:16:22 +0300 Subject: [PATCH v4 3/4] dt-bindings: gpio: describe Waveshare GPIO controller 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: <20260418-waveshare-dsi-touch-v4-3-b249f3e702bd@oss.qualcomm.com> References: <20260418-waveshare-dsi-touch-v4-0-b249f3e702bd@oss.qualcomm.com> In-Reply-To: <20260418-waveshare-dsi-touch-v4-0-b249f3e702bd@oss.qualcomm.com> To: Neil Armstrong , Jessica Zhang , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Cong Yang , Ondrej Jirman , Javier Martinez Canillas , Jagan Teki , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Jie Gan Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Conor Dooley X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3635; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=QFyGUBjpv4MqdXiM8mWmHDArDsRkJpFYDlFfKXrJ+qM=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBp4r9Iv5xhufaEtYkC6QvNv+yB79Xjg8tcucfbU GPpWXq7U4GJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaeK/SAAKCRCLPIo+Aiko 1QZdB/0Xirv0hja+h/Eg/Im/1sajcD2PL4HsG86Wjhg1rSgIoZlF5In2wlN4qEL4vWYsVMEttQa GuVRQfn8ZmQgIZeL3X4omDRYw6THCiyRf//j2VpVlrsYVGVpe91zhd380Lu5MNeZC9CXgkXs76W mmvX/I3QVYVICneKBYxiBtOF3VPi54RApWS6/vFWw7rCXV3tw+OCLlcvtBrbKoy6d8bDzt7nLNF Qwtaevb2ikOh2d3QaLzFVSluoYI6Ji6Ah8ZfvbYx9BlsAmyy1Kj3pn3vntdMLjoxOkZIvC4N1Vz Z8py20gICNPtXnkD1WNp8bLxJoK+9Kk9HJjA6hLvEkFZkK/i X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDE3MDIzMCBTYWx0ZWRfXxO+aiAaBI9qo vXMp9HoBTuoO4IZICGonRqpmUA1jDHKvTf0TOMZOzKNwYdhJOaGbu7n5spy48eS5d8De/giDrhC Pw+2k52vRwKuTgqHkuGfjYZytgSpqdKlsktzaYAL/cFsjmG7c+amVm/zlY/X41lLXvodUogg8rz 4u30CV8LHqcWTLg76DtMmofWAKbrzSYax8LEVmOMsPTT7KKdSSrHzRwbmfCLfiZY54pIfpZrWlE COjHEM24hoWGRLrwajQwZFribhH2mihmTTKix/+K+EyE/+7oo/rBcJdK9+8vV8WITdUkBx7LJ0Y XvGdebgTT9tq+gg72tYTP1sHU+Z0Qq/gjdZ5O0VwhLuVJ08HjBA27O9Zzz8/EZywCopphSDKTwG 0pgYKALOiX/e6yL/tr9i0ZDbJ1iy5GXVXSwefJkYfz7Ej9IyHbucWEVpCaiA5kmltnU3tqvFSEQ CM1y9XVn6T0gxxC8erg== X-Proofpoint-ORIG-GUID: izM9K3a4Wc-5m93KNeR6-nUid5ErZekC X-Authority-Analysis: v=2.4 cv=FP0rAeos c=1 sm=1 tr=0 ts=69e2bf55 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=gEfo2CItAAAA:8 a=XYAwZIGsAAAA:8 a=EUspDBNiAAAA:8 a=ClTKKeZw4Bcbv9k5X4IA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 a=sptkURWiP4Gy88Gu7hUp:22 a=E8ToXWR_bxluHZ7gmE-Z:22 X-Proofpoint-GUID: izM9K3a4Wc-5m93KNeR6-nUid5ErZekC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-17_02,2026-04-17_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 spamscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 priorityscore=1501 malwarescore=0 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604170230 The Waveshare DSI TOUCH family of panels has separate on-board GPIO controller, which controls power supplies to the panel and the touch screen and provides reset pins for both the panel and the touchscreen. Also it provides a simple PWM controller for panel backlight. Add bindings for these GPIO controllers. As overall integration might be not very obvious (and it differs significantly from the bindings used by the original drivers), provide complete example with the on-board regulators and the DSI panel. Acked-by: Conor Dooley Signed-off-by: Dmitry Baryshkov --- .../bindings/gpio/waveshare,dsi-touch-gpio.yaml | 100 +++++++++++++++++= ++++ 1 file changed, 100 insertions(+) diff --git a/Documentation/devicetree/bindings/gpio/waveshare,dsi-touch-gpi= o.yaml b/Documentation/devicetree/bindings/gpio/waveshare,dsi-touch-gpio.ya= ml new file mode 100644 index 000000000000..410348fcda25 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/waveshare,dsi-touch-gpio.yaml @@ -0,0 +1,100 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/gpio/waveshare,dsi-touch-gpio.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Waveshare GPIO controller on DSI TOUCH panels + +maintainers: + - Dmitry Baryshkov + +description: + Waveshare DSI TOUCH panel kits contain separate GPIO controller for togg= ling + power supplies and panel / touchscreen resets. + +properties: + compatible: + const: waveshare,dsi-touch-gpio + + reg: + maxItems: 1 + + gpio-controller: true + + '#gpio-cells': + const: 2 + +required: + - compatible + - reg + - gpio-controller + - "#gpio-cells" + +additionalProperties: false + +examples: + - | + #include + + i2c { + #address-cells =3D <1>; + #size-cells =3D <0>; + + wsgpio: gpio@45 { + compatible =3D "waveshare,dsi-touch-gpio"; + reg =3D <0x45>; + gpio-controller; + #gpio-cells =3D <2>; + }; + }; + + panel_avdd: regulator-panel-avdd { + compatible =3D "regulator-fixed"; + regulator-name =3D "panel-avdd"; + gpios =3D <&wsgpio 0 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + panel_iovcc: regulator-panel-iovcc { + compatible =3D "regulator-fixed"; + regulator-name =3D "panel-iovcc"; + gpios =3D <&wsgpio 4 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + panel_vcc: regulator-panel-vcc { + compatible =3D "regulator-fixed"; + regulator-name =3D "panel-vcc"; + gpios =3D <&wsgpio 8 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-always-on; + }; + + dsi { + #address-cells =3D <1>; + #size-cells =3D <0>; + + panel@0 { + reg =3D <0>; + compatible =3D "waveshare,8.0-dsi-touch-a", "jadard,jd9365da-h= 3"; + reset-gpios =3D <&wsgpio 1 GPIO_ACTIVE_LOW>; + vdd-supply =3D <&panel_avdd>; + vccio-supply =3D <&panel_iovcc>; + backlight =3D <&wsgpio>; + + port { + panel_in: endpoint { + remote-endpoint =3D <&dsi_out>; + }; + }; + }; + + port { + dsi_out: endpoint { + data-lanes =3D <0 1 2 3>; + remote-endpoint =3D <&panel_in>; + }; + }; + }; +... --=20 2.47.3 From nobody Tue Jun 16 09:59:44 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 F0D6137FF7F for ; Fri, 17 Apr 2026 23:16:41 +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=1776467803; cv=none; b=thwrc6Hduu75tkCHDyLgiU1w3wGaH9yE22tnNR8SxiJV9mtuTuOxhV1lMqWEwXYRFRtuJXbIG8rNiOGzuw7QHwwjslRieDNLnECtguLv4R8zehZSzy/I3YPWvLjGQx6SVn0QOLevAhje7P593KPYo/tW8TmeAeanzSAwfgqzwgQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776467803; c=relaxed/simple; bh=LLB5S+fq0OkGtz5fZjjGOedSRUpC3QiVTV63iuC2ud8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HQoGO0Ba80r7RT52Ag91oVVr1Ryo34aVettFvkMp404WGvYfBdNgjSkKaNKPMz92M3hcAOH4Ek6VMnmK5PbE8yR+ENVqbAmWilJCkdOFQIQ3ddbvnVkM5Q4FS16CKNpnTTsZ3Q/BNFFTrzRQ0ejumwC2BiufbAC8V4RfQLSf8UA= 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=J8On6Anc; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bdqa32KJ; 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="J8On6Anc"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bdqa32KJ" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63HG4AbM3929298 for ; Fri, 17 Apr 2026 23:16:41 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= /4NBXSH4Is2yC5xbwXreHyoFBggJh0nMi8dZy/+Iqn0=; b=J8On6AncEsQT7uOi nXaMI5BqK+Lf//c+rn4aagri5zbmE20z6U7jHZXYrzEVBpo7Wk3hNxhrSMNwdfUX pkFLevmbt5Y4xjEZLX97znFWMXJJQ7E6esIAbYP71tAaRcZYOTFDN1Nht7atqDCb vfDIyQRl4+B7fhHahlDuOANHnOH1th9D9xMY/xsb/yMc4sx/4COdJeu/N1nV4FUK LpbtfedzM80U3pWPHV1QPQHNbLjTYZnwUmcb3R7ZnVTbFGnLaw+k7joFqm0YAh+f GSGNod66XmXFjeC72WBMKqH4cJ+NWrfnKhkngOXntH5qaN5WQEyLhXAhUmcWSLbx Rta4nw== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dkqujh4vd-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Apr 2026 23:16:40 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-50e2eeebd33so29327001cf.2 for ; Fri, 17 Apr 2026 16:16:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776467800; x=1777072600; 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=/4NBXSH4Is2yC5xbwXreHyoFBggJh0nMi8dZy/+Iqn0=; b=bdqa32KJhlFPKdhdlgSYPCYc8i0Z1QLOLcGONBgAdruWjCc93SKlj7gzbz1p3u55Yk RUgmJ0x9mQ8prnLau94meH++sAglNsbqCbbWqA8TW+RuwAZCPNZ2AX0iIUTdPTISvdnj yKmqpPD0akgGBfH/O5oyKZX/gbdvptkzsw/q/3XE0LodkgT5f/pC5WvXF34SDlp1ba2U DMvXTOX4LVgWOSDjljqEA1PlFAmLBDSW9JvTMXvxXoZpuqDXyLwWaDgewWdoP0/NNVdU THOY79TJw346YXNxBJ4fShhHtxftsAOZJdOe/Y53St4h8AO3+f0tRqhaD8pCW9PTDW+E VPig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776467800; x=1777072600; 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=/4NBXSH4Is2yC5xbwXreHyoFBggJh0nMi8dZy/+Iqn0=; b=j70DH0Whdh+8qBG7jmARam2dEARZ3r275/Y2q3K4I4uf3SVBPDFXKR0aQfZhm+ts0T QG9qoZgRpgcHcdVy2rR657UVrLRYO1I7WID2jyAVmv3M1Uv8GnwByRjd+SpDen8eAuJB OBFlHldVCouqIAuStQKSQ3ww1wZUwoLHEsiOZ8b9L8CPCGGoIha1jALpYsI2FhZl3oq0 W9ymdnz/b0PDquOjmq/woa43jpPpYMhDDe346W5eDeFHAX0EuxjQCvCKJC195vmLyeqN lxu4TFhw1/4mGb8Abtspwzp8STjQJ7QxHLolPcLGavxOUqmRn5EqAA/RFSNa93j4QGa8 JgFQ== X-Forwarded-Encrypted: i=1; AFNElJ+b0RcZnLUB7DXEHsLZziUo0XFh792Ihx5VaGyVOqudmR+Y7MqnAlLiPiKJVydXoDO4X09+DM91xdrYD+k=@vger.kernel.org X-Gm-Message-State: AOJu0YxlHfog1gBcz3xYq2mZI5BmlL8UEeyLOBu2XpPykksAcalMorai xO6H/FyozNfLcY+OTrnLfJwYt0pcvRrsWZ4IwZAibQIJs2z0ZevuiiEdeKFmsQuRSYu56S5wkgs 47dlPzBG8t4qPDC4ABxmDAkTr4jXpEzR50kglz7jnjG0jasSrdGw5ZDsdkuf4XCNFf54= X-Gm-Gg: AeBDieuYeY5U9+LlW02iGyOvvRfuqAOQt1wcKnN86fKZOCAl2MG/ua8nVbAq/TrdEPz xZC8nki+7+q4u6ddSfyubpavHgaKNTuuxVCQJnW4l23Nt4BdBebW1cHQtFKly/eYKeRLrPutgIn xEC00cCIiI+ZBFvdBFvORvjnz4+VR9oVL6sNnI6dA7xfHnUVVnbvIk0WH7HkJlT8Gt4kGXI59/Z wqjzDLJncBjAuXTFTGhSK4mAbHjsvuNWbvoR9nNrBneckeRYgE/kla2+l3VsFqii0p7H9WkWBsR kFX076LP2p3g30g9afMIFAe79CTgTH8wz/2Krb0OyZNNkw/4Edlyzfrdr2+1QrZh4PX5DNRKjvh 6/YkEwKWvc/dF21KNWpj5wRmQmZZcAndKiaeeD6WUiVGrHG6cHP9GYbfEnkzPdXyVkLcxY8er1i uFql2Ax6voRo7FwZl1bQhazw9G2VNFIH4L3xMgbh09VTKLi3PyIdPRd+Ue X-Received: by 2002:ac8:7e8b:0:b0:50b:3e14:47f9 with SMTP id d75a77b69052e-50e36b4004dmr71207501cf.18.1776467800157; Fri, 17 Apr 2026 16:16:40 -0700 (PDT) X-Received: by 2002:ac8:7e8b:0:b0:50b:3e14:47f9 with SMTP id d75a77b69052e-50e36b4004dmr71206821cf.18.1776467799621; Fri, 17 Apr 2026 16:16:39 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a4185ad12asm815695e87.1.2026.04.17.16.16.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Apr 2026 16:16:36 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 18 Apr 2026 02:16:23 +0300 Subject: [PATCH v4 4/4] gpio: add GPIO controller found on Waveshare DSI TOUCH panels 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: <20260418-waveshare-dsi-touch-v4-4-b249f3e702bd@oss.qualcomm.com> References: <20260418-waveshare-dsi-touch-v4-0-b249f3e702bd@oss.qualcomm.com> In-Reply-To: <20260418-waveshare-dsi-touch-v4-0-b249f3e702bd@oss.qualcomm.com> To: Neil Armstrong , Jessica Zhang , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Cong Yang , Ondrej Jirman , Javier Martinez Canillas , Jagan Teki , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Jie Gan Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Riccardo Mereu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=7752; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=LLB5S+fq0OkGtz5fZjjGOedSRUpC3QiVTV63iuC2ud8=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBp4r9JDpfhol8AoFz4jD5vkT+meGyDTMarU9bf4 0SrjTu9wViJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaeK/SQAKCRCLPIo+Aiko 1YToB/9g1+pGdvvJwBjuO+QerWMC6htvuKdbCWaWfW3Ub/3Gjm5uQ/aT22qdXM7+DG9dBlfXQQZ yOCIUPrmbFVsBZidylfPky22sBwJcciv4tY4ud3K9qruS6rVOd6Eq3TA0k0rRuloLI2v/8OPUl4 ads9WVQ1NEKG8ttZhjMRfAAJLci5IRHYRgDvJ832t5hHxJWQ8K1zT1ftdQ1nh6EXolGf+u3r3mW AwxroDcnDomfHF/cTp9WCxxx65eCrMoY3urLVYtu37lK+MsLwyJ27V53reFD5mj79OiMPwewzcX ynlLCCXy6XKXzb5pKwXY/4ZA9Ha/tMiFmCiAcY5tjlpaQW+X X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDE3MDIzMCBTYWx0ZWRfXxJ8mGlewYswU pmBAd35maPzSjMo5zdowLL+XAqQfS/+h/gbmHaBh6gdWNIhobK8Sa0IUmUuNQu8WdCMiQmgcQPb JNQKxwwJSza11O7GOJnGN9yEwwwUFu2r3CBNovG9wms+k43y79WjIwxCgR+zgwc+tcw1FeFzH9A bQ2BelqhD/baVdRVft9H8g0wXH+gAv3fw0iVMuYJd6UguBT9HlUCOivR0vsAKOynKkkly0Y3mPT NAlyqXqq846iteBPDMm6WCHekGVr+DKANGYnVKoiawlRNP+YHFMpJJkkFwpPzZBszF4PDwYb74A QD3e9h6JEHwWP+yhq7MU3eKS9Nm1CU+xleijdjts7YBDmYVGrCk16Am3ccln6IUZhlRecHqN5hJ I113T05bcGJeL3ehhw+U+amLgbU7DPf7qMMEDJqwX21aZh8PmJ2VrL4INMiFPno+oOmuWm1/ht3 j8LICVl1VhLi0OyaKMg== X-Proofpoint-ORIG-GUID: YkN31Mi-FmpUyBH9iiLLFl89m63mGFB0 X-Authority-Analysis: v=2.4 cv=FP0rAeos c=1 sm=1 tr=0 ts=69e2bf58 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=BBJQNc9AFPM2Ar9AcygA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-GUID: YkN31Mi-FmpUyBH9iiLLFl89m63mGFB0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-17_02,2026-04-17_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 spamscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 priorityscore=1501 malwarescore=0 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604170230 The Waveshare DSI TOUCH family of panels has separate on-board GPIO controller, which controls power supplies to the panel and the touch screen and provides reset pins for both the panel and the touchscreen. Also it provides a simple PWM controller for panel backlight. Add support for this GPIO controller. Tested-by: Riccardo Mereu Signed-off-by: Dmitry Baryshkov --- drivers/gpio/Kconfig | 10 ++ drivers/gpio/Makefile | 1 + drivers/gpio/gpio-waveshare-dsi.c | 208 ++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 219 insertions(+) diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index b45fb799e36c..e24ad7e32034 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -804,6 +804,16 @@ config GPIO_VISCONTI help Say yes here to support GPIO on Tohisba Visconti. =20 +config GPIO_WAVESHARE_DSI_TOUCH + tristate "Waveshare GPIO controller for DSI panels" + depends on BACKLIGHT_CLASS_DEVICE + depends on I2C + select REGMAP_I2C + help + Enable support for the GPIO and PWM controller found on Waveshare DSI + TOUCH panel kits. It provides GPIOs (used for regulator control and + resets) and backlight support. + config GPIO_WCD934X tristate "Qualcomm Technologies Inc WCD9340/WCD9341 GPIO controller drive= r" depends on MFD_WCD934X && OF_GPIO diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile index c05f7d795c43..94f16f0f28d9 100644 --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile @@ -206,6 +206,7 @@ obj-$(CONFIG_GPIO_VIRTUSER) +=3D gpio-virtuser.o obj-$(CONFIG_GPIO_VIRTIO) +=3D gpio-virtio.o obj-$(CONFIG_GPIO_VISCONTI) +=3D gpio-visconti.o obj-$(CONFIG_GPIO_VX855) +=3D gpio-vx855.o +obj-$(CONFIG_GPIO_WAVESHARE_DSI_TOUCH) +=3D gpio-waveshare-dsi.o obj-$(CONFIG_GPIO_WCD934X) +=3D gpio-wcd934x.o obj-$(CONFIG_GPIO_WHISKEY_COVE) +=3D gpio-wcove.o obj-$(CONFIG_GPIO_WINBOND) +=3D gpio-winbond.o diff --git a/drivers/gpio/gpio-waveshare-dsi.c b/drivers/gpio/gpio-waveshar= e-dsi.c new file mode 100644 index 000000000000..38f52351bb58 --- /dev/null +++ b/drivers/gpio/gpio-waveshare-dsi.c @@ -0,0 +1,208 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2024 Waveshare International Limited + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include +#include +#include +#include +#include +#include +#include + +/* I2C registers of the microcontroller. */ +#define REG_TP 0x94 +#define REG_LCD 0x95 +#define REG_PWM 0x96 +#define REG_SIZE 0x97 +#define REG_ID 0x98 +#define REG_VERSION 0x99 + +enum { + GPIO_AVDD =3D 0, + GPIO_PANEL_RESET =3D 1, + GPIO_BL_ENABLE =3D 2, + GPIO_IOVCC =3D 4, + GPIO_VCC =3D 8, + GPIO_TS_RESET =3D 9, +}; + +#define NUM_GPIO 16 + +struct waveshare_gpio { + struct mutex dir_lock; + struct mutex pwr_lock; + struct regmap *regmap; + u16 poweron_state; + + struct gpio_chip gc; +}; + +static const struct regmap_config waveshare_gpio_regmap_config =3D { + .reg_bits =3D 8, + .val_bits =3D 8, + .max_register =3D REG_VERSION, +}; + +static int waveshare_gpio_get(struct waveshare_gpio *state, unsigned int o= ffset) +{ + u16 pwr_state; + + guard(mutex)(&state->pwr_lock); + pwr_state =3D state->poweron_state & BIT(offset); + + return !!pwr_state; +} + +static int waveshare_gpio_set(struct waveshare_gpio *state, unsigned int o= ffset, int value) +{ + u16 last_val; + int err; + + guard(mutex)(&state->pwr_lock); + + last_val =3D state->poweron_state; + if (value) + last_val |=3D BIT(offset); + else + last_val &=3D ~BIT(offset); + + state->poweron_state =3D last_val; + + err =3D regmap_write(state->regmap, REG_TP, last_val >> 8); + if (!err) + err =3D regmap_write(state->regmap, REG_LCD, last_val & 0xff); + + return err; +} + +static int waveshare_gpio_gpio_get_direction(struct gpio_chip *gc, unsigne= d int offset) +{ + return GPIO_LINE_DIRECTION_OUT; +} + +static int waveshare_gpio_gpio_get(struct gpio_chip *gc, unsigned int offs= et) +{ + struct waveshare_gpio *state =3D gpiochip_get_data(gc); + + return waveshare_gpio_get(state, offset); +} + +static int waveshare_gpio_gpio_set(struct gpio_chip *gc, unsigned int offs= et, int value) +{ + struct waveshare_gpio *state =3D gpiochip_get_data(gc); + + return waveshare_gpio_set(state, offset, value); +} + +static int waveshare_gpio_update_status(struct backlight_device *bl) +{ + struct waveshare_gpio *state =3D bl_get_data(bl); + int brightness =3D backlight_get_brightness(bl); + + waveshare_gpio_set(state, GPIO_BL_ENABLE, brightness); + + return regmap_write(state->regmap, REG_PWM, brightness); +} + +static const struct backlight_ops waveshare_gpio_bl =3D { + .update_status =3D waveshare_gpio_update_status, +}; + +static int waveshare_gpio_probe(struct i2c_client *i2c) +{ + struct backlight_properties props =3D {}; + struct waveshare_gpio *state; + struct device *dev =3D &i2c->dev; + struct backlight_device *bl; + struct regmap *regmap; + unsigned int data; + int ret; + + state =3D devm_kzalloc(dev, sizeof(*state), GFP_KERNEL); + if (!state) + return -ENOMEM; + + ret =3D devm_mutex_init(dev, &state->dir_lock); + if (ret) + return ret; + + ret =3D devm_mutex_init(dev, &state->pwr_lock); + if (ret) + return ret; + + regmap =3D devm_regmap_init_i2c(i2c, &waveshare_gpio_regmap_config); + if (IS_ERR(regmap)) + return dev_err_probe(dev, PTR_ERR(regmap), "Failed to allocate register = map\n"); + + state->regmap =3D regmap; + i2c_set_clientdata(i2c, state); + + ret =3D regmap_read(regmap, REG_ID, &data); + if (ret < 0) + return dev_err_probe(dev, ret, "Failed to read register\n"); + + dev_dbg(dev, "waveshare panel hw id =3D 0x%x\n", data); + + ret =3D regmap_read(regmap, REG_SIZE, &data); + if (ret < 0) + return dev_err_probe(dev, ret, "Failed to read register\n"); + + dev_dbg(dev, "waveshare panel size =3D %d\n", data); + + ret =3D regmap_read(regmap, REG_VERSION, &data); + if (ret < 0) + return dev_err_probe(dev, ret, "Failed to read register\n"); + + dev_dbg(dev, "waveshare panel mcu version =3D 0x%x\n", data); + + ret =3D waveshare_gpio_set(state, GPIO_TS_RESET, 1); + if (ret) + return dev_err_probe(dev, ret, "Failed to program GPIOs\n"); + + msleep(20); + + state->gc.parent =3D dev; + state->gc.label =3D i2c->name; + state->gc.owner =3D THIS_MODULE; + state->gc.base =3D -1; + state->gc.ngpio =3D NUM_GPIO; + + /* it is output only */ + state->gc.get =3D waveshare_gpio_gpio_get; + state->gc.set =3D waveshare_gpio_gpio_set; + state->gc.get_direction =3D waveshare_gpio_gpio_get_direction; + state->gc.can_sleep =3D true; + + ret =3D devm_gpiochip_add_data(dev, &state->gc, state); + if (ret) + return dev_err_probe(dev, ret, "Failed to create gpiochip\n"); + + props.type =3D BACKLIGHT_RAW; + props.max_brightness =3D 255; + props.brightness =3D 255; + bl =3D devm_backlight_device_register(dev, dev_name(dev), dev, state, + &waveshare_gpio_bl, &props); + return PTR_ERR_OR_ZERO(bl); +} + +static const struct of_device_id waveshare_gpio_dt_ids[] =3D { + { .compatible =3D "waveshare,dsi-touch-gpio" }, + {}, +}; +MODULE_DEVICE_TABLE(of, waveshare_gpio_dt_ids); + +static struct i2c_driver waveshare_gpio_regulator_driver =3D { + .driver =3D { + .name =3D "waveshare-regulator", + .of_match_table =3D of_match_ptr(waveshare_gpio_dt_ids), + }, + .probe =3D waveshare_gpio_probe, +}; + +module_i2c_driver(waveshare_gpio_regulator_driver); + +MODULE_DESCRIPTION("GPIO controller driver for Waveshare DSI touch panels"= ); +MODULE_LICENSE("GPL"); --=20 2.47.3