From nobody Sat Feb 7 06:13:48 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 D8D5E330B2F for ; Thu, 15 Jan 2026 07:29:14 +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=1768462156; cv=none; b=AxH0afFXbkPeCbdbGxGYoc4hAjHGJMWgmZAkoRjEZtlk3MgAwkYSlazM2fdWKXF9RDsSOBMVi7EjrqSDEhzKOMNL5EtK9ER2T8towuPjKnI7Pn2U13IU0AVaTuxf7jWfg35801g32VQvH3APH2ZlRx0PvIsLsZueL7kyiHGKW2g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768462156; c=relaxed/simple; bh=8TIpb1Vecd87DdarhQ45qjuuPLaThUggnFfuyV/O1a8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=t0mamASe/fSkR56PEF/2jdVRbElrBtJ2Uy2ZyIy3sDQFZ6UJ4AMve/v7xWzew71FD1QZGPvrXsAS/EZF+QNbigGX1dAqTt/7kC2tqtitvBS3MvCmjYQ7G/bSXnIvQuyR/lRfgLYY+t0KhO4WjnSPBsOyjmhDMRJ6gLwgSu5J2Mg= 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=lA4r2Aer; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=KGKdxAx3; 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="lA4r2Aer"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="KGKdxAx3" 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 60F6g87Y1692941 for ; Thu, 15 Jan 2026 07:29: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= 8vpj08mJ5C/IUKaBXReHEtx5aeFlsT0McmKWTl0bc1g=; b=lA4r2Aer9hocwYNS HjpLjW/ZbQklU0LkL34P30bPINgLs3C+zfnTRAPoQOO7+A2KcFXLmB+Rl9pOfC9E Xf+Y6P0R+C+74Mkc/y+5P6cP/staUKk4Hj7x4kFUUAiQEdyD8PANWgpchqkbGiqZ s2NPitEpRtG33Gt6FUgijHIfNFHFaU4DWO6yuZyO9IaLTt19/9ouJP0Lqx4SGv15 UKaKjnbp6mEbkpxzfrGG8VvOCBec2Rh1H7c33tMevKdpJ1eapCQYDhnQUauuz0pq XWQWZCtKx8b8xYXLU25PqQpmjFxNZiFeIugn6B8T51MTLgC/xgWO1DewUq9dXo1a nZcWXA== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bp931kqkm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 15 Jan 2026 07:29:14 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-88a366fa140so21789996d6.1 for ; Wed, 14 Jan 2026 23:29:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768462153; x=1769066953; 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=8vpj08mJ5C/IUKaBXReHEtx5aeFlsT0McmKWTl0bc1g=; b=KGKdxAx3v23gQMwYBm4JmTvY/g/dpR9EUN3DQUJduU0pX7kwjsIY8F779REz0VeeXK Y+Sbt86UsmttHZ6fwrsicuTcY7jx3OyGDLj9cEuNptTNDkcp1A+O/UIfKu/3CaTmW3CC 14lVfs4bMRv6pOdAzXKGzVlmnCFHcqKGQtTyz3pY7d2j4dOXmcA5BtflRc0MKSdCX3nM tdUZu6darsYhTofS39BzDPsn3qe+3BganYeBC91nkjFvTIiZssi/oSFDtihT/HTvv/cK fUDNoyMlic/8Wkmc/rwajg8UnMyE0bz7tHsbo8970l4A/hFgipuVNPCYXmR3D4rS1KjU vBJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768462153; x=1769066953; 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=8vpj08mJ5C/IUKaBXReHEtx5aeFlsT0McmKWTl0bc1g=; b=Tp7DvjdsfqEVRV0sXEiwX0xTiNs5mEx/J4Xl+UU3/sk3lSF8jW4/xyP7Q5kj9AA0Al j6QxGTTOxOwWMsHaqqqSWywIO4icPv6DfZglOfZtLwjqd3hoijmvc5SWSijc94Ytrtyk zNkHkDzH4rruBwP9jtPBhCEd866s8cMldoP/0iGgpUnK/Q2gh+EXRRUCfsBozbawqvhx zGlKjo74/jmles3em8m8P5TKWWMdfGb+yfpah0kqetzSQCa7A78sq4hLfVFgg5aqJmjT gLDSt4IzTAQWOShSYNQisMR+W1K//KLNN2gIyvCWWcK+arzKja1tocTDlCT699JvWC1W Zqog== X-Forwarded-Encrypted: i=1; AJvYcCV4SAjXg+e6ajlmWUMTMr52is/dD56hfe85nHNWnPavc+yt7UeDaBny60pNGpyJGUjCvzfSFW14vR2urD8=@vger.kernel.org X-Gm-Message-State: AOJu0YyB80DNcuIgTXZFRI9mIxR+uURjHn92v+Q5zKRTtx3qY1PjPEa1 EIZT4HJ78xpym5z775K84r3dz2CQGanAE15O1JvgbVRwNoDZcbPx6OyE9MEK6Cfg0RPTdGOzYXA j8USpe5083/EvO8V1KH+1y8M5LolGYVIajmjQ0yHuDiNTycXtFS6qfkCDwyS9iRZVqvI= X-Gm-Gg: AY/fxX6y4bcgWVLoUVBTfrgD1+hEghkUAo/oKRcoV1+SPzo04mlkBoQcEdG57Cttiwy gGvP7DSXzZ0HnNV6iOoOWJq2nAbwuHMWVafh84UMXiJK1wM5FhCHh0NqM7rD/2DfiQrcNeYZpbC KIFA5dHoUtKsCHwv33454BRatlXdH4/eucF1X+/IoVkR/658uO776rnAJpH1v1GLZMmR/VN6/Iy HqI8vO9TPqfQUnKUHUDnw7KDMo55UoDlZVqmzPgkiiEkwkLzd8iRdU+AGcW+EQtNv7MdAFHfr4e DPknbwljhdn3KP1E3/0LpMVbcgOGApH7qI9G8SB/LQuDfyKlSHDHrdg5UBQZmZiVd/D27rnVXUP E+SEFYnQwL9Jc7pBrdi+pKPjXK3zzTeRTHV/LIE6ceVslf3C9ivrW/U74c8jOYlXIeFvS+LlchR MxG+JpiOdr+DFs52DtrJ2ow6s= X-Received: by 2002:a05:620a:294e:b0:8b2:6eba:c42a with SMTP id af79cd13be357-8c52fbbee3bmr739900685a.61.1768462153293; Wed, 14 Jan 2026 23:29:13 -0800 (PST) X-Received: by 2002:a05:620a:294e:b0:8b2:6eba:c42a with SMTP id af79cd13be357-8c52fbbee3bmr739898485a.61.1768462152871; Wed, 14 Jan 2026 23:29:12 -0800 (PST) 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 38308e7fff4ca-382eb7b1a4dsm58078801fa.17.2026.01.14.23.29.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jan 2026 23:29:12 -0800 (PST) From: Dmitry Baryshkov Date: Thu, 15 Jan 2026 09:29:06 +0200 Subject: [PATCH v3 1/8] drm/msm/dp: fix HPD state status bit shift value 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: <20260115-hpd-refactor-v3-1-08e2f3bcd2e0@oss.qualcomm.com> References: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> In-Reply-To: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Jessica Zhang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1209; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=hzwfWK5+EPLPBOMgkg/4Azem10iuzkilPWoxif3rO60=; b=kA0DAAoBizyKPgIpKNUByyZiAGlol0OgRxZ1MBFNp0tkki7+qUT/NIE7YGEFzQfNJAcdZ69bi YkBMwQAAQoAHRYhBExwhJVcsmNW8LiVf4s8ij4CKSjVBQJpaJdDAAoJEIs8ij4CKSjVhioH/13E FHzJE52YmAQhFdyvBSMPAFtSVssioEXr3PXm8t4IcDujo+95BTt4RPx4/7yzj54pddcI/MM1Gq+ d6nwzkrWyio/F3OYxfwJQKr2tj6D5tMY7NPdi3/LAJYFmjs48i8lee27y5+6MKgcqjSe0LtkwvV G6p4AH8Cbrv3hcf2M9trNwSVgAwcxNpWIpD+ejGYV6kYIdig448hT6G4wJR5QW9txrADi8nfk8M ABr4khelULaQ57GFxVGGwYyz5iHpcuJQkUtEByILkOVFgnC9otGU7KZ+i7uPDd2Vl/2nez0gPXC 1POFbvmkzvr/gJMNN2rqQaYba/jgW21luZtkPzY= X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=BOW+bVQG c=1 sm=1 tr=0 ts=6968974a cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=IBRk8GtBIsankUNt0b0A:9 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS:22 X-Proofpoint-ORIG-GUID: em3lXXIZydYMlBKF-BkkpoVC5t_290OF X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE1MDA0OSBTYWx0ZWRfX+T4JLBw/WQOB u3Pj/VyF3jMdkyvEaPB1/yoolSTdOYsbyjSmUzCwXgiIO0AWizpGUTGXeHLFJ7/sYxe3Gk8loyM QLv6eZNbVouAjGYscGgQJJAHufZy/emckFCQzoqLJahY0JuVqtv1zTmHXHNf+ccCwCnxiMcbdyq H1Bo3UFeTggDiq6NcJU250twum2d7AHlq2fziOibjcvrRI+CBZQzNpfNdwTVA4g00HlOdu4ra8f N1mbMJd3JEBqdsloMjZre/yWoU8JgU0PRfmxnWDgVJbaIr8Recwkwuor+00lcX+/XH4L6PHDFRv YiqycULC5Ucu1O1UOEU336GECcwZm7ThTwY6hQuKJV76E+h9eeMSvf2SLaNOL+YCarM/ZStY9au AHa4FY4j/Af/ZxB2bswf+6hsuVZB2akypd+FleROAXngCEwH1xscPnrw99gaTe7rg4iUMpz/lup xP+I5odkySzQrEp5Rwg== X-Proofpoint-GUID: em3lXXIZydYMlBKF-BkkpoVC5t_290OF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-15_02,2026-01-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 adultscore=0 lowpriorityscore=0 phishscore=0 impostorscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601150049 From: Jessica Zhang The HPD state status is the 3 most significant bits, not 4 bits of the HPD_INT_STATUS register. Fix the bit shift macro so that the correct bits are returned in msm_dp_aux_is_link_connected(). Fixes: 19e52bcb27c2 ("drm/msm/dp: return correct connection status after su= spend") Signed-off-by: Jessica Zhang Signed-off-by: Dmitry Baryshkov Reviewed-by: Konrad Dybcio --- drivers/gpu/drm/msm/dp/dp_reg.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_reg.h b/drivers/gpu/drm/msm/dp/dp_re= g.h index 7c44d4e2cf13..3689642b7fc0 100644 --- a/drivers/gpu/drm/msm/dp/dp_reg.h +++ b/drivers/gpu/drm/msm/dp/dp_reg.h @@ -68,8 +68,8 @@ #define DP_DP_IRQ_HPD_INT_ACK (0x00000002) #define DP_DP_HPD_REPLUG_INT_ACK (0x00000004) #define DP_DP_HPD_UNPLUG_INT_ACK (0x00000008) -#define DP_DP_HPD_STATE_STATUS_BITS_MASK (0x0000000F) -#define DP_DP_HPD_STATE_STATUS_BITS_SHIFT (0x1C) +#define DP_DP_HPD_STATE_STATUS_BITS_MASK (0x00000007) +#define DP_DP_HPD_STATE_STATUS_BITS_SHIFT (0x1D) =20 #define REG_DP_DP_HPD_INT_MASK (0x0000000C) #define DP_DP_HPD_PLUG_INT_MASK (0x00000001) --=20 2.47.3 From nobody Sat Feb 7 06:13:48 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 9BB483346BE for ; Thu, 15 Jan 2026 07:29:18 +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=1768462160; cv=none; b=QtwOjqJXwjb07eTJI6GB07SFhHkj6D+dbkO04IFG7mAP3ihl3Lm5z0tubFcyJsYNVZtH4oO/Eo6smm7uaa4HGM4BtSN6dAv+VxK4N4giMS5WS+GloqqTo4zlZhi4FIbfRGxbaF8Dgsf+JBR70O5BHfXNny8YLBXo3BPMQ/0aTgQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768462160; c=relaxed/simple; bh=hvUV50vOotIGhGSbBe1rDn0cVLNRTXQOwNKUgE/1HFM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UzHrGEhyNr1bqetwDhbFwFVhCB2O3vMfB8F5USwk1fcG42TXFEceWdhP4lk+DsgypBvnp+mNFskaEn0b+5zEW/5uJKKhuCyjErSgef/UE/gFREMlZc4Lnbwwyl0sr0bWVawhSIpiACSmz9Tmw/Bma5M5WRRZi3q++UudbrX0HDc= 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=JWdUkPAy; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=iSK1tCQg; 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="JWdUkPAy"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="iSK1tCQg" 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 60F6g9Ri1056300 for ; Thu, 15 Jan 2026 07:29:17 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= Ih7YS3OMF9nyIk8eRvbGlEtAYQc1C2qkylBgX1JHA3o=; b=JWdUkPAya1vw6Ha6 tuxrqztRlb6d6UPyODapJfG/4WFlSfGPsR6gSeulBEi/WwOId5W8QatoqT95S+xd FXsf7amXdK39OohD1QSrT6EF0M3ZSSg3LNewn8X1LHRDYaYrYtUYikWLZ0hTmpFy 4kqCgTbms4j4NVu/Zkzqk1Ni+m03B2euUAd5javLeczQqsTpOpwvtb4KkLxlEzQR 9o1gNhVNk702OwdiIyjnTSgjtWw0cbOhkwPu3Ee978t7SiyUhp0K+Gld3BoPCMst /xx4G1xVquVji89u2E0vO/MFPkSMXPC5/awTr7THJK85hbpDzkSF9JV4aWGNkB8W vYcalw== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bp8d33reu-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 15 Jan 2026 07:29:17 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8c6a0ec2496so56821385a.1 for ; Wed, 14 Jan 2026 23:29:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768462157; x=1769066957; 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=Ih7YS3OMF9nyIk8eRvbGlEtAYQc1C2qkylBgX1JHA3o=; b=iSK1tCQg/6axGDmtJC8g3wHOhRqDSO4rFnF8ogQqK3ZzF/I6s1Hl2RptetG4H2ip/i kZJPsjH6CFtTWfEUTHLbwKk5nn6BcpGF1OMfEMfAhA96NWWrdekVg9Z+bnqWd/wqtoZE M9mgrpZiTnpmsnkOB+uYuSoRUjDQsqc1ot1B5VUZWu0QfVOA2M8v90Bs6DufN7eTGiDd 1F+hpYBR5EBrGnPqoamNR4r/XjbTbcV3L3veGq8HVcrI+/Ig/zVjbhHP4n4AMusx9Skb As07OIlz7HqtDvNGKTiJYmk7562Ly4CPWtVr5/lxJ1V2xs0meJ4xwAQCWaMF8i/YfH+U SHSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768462157; x=1769066957; 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=Ih7YS3OMF9nyIk8eRvbGlEtAYQc1C2qkylBgX1JHA3o=; b=uIAX/Lk3e22qOicFwY3CATTc1GNJEPjTbKNXS9iMKAol8ySE/x9RJiWYHpIm/Vbpfj 9KELiYsnRHvWTMymNuS9oiX1l87EDxrs2niqIasKSUVsep6WHb87hugwmzNLMwKMjUdo dKK1uCJ/s12isM6Ui0It5SK6naBym8ZX817nPZRjzXCyvcbaF4Lh4AEM0bZreEDbuXPt yCKeIiByfYsgYB/dcfLr4wgVX6Zyd50+9NSJ0Oh74Of2ZuT1hMLHsEqa5ZwDRDECovTA 8MV277GST32NRkSU+PY7u3FkhmOLH2sa/djbBJWwo9zmtlF2ywDPpifq8Wv1n6up1xQ0 VLGQ== X-Forwarded-Encrypted: i=1; AJvYcCVP+kQYD5P9veqvpTMjqR7l48hCgjH6cZdHPjf5FQP0YDw1adcXkjuDTJsHJMshSbtiqoT5Ggu9U49NUFE=@vger.kernel.org X-Gm-Message-State: AOJu0YxIzw2eaLB+IwhMCuN3XoQkwir7lceQJ5yJUbPDOjrm0jAHRglz excZgCmxvagtGDQfqQJTZfkBqLpfN0Oo3w1nAdsvFViqsgvB1Pk6+6xRIDPi13CXsqV7Ksay4C1 efp6MFWhI7Ishbm6AIBKqr0z3ogLmWHcE6tBEBOCEmQjt3cerH/3TwHrp0NJLSSB8SBs= X-Gm-Gg: AY/fxX5DYeSNfl2SQ0yMLh0JL5FJh7bf23tk7+Kh0KhAzBsuq5/4n0dLQRe95h73OK2 BPmBg8x2Wbv1mMmGNWgTtrmknOiuDsPyaPhQyidsbKJvr7XplJ0owKwmHuhRozhi+4LoNrUAX6e xrYyXDvQX3WbuoJD83foW/yhhMkrYEMzAmo74UfDN8/ZH0IfirwJZIkZvWdr7dPsNXYvgIeaEBZ J9Qs3ClKj9VViRNhVLd7zggpma7VdfY24pv+WOoD731IqIrb5AaxztesnxBFU+fyYNcWyntwmCS qcNXBLdRHiDC9vXA7VodNjBNG2pVRNPvt14b4c8dsSXMlqoOYGqjYzb5gvHJX2cFtNl4I2Kr7ok M8+/rX/VeJNt8ikzOVI0LGTjXPUDSXHohQ0dMuGAYl4+uVDvnB26jsRihPO2sNut5klR/N3thg+ x6LhK8mmZQvvWWRWrBDXn5k50= X-Received: by 2002:a05:620a:3724:b0:8c5:2f89:6904 with SMTP id af79cd13be357-8c52fbdcde9mr656948585a.45.1768462156817; Wed, 14 Jan 2026 23:29:16 -0800 (PST) X-Received: by 2002:a05:620a:3724:b0:8c5:2f89:6904 with SMTP id af79cd13be357-8c52fbdcde9mr656946085a.45.1768462156353; Wed, 14 Jan 2026 23:29:16 -0800 (PST) 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 38308e7fff4ca-382eb7b1a4dsm58078801fa.17.2026.01.14.23.29.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jan 2026 23:29:14 -0800 (PST) From: Dmitry Baryshkov Date: Thu, 15 Jan 2026 09:29:07 +0200 Subject: [PATCH v3 2/8] drm/msm/dp: Fix the ISR_* enum values 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: <20260115-hpd-refactor-v3-2-08e2f3bcd2e0@oss.qualcomm.com> References: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> In-Reply-To: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Jessica Zhang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1093; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=Ww/3qknDh3ls3uKJd9KJ6MipP3FzUf7GXLi0EYvbbNM=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpaJdD8iaVfqQctF1fuYMmitxW2AoGGVd+jarYM 1Fc+aQwmJCJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaWiXQwAKCRCLPIo+Aiko 1RfXB/44P3jjfjIOIC2l0lP7Ir9d1o7Aixod0q7u6GLW2lFftilClKP7EunTO8cq+IgD3nTQoED XV+1shE9OCnUlvjQq2UFbAgh0AcfRQfTG2Y6ubtE2vu9Hl25KyfOLUuy+h9kPHcHC0d5jDuxMWi E4LdltEClbLp/C8+TGTVB953f653Aag/iSvoXlR7IzS2b9SCUECWHRptR0AXXuTztCnMRjJPAJB S1TsGwMhl5sTTae8WVxKHrTcvv93akl9G0vMgDcZ6FBDtTdnZx047GjVgy/K5AzWnTKlJgU1r0c 1HD89JZ+9p+z3Nqe/P1ckmPFpMj87sTH26EtwBFAta3m/Mmh X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: BhbKv4H__IlWNcvFdcgi5Wzc1nUZ-GdD X-Authority-Analysis: v=2.4 cv=fbWgCkQF c=1 sm=1 tr=0 ts=6968974d cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=aneus3DpQx8xEqIVSrsA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-ORIG-GUID: BhbKv4H__IlWNcvFdcgi5Wzc1nUZ-GdD X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE1MDA0OSBTYWx0ZWRfX++lfSMYisVR8 /SRvcF+GZodI9X1YfXMjxo9RulDC9gV7bkptzXQ4pk9pF7MeFinKukaLCH4jtkOz5zR8Kfp7FsJ X0g2IlvgvuESDHzZJBro9inJyp9M9LySw0Xm9+bJTyUaOcY5ghWr1UAYTf4wBuATJXEne+Y6VBM kyCd0bDRWbDLniGB5XFeWZ4xYvZKQTJGaIuZlxm07fb/AQuTG9ityTJe6jtZsD7/+sSAyIz3kMn wBiCrVzT+uEeU/970Gd9zyc1y3C0+NTTE9xGVXEZA8qhg7+M60j6tVs1HKaORlhp6eq7Kq4WZqh ud91vbmIJGmhhieXgj698cqOsgdZUv2sZdVtHplqQ2OngWvfwaaL+4s04yHoNYt0gy0ell0vDza XRkA2tkXySyYJSowjoA66iamKtYNu8VDgfkRkl+o22wQ1/XuhnJ5joiZhIM+lGnEFFs4V/gM5Qa z3/S3p7lByHDFW6688w== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-15_02,2026-01-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 impostorscore=0 phishscore=0 priorityscore=1501 adultscore=0 clxscore=1015 malwarescore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601150049 From: Jessica Zhang The ISR_HPD_* enum should represent values that can be read from the REG_DP_DP_HPD_INT_STATUS register. Swap ISR_HPD_IO_GLITCH_COUNT and ISR_HPD_REPLUG_COUNT to map them correctly to register values. While we are at it, correct the spelling for ISR_HPD_REPLUG_COUNT. Fixes: 8ede2ecc3e5e ("drm/msm/dp: Add DP compliance tests on Snapdragon Chi= psets") Signed-off-by: Jessica Zhang Signed-off-by: Dmitry Baryshkov Reviewed-by: Konrad Dybcio --- drivers/gpu/drm/msm/dp/dp_display.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 476848bf8cd1..5997cd28ba11 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -38,9 +38,9 @@ enum { ISR_DISCONNECTED, ISR_CONNECT_PENDING, ISR_CONNECTED, - ISR_HPD_REPLUG_COUNT, + ISR_HPD_IO_GLITCH_COUNT, ISR_IRQ_HPD_PULSE_COUNT, - ISR_HPD_LO_GLITH_COUNT, + ISR_HPD_REPLUG_COUNT, }; =20 /* event thread connection state */ --=20 2.47.3 From nobody Sat Feb 7 06:13:48 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 A6AF833508F for ; Thu, 15 Jan 2026 07:29:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768462161; cv=none; b=MwiMO4NJKKSQN/BEc8PhnIMeSj/jjBl+xYawE/PPTSZVxQanmHY2YgWHIHcrZzbesD9LwU1v92iArDkPOgMKy776hv7A2XwU9Olu7rHuiORQSFNZ4JPKoK1cxto88K8glLvSEkmW8Z0OHzuv0wHf0zi5h1yudDeq233OnivIlLI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768462161; c=relaxed/simple; bh=OWRdOQlqAgZDHEFjFECShBR1RF+bUr9ZLUwiZwlLTKQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ubAs6LpGTHAj3XpI0ztpr7uTpsubMAU+ZirsedQyiRApPrG/P1c3pzkJNWRu3MKJShLI8GxdxyH2/cvW6CRA5q1VzLzNtnioAqaZtmfxXXri5ouwJV8eI3xwo0jEJdG5Yicp2JN6G+bJsRATthR42hGlCucqCBnLRtZGPqp+dYg= 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=QChqDDhQ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=WwOS89AQ; 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="QChqDDhQ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="WwOS89AQ" 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 60F6feDX1744826 for ; Thu, 15 Jan 2026 07:29:18 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= SKcwhb+xWTwW8lIkUoC+RbFacXz+V1PCsboLX21gXQg=; b=QChqDDhQ+ZNKSQ2t 6udelvrDHnhlqimBU5vWWtvyf3amZGORYl/j2Q/q4I8DPn6QV2BvR+c0QJ8f+xl+ V+tqumiqLbzUF0EuYX2c9v/0+V75JXOvILK7PrHfIryNgNNJxylejL+WIxNK3c8c eIUTJEAvKgRPF8PRrBRKijr779OtcnvK1aEGho//BLHJpy9h5U/PIb+AgpR4rrsj v/k2N23VVMu0iEzdZVpNo0/N3QCdxiCpS9Q0sp+1uWrgLZhOay6X2kXaXGfVQsGb ye7jh9hTHvBeTpAlAKC4cT46SlsY66U1ZjoUt84N303/t58ymB5eOzwV2gUyPGGD VG0zKQ== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bptu2g68y-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 15 Jan 2026 07:29:18 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-8c52c921886so81678185a.2 for ; Wed, 14 Jan 2026 23:29:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768462158; x=1769066958; 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=SKcwhb+xWTwW8lIkUoC+RbFacXz+V1PCsboLX21gXQg=; b=WwOS89AQWd/fXTQQTrJWVgsOnaYaIag55nKPjT99q7EKus1qGA1RK+6CtipzhCgnYW ACP9yFamJngOi42cE2RaciEuBz51fJXM80aq+pts1H0a7lMoS/0NVHGZnbw5qqhir/Ub 9ddhRw7NMMaKp5//tuTx6Yvf9Gk2L2zReWQ69XWeqL1cfaQ7GzrXqj9lKHaxsh0uRzf4 dA/nrYNFmFpYxKBWPtOay8sl53P6hD4wlk3gYXrfa1Q/jMQgDpOjwvWc3WFSBcfHust8 cePng9wybv3YhcTHLxnpOTlEm6yf3oqNZgx6AsZX2Tc3kO6qi2FM+Z2Y1ruJzz5Khb9a n5Mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768462158; x=1769066958; 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=SKcwhb+xWTwW8lIkUoC+RbFacXz+V1PCsboLX21gXQg=; b=KadeSqgWuXe+cU8xp08mDWREtlveR4f6MgXSaUYQQqBgcgjoFzvZ/RuUl/6KnlgYFt NKSs0ENWNO3pQg0btnjqNp/vZlGK9M1r86xF9O9q80d/9H4G4AWTiAj4uFgA+BOiqk91 yhdoo57VyYEQD5km5kPM+GouVvugsZn/mei7zWnl6ntUz/7kXt0K3IeN1COaCJceb8wv pEIlI+CDlOEC+83zc3+o+sPQ1ck/RV3ETqNQ8/fZSTvSxVSN+lxq4PBfqHEaCwpGVqv2 fWRAAj1UnD0E2LLKxcJwIwiGrMEfqFwFh4TzXgw9YOWTybUI0Ia2Q+7cwpFMQw9+T0QZ S1Iw== X-Forwarded-Encrypted: i=1; AJvYcCWgNcnbcji3+ydVKbo+mP5k+29lG6U3FPST/8J/+Dios7K25/yYk6/l08EnxGEpJNpGFKc5dT8u6Y2U5fk=@vger.kernel.org X-Gm-Message-State: AOJu0YzqMe6kg/hFOktUHI+SDWh+KZojPSj6MDy8nEYXNrvXMOGI3jms Fsu7B7irj9F++lEqmvbr5VJYyE9xKCmfnk6sImR7xn2IlfxQQZuHMggG4vNPTJrDa2kIly+UWyz 8C5+vNKz9rYTITqLcH2GAnwpX/00zGHIjigKfAycqTxO7w8njiHGjnQ8Othw3/yHS4uo= X-Gm-Gg: AY/fxX6xVv9pKQ/IGe56abZFJc1Px4aiNn3due4WbKSIYdZ1i4jztA9eEe3YAqW9pFf QK53g0E+6iF5UJfIMAj+mPqEVFvRL62GDOS4xT/PnBiMDtLcM1VtCgs6giPCsjftVvpAQHbtXj9 m90JECPAWQQIe0dtx0Ndt6dRMRBYqLt6bqkzBVxHJ2sqD+zaCUobyKCQKrDeOpRsabQE9wj4DeB zM6zmA+Hns9rK6sOEbCkpl56kX5Vtl0Tf/uxuuKyIIp2X7eY65mNqTkBv7+zptO6xWTmv25fQ3R BZUXqP97cMSulA2Cd8unVh16ZzVFRIC2SRG4NPAbg799RBPWRZaiK7bPCgWFb/2VdViBiYIEEeT iwAtOl951LhmuXC119ktrAQicJvuRaCNRYJ86XRGQCLSDrfMQoGDmvI+Rp+Z19SNq2asgAOvASE LkKkdlS8BVkk153hx1aXKd/bA= X-Received: by 2002:a05:620a:1aa0:b0:8c5:391f:1dc8 with SMTP id af79cd13be357-8c5391f20c9mr360110785a.8.1768462157988; Wed, 14 Jan 2026 23:29:17 -0800 (PST) X-Received: by 2002:a05:620a:1aa0:b0:8c5:391f:1dc8 with SMTP id af79cd13be357-8c5391f20c9mr360107185a.8.1768462157456; Wed, 14 Jan 2026 23:29:17 -0800 (PST) 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 38308e7fff4ca-382eb7b1a4dsm58078801fa.17.2026.01.14.23.29.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jan 2026 23:29:16 -0800 (PST) From: Dmitry Baryshkov Date: Thu, 15 Jan 2026 09:29:08 +0200 Subject: [PATCH v3 3/8] drm/msm/dp: Read DPCD and sink count in bridge detect() 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: <20260115-hpd-refactor-v3-3-08e2f3bcd2e0@oss.qualcomm.com> References: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> In-Reply-To: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Jessica Zhang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4422; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=Fflo70A3oSMP6LkHXNPuDEYg6XV8ot0GBkcmgzq2Sd4=; b=kA0DAAoBizyKPgIpKNUByyZiAGlol0OivLl6on31pVXR7v4POr3PP4wwtB7kPm4JaLlWM899d YkBMwQAAQoAHRYhBExwhJVcsmNW8LiVf4s8ij4CKSjVBQJpaJdDAAoJEIs8ij4CKSjVAv8H/RxK 4vcM55F3t2HfQGy/N9jSrzxJoUl2O/G09gBg5g/vA77U5dkM30CVBMwMdMrDhVJ4XE7Lrm4nHm1 WOS6FAL+uJ9sgIIGruel9b2rVZAFd5xP4Pu0obH9qT4r7bBVIIwaZPeC2H4If3AQjvk1tuibe3i qA80BEyM2GpVKZlEjH5lboDiXVADopIFcJXmSJSmcwdOFCHto2CdoATvmNwsGe/YhyAMrdSGh/5 zGFuSE31wBa/3MiMbjLO/QEpOWrvassaGnhYYPciDu3hNz7B9LL1PStJpvapQacW7TO6FCTd5Fm 1S3hZzUL5iTkrNOMfaygYTc5ykwuwrRJAO7nPQQ= X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE1MDA0OSBTYWx0ZWRfX2++Rp8zq+12s i/wvywHtlN3exKJ5M8fWizVR4AlRF/YFHFos89i9992Kcs5JxY7UjgAxqy7+AIwyd9wDxHSCUAc 8sYKUjDTt6A7fcFKI1lyxSaZWUqC6XzAN2B+W6iG+y0R/N/NWMntwPpKbjj3TqKiZxjoU2c9wJp ey2fBlU0LqKLawkidNj/4U+QaAC6jbsor0kkP1Hrp+DzH162RPgGXMmjfYuZeYHtgb8UR18oSVP wu3KLOCTjh0TubbCkypZgOGQC+YZgH9eihhQbNBAy0CyWbKAKI5wXZnhQF8PD5dC5Af4n6nfEUF E5INodARdoW5mgQ/IH7VHnI6IyQ92ja7Br8pjAbdJIFwPttuUDYXT+BlY3yiIrcvWOHlIIzWFWN Anx2stQcD+01WpqKSRBXRP0Vf8R3MvwvThSSghI0pBQhjbzuJnq20PCIX18IULzj1w4EBXbPtcm 2lpFTtvlP8zFpAfSdzg== X-Proofpoint-ORIG-GUID: rVR2qrOf61DIgjN7ELmkLL5hIphfSLVU X-Authority-Analysis: v=2.4 cv=W6Y1lBWk c=1 sm=1 tr=0 ts=6968974e cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=jcEwYMPARZwhhGfK5pwA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 X-Proofpoint-GUID: rVR2qrOf61DIgjN7ELmkLL5hIphfSLVU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-15_02,2026-01-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 malwarescore=0 clxscore=1015 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601150049 From: Jessica Zhang Instead of relying on the link_ready flag to specify if DP is connected, read the DPCD bits and get the sink count to accurately detect if DP is connected. Signed-off-by: Jessica Zhang Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_display.c | 60 +++++++++++++++++++++++++++++++++= ++++ drivers/gpu/drm/msm/dp/dp_drm.c | 20 ------------- drivers/gpu/drm/msm/dp/dp_drm.h | 2 ++ 3 files changed, 62 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 5997cd28ba11..a05144de3b93 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1151,6 +1151,66 @@ static int msm_dp_hpd_event_thread_start(struct msm_= dp_display_private *msm_dp_p return 0; } =20 +/** + * msm_dp_bridge_detect - callback to determine if connector is connected + * @bridge: Pointer to drm bridge structure + * @connector: Pointer to drm connector structure + * Returns: Bridge's 'is connected' status + */ +enum drm_connector_status msm_dp_bridge_detect(struct drm_bridge *bridge, + struct drm_connector *connector) +{ + struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(bridge); + struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; + struct msm_dp_display_private *priv; + int ret =3D 0; + int status =3D connector_status_disconnected; + u8 dpcd[DP_RECEIVER_CAP_SIZE]; + struct drm_dp_desc desc; + + dp =3D to_dp_bridge(bridge)->msm_dp_display; + + priv =3D container_of(dp, struct msm_dp_display_private, msm_dp_display); + + if (!dp->link_ready) + return status; + + msm_dp_aux_enable_xfers(priv->aux, true); + + ret =3D pm_runtime_resume_and_get(&dp->pdev->dev); + if (ret) { + DRM_ERROR("failed to pm_runtime_resume\n"); + msm_dp_aux_enable_xfers(priv->aux, false); + return status; + } + + ret =3D msm_dp_aux_is_link_connected(priv->aux); + if (dp->internal_hpd && !ret) + goto end; + + ret =3D drm_dp_read_dpcd_caps(priv->aux, dpcd); + if (ret) + goto end; + + ret =3D drm_dp_read_desc(priv->aux, &desc, drm_dp_is_branch(dpcd)); + if (ret) + goto end; + + status =3D connector_status_connected; + if (drm_dp_read_sink_count_cap(connector, dpcd, &desc)) { + int sink_count =3D drm_dp_read_sink_count(priv->aux); + + drm_dbg_dp(dp->drm_dev, "sink_count =3D %d\n", sink_count); + + if (sink_count <=3D 0) + status =3D connector_status_disconnected; + } + +end: + pm_runtime_put_sync(&dp->pdev->dev); + return status; +} + static irqreturn_t msm_dp_display_irq_handler(int irq, void *dev_id) { struct msm_dp_display_private *dp =3D dev_id; diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_dr= m.c index fd6443d2b6ce..e4622c85fb66 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.c +++ b/drivers/gpu/drm/msm/dp/dp_drm.c @@ -15,26 +15,6 @@ #include "dp_audio.h" #include "dp_drm.h" =20 -/** - * msm_dp_bridge_detect - callback to determine if connector is connected - * @bridge: Pointer to drm bridge structure - * @connector: Pointer to drm connector structure - * Returns: Bridge's 'is connected' status - */ -static enum drm_connector_status -msm_dp_bridge_detect(struct drm_bridge *bridge, struct drm_connector *conn= ector) -{ - struct msm_dp *dp; - - dp =3D to_dp_bridge(bridge)->msm_dp_display; - - drm_dbg_dp(dp->drm_dev, "link_ready =3D %s\n", - str_true_false(dp->link_ready)); - - return (dp->link_ready) ? connector_status_connected : - connector_status_disconnected; -} - static int msm_dp_bridge_atomic_check(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, diff --git a/drivers/gpu/drm/msm/dp/dp_drm.h b/drivers/gpu/drm/msm/dp/dp_dr= m.h index 9eb3431dd93a..6c0426803d78 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.h +++ b/drivers/gpu/drm/msm/dp/dp_drm.h @@ -25,6 +25,8 @@ int msm_dp_bridge_init(struct msm_dp *msm_dp_display, str= uct drm_device *dev, struct drm_encoder *encoder, bool yuv_supported); =20 +enum drm_connector_status msm_dp_bridge_detect(struct drm_bridge *bridge, + struct drm_connector *connector); void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge, struct drm_atomic_state *state); void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, --=20 2.47.3 From nobody Sat Feb 7 06:13:48 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 03B9F337B90 for ; Thu, 15 Jan 2026 07:29:21 +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=1768462163; cv=none; b=s9shUNONng/aNAnmDhXYdRDt2+HnDhMxq7mT+XGAlc+xbgomeTTHBxIXRmxVcbedx0jDpmbDoy0q/9tngiPXtJT/xwcqFPxV7XLqVo84lz4+H8O86NPKOndtVefPcJyElpCJ/e38YKHyxwajitz/ik+GqA3Oaj7DPqV+cehZnU4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768462163; c=relaxed/simple; bh=ZjWLusAXQPJ7v9+v28KuLZZCzaVCbS6UYjQtn7uXpog=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=F6x3qy1As8yTfgW1aaawWgXaLAx4bn9V23XVQjySkxGl09Ccdc+ZXgnnrZJrYK0xlaI4qGoju0juCwjHz78V/5RkmNBKNqi4M+ZlnxdvRdv0xfSd+/RuJCcpThKLXKff3z3+0az6UqwiO7pjYlpAzvxAyVEsKlFA0qKiU2/WzJg= 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=XbrCK9ZV; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hI67oZSS; 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="XbrCK9ZV"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hI67oZSS" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60F6fstl606557 for ; Thu, 15 Jan 2026 07:29:21 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= siUNwN2ezIf7yDdSsNDGD6Hi+7u+fzy7u1ZpsJKkyqI=; b=XbrCK9ZVG6sPso6b podLlHPXhlYsskfIWbGb88R2vd5i34c+U13kYGtKjECK1NXj5+Tidg8CyyIW+k16 yJLdnpYpoo+r+Bo+gfLagCIV/7GTjh3Ul0PBl4VICbbTUpOB7dDXHL4ONu2sMQzn NSt0KZNQZ+usczQ682TQf4C7+NOrJI2ucwou221+mVDRWxBJxp5AEb+sTDQo81zP x3yaWndkWenG9DMA0XDGFMHttnwxHYbUJgi/JPwArzZ0hf2O1uCH9HssdWO/OoVn aKeQ8ppktB+Ja+gnQzvTr4s0DxTM+UcwigqSxm5+Bq65BzmiWUX65ww9lL0NRSja YO1PAA== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bptna06sx-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 15 Jan 2026 07:29:20 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8c53919fbfcso175760885a.2 for ; Wed, 14 Jan 2026 23:29:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768462160; x=1769066960; 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=siUNwN2ezIf7yDdSsNDGD6Hi+7u+fzy7u1ZpsJKkyqI=; b=hI67oZSSqarM7OtFsL33NSRuxeMom+046+zx2LTUsARjzSEobcPR1iTPtYtgXVezrn 0ZsoDiUtDrBkunRxmRnNytTsY66OnivvRq6C+lZDO/jVvyhorS4ycxdc7+7KWmUohCkD 4cKTTXwOA8PGKWveGlZ8pvAU+5URSchiCrwM2DU6VEJPjnS63isoRZ1Isi8cX4UUCvJU so394nMpFb1qVp2+7XLlvNrsCABpP46nXAichYizdkiAptublCwdORsu8GaMhV9erhRm yuDBUfBakEZ13i00AD/qmqs9xq3qpmVNRu8BUg4R+q3DeP3vo2bqxOd44O6VjgYtMTRT BJEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768462160; x=1769066960; 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=siUNwN2ezIf7yDdSsNDGD6Hi+7u+fzy7u1ZpsJKkyqI=; b=sdn6o/XQsq/UBlLuS2JWakL+Q6n+tf3cdLzuBeMiMg+U6rH9dPxXFE5lYkArmU131F MMqor35jLcb6tlz51jAWydM+CEegxYKfXqdRfO3J/Whibk5cCbwuH6GMMUO5i4IC2RMq 2Aifx3O9syhQtwt3Otn+hbQO0ovtUlN8RMF7qM/1+8JOjQ83uQnpDCTgqWv1CNNf1YLX HMjXWnEUAGkCwHxNOuAegt4UOpYuFIYU7ZuNAn8hul7H1eXv1DS1KV5lPnqh9iZEVgfy jgzyuqy/wo+Crb4EM9XkQGeEXH7HLUT9q+TeLfzWe9y6KyHLP2xtvByGm8elgwiDOyqC 0k3w== X-Forwarded-Encrypted: i=1; AJvYcCVYYGcRfqCLdmaLEic21L+49aUvG1DtWIu/ah0jV3cJWaD7Tje40/hi/nPJz24DKPvHkfWY5QFLTzrxv9I=@vger.kernel.org X-Gm-Message-State: AOJu0YxH79uJJNZykPbaf4qN0DpBfQgFCEQPP9ZBLgSav5WrCPS1CfiS tbRujcy8h5Vz4jorzEiVXNmXX5cGs6Mm3MUUFp9InOEV4RgzZD3PziooamqBibmJ3MErdElXgXy 1NKMXn8K8F9xHusxxfJ7WF296ZnyllsIWXUwNxwCBMhxVKgA9b5r4AHOd759aLaSLiDk= X-Gm-Gg: AY/fxX544oJ0z3iZrohOEkwijHgJehjobB/NriuAntbCQ82ru1ChXrmshki4vZAG8V9 mpb70/4g1fJ4AoGUoFL8uiavjxgKICGIzvOPEBPbRtK3iDfjMRhSJdVeSkFcFigim4i0NbOP/mi q1sRbCU6kmodZNiLlC4x3GmGnNWQptCrH+Hr68iygrjXDqCfuIdWtMYPPkCV3fAwbP8bZ2cZHbN o3NU2OSKMvShvHVXURzTAMtiyJIY0+lNA/o4lVBD/xRwzBkvv7YlJ7r3LmZeFMmvjLkTYBHtJjg Sxan9Iav4n7lHglJK21h3Va9R2O3i8jiW+7R3WWJKIvC4shVk4fqkkHC5ABuTQ/FZETpcpuMWdc MtviT3VVNb7gHceJQHMyj6CAxgz/2dByZ/WHwud8fbaJhsfeW5UNgwAb/EaKNtLyt3zuH2vulLO s/kdI57mSQWr2g2awNnEUHNQI= X-Received: by 2002:a05:620a:2801:b0:8b2:e6b1:a9a6 with SMTP id af79cd13be357-8c53168e2e2mr697694285a.17.1768462160356; Wed, 14 Jan 2026 23:29:20 -0800 (PST) X-Received: by 2002:a05:620a:2801:b0:8b2:e6b1:a9a6 with SMTP id af79cd13be357-8c53168e2e2mr697691685a.17.1768462159882; Wed, 14 Jan 2026 23:29:19 -0800 (PST) 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 38308e7fff4ca-382eb7b1a4dsm58078801fa.17.2026.01.14.23.29.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jan 2026 23:29:19 -0800 (PST) From: Dmitry Baryshkov Date: Thu, 15 Jan 2026 09:29:09 +0200 Subject: [PATCH v3 4/8] drm/msm/dp: Move link training to atomic_enable() 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: <20260115-hpd-refactor-v3-4-08e2f3bcd2e0@oss.qualcomm.com> References: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> In-Reply-To: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Jessica Zhang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1742; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=A24Zcv2uqnzPLcAnjjMP6FyreuR3QcbbpXIfNz7XoM0=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ2bGdOfGXwslW28onuq5O5NRjC09bGp2/i5G1zm7wjUb5 fwPS1h2MhqzMDByMciKKbL4FLRMjdmUHPZhx9R6mEGsTCBTGLg4BWAiO8LY/3uaGXYzfmLf0nws K5VnybzAL9LMTSuvd9rpvD0p+MWzYHLlut85e67kh9SbzumxLDv8IDVPQzl7/mkLXqt/tpWrczX S1V/+/hmhVn5uUojZXP3sn2uZGB9I6qz3a+gxOm2xcV5wpnxo5scXiqdqrasLeHzTsxz2LnvVOf nC23MBO5d05SpyXJBX7DvPvy5+i5t7zIv8a8fMmXOnX7WYK9v6uuqFxzv/TM9fc2rC7k6szmi7z CCe8vnUydSa05LtbnnfzqfYTytbHKPx4754d9OBBfvk8v5zZld/3SwmZfP8QOnfsvBZZvxVTbGB M+Jvn+yL5jzqmmvfJhZ9oXnW+edcTc/zjn0/G/0ll70RAA== X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: T84Y-zkjAMULm7kfC3_ULfxMpzktC6YA X-Proofpoint-ORIG-GUID: T84Y-zkjAMULm7kfC3_ULfxMpzktC6YA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE1MDA0OSBTYWx0ZWRfX/YV/16Hiks4x gEtEwR+dZ1q1T0gzVYTRxkgznuJyJ1EgLGtILuVSzHJnELjlbeA3c0AfNl1D14wKGJxDEZ+/wuB Lrwk51nq4ZCev1dGBZuhpzCwRLLPT8+Pmyc6AXNC4tlHBVl5bUSpCaGyh6IjqbdNZijtV34vbsQ 9kCejroUDDe1FHYE0HCHNLILxaMFIDrSZ31e3j16ZiXIYWpUPcF9Y+ew+IOX5FiNzNgkKmTz7JE oLHUpg6XEEDpT/YacUtRRcPzlbwrd1zsSH4ksk1RMqRMB5kxr+MjG2t6QT3gssQhLIV97KZGdvr DBMM0YE4G6KLyKC9uYqXMlfatELe2cze7K1N1zCuDvdJ1vm9watktR4RDtMWmXEKNaNnyBSQEXq O/EuQlQSHloMo6JQ29ZOkewuzyRoxL+jydvEmSE1yUaXHI17NMSySBSF8KhUVplHSAtmjZk68wj +eFYwJnWg0Xbg7KGwUQ== X-Authority-Analysis: v=2.4 cv=fsHRpV4f c=1 sm=1 tr=0 ts=69689750 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=IoBVowuyLm_M3JZO-XQA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-15_02,2026-01-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 bulkscore=0 adultscore=0 spamscore=0 clxscore=1015 impostorscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601150049 From: Jessica Zhang Currently, the DP link training is being done during HPD. Move link training to atomic_enable() in accordance with the atomic_enable() documentation. Link disabling is already done in atomic_post_disable() (as part of the dp_ctrl_off_link_stream() helper). Finally, call the plug/unplug handlers directly in hpd_notify() instead of queueing them in the event thread so that they aren't preempted by other events. Signed-off-by: Jessica Zhang Signed-off-by: Dmitry Baryshkov Reviewed-by: Bjorn Andersson --- drivers/gpu/drm/msm/dp/dp_display.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index a05144de3b93..3184066adb15 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -436,11 +436,6 @@ static int msm_dp_display_process_hpd_high(struct msm_= dp_display_private *dp) msm_dp_link_psm_config(dp->link, &dp->panel->link_info, false); =20 msm_dp_link_reset_phy_params_vx_px(dp->link); - rc =3D msm_dp_ctrl_on_link(dp->ctrl); - if (rc) { - DRM_ERROR("failed to complete DP link training\n"); - goto end; - } =20 msm_dp_add_event(dp, EV_USER_NOTIFICATION, true, 0); =20 @@ -1695,6 +1690,12 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *= drm_bridge, force_link_train =3D true; } =20 + rc =3D msm_dp_ctrl_on_link(msm_dp_display->ctrl); + if (rc) { + DRM_ERROR("Failed link training (rc=3D%d)\n", rc); + drm_connector_set_link_status_property(dp->connector, DRM_LINK_STATUS_BA= D); + } + msm_dp_display_enable(msm_dp_display, force_link_train); =20 rc =3D msm_dp_display_post_enable(dp); --=20 2.47.3 From nobody Sat Feb 7 06:13:48 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 7A805330B2F for ; Thu, 15 Jan 2026 07:29:25 +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=1768462167; cv=none; b=Ir6Sswu9KNISJNYa3toouny+EX+ms82S4DRAClU8PbhOCONvydD7uxSMTeTnnOp/1K5oSDOn0NmMH9kRUAVv6wUT6uNAXQMyS0cogLxraJkG7Tmitahs2N7IVs+5qVfXA0+KMm2MM/GemB3KkJjkdcPBq4PE3d8dDWjCQkF+3vQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768462167; c=relaxed/simple; bh=fkLuhNQ1Vt8dWv6i9Z6C6J9iVHkfa49Wb/eiZ3Z5MVM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ItHAg7eU6/HW4o/UabTK2Rvi6VfP0uoVxlL4UPp+h4YmaO5ulZkLXF14ZiiSwtRDXApa+faNHFvnd6Kzsc0kGMLOfQNaZuBvKJ85K+EMgCaNpBag1nu5bYEFA6C9e/kScyt0exq0ScKClvnkumWkthMUS0xKRhu8Cu309mKdC8I= 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=NWyVbAjr; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RqY9E2vB; 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="NWyVbAjr"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RqY9E2vB" 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 60F6ffe01744856 for ; Thu, 15 Jan 2026 07:29:24 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= q5ndWq2+SOonrUyTb4YVdVJvwIrb9Y/Y+iuQpW2fdps=; b=NWyVbAjrtsNJCHmM mi6NeUKCKhMGnRMs/hTdVzKG7x0AU2LDKjbjnzyk+0vf6Pf/XOTBfie5fJ+9eOBC yDsJPjqwz1jQOeaPuugmb6N02SFsEFBsl+BVJxLhlXP0eXKyhq/DgNZS3TaqBbUN PCNL930ysdWtvKl3uP+fBMMqJdmGjk5CTDR3wr4ElQ5kOFNKAhalJaTpME4A9y5y ZCYjrckUhBhuzXzhJzkhAwDDxjU3cQpIaLSfx/lzmekrqT8yOE2o95lvNeshoEy9 8SZKx0IubjEIRzfFqTuT1rZBp9Sv89NmU0OQ62ncOZPOBGY9Y3t88KGrHa6LxciU jmj0LA== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bptu2g69s-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 15 Jan 2026 07:29:24 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8b2dbd36752so172231685a.0 for ; Wed, 14 Jan 2026 23:29:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768462164; x=1769066964; 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=q5ndWq2+SOonrUyTb4YVdVJvwIrb9Y/Y+iuQpW2fdps=; b=RqY9E2vBOrRMYTc+d28zcpbjDitM8ev854IR2jK7aI8zRBkboRmalSanlN5zwL0e4W R/nmTQxzUkLN37NGoXzP+WiLQx+IbDDvQ96by34YZwulXRyTb7IaQLjsotyl/cw/2KsI EJ1zNjdo+vgVocx4kTZHtGU2q9D6YxLPDAEmQmVm62Cv4dV/6TW4XZZ66vbX9mg3DBDi K/9u8AAcnWYXYKnYvBbQvx+F0fK0hRH8cqdyS5qd643W3qCltyvz16GDiWt6EJjILMuS ZldwPSHfT6QvdzNK02JsOSdDC3f29BCu0q3X9PB9leoVV1bFYgGfee3GaEt5uY3AWw4F a1oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768462164; x=1769066964; 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=q5ndWq2+SOonrUyTb4YVdVJvwIrb9Y/Y+iuQpW2fdps=; b=P19WEl5sQF7ULmKNcmnIQv0lIJ+ySG9X+HgQRTKuxRipqgDLjL34i6gP9XSZuqjpvN c++0qGiywtliCNRH7zEkL5ZaI2O/U0O97JuQQ+cMs7rcLeuRUqmmtMyDY6Q92l6XsjNN l+DuNc9ivDA6qKaIJ8OPLuoqLenfAQ7nLfC6NX7A1nmiJa4sC6+tcGIruif0L1VqYG2M u0qs/zJ/gTGze6cKfo2GE9j+HqSBMSUWWO9Rd3wXSwSIHidb4Gw3hVVI654d7QztfApq l1qPkSzlDeNpQ4GargavNvhwIisKDpU6+TYkQLAj5O8bVMa8cod7mSssP9quhY/mS/R9 YjTw== X-Forwarded-Encrypted: i=1; AJvYcCWuOQwBDC+KiWkBvoPLrkSwzwj6w3EcHZvQo7YDtJwDzmeLZkNY/aPQyEcxSP61kXqKNAV7ZrvD60IG5Yk=@vger.kernel.org X-Gm-Message-State: AOJu0YybpRhRjI8Uq7STDSGAdHghOvoFljPFKEECvWVZo2L334uo5RQj MlVkW7a/K7KePej1i/L8GB5P0bs19oVaEmp3p5Idf8Sady2wkt1gQ+ra5snf3fZGJ6bh1kcwbDt 0dblDd9h5yf6MrGhhAkxTHk2S/1zt1qujNUF7zdt38CpQrjX1fZzsFTHWx6ex6fZ8OCY= X-Gm-Gg: AY/fxX7WTyePWN9QFrG1CJpRzv/oTo3O+ExysK6UsYhZbT4iWRd71P346lhMNGa+Crp t+NBlicfWGCXOVngb01+NoU48MWBJmRf9ShYglnQUXn4OUfw00a5k1l9D0K1x7d0/TM9fseozQB MJTepKYD+PJpOuemc3KIYpu0aNDFlZ0YoqXip6AGFFRdUJmGWi4Q524DKNZjU/nbXPJ7esb45VH b+85TcOFKbmXVQxqvQw67LSgf3NZcQ63IfHOpQ+KfTHoMUi6/ZOKGZoxsitYv5Q0J6xPp6xySPQ H7jAeNwzngaWxiykq1uX5Z1GOl8GkyZXLSILiOjgpzDmS6+vBoV65G42GtURvpiyb6x4juennrZ jh2w/4BdboAJ5cVd4TELVz6K0kdaQXeauIg0ghezSCWNMNERmonFMt50x4U0jjsTgmqBcylgU5G S88BsxHnMG9AtYpqmFMyGMvmo= X-Received: by 2002:a05:620a:390d:b0:8b2:ed29:f15f with SMTP id af79cd13be357-8c52fb1cc8fmr788419085a.21.1768462163866; Wed, 14 Jan 2026 23:29:23 -0800 (PST) X-Received: by 2002:a05:620a:390d:b0:8b2:ed29:f15f with SMTP id af79cd13be357-8c52fb1cc8fmr788417685a.21.1768462163391; Wed, 14 Jan 2026 23:29:23 -0800 (PST) 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 38308e7fff4ca-382eb7b1a4dsm58078801fa.17.2026.01.14.23.29.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jan 2026 23:29:21 -0800 (PST) From: Dmitry Baryshkov Date: Thu, 15 Jan 2026 09:29:10 +0200 Subject: [PATCH v3 5/8] drm/msm/dp: Drop EV_USER_NOTIFICATION 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: <20260115-hpd-refactor-v3-5-08e2f3bcd2e0@oss.qualcomm.com> References: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> In-Reply-To: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Jessica Zhang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4138; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=oivVKkrTSnZtWeuu1n/u5eqzgPzs0AehXaBFNGRZ8EM=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ2bGdOcd97itRELfXJN0X8FeIsn/bdHfDHmzyk0S5l3u7 9LZopU7GY1ZGBi5GGTFFFl8ClqmxmxKDvuwY2o9zCBWJpApDFycAjCR8AD2f3aBaWecIlnu3Usv E169dYLcxTar0gjjD7eDQxM1DII1dpo9Wsf00kNref4BR/3OOQFvuVs753AFam4zmxD0K0Xuy9b GJwJFm24cE1xwq/7igbBXqQtWi8y+HqKl/23vkobr19aK/563vay5KF1DaZulR79O427njMC8tP 06m3rmyLl/9j1QszY2XF4x16iyTv3jole7t23mj1351Knp47GC5ZKHckwMHqq2z5X7xjbhQ+g/t jm9k+wsyibv2yzF9UfkpVKYpEN7+6u6TU+CZjipd1mKblrvanw2KSwv7ff77Kpv6inz1x8+tu/9 LhHWjFnGXdWnRRNSHG03xTMnn7tj6dDO7yYWfICx7C87AA== X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE1MDA0OSBTYWx0ZWRfX1k/e3cWw6zif xfpOlmWXq3aeofRvyAiqheLQrMYEGHTL0KPQpbqkihgzEbwg/GO3ADl20I+sVAAsFVcUc+bw8CH MT+0Bb6MgtRYF6KhLPH2g3+3aBsVzRFM6vPxgOe/M0RYBFZVuXxy5iFERH9ZHtDPHOVyXSHbVE3 tw5bYK/uH6i46GODj9GE0rbHMukC0bOx6Squom4S/qk89EmboiEcfSWgawjaY/u+rqQaBiacfT1 oww2qZBps+ZW0U1iGCFRdSx8yirw2y/IB5dHEKIkb1VNCJHjn5veZMRhLtJJnJ2NgS0Mp3dDFcn vu0IwBfzmuTcUy0/N8HCX5m2FaWq6Hp0l7m809Bka5NggkEDpWN6j/oOiXj/GKyDBZ69mj+M/1T pBPoxDH2ZAgLVRDyw/aXs4ep5hOZMRDXg7iFRK1dFxm37HpBMcGASrSxmEgIYf8DLcG+FHoKUV2 mhboL3P0BXSZmU7bCTw== X-Proofpoint-ORIG-GUID: vzLZQKN5hG2N38-m70k83ldaaVes4SQk X-Authority-Analysis: v=2.4 cv=W6Y1lBWk c=1 sm=1 tr=0 ts=69689754 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=gW5k9mFOS1cgrKxYKbgA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-GUID: vzLZQKN5hG2N38-m70k83ldaaVes4SQk X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-15_02,2026-01-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 malwarescore=0 clxscore=1015 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601150049 From: Jessica Zhang Currently, we queue an event for signalling HPD connect/disconnect. This can mean a delay in plug/unplug handling and notifying DRM core when a hotplug happens. Drop EV_USER_NOTIFICATION and signal the IRQ event as part of hotplug handling. Signed-off-by: Jessica Zhang Signed-off-by: Dmitry Baryshkov Acked-by: Konrad Dybcio Reviewed-by: Bjorn Andersson --- drivers/gpu/drm/msm/dp/dp_display.c | 28 ++++++++-------------------- drivers/gpu/drm/msm/dp/dp_display.h | 1 + drivers/gpu/drm/msm/dp/dp_drm.c | 2 ++ 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 3184066adb15..e0b424ac861a 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -58,7 +58,6 @@ enum { EV_HPD_PLUG_INT, EV_IRQ_HPD_INT, EV_HPD_UNPLUG_INT, - EV_USER_NOTIFICATION, }; =20 #define EVENT_TIMEOUT (HZ/10) /* 100ms */ @@ -343,17 +342,6 @@ static const struct component_ops msm_dp_display_comp_= ops =3D { .unbind =3D msm_dp_display_unbind, }; =20 -static void msm_dp_display_send_hpd_event(struct msm_dp *msm_dp_display) -{ - struct msm_dp_display_private *dp; - struct drm_connector *connector; - - dp =3D container_of(msm_dp_display, struct msm_dp_display_private, msm_dp= _display); - - connector =3D dp->msm_dp_display.connector; - drm_helper_hpd_irq_event(connector->dev); -} - static int msm_dp_display_send_hpd_notification(struct msm_dp_display_priv= ate *dp, bool hpd) { @@ -377,7 +365,11 @@ static int msm_dp_display_send_hpd_notification(struct= msm_dp_display_private *d =20 drm_dbg_dp(dp->drm_dev, "type=3D%d hpd=3D%d\n", dp->msm_dp_display.connector_type, hpd); - msm_dp_display_send_hpd_event(&dp->msm_dp_display); + + drm_bridge_hpd_notify(dp->msm_dp_display.bridge, + hpd ? + connector_status_connected : + connector_status_disconnected); =20 return 0; } @@ -437,7 +429,7 @@ static int msm_dp_display_process_hpd_high(struct msm_d= p_display_private *dp) =20 msm_dp_link_reset_phy_params_vx_px(dp->link); =20 - msm_dp_add_event(dp, EV_USER_NOTIFICATION, true, 0); + msm_dp_display_send_hpd_notification(dp, true); =20 end: return rc; @@ -506,7 +498,7 @@ static int msm_dp_display_notify_disconnect(struct devi= ce *dev) { struct msm_dp_display_private *dp =3D dev_get_dp_display_private(dev); =20 - msm_dp_add_event(dp, EV_USER_NOTIFICATION, false, 0); + msm_dp_display_send_hpd_notification(dp, false); =20 return 0; } @@ -527,7 +519,7 @@ static int msm_dp_display_handle_port_status_changed(st= ruct msm_dp_display_priva drm_dbg_dp(dp->drm_dev, "sink count is zero, nothing to do\n"); if (dp->hpd_state !=3D ST_DISCONNECTED) { dp->hpd_state =3D ST_DISCONNECT_PENDING; - msm_dp_add_event(dp, EV_USER_NOTIFICATION, false, 0); + msm_dp_display_send_hpd_notification(dp, false); } } else { if (dp->hpd_state =3D=3D ST_DISCONNECTED) { @@ -1121,10 +1113,6 @@ static int hpd_event_thread(void *data) case EV_IRQ_HPD_INT: msm_dp_irq_hpd_handle(msm_dp_priv, todo->data); break; - case EV_USER_NOTIFICATION: - msm_dp_display_send_hpd_notification(msm_dp_priv, - todo->data); - break; default: break; } diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/d= p_display.h index cc6e2cab36e9..60094061c102 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.h +++ b/drivers/gpu/drm/msm/dp/dp_display.h @@ -16,6 +16,7 @@ struct msm_dp { struct platform_device *pdev; struct drm_connector *connector; struct drm_bridge *next_bridge; + struct drm_bridge *bridge; bool link_ready; bool audio_enabled; bool power_on; diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_dr= m.c index e4622c85fb66..f935093c4df4 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.c +++ b/drivers/gpu/drm/msm/dp/dp_drm.c @@ -340,6 +340,8 @@ int msm_dp_bridge_init(struct msm_dp *msm_dp_display, s= truct drm_device *dev, } } =20 + msm_dp_display->bridge =3D bridge; + return 0; } =20 --=20 2.47.3 From nobody Sat Feb 7 06:13:48 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 C764433A6E9 for ; Thu, 15 Jan 2026 07:29:26 +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=1768462168; cv=none; b=hJPGp4IgYJ4RYGDkazFf+si45jfc78uSk/r3hyfxEHpPs3N+bayhxshklwYHt6CQmCGWpA/TF0y1Ba4idTlCsg2Ky/joFzQLCT8bWIIwaGUBhsmD8z5KV9EPjS0O70JvvABwph7Rk3akekThEi8wk+17LL+cGYnvTOByh9qy584= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768462168; c=relaxed/simple; bh=ZtwLsg6p0b8AfSzbDB138yGAcIa8HoM5WjV12Fcz6EQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=R7sjoMI54tw6wA0mO4laxTpJqoe0sS6Dvu9n82FL5CP7ZZm8aYzTh5O5ny4QnPfUirgJ6md6wr96fpFMTBBuajmFShugHQiK7QWk3fBqlCvL1/7Z6Lv99WDO1Hb0a7hQ2aEZOu5ZGI6mQBh+KX8vWz88hncbFHjVXSASlCephi8= 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=N7zNLmwI; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HpdLcyTC; 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="N7zNLmwI"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HpdLcyTC" 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 60F6g9UJ1056304 for ; Thu, 15 Jan 2026 07:29:25 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= XLSj/TWpVJxmGvdBCFFcBev9pg9q/iSGm2XdYaBUr2g=; b=N7zNLmwI7Cx41IjL n4cg7c19upZ6A9n0FvqXM7ZeALZiZIbAMs70a6vmu0z+pmfzkzi9kkdINaoXdB3z Qrd56b812WU0dk/00fOC//E7K+v6Cx+04Sz3PNuW17OGbTvkf/dCxIW+tAr6kpnB 1K8LLUNdzYML5uaaAJXKG9OLd+PzOaUcZ0qNAqSLXA88FVv59hTvPsBRMPTf9eJg ld8c138fb8vKAyMFNggMXTTJZLJNVfaULE6cO9Yf94CDidcpuy7D3KbrOB5WZ8G6 h1XiZwTU16GeALjej/z+qy3FvovXaC8OU6YvA6GEUyXi+Tx7OTWP9SFjGdE2tgkz yV+AiQ== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bp8d33rfs-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 15 Jan 2026 07:29:25 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8b9fa6f808cso183498885a.1 for ; Wed, 14 Jan 2026 23:29:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768462165; x=1769066965; 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=XLSj/TWpVJxmGvdBCFFcBev9pg9q/iSGm2XdYaBUr2g=; b=HpdLcyTCWAxrcBVL+fGM3U9Gy/sE0WtwfqYTqJ//9F5ZSxHYSxPGYf+pB5WCbIb8Mm hv6RuzYVCvYaRLBgfVZdIOrU3IdYpr5OHAhJzubhI0Hp5G9M8igOownWT6z2+l31zQZK tcQnv+VokXOMVwR/QcRIgpXiEC2rK5eWRgSZIyf6gR8w0bPlwjQR/UuxM2jSG/VSUlB4 HpieywqChNoZMkrUfDEGCeYRcqCS+sQGiEIjE86Vc2mFV9RSXgtncjlHsIUIjmke/R6c Fc8O/ma0rtjX/DjgAOlB2YwpPAtJHrT2FYpK+oxWg1zd3e/pwlbBbuHtJRo1HNn/Spx5 CLnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768462165; x=1769066965; 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=XLSj/TWpVJxmGvdBCFFcBev9pg9q/iSGm2XdYaBUr2g=; b=Ubfcb8LewJWrRqaERMR6hzrdPNKQg8oUuX9pRWdXEa3TtsapASuvJA2M529/vMygqg kZZ6J1Jw95BMrwk+0yEGwrwFSy7H1cnC5hpXEawn5q+ltd4FO0odMEjzV4IXs6tp9pJi MAPbNmLkQ6nDjkk/Af2zyZTi429PS68PRTAu0iAvBAuBb90dO5k8tayfXglVxfdwwp9E t8v3ARKIZgtMmzsJP2zZOg9eZOxdZ/NAijt+1Bs6O+llpcV8CWtXMJVCYLG+05YjPe5t 5fcV+xfEGzgcI0Vk9jxKcW4ZhtesVfUOVhKoBmr+tyXR9y24IJ5vSOhCOLwLR7NFj8e2 HrDw== X-Forwarded-Encrypted: i=1; AJvYcCXqxHrChN/FM3iXulBXfa4rFVpRqu1s9pF9c89GYMOfCu86ShEhYnb0ad2STYz2WbL3hGXULcN5a8imyxk=@vger.kernel.org X-Gm-Message-State: AOJu0YzSYzvzYkbhncLzbybbSHLOhKhVSI0jsI8+MTaDWEnqsPq0UCYN i3S2/6ltmPFN8zqI9C/cI1UUJnDMrkHep5o7BDUJl09xhLVgeNo2J+LHoUqm1YtDlWMwb1OCgNd qVivpw1rjjX84kncDo/BS7ZtH26tUygSsVfFAQR8/RgoKmfk18lJhdDa6qUraaqe8snA= X-Gm-Gg: AY/fxX7k3LNVmP3CbepZKm/3J2md+834BnAEme99OFNX2D7I96fEYs6DA/o1SXW+dN3 FXBm+4h/FrPkY9MKmB96A4FeEmS1+lXoANcYon2IrWsrgIJxNs9npgd7PfrXJI8sgCVAvUgtWqP 44O3pGt8vYw2jS90TlJ+aA/XIybOU2CUVYidaLGFSojEhlWckT/pz6boIGu9N7qMl2YgN3Dhi6q YIniDzPnJ5aWYp5iVpfAM26jgwC2+XrunFj8mKBvadSbUyyfG0kyeziRq2l+x1mFQP5Hlm/aiSI 4fB3VO7mfNwOEy5d8IUnBuPjDRk64Dw3pvwIN2vl+b+JOrIp/SUn1SOZyk9oylWxrehGSoAdoEM F5h6ufFuYDzWzliHhj4Lk4Qu7iH7PQy+gBPJsrhb4jlojBnBoMK5REBSQzhzdw6HTyBCa2EY4rl kdWtPZcCI0CPhCu2Ohucmi6rE= X-Received: by 2002:a05:620a:8a84:b0:8c5:33bf:524f with SMTP id af79cd13be357-8c533bf5487mr387329885a.59.1768462164997; Wed, 14 Jan 2026 23:29:24 -0800 (PST) X-Received: by 2002:a05:620a:8a84:b0:8c5:33bf:524f with SMTP id af79cd13be357-8c533bf5487mr387328685a.59.1768462164573; Wed, 14 Jan 2026 23:29:24 -0800 (PST) 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 38308e7fff4ca-382eb7b1a4dsm58078801fa.17.2026.01.14.23.29.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jan 2026 23:29:23 -0800 (PST) From: Dmitry Baryshkov Date: Thu, 15 Jan 2026 09:29:11 +0200 Subject: [PATCH v3 6/8] drm/msm/dp: drop event data 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: <20260115-hpd-refactor-v3-6-08e2f3bcd2e0@oss.qualcomm.com> References: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> In-Reply-To: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5908; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=ZtwLsg6p0b8AfSzbDB138yGAcIa8HoM5WjV12Fcz6EQ=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpaJdDlEGZrfhfWSXwbEfq2QgFK1z+KIppQqfx1 RD1Hou6Sf2JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaWiXQwAKCRCLPIo+Aiko 1SU8B/97FtUsLseqjWjW6wU6ORL+a7MT0QOnljI3PsP3jprvkuXxu5bRHWzDrPS5h/I/gu/YSQO hLKjbJkE9tdfuQJ23itEvzdVDiKUZNv5lJm5JeF9CHmCPv2TKTOKO1sZPli8FdL/GfP00aBK1kJ wx2u9qmnDE078vg9HUBdGNxBqYEszXLMaeDqDQgk+wKgzOTjCdRNZ+908SiwZmj5SmFcqoBgzgn V2XTzKI9xqxq7zigBeyaJSeWqiyGe6URL/1CknXDKw6IAVPpkZsX9cLJpcUD6WH18qdV37ifO9N zAkPtRR3rngLh5Yy8GLBbHnAS96JvyxHEiQVb0QryuPskR1+ X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: bYf7A8_jtbR6OWhY1XIq-yi4DHo0oG4z X-Authority-Analysis: v=2.4 cv=fbWgCkQF c=1 sm=1 tr=0 ts=69689755 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=zd47t_UtYfsHpvN5YEcA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-ORIG-GUID: bYf7A8_jtbR6OWhY1XIq-yi4DHo0oG4z X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE1MDA0OSBTYWx0ZWRfX+GPZrktE4fQO NCeArENupl3/rZeAEYhr0gYaLUKsbcGXPXvi67OLTaGlLwq3TyAXkyYGRaLRO+76BoS1WMI5lz+ sFiFAP+Yol+RJtHbQe87AYqYIMeKEVoOw/t65qXYqPaPDe+uwDpgwc2jd3mDN5NM8K5mezkfohj pq6As1+R9d/fjAe7J3V30f2+K320+prMlCKvCUDmKUgCeis7CVmsWtoIKIL0WRe/btFe7OSPd59 fMzfY61ZZ7/0PVy0AqdjEV0UfA80Q/py0EOT3fB5ml88Fz7SqVTfcpgVupUGS1z5Uw6byo5Ai1o /phYY4fq1SrUoBZab5kt4oiaTNilQ03xGqYDIXrLrYUQUbWYFpBO682Mt3hl6ORLxAMfD0ilQkL T0rRkKg6mwkcuHkjUtSRyfUTNyF2zCtb4Avm8cWvUvtjFWcWOYyOPlt+JypMQAuCUrfaAPTixDH n42AyYIZVavaXi19Mkg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-15_02,2026-01-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 impostorscore=0 phishscore=0 priorityscore=1501 adultscore=0 clxscore=1015 malwarescore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601150049 With EV_USER_NOTIFICATION gone event's data is no longer useful. Drop it, removing also the argument from event handlers. Signed-off-by: Dmitry Baryshkov Reviewed-by: Bjorn Andersson Reviewed-by: Konrad Dybcio --- drivers/gpu/drm/msm/dp/dp_display.c | 39 +++++++++++++++++----------------= ---- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index e0b424ac861a..e93de362dd39 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -69,7 +69,6 @@ enum { =20 struct msm_dp_event { u32 event_id; - u32 data; u32 delay; }; =20 @@ -218,7 +217,7 @@ static struct msm_dp_display_private *dev_get_dp_displa= y_private(struct device * } =20 static int msm_dp_add_event(struct msm_dp_display_private *msm_dp_priv, u3= 2 event, - u32 data, u32 delay) + u32 delay) { unsigned long flag; struct msm_dp_event *todo; @@ -236,7 +235,6 @@ static int msm_dp_add_event(struct msm_dp_display_priva= te *msm_dp_priv, u32 even todo =3D &msm_dp_priv->event_list[msm_dp_priv->event_pndx++]; msm_dp_priv->event_pndx %=3D DP_EVENT_Q_MAX; todo->event_id =3D event; - todo->data =3D data; todo->delay =3D delay; wake_up(&msm_dp_priv->event_q); spin_unlock_irqrestore(&msm_dp_priv->event_lock, flag); @@ -576,7 +574,7 @@ static int msm_dp_display_usbpd_attention_cb(struct dev= ice *dev) return rc; } =20 -static int msm_dp_hpd_plug_handle(struct msm_dp_display_private *dp, u32 d= ata) +static int msm_dp_hpd_plug_handle(struct msm_dp_display_private *dp) { u32 state; int ret; @@ -602,7 +600,7 @@ static int msm_dp_hpd_plug_handle(struct msm_dp_display= _private *dp, u32 data) =20 if (state =3D=3D ST_DISCONNECT_PENDING) { /* wait until ST_DISCONNECTED */ - msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0, 1); /* delay =3D 1 */ + msm_dp_add_event(dp, EV_HPD_PLUG_INT, 1); mutex_unlock(&dp->event_mutex); return 0; } @@ -644,7 +642,7 @@ static void msm_dp_display_handle_plugged_change(struct= msm_dp *msm_dp_display, plugged); } =20 -static int msm_dp_hpd_unplug_handle(struct msm_dp_display_private *dp, u32= data) +static int msm_dp_hpd_unplug_handle(struct msm_dp_display_private *dp) { u32 state; struct platform_device *pdev =3D dp->msm_dp_display.pdev; @@ -706,7 +704,7 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_displ= ay_private *dp, u32 data) return 0; } =20 -static int msm_dp_irq_hpd_handle(struct msm_dp_display_private *dp, u32 da= ta) +static int msm_dp_irq_hpd_handle(struct msm_dp_display_private *dp) { u32 state; =20 @@ -724,7 +722,7 @@ static int msm_dp_irq_hpd_handle(struct msm_dp_display_= private *dp, u32 data) =20 if (state =3D=3D ST_MAINLINK_READY || state =3D=3D ST_DISCONNECT_PENDING)= { /* wait until ST_CONNECTED */ - msm_dp_add_event(dp, EV_IRQ_HPD_INT, 0, 1); /* delay =3D 1 */ + msm_dp_add_event(dp, EV_IRQ_HPD_INT, 1); mutex_unlock(&dp->event_mutex); return 0; } @@ -1079,7 +1077,6 @@ static int hpd_event_thread(void *data) todo_next =3D &msm_dp_priv->event_list[msm_dp_priv->event_pndx++]; msm_dp_priv->event_pndx %=3D DP_EVENT_Q_MAX; todo_next->event_id =3D todo->event_id; - todo_next->data =3D todo->data; todo_next->delay =3D todo->delay - 1; =20 /* clean up older event */ @@ -1105,13 +1102,13 @@ static int hpd_event_thread(void *data) =20 switch (todo->event_id) { case EV_HPD_PLUG_INT: - msm_dp_hpd_plug_handle(msm_dp_priv, todo->data); + msm_dp_hpd_plug_handle(msm_dp_priv); break; case EV_HPD_UNPLUG_INT: - msm_dp_hpd_unplug_handle(msm_dp_priv, todo->data); + msm_dp_hpd_unplug_handle(msm_dp_priv); break; case EV_IRQ_HPD_INT: - msm_dp_irq_hpd_handle(msm_dp_priv, todo->data); + msm_dp_irq_hpd_handle(msm_dp_priv); break; default: break; @@ -1212,19 +1209,19 @@ static irqreturn_t msm_dp_display_irq_handler(int i= rq, void *dev_id) dp->msm_dp_display.connector_type, hpd_isr_status); /* hpd related interrupts */ if (hpd_isr_status & DP_DP_HPD_PLUG_INT_MASK) - msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0, 0); + msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0); =20 if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK) { - msm_dp_add_event(dp, EV_IRQ_HPD_INT, 0, 0); + msm_dp_add_event(dp, EV_IRQ_HPD_INT, 0); } =20 if (hpd_isr_status & DP_DP_HPD_REPLUG_INT_MASK) { - msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0); - msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0, 3); + msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0); + msm_dp_add_event(dp, EV_HPD_PLUG_INT, 3); } =20 if (hpd_isr_status & DP_DP_HPD_UNPLUG_INT_MASK) - msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0); + msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0); =20 ret =3D IRQ_HANDLED; } @@ -1649,7 +1646,7 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *d= rm_bridge, } =20 if (dp->is_edp) - msm_dp_hpd_plug_handle(msm_dp_display, 0); + msm_dp_hpd_plug_handle(msm_dp_display); =20 mutex_lock(&msm_dp_display->event_mutex); if (pm_runtime_resume_and_get(&dp->pdev->dev)) { @@ -1722,7 +1719,7 @@ void msm_dp_bridge_atomic_post_disable(struct drm_bri= dge *drm_bridge, msm_dp_display =3D container_of(dp, struct msm_dp_display_private, msm_dp= _display); =20 if (dp->is_edp) - msm_dp_hpd_unplug_handle(msm_dp_display, 0); + msm_dp_hpd_unplug_handle(msm_dp_display); =20 mutex_lock(&msm_dp_display->event_mutex); =20 @@ -1844,7 +1841,7 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge *brid= ge, return; =20 if (!msm_dp_display->link_ready && status =3D=3D connector_status_connect= ed) - msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0, 0); + msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0); else if (msm_dp_display->link_ready && status =3D=3D connector_status_dis= connected) - msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0); + msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0); } --=20 2.47.3 From nobody Sat Feb 7 06:13:48 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 9FF4D33A709 for ; Thu, 15 Jan 2026 07:29:29 +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=1768462172; cv=none; b=RCIrpmycV5ZJUyVg6MRQM5PSFXiSFbrdlAYtu80woAKynEZvpRvieGOzY6GGC6C4yIdhKaQe+AOVJehF1k9WXY5MrYPsS4tle4on8uxQzUuenB9fP2WlhUqMPy7c/txNTQQ+497OEGW5285d9iHwZDOVbwSZT61SxV0/6hjfAqg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768462172; c=relaxed/simple; bh=0LiUpHorodeGRyUqNmvvnSVY7r164xFl8Gfhzi3XNHI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=P8WfTHwStXB4Q4qganTgGxQkHmnkhRUQV4akYq9x4aSNn+k6oVIddVOwtsyJwnsjDd8t9TR0GL+DTY3742Q6PSVWCKPl5wBE4J0xvHnUGkNQKXC9f3rVlQkS3vprhxc06r4hcfwQXpziC1vJp6n/sOB14EL9OdVjgR4eHhw2yZg= 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=nfsBUHc1; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=a99NhUW0; 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="nfsBUHc1"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="a99NhUW0" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60F6fcRY606204 for ; Thu, 15 Jan 2026 07:29:28 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= bfp/Kt52/HQb5Zs4SCmnXul2ftTp5Gedk1eZEPJTaac=; b=nfsBUHc1GMRuqMMx 01qbr90cO3DuWzVLdQTM5stfEIOtNn1UQhC4VoMkJn9CTgWQ2INAgnJ8fhfAIv/V JciEbL6HhxrckCOrXUrKICf3ZCgCCMKtTKvukt0S2ArFxgACcrsvqdk7Y5eM4UdM icyD1IZlQaP/hfQaG0PZU9QaBs5Df7K/WgpyIDlGKEl9x9h5dBB697LNZ9INSKSy tgaZI6cDUH4QC1fCf6WYe8EHVYo32O3BfveRBraSIKxGQZxzESXp630nAkB6Otd6 qO0ftI7hPXnz8BQ8/pnqF9NF5e1Qlb8+MUQU3Ryi0X8ODMMf6sQI6SuwHFXxlBls YD+XxA== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bptna06ub-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 15 Jan 2026 07:29:28 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-8b2dbd36752so172243085a.0 for ; Wed, 14 Jan 2026 23:29:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768462168; x=1769066968; 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=bfp/Kt52/HQb5Zs4SCmnXul2ftTp5Gedk1eZEPJTaac=; b=a99NhUW0eTsDcwigUhGedk/aarI8kG8VZk297K6WQQaK7/TiGOiEp11sgReYjoPzjL X3gKMY4sYWwbc5bIZ6uDT1YEs1+zFSevDLn3/cVzkRgEmw7Q1XWu1R2wlJnYoqiVp2bS cQHuaxUGAQ1OtDbdNbZeLSsDT40adhGhYU9fso79YqrPWp5w/qEKOuLwupMLLc7sREKU Z+NfC4uBAxgwr+rt+7vQzVRSwEgZZH2qH7km+Ykdzbs04CGyAcLIsq3aCwH1YpFoXNmt TB93iYeIl7nMZoWCZOdziJ38NZQAcGOLvufW9SctMBHm/RVvPWDaNeRdNXX76lmXzuUu Chng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768462168; x=1769066968; 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=bfp/Kt52/HQb5Zs4SCmnXul2ftTp5Gedk1eZEPJTaac=; b=w1DAJP6Kf1Mq44YsqptuP/fAyOUdN4SCMzCbL5lPXpKNFOHXfqzYXZms7gWAL4umLK 10mJgq48PjDtmn0xe93efY3eyDK+3HRPq8vJYTLjT4w9VJAMQcXRH55XkdD4OzObgm8H ODbVP78UpYMhMlBlVM0v7JYWpMQ1J8tdVnKyXBqo25ie4s96wHwJvdL5cgJMQGTef5iI XzvFsOW4Z1N0uZs2cEL7H/8XGs2He+//NnTG0ZO88CxkiW2u/Ww0rXbRIYAKIfNBahOv b5B9LtzO2g5wD1lusp1kMcDGy+Bk34rVzy5gUL85E2BD6VwNyQkCQRnbmLsSxW3RIMC9 OCwA== X-Forwarded-Encrypted: i=1; AJvYcCU+sjBGeTh0a6iMqvS5RXJhuMJcxX3XhcjogJIvBrDvq914xo6VhHhgXZS4+lieBQqNoau9Lv3RqtivOf8=@vger.kernel.org X-Gm-Message-State: AOJu0Ywzq/gdIanTw8wszVp9/y41mgHBOo8Gi9vMEEIzx12/qUsWn8DE mVMbW3B57bxyHXKgM+x7SujidfEzKeUVBMf03e2Xh/kXMKYNRZDTV+o4psMmpNjuymoWpwvqf8r edngXam1u35vRtv72d4R9fUnWcGtcrn6CGXrgoDSIig8WVphVfqhk1DaO6c4UYq/9BH4= X-Gm-Gg: AY/fxX5/6q1gfz8s3ChTPbITKOzKKlhbEsdd8pfcMGRfiIFyGlLe1ZUqGF8kapGty6r /JWCyX5mL/92Awg2ra5O7nQkh7Mha2CdODf2NqOZbuOAaPJvxqcMkf5FHqxbbEmsNSxJ/7KN1BM a0c+WO6v0O9qwl7jOMU2X7/6egopNAWLvLWViB0hbSSrN5Abm1CiqzDWJpMlTmKhei76clnutnv 5ILsb26zz9qjiknJ6gcx6n2fp4cZhEnbwv7bdsLAdgAqCcp1Okf1eMMaRV7sntUfxTDsOjcw0w8 ZbYnBucuhtMCygR1lB9x7Yjbgine8i52nNikQpOsKR4cRrC07Z6cjt6vljZqDOw5sCU9S4Q4EiT 3sS3gph1MEmsXAc+yeaqDTI4HQSohyZ+kJRKmb6uDA/rCLX+J2Wxe03OKVPJbKJ8TktaxBqbMEZ VCuJIw72Oq4dBQg71QrY3YrDY= X-Received: by 2002:a05:620a:29cc:b0:8b2:e1fa:6eab with SMTP id af79cd13be357-8c52fbb918bmr709831385a.62.1768462167710; Wed, 14 Jan 2026 23:29:27 -0800 (PST) X-Received: by 2002:a05:620a:29cc:b0:8b2:e1fa:6eab with SMTP id af79cd13be357-8c52fbb918bmr709828785a.62.1768462167008; Wed, 14 Jan 2026 23:29:27 -0800 (PST) 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 38308e7fff4ca-382eb7b1a4dsm58078801fa.17.2026.01.14.23.29.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jan 2026 23:29:26 -0800 (PST) From: Dmitry Baryshkov Date: Thu, 15 Jan 2026 09:29:12 +0200 Subject: [PATCH v3 7/8] drm/msm/dp: rework HPD handling 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: <20260115-hpd-refactor-v3-7-08e2f3bcd2e0@oss.qualcomm.com> References: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> In-Reply-To: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Jessica Zhang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=32989; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=iUAY2l2ZhRty3P8sYwHAOBfac5Eksx59rD+0udJlh3k=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpaJdEIaPP2YU80aMME2QBXGiWdnSkw8J/MUt+N jfFkVJbqdyJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaWiXRAAKCRCLPIo+Aiko 1Qa2B/9T4mLlkPZtsm6XU9C30MC0XUqY+eEhKOR9RTnaw1l0H7HNxzAmBj4sNCK4UXcVyy6hbmj fmQKMpAcMAH2ThR87EXggr4k2Bu5UIYQOxJ69PtbZYpSmnRbq5HRD1cW1HPpGORcteqeBuygvTS LYiVndTLrZ4RaY85kJRC3lyeY3jBS/cI+MCaoDbppbNtB7Z6TxAOZNdrliX6fxn3Y28CZhGtlNa sFvN3tPDv5C2lgecvNUAFN0QUuzoISAs2fVbmCZ1kUfUzpgV69cSAZ0SowXaaDdQEpOwKRaMmlI PIQflArvSNHc7CLF5efe9lQReP956xEXU2emiv/hXpu1ivE3 X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: hiyn1SprOC-Khj843Jc8RANe3etfiHc8 X-Proofpoint-ORIG-GUID: hiyn1SprOC-Khj843Jc8RANe3etfiHc8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE1MDA0OSBTYWx0ZWRfX7rCwv/KjQTNn 9UQveCsMw/83TDXXDvDQcVr9rLHS1OZVH+CWjEQF7fGD+hIcMPKMEak7/rP+nLWx+Le7UO/aR+i jGdbU0VYzgHZdCHAFfPaovrX4otgsUrupBCjrOnjYfS6Wz7yYgZ0RXq4AyG/oq5EGXn0qfNZlUQ R4AYMJ5J+z80XxZvr7N8EtuRp4Kne+0GHHYHElvHTLQLkkHKk5D4+NzZKmLzkm14fx3SU1KVlh4 qg5wkSDkNoZCxhmWPcBqXnZf8/JTTCvi6RNMnpfTmpBwj1fQnTx8auA4xS+ieEBgjKHXOWwWzgl 9AWmzdKB7wUibeDWyOOiVLY6208krLyvQ+VfIeSs2nsAn/9G2pepaeSFR9q/alqdr6FMuPrUPDv oqEqsXMjUruA/2WJszh0yQn0ZmV7zNrG4vapIaDMubb0GaQLopIYG3Skqk8xMD1AFya6dWDrfoD thBiYuvoVqCpecegAgw== X-Authority-Analysis: v=2.4 cv=fsHRpV4f c=1 sm=1 tr=0 ts=69689758 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=KKU_MhpSG83TwyDdul0A:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-15_02,2026-01-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 bulkscore=0 adultscore=0 spamscore=0 clxscore=1015 impostorscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601150049 From: Jessica Zhang Handling of the HPD events in the MSM DP driver is plagued with lots of problems. It tries to work aside of the main DRM framework, handling the HPD signals on its own. There are two separate paths, one for the HPD signals coming from the DP HPD pin and another path for signals coming from outside (e.g. from the Type-C AltMode). It lies about the connected state, returning the link established state instead. It is not easy to understand or modify it. Having a separate event machine doesn't add extra clarity. Drop the whole event machine. When the DP receives a HPD event, send it to the DRM core. Then handle the events in the hpd_notify callback, unifying paths for HPD signals. Signed-off-by: Jessica Zhang Co-developed-by: Dmitry Baryshkov Signed-off-by: Dmitry Baryshkov Reviewed-by: Bjorn Andersson --- drivers/gpu/drm/msm/dp/dp_ctrl.c | 22 -- drivers/gpu/drm/msm/dp/dp_ctrl.h | 1 - drivers/gpu/drm/msm/dp/dp_display.c | 625 +++++++++-----------------------= ---- drivers/gpu/drm/msm/dp/dp_display.h | 1 - 4 files changed, 148 insertions(+), 501 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index aa2303d0e148..80796dd255fc 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -2581,28 +2581,6 @@ void msm_dp_ctrl_off_link_stream(struct msm_dp_ctrl = *msm_dp_ctrl) phy, phy->init_count, phy->power_count); } =20 -void msm_dp_ctrl_off_link(struct msm_dp_ctrl *msm_dp_ctrl) -{ - struct msm_dp_ctrl_private *ctrl; - struct phy *phy; - - ctrl =3D container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctr= l); - phy =3D ctrl->phy; - - msm_dp_ctrl_mainlink_disable(ctrl); - - dev_pm_opp_set_rate(ctrl->dev, 0); - msm_dp_ctrl_link_clk_disable(&ctrl->msm_dp_ctrl); - - DRM_DEBUG_DP("Before, phy=3D%p init_count=3D%d power_on=3D%d\n", - phy, phy->init_count, phy->power_count); - - phy_power_off(phy); - - DRM_DEBUG_DP("After, phy=3D%p init_count=3D%d power_on=3D%d\n", - phy, phy->init_count, phy->power_count); -} - void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl) { struct msm_dp_ctrl_private *ctrl; diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.h b/drivers/gpu/drm/msm/dp/dp_c= trl.h index 124b9b21bb7f..f68bee62713f 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.h +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.h @@ -19,7 +19,6 @@ struct phy; int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ctrl); int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl, bool force_link= _train); void msm_dp_ctrl_off_link_stream(struct msm_dp_ctrl *msm_dp_ctrl); -void msm_dp_ctrl_off_link(struct msm_dp_ctrl *msm_dp_ctrl); void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl); void msm_dp_ctrl_push_idle(struct msm_dp_ctrl *msm_dp_ctrl); irqreturn_t msm_dp_ctrl_isr(struct msm_dp_ctrl *msm_dp_ctrl); diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index e93de362dd39..b26fba89e73a 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -43,35 +43,6 @@ enum { ISR_HPD_REPLUG_COUNT, }; =20 -/* event thread connection state */ -enum { - ST_DISCONNECTED, - ST_MAINLINK_READY, - ST_CONNECTED, - ST_DISCONNECT_PENDING, - ST_DISPLAY_OFF, -}; - -enum { - EV_NO_EVENT, - /* hpd events */ - EV_HPD_PLUG_INT, - EV_IRQ_HPD_INT, - EV_HPD_UNPLUG_INT, -}; - -#define EVENT_TIMEOUT (HZ/10) /* 100ms */ -#define DP_EVENT_Q_MAX 8 - -#define DP_TIMEOUT_NONE 0 - -#define WAIT_FOR_RESUME_TIMEOUT_JIFFIES (HZ / 2) - -struct msm_dp_event { - u32 event_id; - u32 delay; -}; - struct msm_dp_display_private { int irq; =20 @@ -95,15 +66,9 @@ struct msm_dp_display_private { /* wait for audio signaling */ struct completion audio_comp; =20 - /* event related only access by event thread */ - struct mutex event_mutex; - wait_queue_head_t event_q; - u32 hpd_state; - u32 event_pndx; - u32 event_gndx; - struct task_struct *ev_tsk; - struct msm_dp_event event_list[DP_EVENT_Q_MAX]; - spinlock_t event_lock; + /* HPD IRQ handling */ + spinlock_t irq_thread_lock; + u32 hpd_isr_status; =20 bool wide_bus_supported; =20 @@ -216,59 +181,6 @@ static struct msm_dp_display_private *dev_get_dp_displ= ay_private(struct device * return container_of(dp, struct msm_dp_display_private, msm_dp_display); } =20 -static int msm_dp_add_event(struct msm_dp_display_private *msm_dp_priv, u3= 2 event, - u32 delay) -{ - unsigned long flag; - struct msm_dp_event *todo; - int pndx; - - spin_lock_irqsave(&msm_dp_priv->event_lock, flag); - pndx =3D msm_dp_priv->event_pndx + 1; - pndx %=3D DP_EVENT_Q_MAX; - if (pndx =3D=3D msm_dp_priv->event_gndx) { - pr_err("event_q is full: pndx=3D%d gndx=3D%d\n", - msm_dp_priv->event_pndx, msm_dp_priv->event_gndx); - spin_unlock_irqrestore(&msm_dp_priv->event_lock, flag); - return -EPERM; - } - todo =3D &msm_dp_priv->event_list[msm_dp_priv->event_pndx++]; - msm_dp_priv->event_pndx %=3D DP_EVENT_Q_MAX; - todo->event_id =3D event; - todo->delay =3D delay; - wake_up(&msm_dp_priv->event_q); - spin_unlock_irqrestore(&msm_dp_priv->event_lock, flag); - - return 0; -} - -static int msm_dp_del_event(struct msm_dp_display_private *msm_dp_priv, u3= 2 event) -{ - unsigned long flag; - struct msm_dp_event *todo; - u32 gndx; - - spin_lock_irqsave(&msm_dp_priv->event_lock, flag); - if (msm_dp_priv->event_pndx =3D=3D msm_dp_priv->event_gndx) { - spin_unlock_irqrestore(&msm_dp_priv->event_lock, flag); - return -ENOENT; - } - - gndx =3D msm_dp_priv->event_gndx; - while (msm_dp_priv->event_pndx !=3D gndx) { - todo =3D &msm_dp_priv->event_list[gndx]; - if (todo->event_id =3D=3D event) { - todo->event_id =3D EV_NO_EVENT; /* deleted */ - todo->delay =3D 0; - } - gndx++; - gndx %=3D DP_EVENT_Q_MAX; - } - spin_unlock_irqrestore(&msm_dp_priv->event_lock, flag); - - return 0; -} - void msm_dp_display_signal_audio_start(struct msm_dp *msm_dp_display) { struct msm_dp_display_private *dp; @@ -287,8 +199,6 @@ void msm_dp_display_signal_audio_complete(struct msm_dp= *msm_dp_display) complete_all(&dp->audio_comp); } =20 -static int msm_dp_hpd_event_thread_start(struct msm_dp_display_private *ms= m_dp_priv); - static int msm_dp_display_bind(struct device *dev, struct device *master, void *data) { @@ -308,12 +218,6 @@ static int msm_dp_display_bind(struct device *dev, str= uct device *master, goto end; } =20 - rc =3D msm_dp_hpd_event_thread_start(dp); - if (rc) { - DRM_ERROR("Event thread create failed\n"); - goto end; - } - return 0; end: return rc; @@ -325,8 +229,6 @@ static void msm_dp_display_unbind(struct device *dev, s= truct device *master, struct msm_dp_display_private *dp =3D dev_get_dp_display_private(dev); struct msm_drm_private *priv =3D dev_get_drvdata(master); =20 - kthread_stop(dp->ev_tsk); - of_dp_aux_depopulate_bus(dp->aux); =20 msm_dp_aux_unregister(dp->aux); @@ -340,38 +242,6 @@ static const struct component_ops msm_dp_display_comp_= ops =3D { .unbind =3D msm_dp_display_unbind, }; =20 -static int msm_dp_display_send_hpd_notification(struct msm_dp_display_priv= ate *dp, - bool hpd) -{ - if ((hpd && dp->msm_dp_display.link_ready) || - (!hpd && !dp->msm_dp_display.link_ready)) { - drm_dbg_dp(dp->drm_dev, "HPD already %s\n", str_on_off(hpd)); - return 0; - } - - /* reset video pattern flag on disconnect */ - if (!hpd) { - dp->panel->video_test =3D false; - if (!dp->msm_dp_display.is_edp) - drm_dp_set_subconnector_property(dp->msm_dp_display.connector, - connector_status_disconnected, - dp->panel->dpcd, - dp->panel->downstream_ports); - } - - dp->msm_dp_display.link_ready =3D hpd; - - drm_dbg_dp(dp->drm_dev, "type=3D%d hpd=3D%d\n", - dp->msm_dp_display.connector_type, hpd); - - drm_bridge_hpd_notify(dp->msm_dp_display.bridge, - hpd ? - connector_status_connected : - connector_status_disconnected); - - return 0; -} - static int msm_dp_display_lttpr_init(struct msm_dp_display_private *dp, u8= *dpcd) { int rc, lttpr_count; @@ -414,6 +284,8 @@ static int msm_dp_display_process_hpd_high(struct msm_d= p_display_private *dp) dp->panel->dpcd, dp->panel->downstream_ports); =20 + dp->msm_dp_display.link_ready =3D true; + dp->msm_dp_display.psr_supported =3D dp->panel->psr_cap.version && psr_en= abled; =20 dp->audio_supported =3D info->has_audio; @@ -427,8 +299,6 @@ static int msm_dp_display_process_hpd_high(struct msm_d= p_display_private *dp) =20 msm_dp_link_reset_phy_params_vx_px(dp->link); =20 - msm_dp_display_send_hpd_notification(dp, true); - end: return rc; } @@ -483,24 +353,6 @@ static void msm_dp_display_host_deinit(struct msm_dp_d= isplay_private *dp) dp->core_initialized =3D false; } =20 -static int msm_dp_display_usbpd_configure_cb(struct device *dev) -{ - struct msm_dp_display_private *dp =3D dev_get_dp_display_private(dev); - - msm_dp_display_host_phy_init(dp); - - return msm_dp_display_process_hpd_high(dp); -} - -static int msm_dp_display_notify_disconnect(struct device *dev) -{ - struct msm_dp_display_private *dp =3D dev_get_dp_display_private(dev); - - msm_dp_display_send_hpd_notification(dp, false); - - return 0; -} - static void msm_dp_display_handle_video_request(struct msm_dp_display_priv= ate *dp) { if (dp->link->sink_request & DP_TEST_LINK_VIDEO_PATTERN) { @@ -509,34 +361,12 @@ static void msm_dp_display_handle_video_request(struc= t msm_dp_display_private *d } } =20 -static int msm_dp_display_handle_port_status_changed(struct msm_dp_display= _private *dp) -{ - int rc =3D 0; - - if (drm_dp_is_branch(dp->panel->dpcd) && dp->link->sink_count =3D=3D 0) { - drm_dbg_dp(dp->drm_dev, "sink count is zero, nothing to do\n"); - if (dp->hpd_state !=3D ST_DISCONNECTED) { - dp->hpd_state =3D ST_DISCONNECT_PENDING; - msm_dp_display_send_hpd_notification(dp, false); - } - } else { - if (dp->hpd_state =3D=3D ST_DISCONNECTED) { - dp->hpd_state =3D ST_MAINLINK_READY; - rc =3D msm_dp_display_process_hpd_high(dp); - if (rc) - dp->hpd_state =3D ST_DISCONNECTED; - } - } - - return rc; -} - static int msm_dp_display_handle_irq_hpd(struct msm_dp_display_private *dp) { u32 sink_request =3D dp->link->sink_request; =20 drm_dbg_dp(dp->drm_dev, "%d\n", sink_request); - if (dp->hpd_state =3D=3D ST_DISCONNECTED) { + if (!dp->msm_dp_display.link_ready) { if (sink_request & DP_LINK_STATUS_UPDATED) { drm_dbg_dp(dp->drm_dev, "Disconnected sink_request: %d\n", sink_request); @@ -553,76 +383,36 @@ static int msm_dp_display_handle_irq_hpd(struct msm_d= p_display_private *dp) return 0; } =20 -static int msm_dp_display_usbpd_attention_cb(struct device *dev) -{ - int rc =3D 0; - u32 sink_request; - struct msm_dp_display_private *dp =3D dev_get_dp_display_private(dev); - - /* check for any test request issued by sink */ - rc =3D msm_dp_link_process_request(dp->link); - if (!rc) { - sink_request =3D dp->link->sink_request; - drm_dbg_dp(dp->drm_dev, "hpd_state=3D%d sink_request=3D%d\n", - dp->hpd_state, sink_request); - if (sink_request & DS_PORT_STATUS_CHANGED) - rc =3D msm_dp_display_handle_port_status_changed(dp); - else - rc =3D msm_dp_display_handle_irq_hpd(dp); - } - - return rc; -} - static int msm_dp_hpd_plug_handle(struct msm_dp_display_private *dp) { - u32 state; int ret; struct platform_device *pdev =3D dp->msm_dp_display.pdev; =20 - msm_dp_aux_enable_xfers(dp->aux, true); - - mutex_lock(&dp->event_mutex); - - state =3D dp->hpd_state; - drm_dbg_dp(dp->drm_dev, "Before, type=3D%d hpd_state=3D%d\n", - dp->msm_dp_display.connector_type, state); - - if (state =3D=3D ST_DISPLAY_OFF) { - mutex_unlock(&dp->event_mutex); - return 0; - } + drm_dbg_dp(dp->drm_dev, "Before, type=3D%d\n", + dp->msm_dp_display.connector_type); =20 - if (state =3D=3D ST_MAINLINK_READY || state =3D=3D ST_CONNECTED) { - mutex_unlock(&dp->event_mutex); + if (dp->msm_dp_display.link_ready) return 0; - } - - if (state =3D=3D ST_DISCONNECT_PENDING) { - /* wait until ST_DISCONNECTED */ - msm_dp_add_event(dp, EV_HPD_PLUG_INT, 1); - mutex_unlock(&dp->event_mutex); - return 0; - } =20 ret =3D pm_runtime_resume_and_get(&pdev->dev); if (ret) { DRM_ERROR("failed to pm_runtime_resume\n"); - mutex_unlock(&dp->event_mutex); return ret; } =20 - ret =3D msm_dp_display_usbpd_configure_cb(&pdev->dev); + msm_dp_aux_enable_xfers(dp->aux, true); + + msm_dp_display_host_phy_init(dp); + + ret =3D msm_dp_display_process_hpd_high(dp); if (ret) { /* link train failed */ - dp->hpd_state =3D ST_DISCONNECTED; + dp->msm_dp_display.link_ready =3D false; + msm_dp_aux_enable_xfers(dp->aux, false); pm_runtime_put_sync(&pdev->dev); - } else { - dp->hpd_state =3D ST_MAINLINK_READY; } =20 - drm_dbg_dp(dp->drm_dev, "After, type=3D%d hpd_state=3D%d\n", - dp->msm_dp_display.connector_type, state); - mutex_unlock(&dp->event_mutex); + drm_dbg_dp(dp->drm_dev, "After, type=3D%d\n", + dp->msm_dp_display.connector_type); =20 /* uevent will complete connection part */ return 0; @@ -644,97 +434,69 @@ static void msm_dp_display_handle_plugged_change(stru= ct msm_dp *msm_dp_display, =20 static int msm_dp_hpd_unplug_handle(struct msm_dp_display_private *dp) { - u32 state; struct platform_device *pdev =3D dp->msm_dp_display.pdev; =20 - msm_dp_aux_enable_xfers(dp->aux, false); - - mutex_lock(&dp->event_mutex); - - state =3D dp->hpd_state; + dp->panel->video_test =3D false; =20 - drm_dbg_dp(dp->drm_dev, "Before, type=3D%d hpd_state=3D%d\n", - dp->msm_dp_display.connector_type, state); + msm_dp_aux_enable_xfers(dp->aux, false); =20 - /* unplugged, no more irq_hpd handle */ - msm_dp_del_event(dp, EV_IRQ_HPD_INT); + drm_dbg_dp(dp->drm_dev, "Before, type=3D%d\n", + dp->msm_dp_display.connector_type); =20 - if (state =3D=3D ST_DISCONNECTED) { - /* triggered by irq_hdp with sink_count =3D 0 */ - if (dp->link->sink_count =3D=3D 0) { - msm_dp_display_host_phy_exit(dp); - } - msm_dp_display_notify_disconnect(&dp->msm_dp_display.pdev->dev); - mutex_unlock(&dp->event_mutex); + if (!dp->msm_dp_display.link_ready) return 0; - } else if (state =3D=3D ST_DISCONNECT_PENDING) { - mutex_unlock(&dp->event_mutex); - return 0; - } else if (state =3D=3D ST_MAINLINK_READY) { - msm_dp_ctrl_off_link(dp->ctrl); + + /* triggered by irq_hdp with sink_count =3D 0 */ + if (dp->link->sink_count =3D=3D 0) msm_dp_display_host_phy_exit(dp); - dp->hpd_state =3D ST_DISCONNECTED; - msm_dp_display_notify_disconnect(&dp->msm_dp_display.pdev->dev); - pm_runtime_put_sync(&pdev->dev); - mutex_unlock(&dp->event_mutex); - return 0; - } =20 /* * We don't need separate work for disconnect as * connect/attention interrupts are disabled */ - msm_dp_display_notify_disconnect(&dp->msm_dp_display.pdev->dev); + if (!dp->msm_dp_display.is_edp) + drm_dp_set_subconnector_property(dp->msm_dp_display.connector, + connector_status_disconnected, + dp->panel->dpcd, + dp->panel->downstream_ports); =20 - if (state =3D=3D ST_DISPLAY_OFF) { - dp->hpd_state =3D ST_DISCONNECTED; - } else { - dp->hpd_state =3D ST_DISCONNECT_PENDING; - } + dp->msm_dp_display.link_ready =3D false; =20 /* signal the disconnect event early to ensure proper teardown */ msm_dp_display_handle_plugged_change(&dp->msm_dp_display, false); =20 - drm_dbg_dp(dp->drm_dev, "After, type=3D%d hpd_state=3D%d\n", - dp->msm_dp_display.connector_type, state); + drm_dbg_dp(dp->drm_dev, "After, type=3D%d\n", + dp->msm_dp_display.connector_type); =20 /* uevent will complete disconnection part */ pm_runtime_put_sync(&pdev->dev); - mutex_unlock(&dp->event_mutex); return 0; } =20 static int msm_dp_irq_hpd_handle(struct msm_dp_display_private *dp) { - u32 state; - - mutex_lock(&dp->event_mutex); + u32 sink_request; + int rc =3D 0; =20 /* irq_hpd can happen at either connected or disconnected state */ - state =3D dp->hpd_state; - drm_dbg_dp(dp->drm_dev, "Before, type=3D%d hpd_state=3D%d\n", - dp->msm_dp_display.connector_type, state); - - if (state =3D=3D ST_DISPLAY_OFF) { - mutex_unlock(&dp->event_mutex); - return 0; - } + drm_dbg_dp(dp->drm_dev, "Before, type=3D%d\n", + dp->msm_dp_display.connector_type); =20 - if (state =3D=3D ST_MAINLINK_READY || state =3D=3D ST_DISCONNECT_PENDING)= { - /* wait until ST_CONNECTED */ - msm_dp_add_event(dp, EV_IRQ_HPD_INT, 1); - mutex_unlock(&dp->event_mutex); - return 0; + /* check for any test request issued by sink */ + rc =3D msm_dp_link_process_request(dp->link); + if (!rc) { + sink_request =3D dp->link->sink_request; + drm_dbg_dp(dp->drm_dev, "sink_request=3D%d\n", sink_request); + if (sink_request & DS_PORT_STATUS_CHANGED) + rc =3D msm_dp_display_process_hpd_high(dp); + else + rc =3D msm_dp_display_handle_irq_hpd(dp); } =20 - msm_dp_display_usbpd_attention_cb(&dp->msm_dp_display.pdev->dev); - - drm_dbg_dp(dp->drm_dev, "After, type=3D%d hpd_state=3D%d\n", - dp->msm_dp_display.connector_type, state); + drm_dbg_dp(dp->drm_dev, "After, type=3D%d\n", + dp->msm_dp_display.connector_type); =20 - mutex_unlock(&dp->event_mutex); - - return 0; + return rc; } =20 static void msm_dp_display_deinit_sub_modules(struct msm_dp_display_privat= e *dp) @@ -1010,12 +772,8 @@ void msm_dp_snapshot(struct msm_disp_state *disp_stat= e, struct msm_dp *dp) * power_on status before dumping DP registers to avoid crash due * to unclocked access */ - mutex_lock(&msm_dp_display->event_mutex); - - if (!dp->power_on) { - mutex_unlock(&msm_dp_display->event_mutex); + if (!dp->power_on) return; - } =20 msm_disp_snapshot_add_block(disp_state, msm_dp_display->ahb_len, msm_dp_display->ahb_base, "dp_ahb"); @@ -1025,8 +783,6 @@ void msm_dp_snapshot(struct msm_disp_state *disp_state= , struct msm_dp *dp) msm_dp_display->link_base, "dp_link"); msm_disp_snapshot_add_block(disp_state, msm_dp_display->p0_len, msm_dp_display->p0_base, "dp_p0"); - - mutex_unlock(&msm_dp_display->event_mutex); } =20 void msm_dp_display_set_psr(struct msm_dp *msm_dp_display, bool enter) @@ -1042,95 +798,6 @@ void msm_dp_display_set_psr(struct msm_dp *msm_dp_dis= play, bool enter) msm_dp_ctrl_set_psr(dp->ctrl, enter); } =20 -static int hpd_event_thread(void *data) -{ - struct msm_dp_display_private *msm_dp_priv; - unsigned long flag; - struct msm_dp_event *todo; - int timeout_mode =3D 0; - - msm_dp_priv =3D (struct msm_dp_display_private *)data; - - while (1) { - if (timeout_mode) { - wait_event_timeout(msm_dp_priv->event_q, - (msm_dp_priv->event_pndx =3D=3D msm_dp_priv->event_gndx) || - kthread_should_stop(), EVENT_TIMEOUT); - } else { - wait_event_interruptible(msm_dp_priv->event_q, - (msm_dp_priv->event_pndx !=3D msm_dp_priv->event_gndx) || - kthread_should_stop()); - } - - if (kthread_should_stop()) - break; - - spin_lock_irqsave(&msm_dp_priv->event_lock, flag); - todo =3D &msm_dp_priv->event_list[msm_dp_priv->event_gndx]; - if (todo->delay) { - struct msm_dp_event *todo_next; - - msm_dp_priv->event_gndx++; - msm_dp_priv->event_gndx %=3D DP_EVENT_Q_MAX; - - /* re enter delay event into q */ - todo_next =3D &msm_dp_priv->event_list[msm_dp_priv->event_pndx++]; - msm_dp_priv->event_pndx %=3D DP_EVENT_Q_MAX; - todo_next->event_id =3D todo->event_id; - todo_next->delay =3D todo->delay - 1; - - /* clean up older event */ - todo->event_id =3D EV_NO_EVENT; - todo->delay =3D 0; - - /* switch to timeout mode */ - timeout_mode =3D 1; - spin_unlock_irqrestore(&msm_dp_priv->event_lock, flag); - continue; - } - - /* timeout with no events in q */ - if (msm_dp_priv->event_pndx =3D=3D msm_dp_priv->event_gndx) { - spin_unlock_irqrestore(&msm_dp_priv->event_lock, flag); - continue; - } - - msm_dp_priv->event_gndx++; - msm_dp_priv->event_gndx %=3D DP_EVENT_Q_MAX; - timeout_mode =3D 0; - spin_unlock_irqrestore(&msm_dp_priv->event_lock, flag); - - switch (todo->event_id) { - case EV_HPD_PLUG_INT: - msm_dp_hpd_plug_handle(msm_dp_priv); - break; - case EV_HPD_UNPLUG_INT: - msm_dp_hpd_unplug_handle(msm_dp_priv); - break; - case EV_IRQ_HPD_INT: - msm_dp_irq_hpd_handle(msm_dp_priv); - break; - default: - break; - } - } - - return 0; -} - -static int msm_dp_hpd_event_thread_start(struct msm_dp_display_private *ms= m_dp_priv) -{ - /* set event q to empty */ - msm_dp_priv->event_gndx =3D 0; - msm_dp_priv->event_pndx =3D 0; - - msm_dp_priv->ev_tsk =3D kthread_run(hpd_event_thread, msm_dp_priv, "dp_hp= d_handler"); - if (IS_ERR(msm_dp_priv->ev_tsk)) - return PTR_ERR(msm_dp_priv->ev_tsk); - - return 0; -} - /** * msm_dp_bridge_detect - callback to determine if connector is connected * @bridge: Pointer to drm bridge structure @@ -1144,7 +811,7 @@ enum drm_connector_status msm_dp_bridge_detect(struct = drm_bridge *bridge, struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; struct msm_dp_display_private *priv; int ret =3D 0; - int status =3D connector_status_disconnected; + int status; u8 dpcd[DP_RECEIVER_CAP_SIZE]; struct drm_dp_desc desc; =20 @@ -1153,77 +820,70 @@ enum drm_connector_status msm_dp_bridge_detect(struc= t drm_bridge *bridge, priv =3D container_of(dp, struct msm_dp_display_private, msm_dp_display); =20 if (!dp->link_ready) - return status; - - msm_dp_aux_enable_xfers(priv->aux, true); + return connector_status_disconnected; =20 ret =3D pm_runtime_resume_and_get(&dp->pdev->dev); if (ret) { DRM_ERROR("failed to pm_runtime_resume\n"); - msm_dp_aux_enable_xfers(priv->aux, false); - return status; + return connector_status_disconnected; } =20 + msm_dp_aux_enable_xfers(priv->aux, true); + ret =3D msm_dp_aux_is_link_connected(priv->aux); - if (dp->internal_hpd && !ret) - goto end; + if (ret) { + DRM_DEBUG_DP("aux not connected\n"); + goto err; + } =20 ret =3D drm_dp_read_dpcd_caps(priv->aux, dpcd); - if (ret) - goto end; + if (ret) { + DRM_DEBUG_DP("failed to read caps\n"); + goto err; + } =20 ret =3D drm_dp_read_desc(priv->aux, &desc, drm_dp_is_branch(dpcd)); - if (ret) - goto end; + if (ret) { + DRM_DEBUG_DP("failed to read desc\n"); + goto err; + } =20 status =3D connector_status_connected; if (drm_dp_read_sink_count_cap(connector, dpcd, &desc)) { - int sink_count =3D drm_dp_read_sink_count(priv->aux); - - drm_dbg_dp(dp->drm_dev, "sink_count =3D %d\n", sink_count); + int sink_count; =20 + sink_count =3D drm_dp_read_sink_count(priv->aux); if (sink_count <=3D 0) status =3D connector_status_disconnected; + + drm_dbg_dp(dp->drm_dev, "sink_count =3D %d\n", sink_count); } =20 -end: pm_runtime_put_sync(&dp->pdev->dev); return status; + +err: + pm_runtime_put_sync(&dp->pdev->dev); + return connector_status_disconnected; } =20 static irqreturn_t msm_dp_display_irq_handler(int irq, void *dev_id) { struct msm_dp_display_private *dp =3D dev_id; - irqreturn_t ret =3D IRQ_NONE; u32 hpd_isr_status; - - if (!dp) { - DRM_ERROR("invalid data\n"); - return IRQ_NONE; - } + unsigned long flags; + irqreturn_t ret =3D IRQ_HANDLED; =20 hpd_isr_status =3D msm_dp_aux_get_hpd_intr_status(dp->aux); =20 if (hpd_isr_status & 0x0F) { drm_dbg_dp(dp->drm_dev, "type=3D%d isr=3D0x%x\n", dp->msm_dp_display.connector_type, hpd_isr_status); - /* hpd related interrupts */ - if (hpd_isr_status & DP_DP_HPD_PLUG_INT_MASK) - msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0); - - if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK) { - msm_dp_add_event(dp, EV_IRQ_HPD_INT, 0); - } - - if (hpd_isr_status & DP_DP_HPD_REPLUG_INT_MASK) { - msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0); - msm_dp_add_event(dp, EV_HPD_PLUG_INT, 3); - } =20 - if (hpd_isr_status & DP_DP_HPD_UNPLUG_INT_MASK) - msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0); - - ret =3D IRQ_HANDLED; + spin_lock_irqsave(&dp->irq_thread_lock, flags); + dp->hpd_isr_status |=3D hpd_isr_status; + ret =3D IRQ_WAKE_THREAD; + spin_unlock_irqrestore(&dp->irq_thread_lock, flags); } =20 /* DP controller isr */ @@ -1232,6 +892,36 @@ static irqreturn_t msm_dp_display_irq_handler(int irq= , void *dev_id) return ret; } =20 +static irqreturn_t msm_dp_display_irq_thread(int irq, void *dev_id) +{ + struct msm_dp_display_private *dp =3D dev_id; + irqreturn_t ret =3D IRQ_NONE; + unsigned long flags; + u32 hpd_isr_status; + + spin_lock_irqsave(&dp->irq_thread_lock, flags); + hpd_isr_status =3D dp->hpd_isr_status; + dp->hpd_isr_status =3D 0; + spin_unlock_irqrestore(&dp->irq_thread_lock, flags); + + if (hpd_isr_status & DP_DP_HPD_UNPLUG_INT_MASK) + drm_bridge_hpd_notify(dp->msm_dp_display.bridge, + connector_status_disconnected); + + if (hpd_isr_status & DP_DP_HPD_PLUG_INT_MASK) + drm_bridge_hpd_notify(dp->msm_dp_display.bridge, + connector_status_connected); + + /* Send HPD as connected and distinguish it in the notifier */ + if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK) + drm_bridge_hpd_notify(dp->msm_dp_display.bridge, + connector_status_connected); + + ret =3D IRQ_HANDLED; + + return ret; +} + static int msm_dp_display_request_irq(struct msm_dp_display_private *dp) { int rc =3D 0; @@ -1243,9 +933,13 @@ static int msm_dp_display_request_irq(struct msm_dp_d= isplay_private *dp) return dp->irq; } =20 - rc =3D devm_request_irq(&pdev->dev, dp->irq, msm_dp_display_irq_handler, - IRQF_TRIGGER_HIGH|IRQF_NO_AUTOEN, - "dp_display_isr", dp); + spin_lock_init(&dp->irq_thread_lock); + irq_set_status_flags(dp->irq, IRQ_NOAUTOEN); + rc =3D devm_request_threaded_irq(&pdev->dev, dp->irq, + msm_dp_display_irq_handler, + msm_dp_display_irq_thread, + IRQ_TYPE_LEVEL_HIGH, + "dp_display_isr", dp); =20 if (rc < 0) { DRM_ERROR("failed to request IRQ%u: %d\n", @@ -1425,6 +1119,7 @@ static int msm_dp_display_probe(struct platform_devic= e *pdev) dp->wide_bus_supported =3D desc->wide_bus_supported; dp->msm_dp_display.is_edp =3D (dp->msm_dp_display.connector_type =3D=3D DRM_MODE_CONNECTOR_eDP); + dp->hpd_isr_status =3D 0; =20 rc =3D msm_dp_display_get_io(dp); if (rc) @@ -1436,11 +1131,6 @@ static int msm_dp_display_probe(struct platform_devi= ce *pdev) return -EPROBE_DEFER; } =20 - /* setup event q */ - mutex_init(&dp->event_mutex); - init_waitqueue_head(&dp->event_q); - spin_lock_init(&dp->event_lock); - /* Store DP audio handle inside DP display */ dp->msm_dp_display.msm_dp_audio =3D dp->audio; =20 @@ -1636,7 +1326,6 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *d= rm_bridge, struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; int rc =3D 0; struct msm_dp_display_private *msm_dp_display; - u32 hpd_state; bool force_link_train =3D false; =20 msm_dp_display =3D container_of(dp, struct msm_dp_display_private, msm_dp= _display); @@ -1648,29 +1337,21 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge = *drm_bridge, if (dp->is_edp) msm_dp_hpd_plug_handle(msm_dp_display); =20 - mutex_lock(&msm_dp_display->event_mutex); if (pm_runtime_resume_and_get(&dp->pdev->dev)) { DRM_ERROR("failed to pm_runtime_resume\n"); - mutex_unlock(&msm_dp_display->event_mutex); return; } =20 - hpd_state =3D msm_dp_display->hpd_state; - if (hpd_state !=3D ST_DISPLAY_OFF && hpd_state !=3D ST_MAINLINK_READY) { - mutex_unlock(&msm_dp_display->event_mutex); + if (msm_dp_display->link->sink_count =3D=3D 0) return; - } =20 rc =3D msm_dp_display_set_mode(dp, &msm_dp_display->msm_dp_mode); if (rc) { DRM_ERROR("Failed to perform a mode set, rc=3D%d\n", rc); - mutex_unlock(&msm_dp_display->event_mutex); return; } =20 - hpd_state =3D msm_dp_display->hpd_state; - - if (hpd_state =3D=3D ST_DISPLAY_OFF) { + if (dp->link_ready && !dp->power_on) { msm_dp_display_host_phy_init(msm_dp_display); force_link_train =3D true; } @@ -1689,11 +1370,7 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *= drm_bridge, msm_dp_display_disable(msm_dp_display); } =20 - /* completed connection */ - msm_dp_display->hpd_state =3D ST_CONNECTED; - drm_dbg_dp(dp->drm_dev, "type=3D%d Done\n", dp->connector_type); - mutex_unlock(&msm_dp_display->event_mutex); } =20 void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, @@ -1713,7 +1390,6 @@ void msm_dp_bridge_atomic_post_disable(struct drm_bri= dge *drm_bridge, { struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(drm_bridge); struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; - u32 hpd_state; struct msm_dp_display_private *msm_dp_display; =20 msm_dp_display =3D container_of(dp, struct msm_dp_display_private, msm_dp= _display); @@ -1721,27 +1397,14 @@ void msm_dp_bridge_atomic_post_disable(struct drm_b= ridge *drm_bridge, if (dp->is_edp) msm_dp_hpd_unplug_handle(msm_dp_display); =20 - mutex_lock(&msm_dp_display->event_mutex); - - hpd_state =3D msm_dp_display->hpd_state; - if (hpd_state !=3D ST_DISCONNECT_PENDING && hpd_state !=3D ST_CONNECTED) - drm_dbg_dp(dp->drm_dev, "type=3D%d wrong hpd_state=3D%d\n", - dp->connector_type, hpd_state); + if (!dp->link_ready) + drm_dbg_dp(dp->drm_dev, "type=3D%d is disconnected\n", dp->connector_typ= e); =20 msm_dp_display_disable(msm_dp_display); =20 - hpd_state =3D msm_dp_display->hpd_state; - if (hpd_state =3D=3D ST_DISCONNECT_PENDING) { - /* completed disconnection */ - msm_dp_display->hpd_state =3D ST_DISCONNECTED; - } else { - msm_dp_display->hpd_state =3D ST_DISPLAY_OFF; - } - drm_dbg_dp(dp->drm_dev, "type=3D%d Done\n", dp->connector_type); =20 pm_runtime_put_sync(&dp->pdev->dev); - mutex_unlock(&msm_dp_display->event_mutex); } =20 void msm_dp_bridge_mode_set(struct drm_bridge *drm_bridge, @@ -1797,18 +1460,13 @@ void msm_dp_bridge_hpd_enable(struct drm_bridge *br= idge) * step-4: DP PHY is initialized at plugin handler before link training * */ - mutex_lock(&dp->event_mutex); if (pm_runtime_resume_and_get(&msm_dp_display->pdev->dev)) { DRM_ERROR("failed to resume power\n"); - mutex_unlock(&dp->event_mutex); return; } =20 msm_dp_aux_hpd_enable(dp->aux); msm_dp_aux_hpd_intr_enable(dp->aux); - - msm_dp_display->internal_hpd =3D true; - mutex_unlock(&dp->event_mutex); } =20 void msm_dp_bridge_hpd_disable(struct drm_bridge *bridge) @@ -1817,15 +1475,10 @@ void msm_dp_bridge_hpd_disable(struct drm_bridge *b= ridge) struct msm_dp *msm_dp_display =3D msm_dp_bridge->msm_dp_display; struct msm_dp_display_private *dp =3D container_of(msm_dp_display, struct= msm_dp_display_private, msm_dp_display); =20 - mutex_lock(&dp->event_mutex); - msm_dp_aux_hpd_intr_disable(dp->aux); msm_dp_aux_hpd_disable(dp->aux); =20 - msm_dp_display->internal_hpd =3D false; - pm_runtime_put_sync(&msm_dp_display->pdev->dev); - mutex_unlock(&dp->event_mutex); } =20 void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge, @@ -1835,13 +1488,31 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge *br= idge, struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(bridge); struct msm_dp *msm_dp_display =3D msm_dp_bridge->msm_dp_display; struct msm_dp_display_private *dp =3D container_of(msm_dp_display, struct= msm_dp_display_private, msm_dp_display); + u32 hpd_link_status =3D 0; =20 - /* Without next_bridge interrupts are handled by the DP core directly */ - if (msm_dp_display->internal_hpd) + if (pm_runtime_resume_and_get(&msm_dp_display->pdev->dev)) { + DRM_ERROR("failed to pm_runtime_resume\n"); return; + } + + hpd_link_status =3D msm_dp_aux_is_link_connected(dp->aux); =20 - if (!msm_dp_display->link_ready && status =3D=3D connector_status_connect= ed) - msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0); - else if (msm_dp_display->link_ready && status =3D=3D connector_status_dis= connected) - msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0); + drm_dbg_dp(dp->drm_dev, "type=3D%d link hpd_link_status=3D0x%x, link_read= y=3D%d, status=3D%d\n", + msm_dp_display->connector_type, hpd_link_status, + msm_dp_display->link_ready, status); + + if (status =3D=3D connector_status_connected) { + if (hpd_link_status =3D=3D ISR_HPD_REPLUG_COUNT) { + msm_dp_hpd_plug_handle(dp); + msm_dp_hpd_unplug_handle(dp); + } else if (hpd_link_status =3D=3D ISR_IRQ_HPD_PULSE_COUNT) { + msm_dp_irq_hpd_handle(dp); + } else { + msm_dp_hpd_plug_handle(dp); + } + } else { + msm_dp_hpd_unplug_handle(dp); + } + + pm_runtime_put_sync(&msm_dp_display->pdev->dev); } diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/d= p_display.h index 60094061c102..d2d3d61eb0b0 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.h +++ b/drivers/gpu/drm/msm/dp/dp_display.h @@ -22,7 +22,6 @@ struct msm_dp { bool power_on; unsigned int connector_type; bool is_edp; - bool internal_hpd; =20 struct msm_dp_audio *msm_dp_audio; bool psr_supported; --=20 2.47.3 From nobody Sat Feb 7 06:13:48 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 3A94833A711 for ; Thu, 15 Jan 2026 07:29:30 +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=1768462172; cv=none; b=GftpXWO0BGFqRXGchaH6jVosIvGYFdAh3VGg3bvhH+6bcZA8+PW1x/TvtJCSPQGQy1TKQw23D83n5y5IC4OWfFnJ2UaVU2Hq1DW8rBGTkfCwqb/JIm4DY3mYz76szPdZEp/6h43ua1abVDjmGas0fyDDA/CKvFjzsKTlvOaI8rs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768462172; c=relaxed/simple; bh=Uj6SkCD9WpEPo0n4wYd5ftFA1pIpk0IwLQYdPPl0+uo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WUthhFpEdryXVSToJhnhNoJUYlVjvTek9QAC7PUyoTS0KPkMEldr68KMwYdR1PCYEjO9Ju68IRZnsoi0bntp/NHldxn6K5Dt07zPYJZOaDUspEX/FFiTF8H/dvNqKUkc2U1WINorSS/VksqFFXDOcLqkqwrC5GvoJAjHrU4+RPo= 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=WVvtuNe7; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=NuxWYiId; 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="WVvtuNe7"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="NuxWYiId" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60F6g9dg1554491 for ; Thu, 15 Jan 2026 07:29:29 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= nYMdlqKEaCVNYnY2T+ZZKkA05y51oThEIgGnkyPnO68=; b=WVvtuNe7E9bu2Dua 2UmXq88zKk3Hzw2jC0iWHbfF4zvt3AEk8uG1gRf/k/7at2NKJTY1MJr+byr7INNk JRwNliwjmEc3ta0wUqWoeb/JzBH2R+pIj1Xz30R8CM1Of2zkiF6dZ+YmdEgovxrt afOal9dTBe6XibUOLT3mLtizeSSOX8AvGAhptWsb00K1/uA+oDL3sKXpfX4l//vy HZ5LIFJ1i8iNx8ArUrcD1ODIMAw0ulEt3Ewsq1AXkupiFOvP/RdpFYAfrzQmeBiq FasxJTauqOJzRG7o1isU4PIU34cRoKNhZZoBVI8bcUpUgO0X2xvzDBxvZYWWcybq F6PGGA== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bp9x8uddb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 15 Jan 2026 07:29:29 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8c52fd4cca2so160810985a.3 for ; Wed, 14 Jan 2026 23:29:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768462169; x=1769066969; 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=nYMdlqKEaCVNYnY2T+ZZKkA05y51oThEIgGnkyPnO68=; b=NuxWYiIdAnIpMywZHzP4AmE45NVHkAZ+h9nJPDSfxGAB5JQcct/rBHmcnr2Blw8kwz nFbyQfeZjwaASznA3fb0RBd88HEpsVNYC/ebVn02Odtc9SUxHrdOnad+cdneLC1MC4Q5 iKZOELhzRkMu9VYeX1bBNUrlhKac6Ybh/MSj+3ARV1nDrCB/SmmAv14vNdaJLeC9w1NL Iz9bnQ4NI+zvZo56Rc/dw9mHLyqGB4ErgVJsE7dMdNushVBhC6HSFCHbpZoCoB0ADjMZ 1TKtcdA8B5Q7q9pMRlCWpMmfisPIKPftX0Vu29JFf0/dzkcn+wtpXtRtuNKY49yiYfOy gqjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768462169; x=1769066969; 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=nYMdlqKEaCVNYnY2T+ZZKkA05y51oThEIgGnkyPnO68=; b=MQkBpQVLi257k91OBKdFjFUhaVcDoW3COxUIP9KCT++ALlqBYUnO/SmRbSbDwx2Jra oZalKxQHbiBsJ2KgD3VMK8Ey7vNG2QNESOqPGG79mH9jJ0gJB9K5r8KEWb9zckwinLMy Zpn0fbaYPuOxrRPyKRc7a/1skQoYoGLXihm3NV2JnKQ9QsF2OghDyQaAz+tF+aetTS36 /9xXcmylzdVmBn5ALiGUqyaFj4lQD9fut9fEh+26AobHgf53vDIaKEKhB5pZyrj0iMnn g8zbMg0wsPdkheGTfTmdoyXDBmtdF8CyyUVFWnuIrx8La/CEkjLNf8U6QMRfayRyGxPx Rjbw== X-Forwarded-Encrypted: i=1; AJvYcCVWF+YcxNBQySc58SnK+vu85WwalR9RDb3+QlLM0fRt1t3U4UWIRgx5WJjbpl2IXzp4CBTdC8ihnt0AcR4=@vger.kernel.org X-Gm-Message-State: AOJu0Ywpr+vEA36NPJC+ohRSmp7YGFwTmJCRq3olx27J9BJctKpwfiFm Ms4tF6pSUV98pkvUevbMKN4M0XEF1sOxPTlAIjoi8qn063ghI4OvL8m6pSxBRjnLYyMutHTWF8j s5eOUiUrapFCSWn98fgzhRNCIVs2Zn+Vz2DBBflSNXrh0rlKwNq/n51PRIvWhJyFpo2o= X-Gm-Gg: AY/fxX4Ga0zzFkJhO3XULiDRhCyIg24bc/b7z8KCiV8S3+ZB+Esol0u1A+z+bZFlJkn JrM872vVZApQPX33mYuQBFuxsRnT9aLuXjQ/x/g/pSrsiJMKx7LESi+y9KqL7hi4SL0LTB9jQMY HtxSsmlfsldL6UvWc57oJ6y+1tnfrmfn8dxDLm0EszQxx67HVQ9eUVh/CVxWNvB+dzY69puvSZc jxwQTq5ziTF2LE0ql7vcXWqHmQWesOFzgmv6qcp1bm8f5JEbT+R8ifYTaeSK44fZ1PodMdkbXWj No+oXwXGTtda3m3uMA0JnqVXNSJfKsQjlVOBs18QtEjGrIKetKwN9vxdGzjzIRrrp+DwkrvgGjg vw0OV3/YSULRFEjqCgizo2/MqDq9CZalMdxiEFYViZR4ACuxlN/SIB++5w2by4PmjpmDW9rryWF /DLYZ57KnUNNeEky1iv+K2+Cw= X-Received: by 2002:a05:620a:31a5:b0:8c5:2dbc:6253 with SMTP id af79cd13be357-8c52fbcf036mr732591985a.51.1768462168620; Wed, 14 Jan 2026 23:29:28 -0800 (PST) X-Received: by 2002:a05:620a:31a5:b0:8c5:2dbc:6253 with SMTP id af79cd13be357-8c52fbcf036mr732589285a.51.1768462168135; Wed, 14 Jan 2026 23:29:28 -0800 (PST) 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 38308e7fff4ca-382eb7b1a4dsm58078801fa.17.2026.01.14.23.29.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jan 2026 23:29:27 -0800 (PST) From: Dmitry Baryshkov Date: Thu, 15 Jan 2026 09:29:13 +0200 Subject: [PATCH v3 8/8] drm/msm/dp: Add sink_count and link_ready to debug logs 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: <20260115-hpd-refactor-v3-8-08e2f3bcd2e0@oss.qualcomm.com> References: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> In-Reply-To: <20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Jessica Zhang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3587; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=PIbs1V6oCZycCnfF0WvcY9fGYHmsP42h2zaX22R58XU=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ2bGdBfnZfdy3t5IMN7ieH3Zmimnw86Wy8m572HQToph+ GKYK/K3k9GYhYGRi0FWTJHFp6Blasym5LAPO6bWwwxiZQKZwsDFKQATuXqbg6H/jE6Q9Xw1Ca5l wvdc/W14n8Re8vjl/Ux2rkPWuklnFHu+32tNil6u75rqrLBWcME69aP/PlheC4z12Paost7x4qe eauXQ99GzZ3afOzXBTOnJCZV12kK+rs135BWerJC5ZqLg7ZI9s+ZL1sekl4UMERv3SabxnlbYP0 NhTezx262Sfr7MOXfr3ojPfzqF/Uxd9HEG4Rxdrf7l3sLPXjUsd92w2XPjUh77DsO2N4FFG8uln IN6AmS2sYh9DHSq6O6IMzlsHaJQsW13zFZV7q7O/52Gr44WHbUv9fa8q3U0yeZ94JpdBxIFznBv nlMuceO17vvoCPcXL7kuRxtPmLjTt8oyZ+GKnCefzERdAA== X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: MknuDWIQvGnAIlYG9MJdr5gZ2dlDCmTU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE1MDA0OSBTYWx0ZWRfX3foZ321k7f/j c/Xh6Avh9JtqTEpZUutgHaFmjnZO2RVsWSGlGLPVTjPCNReg7c2DmAOf40rPLAvRf7kS9PjtJpJ c77c4YZFzfYFjrBsr2Gn1wcIXCROQ7cDRPUR6D0CiPfpQ4ZQKXVh6+5lduHmi56I3qSQDidXwDq F2TTbJMvJfKjdxbQ8bl5Q/6fyqFKaQSxW1j363g0xLR29ihLTtEcBK1X4ewTVEQiI8+Pg4imxVv fmCHv17Tb14+qCq13Umd4xZIy0L5VEeF4SpiTDUrq3gQPabIHuWLRubVQdW0vG2Mmt1rMxrrIbo IPR/JCClLym7cJXKhWZTmwSoUPe2+A03ei1sFOsfKJ57mkHaZepFR1FueylPZXESEwX/8zpRS1L /n96aqe0yMcXamjiWa6DqbKoIl7x46n5asKO7zEMki7Yecg60PMrAkW/BFh1z6B9w13YAu9a0tK nAUe2/5MoUhtAKw9LEw== X-Authority-Analysis: v=2.4 cv=HY4ZjyE8 c=1 sm=1 tr=0 ts=69689759 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=D6o9UKO1UCu5gje6phcA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-ORIG-GUID: MknuDWIQvGnAIlYG9MJdr5gZ2dlDCmTU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-15_02,2026-01-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 adultscore=0 priorityscore=1501 lowpriorityscore=0 spamscore=0 suspectscore=0 clxscore=1015 impostorscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601150049 From: Jessica Zhang Add sink count and link_ready to the debug logs for [un]plug and HPD IRQ handling. Signed-off-by: Jessica Zhang Signed-off-by: Dmitry Baryshkov Reviewed-by: Bjorn Andersson --- drivers/gpu/drm/msm/dp/dp_display.c | 36 ++++++++++++++++++++++++---------= --- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index b26fba89e73a..67a193f58ce2 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -388,8 +388,10 @@ static int msm_dp_hpd_plug_handle(struct msm_dp_displa= y_private *dp) int ret; struct platform_device *pdev =3D dp->msm_dp_display.pdev; =20 - drm_dbg_dp(dp->drm_dev, "Before, type=3D%d\n", - dp->msm_dp_display.connector_type); + drm_dbg_dp(dp->drm_dev, "Before, type=3D%d sink_count=3D%d, link_ready=3D= %d\n", + dp->msm_dp_display.connector_type, + dp->link->sink_count, + dp->msm_dp_display.link_ready); =20 if (dp->msm_dp_display.link_ready) return 0; @@ -411,8 +413,10 @@ static int msm_dp_hpd_plug_handle(struct msm_dp_displa= y_private *dp) pm_runtime_put_sync(&pdev->dev); } =20 - drm_dbg_dp(dp->drm_dev, "After, type=3D%d\n", - dp->msm_dp_display.connector_type); + drm_dbg_dp(dp->drm_dev, "After, type=3D%d sink_count=3D%d, link_ready=3D%= d\n", + dp->msm_dp_display.connector_type, + dp->link->sink_count, + dp->msm_dp_display.link_ready); =20 /* uevent will complete connection part */ return 0; @@ -440,8 +444,10 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_disp= lay_private *dp) =20 msm_dp_aux_enable_xfers(dp->aux, false); =20 - drm_dbg_dp(dp->drm_dev, "Before, type=3D%d\n", - dp->msm_dp_display.connector_type); + drm_dbg_dp(dp->drm_dev, "Before, type=3D%d sink_count=3D%d, link_ready=3D= %d\n", + dp->msm_dp_display.connector_type, + dp->link->sink_count, + dp->msm_dp_display.link_ready); =20 if (!dp->msm_dp_display.link_ready) return 0; @@ -465,8 +471,10 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_disp= lay_private *dp) /* signal the disconnect event early to ensure proper teardown */ msm_dp_display_handle_plugged_change(&dp->msm_dp_display, false); =20 - drm_dbg_dp(dp->drm_dev, "After, type=3D%d\n", - dp->msm_dp_display.connector_type); + drm_dbg_dp(dp->drm_dev, "After, type=3D%d, sink_count=3D%d, link_ready=3D= %d\n", + dp->msm_dp_display.connector_type, + dp->link->sink_count, + dp->msm_dp_display.link_ready); =20 /* uevent will complete disconnection part */ pm_runtime_put_sync(&pdev->dev); @@ -479,8 +487,10 @@ static int msm_dp_irq_hpd_handle(struct msm_dp_display= _private *dp) int rc =3D 0; =20 /* irq_hpd can happen at either connected or disconnected state */ - drm_dbg_dp(dp->drm_dev, "Before, type=3D%d\n", - dp->msm_dp_display.connector_type); + drm_dbg_dp(dp->drm_dev, "Before, type=3D%d, sink_count=3D%d, link_ready= =3D%d\n", + dp->msm_dp_display.connector_type, + dp->link->sink_count, + dp->msm_dp_display.link_ready); =20 /* check for any test request issued by sink */ rc =3D msm_dp_link_process_request(dp->link); @@ -493,8 +503,10 @@ static int msm_dp_irq_hpd_handle(struct msm_dp_display= _private *dp) rc =3D msm_dp_display_handle_irq_hpd(dp); } =20 - drm_dbg_dp(dp->drm_dev, "After, type=3D%d\n", - dp->msm_dp_display.connector_type); + drm_dbg_dp(dp->drm_dev, "After, type=3D%d, sink_count=3D%d, link_ready=3D= %d\n", + dp->msm_dp_display.connector_type, + dp->link->sink_count, + dp->msm_dp_display.link_ready); =20 return rc; } --=20 2.47.3