From nobody Sun Oct 5 03:36:54 2025 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 B653623771C for ; Sat, 9 Aug 2025 00:35:39 +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=1754699741; cv=none; b=nTn/yL4jXTGSlqFUmFhNf9W8Qv9rpRqbK2LFMprOujJn0LsnqdhVgScJpmHTi9cqRd3b5WCXcPoEuOfYLB7BKlsfZDO0/+A7uhKyX6EmOo6uhb0W3Rw+Y3oyfrRVHQYiYlUzYZphrJ7q0DYj4y410RNwpEE3a29GO6YsNUI6IF4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754699741; c=relaxed/simple; bh=dlkqBGODh3j3sXW+PUd6RTyGAht6wmJhJ9vt60MBI2Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cs+atihswdoO3LSOJRX9FjohFeCWnYvbgyzwbMSNmhDJ1L3q0111KyH4wOoGM5pG9iCDAt3w1VjjI+Q+cBH+vUPVg1jNPiRp+/+vzjLp0V2BuNL3TqMUNgOFKJEOALFWVdc+ZJjDtSpdM7xlEtAtndj2AXcJnTG2pjQrk1EDw8M= 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=ajZ4qw3A; 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="ajZ4qw3A" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 578F2NvJ003587 for ; Sat, 9 Aug 2025 00:35:38 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= Am8SRRlpRsUiuuIqG7X6GswUkVcm4QHsls9Y8TEI2o0=; b=ajZ4qw3AVALeFnVG wAats32HsPCVnTKzz7H+3cKxflvILAgpCk73BXH36NbDo8xY5ASkKU5OQTfFFvLR 6RX4p0TkPWKIm5YejoixVToByFlcv4rGv47avigjYFcdDfTY/iF2xLlwC5r7yJ9T Y7Gz/JL71g/fELB/ZtVuxggsYOJDC/rfXxLOESu+FEa6BwA9ZFbuVpjaps18kSAL UiH9IFGBSxUCBZ78BQSGMS5TXNe3dBkjVNgDTRn8YRV8+K+0kIjmFz0TrChSU2Bj rkb0TVZY0AnzQiySz/KTjNlVvO8cAz22/QFZO0gv4gmMmGkZ4IJwbKjTNmzlZvZp nfyDqw== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48bpw03nxg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 09 Aug 2025 00:35:38 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-23fe28867b7so33367085ad.2 for ; Fri, 08 Aug 2025 17:35:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699737; x=1755304537; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Am8SRRlpRsUiuuIqG7X6GswUkVcm4QHsls9Y8TEI2o0=; b=T2eKL9j4YcYjzxsPQCyej4oSa2vuv5JuzThtaN2UTVUd3ShIuj4ztQgWcDBNBJfzHQ /7JBiiSETkvwouauzDJd8GnJ0E6Ao0pgqs9LTRlFZ/8sVnwadvdZKtTbNjIb2VqYUikl MT5btpYWcH1vbSiOJiUe/+zpJfF66dJav3Xf2yCcxqNoYVWlCg49kNa4WRUxT5Ee9hZB pPfLPiZh/JdocmzInwKh9lwPxNN/OgTyusOwq/2zh2uSef1ks4OPxV1X+g1KKi+Od/13 MJWuuyxIYKXHmVqhFBnQgnpO1S90EdFV79vPJOWqNETBnRZBKrwEUJ6cHGX1/voyVZu2 wdyA== X-Forwarded-Encrypted: i=1; AJvYcCXO0csHKyJG09PPHWLfePsPkCkF9zDKEMP+Qp8KiDCk5mgxeCV44YDYM5d85qzfrvvF8cwC5LelXvIFU7U=@vger.kernel.org X-Gm-Message-State: AOJu0YxGFQ2YJHYBZXsnXnRGB3zq83DC/keFP9HXZlqxmXZMawB/+Ftc k75/xVngL8PG0eOaoQTAmnrwechijRl+lTN37QtTHq5Ud+dI2RaMd2cCwzN0Nw0viIGVf4IwOZ2 EuKCanciggDKUg+Vg48RHPDZ3H7FQ4+jAHn5BpM3zgBTxKSb+8tEblGVcQ0dvT/O3Zws= X-Gm-Gg: ASbGncvNlFkqfXj5YVbQ6nHXIvwa4qoL8uDSmhQpYnBhlpqN3A7D0ApT03VYcxxj07k oN2Y4OKZqbe8EWePMN7CXIa6+3YIMKuCdWY+E2p6TGKTwFCV0EJq9/+JsXAS/MSmuDXHuPoxsx2 3z1PgNIk4iYpq9caBHv6mYLThcBMzzFpBfKfR611crjCmmdPf0GNZdRFRDfZyaDTcTcO5ognq89 UbpPZwS3JzoqQEwQv9P37UFk601uwERWekurygKYWspjvfJgWcDF1hwwzFFyoGh+Kji4YWZGO2/ MKY5IG2mbPUKPR9/SQzG/GfgKmMyvAhU2Av/CJ1gxQdY4byBmSnqck0lTWVdyqAKK4e6hTXtL13 mwM/5etgjYH3yoU6lqVwFjFhQ X-Received: by 2002:a17:902:f708:b0:240:2bb6:d4ae with SMTP id d9443c01a7336-242c21fd174mr54617485ad.30.1754699737426; Fri, 08 Aug 2025 17:35:37 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGKDv8apsZallq/K7ay2tvwcFTR/tP3fr5zCSv6TlMV9b4Q5I+msieWi+8RSFY9p8c2K/WIFg== X-Received: by 2002:a17:902:f708:b0:240:2bb6:d4ae with SMTP id d9443c01a7336-242c21fd174mr54617295ad.30.1754699737061; Fri, 08 Aug 2025 17:35:37 -0700 (PDT) Received: from jesszhan-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef678dsm219865355ad.39.2025.08.08.17.35.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 17:35:36 -0700 (PDT) From: Jessica Zhang Date: Fri, 08 Aug 2025 17:35:13 -0700 Subject: [PATCH v2 01/12] 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: <20250808-hpd-refactor-v2-1-7f4e1e741aa3@oss.qualcomm.com> References: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> In-Reply-To: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1754699734; l=1021; i=jessica.zhang@oss.qualcomm.com; s=20230329; h=from:subject:message-id; bh=dlkqBGODh3j3sXW+PUd6RTyGAht6wmJhJ9vt60MBI2Q=; b=ijI/+bZvfr7WaBEdK9j7OTWq9Mt0uUE/lrcNkpvprQoAvNK6hxioFg/i7npV3sgZFasfJwhTe 2rPCFARIkY5DEARh6P00mQa7MQ5/83Lu2BVkZld78HPNmiSTf2FE6Qy X-Developer-Key: i=jessica.zhang@oss.qualcomm.com; a=ed25519; pk=gAUCgHZ6wTJOzQa3U0GfeCDH7iZLlqIEPo4rrjfDpWE= X-Proofpoint-GUID: okN0jh_-tivdEIKivCXdLSL2VHMT9gcQ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA2MDAwOSBTYWx0ZWRfX+eWJGWPNfIrt CyOteIcOgJguSmku2dgP+dtwy66xEZ7wVb1RVb4Z0OhX5+0+yHaOKBtbbJH6DTASfSpsWvzDftP PmBRRQ4C2F7yd5lCftn7gJithF2Yh2khubyKxLYWRCAgqL+39Qt08jJFM/ATjirHwPzDwde1eth XqYmr3NMOYxa9+FV8wNOwS6pNXGGUJmbIERYGTXT7grsyemgPwFCPnxjklh0RFSm6iKlRWJIEKJ WH1xSLJVm/J74NsQX461uvwlSoRAeTngT7EBiJqhiUkufduLxeH13yJvip27OaOfWpnruDDEZoN WGs4r+u6+G+nOeNDRGLIRRJAjvoEi2MEzMVW1BueDKcUfEgNfPOog1msNrtwzw9b/1XK661NccZ fiW4GT+k X-Proofpoint-ORIG-GUID: okN0jh_-tivdEIKivCXdLSL2VHMT9gcQ X-Authority-Analysis: v=2.4 cv=NsLRc9dJ c=1 sm=1 tr=0 ts=689697da cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=jiMY0BZLP9KyD5qzzL8A:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-08_08,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 impostorscore=0 bulkscore=0 phishscore=0 adultscore=0 malwarescore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508060009 The HPD state status is the last 3 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 --- drivers/gpu/drm/msm/dp/dp_reg.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/dp/dp_reg.h b/drivers/gpu/drm/msm/dp/dp_re= g.h index 7c44d4e2cf13..b851efc132ea 100644 --- a/drivers/gpu/drm/msm/dp/dp_reg.h +++ b/drivers/gpu/drm/msm/dp/dp_reg.h @@ -69,7 +69,7 @@ #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_SHIFT (0x1D) =20 #define REG_DP_DP_HPD_INT_MASK (0x0000000C) #define DP_DP_HPD_PLUG_INT_MASK (0x00000001) --=20 2.50.1 From nobody Sun Oct 5 03:36:54 2025 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 3DA082376F5 for ; Sat, 9 Aug 2025 00:35:40 +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=1754699742; cv=none; b=WSimmdeW/rXT/ndPlxPyZXSHhNDOGVpzQopTQ1IrqDEhRfXF6XUdeSh8Re5jWR+F82O9Pk6FsefQbTeNcic3WXimkUH+7WcGJnTfwIyXu1gleR55wwTyd3sVLchmcZKTheVdq1Uu+MWQDYKGw/pwGMRG5AJfa/imdFmY7gAuCQg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754699742; c=relaxed/simple; bh=4dI75xSUxUaqLwUMy3UReh9bT/U4ccPbg+CHWdIsNCg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UrMZI8EADP7mtg1cWSVYq11io96AiO+CZ3fiayXaERSUBmdTwG4FgQ3EYhLhuT7RrNBPoHvlEaJCI0mI1dPlNXWXMHEjrFv1NubriWzW/fwsFS0tD1NfJ48J33mmQrB90vJJirkMdqF58GQs08/ihw7eKCcLF1Dkc1RpY9kEX5U= 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=AeqcSjQ6; 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="AeqcSjQ6" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 578NF2UX020431 for ; Sat, 9 Aug 2025 00:35:40 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= bOPqaygyz1VOMQKkg7WWHDM49dkikPWmvYtJ6Qfvgpg=; b=AeqcSjQ6V54+/n8k degUFSHzA1jYAR6Cnb/jnjHLc05nlzwYXU/C0IZpkFj/52KUxn+PR/vdNJo9V0T5 4KPbzl9qOeLINoGIoubbNSPN2Ib2XHUMVLY071KTYOxH1buG0QLNLv51+4af2S0g bL3FOZ1Bv699JQztT5va2Qpq1dLg4yeU0B+j2/v9ue22BpWRWpWapTZQMPEistWr mvpFoc7imTfZfba5aNhawYnMUT5SetJj/6ZzHlzv06z/5qzW8gSc97GWL9L3Yo1M JhPBJLyoldCPhykn5k2k8JFgzGt4UcEN7G3EtSt2xvjjZ9uCy5BE/xdSIx0UVJj2 I2QTpA== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48ddkkt5py-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 09 Aug 2025 00:35:40 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-b42a097bbb1so1278813a12.2 for ; Fri, 08 Aug 2025 17:35:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699739; x=1755304539; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bOPqaygyz1VOMQKkg7WWHDM49dkikPWmvYtJ6Qfvgpg=; b=nGWaDip4p8bwkSZVxUDrMROheDPbXuy/h+qLB3zKioko6iiTet8VbFmDlNP9Qe0dM8 sRPFv4y9K9Uv18m2jn/6QsT3ITlfaPttggCwzDg7Qaj/CDkDRmbaAZQWY4r6FF5WJJ4s T/S4vsHEckm7ZlQrz9g1dK3StpU+KCJAaDJ1u1JIVmhI2YTuLZAbNwhlN+x/SkAn7+qw WiNvFEEpYat2acOFJpxdAiONnW6zBEnTxsnwyeQAG4npjHgJbCbfRiT0cPLulXRBPIfx VxtTniitUoKxLOzfVDr52VsQRFnovpvxL6SbJN4XsWz0nNeOzrSu0ExxK53FJTOLSv92 zR9Q== X-Forwarded-Encrypted: i=1; AJvYcCUfsDb8MXBf4Sl3kru9NKpK/EMF4J1oh9XpJkp/O9RIw0kTUDMZuPOnn6DFFGAMnreTCF4g5zF1xgUTjp8=@vger.kernel.org X-Gm-Message-State: AOJu0YxuL/glo/W7Hd+7d3X6HRG4F+Ht59USNlbR14uOHCkpMt4hr5U8 FqJ9IYjJtFJAFOGoX29tOeCA6haz/UsrD3CakwMJXocrXGIcw0fKWYH4jucplAaBSDc4Mg5OS+V 7+8HscI++NXcbV4zNHg4xx09F6E4JCo1tOkmAhtqja35iQt2bVaAmjTyg7ZQKHmP1UtA= X-Gm-Gg: ASbGncs3GXeuocOClWgfzRFyThzQoYJXkPsdrqV4GZp0nfyn2TUrDiQzca4HnJoKsf/ b9oexEjvVD6A+7vrfDznEC15IstwMdfj0fXetw4CG6Eqg/E/zt1EYIpfQHIdU4eM7+ELyMncbJ4 P7SrMDQAWAlsReOjZK8y08AJE2FELww6U5y05y2l/W6zMJGWf6KkHJWZRo34Dop7/TsYWQo7hyT tNfSSXSZ8q31E2xr7wFPmq2ouObczDhTGLXCacvjp1xsJ/3MEQxvmh+Joq6XbttoYGR9k7LIAbr bnakYqiQl7pV2DJBk9CfWuoLb9x2DTPVsTE0b+pwDsLXHo4gN55Q7/77EV024rkVEqiFMxnkORk RTNR3G0v2Nr+kluWA9gsrce7c X-Received: by 2002:a17:903:1b4e:b0:242:9bc4:f1c9 with SMTP id d9443c01a7336-242c22a0e73mr68472545ad.56.1754699738798; Fri, 08 Aug 2025 17:35:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG90TkpPOHu3ik+v+Qlm6PmhiW122lbzmzkgxapd9Ri+VnBLxN8IwuH859qvbq5t5KTGtZyKQ== X-Received: by 2002:a17:903:1b4e:b0:242:9bc4:f1c9 with SMTP id d9443c01a7336-242c22a0e73mr68472205ad.56.1754699738343; Fri, 08 Aug 2025 17:35:38 -0700 (PDT) Received: from jesszhan-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef678dsm219865355ad.39.2025.08.08.17.35.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 17:35:38 -0700 (PDT) From: Jessica Zhang Date: Fri, 08 Aug 2025 17:35:14 -0700 Subject: [PATCH v2 02/12] 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: <20250808-hpd-refactor-v2-2-7f4e1e741aa3@oss.qualcomm.com> References: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> In-Reply-To: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1754699734; l=951; i=jessica.zhang@oss.qualcomm.com; s=20230329; h=from:subject:message-id; bh=4dI75xSUxUaqLwUMy3UReh9bT/U4ccPbg+CHWdIsNCg=; b=9v7t/t5zjvmt0SS7wNe7gTFJ1P3lQd6ZvEw9FvAt79V9e3RldlmDsTJIL0pzQssWYKovivqqU IliiZxToWPaBt9Ldj8dLeYd1tzf06Yme4Xmh0XGrjLZQJwBpdZRzhZN X-Developer-Key: i=jessica.zhang@oss.qualcomm.com; a=ed25519; pk=gAUCgHZ6wTJOzQa3U0GfeCDH7iZLlqIEPo4rrjfDpWE= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA4MDA2NiBTYWx0ZWRfXwhlJ5MyZ1uvf 3vdT0FkESmsyrMkZZk1YdXANucs6uW6GZxQNcWBMKP9wyXBacRuYD5qtVYC5jcr76JeCriin9NX 14Sh90jVytkvGarui6vTeg2umTmhbbPK1Ssu1+lnJBdjLnDv1qXrOMWCwzV2lCOLTqOgN4GH74l tMse8LM/Jg9s6XflSDsYPZrd58F5FdZ4pWCFZQuP7jEm+CjLDtKWH6Mwfn9IGhbgXR1e7ykhAba G+D0ORGlxbbKxRljGn+2fzk9MYqUTwYsxDQb8a0hmYAjQsQ+cCBvgfoAvfDDWzNcDG6AmJ/Wkwj QsyfI2Eb1NlyTjnfN9PSFU57nY7+NsPV/cc4cN7ykkRlwdycOduRAVgKD/SMxe8T/t98WDouSKq rSYPyIXU X-Proofpoint-GUID: xXqtkYfPZPdxi--cBEvOnI-_9IqZ2PfD X-Proofpoint-ORIG-GUID: xXqtkYfPZPdxi--cBEvOnI-_9IqZ2PfD X-Authority-Analysis: v=2.4 cv=Xpv6OUF9 c=1 sm=1 tr=0 ts=689697dc cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=rrNbjNIy7db4sKJtjcAA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-08_08,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 clxscore=1015 malwarescore=0 adultscore=0 phishscore=0 priorityscore=1501 spamscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508080066 ISR_HPD_IO_GLITCH_COUNT and ISR_HPD_REPLUG_COUNT are not in the correct order. Swap them so that the ISR_* enum will have the correct values. Also, 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 --- 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 d87d47cc7ec3..bfcb39ff89e0 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.50.1 From nobody Sun Oct 5 03:36:54 2025 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 D4393239561 for ; Sat, 9 Aug 2025 00:35:41 +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=1754699743; cv=none; b=MjBI+saPnptHH49HZy8ZJ2YbqylyFNaI8fUBgBMSBnB2eUNt2yk9RqA3cATleTn/th8V/cvPUKS4a7plHZmgADcWCptg48x4u/USE7GXJwxHz35BuMy8dzH+L1fxFUnGYi1/92eMBO7OcwZhtC/tgUXO6mwyKMCHFc0ZwWxmXRs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754699743; c=relaxed/simple; bh=50USIutSA8njn6IYfRQMWxI5xMJaaBqIOw1Eii1PLhU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fHMf2wcnVQ7C5OanLo5mpjmA4iTKwhFGAOd2A6YdvjS0f0IBKBuGJTA3wHSUU46bKOUi/e+1HWbRlupwG9rK5HcUfHrLiqF8cwjFjMVlQMEA5I1u3GJ66zcdPfKf0Ty3l+9LedklTnL7vUJDe7Ot/1tODVn4yfgdqeXntuIqnJw= 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=ZNdW/BzJ; 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="ZNdW/BzJ" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 578NJPKq027995 for ; Sat, 9 Aug 2025 00:35:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= mAlKuYMUBKfxakMSfWgLZizUCrxLq9eDwfE1oN2ywF8=; b=ZNdW/BzJWHMxNjgH cG/ZwRGbA06QQXSnIHYaPDXnBuLcIGCC/j0+LeXehIVwGNmRbixdyFc1dnJWgBwj k+q++S2Di/I4/RB8I0JBdXwDb2ooIb0ugDQSxLGHNfkV3SLYPdo1keEvEmv8+gqp IOVO4MjH9stCisBV14zqlrYuGLK+Q6NAG+8jJ0IjH/yfleFjMHz0dVXmWZ1rzV/b i8nSqKUR8pHTuUfGLVHoVCwWCGEqawKIEr3YXL4KrBSFyFAq48NsW7zW/6rHnapB mfN+agJm09oJNGdemwG/Bd6NkOzWU4rqCrYRWnhRJBB6MejkRmjVVZyiuJ7tsbFf vEObxw== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48c8u28k3f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 09 Aug 2025 00:35:40 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2403c86ff97so37969735ad.1 for ; Fri, 08 Aug 2025 17:35:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699740; x=1755304540; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mAlKuYMUBKfxakMSfWgLZizUCrxLq9eDwfE1oN2ywF8=; b=pPKr4LdUiRDC92eMZ4PFdU8I4Yj79AcV+BqUd0fIF5IfQ0bK2JwnUxZfPxJE0jdvqh jJJZuiy0ylACJbKzmZoeQsjOvL7hujiDMhWV2CrPFl0qH3/APf6pcMJpWPSAlKV382il Xm9ZVoSeHwYmZk8xv4+srymljHJore3Pfl8Q36tryIw9pFg7nfxW8v+xUeWHsePae6sD jb4/GOT8kgvn9437Jimzk5tKnkM0raFnPIZIrQ4P82QXtSbYgjjyHos+a4X9zKyiewp4 rhYSx6gak1MKaRbKKQt/CXZSnrFtRqmv76ECZyIgQagk9BIvgL8EqUa2fZ+28idIrXQI qpRw== X-Forwarded-Encrypted: i=1; AJvYcCWDjZK9e4EOej5vC/R2mJ3zUpR2bSpx7c/U8JT1mCA3v6hXOTkxsPoYKFIO9mb6bX5vyXAzAtHHl0/GvLc=@vger.kernel.org X-Gm-Message-State: AOJu0Yy6meFPE7G46XV5NrSgcCFE/RB/ACxGRJM8wK6BckBYM4JGk0Ty 3MzAk0DhaOkelQkERegxorQVwi5K5EZETKDTQjUoNz4z6SOe3Wqk+3dlvvg+kyV0sTMFaXlAxDY B2kyLDVhxKKcQMr9ZomtqNO1tH5YHAuci5H5pE7uHDR1i8m4fNDhD3lFiZbRMdaxnX1U= X-Gm-Gg: ASbGncvavTisDqcZqpC3ECSmI86IqwSnHyRVs4zBAj+z+swWwtgPUvz3ftle2nB3lyg uywizUj7qYeD0EiBS65+dQRHHrAfOFb16XUUXxhQRmj+eqgzQ1Konpe5m3WutpqZlm2vVnrRPZA CXTNCNxpVJhsGRw7lgrLXFXmdPCsRbf303y9zgRWtyym1jpI2ef8wyYSjoWDO13aYepdazm49Sp FidpUsGRH6+nGAGpzWC6NCxTXLEbOtcX9tDW4LFKnlYCSY85GtLxO6fZnRvo9BsVPkBoqQi+lUn tLhVXoN1YiP6CdY7qEawdlB2luwTsFx0y6CKWrmHMW22YpYLgU4CzPsy7S8tODgsokqzavOG5kK kDX4L8fvy4yAUR15AOOv0TU+u X-Received: by 2002:a17:902:e74e:b0:240:8369:9b9d with SMTP id d9443c01a7336-242c1fdc961mr74137265ad.9.1754699739980; Fri, 08 Aug 2025 17:35:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGriD7dy6Sg8oPpjahvuVk0KyIUeYorIx0HoQ8CSaI46CMni9HLIVrzkTQsXSQEyGkXQKkBHg== X-Received: by 2002:a17:902:e74e:b0:240:8369:9b9d with SMTP id d9443c01a7336-242c1fdc961mr74136965ad.9.1754699739564; Fri, 08 Aug 2025 17:35:39 -0700 (PDT) Received: from jesszhan-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef678dsm219865355ad.39.2025.08.08.17.35.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 17:35:39 -0700 (PDT) From: Jessica Zhang Date: Fri, 08 Aug 2025 17:35:15 -0700 Subject: [PATCH v2 03/12] 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: <20250808-hpd-refactor-v2-3-7f4e1e741aa3@oss.qualcomm.com> References: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> In-Reply-To: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1754699734; l=4040; i=jessica.zhang@oss.qualcomm.com; s=20230329; h=from:subject:message-id; bh=50USIutSA8njn6IYfRQMWxI5xMJaaBqIOw1Eii1PLhU=; b=4j7gDk8sNyixD1Hl/kxqP3JU//WBcuVk/VfmANElISz56rT9N0jAEtgKqEEI77CpPxspmj01L p5RwZK7dmsCDdUMwXe3SIjIcMUnqq9RNArmVeW/oEtPcNcx4FcxOay2 X-Developer-Key: i=jessica.zhang@oss.qualcomm.com; a=ed25519; pk=gAUCgHZ6wTJOzQa3U0GfeCDH7iZLlqIEPo4rrjfDpWE= X-Proofpoint-GUID: K_9b9KS9QmDViozbjL86m26D1Xs4kKZU X-Authority-Analysis: v=2.4 cv=Q/TS452a c=1 sm=1 tr=0 ts=689697dc cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=7iSa1Ozp54svVWoPkB8A:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: K_9b9KS9QmDViozbjL86m26D1Xs4kKZU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA2MDA5MCBTYWx0ZWRfX2NI2bEGPU0CY 6UDMRegZO6wZm5A6LzTkwZdZzzkqJKwKyttzsfVqIn9VD6yTcHHXQmJffZFS9WvODbopBjMuZtu SlyKpz5OrcxDJkU62UbHKChu8F9scJWY8UM7QFoQAyaAoMERPr4kz/dmB/E58N09GvRArustMfp mVfRmZZPxvmI1gjXSUtLL4tp9OaQT+r9Tl0dydf8n1Zzp6B6CPtcPH9dkT1hSAwcl8dL3+gNXj3 guGFQXIkOy+r7kgXpSmsIEeTzLuDTny/zHpwkavaQUmSkhs1qX9Ey9pqoOFTQwMnzoDBqFAyAir VAB5PwiA0ee8L3FjRvWiLSM6mPVlVDajk8a8ucbwYb67cBjFTq2vXER12BA7r9lbZsPhScHkPjc bCGgLFxU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-08_08,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 adultscore=0 clxscore=1015 suspectscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508060090 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 --- drivers/gpu/drm/msm/dp/dp_display.c | 54 +++++++++++++++++++++++++++++++++= ++++ drivers/gpu/drm/msm/dp/dp_drm.c | 18 ------------- drivers/gpu/drm/msm/dp/dp_drm.h | 1 + 3 files changed, 55 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index bfcb39ff89e0..e2556de99894 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1142,6 +1142,60 @@ 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 + * Returns: Bridge's 'is connected' status + */ +enum drm_connector_status msm_dp_bridge_detect(struct drm_bridge *bridge) +{ + 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, sink_count =3D 0; + int status =3D connector_status_disconnected; + u8 dpcd[DP_RECEIVER_CAP_SIZE]; + + 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; + + sink_count =3D drm_dp_read_sink_count(priv->aux); + + drm_dbg_dp(dp->drm_dev, "is_branch =3D %s, sink_count =3D %d\n", + str_true_false(drm_dp_is_branch(dpcd)), + sink_count); + + if (drm_dp_is_branch(dpcd) && sink_count =3D=3D 0) + status =3D connector_status_disconnected; + else + status =3D connector_status_connected; + +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 f222d7ccaa88..e4622c85fb66 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.c +++ b/drivers/gpu/drm/msm/dp/dp_drm.c @@ -15,24 +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 - * Returns: Bridge's 'is connected' status - */ -static enum drm_connector_status msm_dp_bridge_detect(struct drm_bridge *b= ridge) -{ - 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 d8c9b905f8bf..0f0d4bacb194 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.h +++ b/drivers/gpu/drm/msm/dp/dp_drm.h @@ -25,6 +25,7 @@ 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); 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.50.1 From nobody Sun Oct 5 03:36:54 2025 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 C484523B61D for ; Sat, 9 Aug 2025 00:35:43 +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=1754699745; cv=none; b=XCeXBePyp219C/UJzBNUYP3vF4B3iFjTj1sfmIQKdH5EHCoeJKKd4e85wbmaNi3Et/rc3MJilZIx6A9mfN/7YH2jIjRSTLBNLWyH4rki1mZY46umJghagjYORgW9mown6ko9VBfcnuNNKbeoeP5BIBw6dIOx0MqyAIlM3LqgpIA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754699745; c=relaxed/simple; bh=58pz+VUOHj7Z0Ly24ZItrTkzzLlWR66ogd2xqPyF3A4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NURRH+C1z+b/eNVz/V4WyG/xVzrxXwJ+8EUpiGxdWVowBhX0ywfI/RaTJUqZG9OmCdpoI8dSUcMIZYNeKWe+18GiWxGSPK7lljjVZcr4ea5z8KZoubXwyH7BprMSFnAeP8R3Qhj4jzrQq6D0SGRPLqmjp2TOyrSvMRa1CF+tJIM= 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=INIUqQF4; 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="INIUqQF4" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 578NH37o022931 for ; Sat, 9 Aug 2025 00:35:43 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= kXOtZj4AG8lm5vvINjpaTa4etK/yY7fA6vbU8dIkBcE=; b=INIUqQF4UXhK3SDP GO1CXtEMfLZ+Ne58RgutuB9EckctL1e9qnrhGKCqqnTNNunahUGEjjvCEuRURzWR gVPhekfA40jZs6PX6nkJNTpTorueSx0BWIYuTJwwRXhdqP7zR57B3QfhOU7TcN9Y M6g6R6S95OHvlY4j4RY0sFV4etKUxiDfXDr/l+s365Qy8qd0dmyreD8APc1GOF4u M+Nx/MmzHKpLBTtAvGqwMGT9u9v+cGYi5tj+QnavJV5il+q9Qr66bvU/vVKgcFz6 6vL5a5/xWBI2nd0hUBleR+gErZrtOP3AqwJAO55O3frzCq6dBS/F2skGLR9Cr/Mw J1q1Cw== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48ddkkt5q7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 09 Aug 2025 00:35:42 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-23fc5b1c983so37978945ad.0 for ; Fri, 08 Aug 2025 17:35:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699741; x=1755304541; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kXOtZj4AG8lm5vvINjpaTa4etK/yY7fA6vbU8dIkBcE=; b=lFsutzubUJEjU7pibbPAmshMr+CiMT+S8e8XC9HHMUJGaa/0DZHZsl76hkq8rR1b8X HOyxe7D1qHQGtPVr1atC0fhQzoxWZUB5Tjp1UdH4tIYbzUf3nilGXXLsM2RDU/ylM8Tl IWtXn5+BuJKnqK9nKSzkFlDVqUBJ+x842PB4sYviqZQoXF7C5rur1tYVAP8zcAc7uEe0 6ZxItXlsOu+oSh838xbwP48ccNl6qUsGxaRtDm8oGVSa+7tD1aKQsrrhYu0A390pO8u9 HunvjfVkECnUKm6YbiIMmhUczCo2Hb42IngFdKxN7UJjyOXLmK4bzMpdMgNQmGK4eCp7 3Siw== X-Forwarded-Encrypted: i=1; AJvYcCVjuNjmwJxaKH3iFrK23jPWZS5G2vNPkMta3qzQQzCc4FHvfotkIlqX8TDN8DqYaHzt+9z8WpzPIVi6Fiw=@vger.kernel.org X-Gm-Message-State: AOJu0YydtKgMSGMHzPRdfelsvhMmoaaBcefO0MHNEheSeEo5wNbif48I gjhaNO0ZS9EtZ56VxG6m8EQyRSYJv0eDum0pKSPg+13+LX2F4nFuW7KptLASwdPP5UrV/xG8YTf o7qr2ivA9IdE6SxBG/dmhuZm6xsis04PgTZvHKgUQCM3+exPCPRtPha3xMYXX0mlQQCI= X-Gm-Gg: ASbGncvC6TOeSBEFxw64Bq3utYp9kcB1yLkYphj59GK2AKHcdoTcUlkuCNwE2bVoqyg QyL7iD/FPYDeldCc+8I9aE3f5eR18A/SqlEIYMEZdC+epjG7HiB21ymayiAGI+iw4chDjuz5eXW UqW2baHNscQWwyO9rY/sSkK/mg27HZDlygWn9hYRQYt7eExmzfIEth8fzq2y7mlZWWeo59CknN5 vTQU2g8bQC6BY3u1dOlXzlAMlx+Frl3I5OBy4SnqLUipHHMGwIOq84YD+quHW774jiugvtHlz2F VZj5pkLKe8tDd0ypl5yECGn8YyA1KqlOZ0Jf37FjTIRhMnE3BHL2/DyzqY7k1P7h0tj+RLB2N6d GZEWRowHfR92Dwb6otMKlaIns X-Received: by 2002:a17:903:3d06:b0:23f:b00a:d4c with SMTP id d9443c01a7336-242c29cdd3amr60381435ad.2.1754699741447; Fri, 08 Aug 2025 17:35:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEDyEuI8cudsyGtLHsEqiFHexgdl0zgq5jG1/dngt6evbM2Zkgpc/LBc1GnzKw2QMS85nXS1A== X-Received: by 2002:a17:903:3d06:b0:23f:b00a:d4c with SMTP id d9443c01a7336-242c29cdd3amr60381135ad.2.1754699741056; Fri, 08 Aug 2025 17:35:41 -0700 (PDT) Received: from jesszhan-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef678dsm219865355ad.39.2025.08.08.17.35.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 17:35:40 -0700 (PDT) From: Jessica Zhang Date: Fri, 08 Aug 2025 17:35:16 -0700 Subject: [PATCH v2 04/12] 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: <20250808-hpd-refactor-v2-4-7f4e1e741aa3@oss.qualcomm.com> References: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> In-Reply-To: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1754699734; l=2088; i=jessica.zhang@oss.qualcomm.com; s=20230329; h=from:subject:message-id; bh=58pz+VUOHj7Z0Ly24ZItrTkzzLlWR66ogd2xqPyF3A4=; b=eSNm82PX5XDbPsqU0qhNfwtEkv99SM1nnMQfbj8CUV4Yiqt32zqfug2mQbHMfdphj2pXeeZq+ a5+8ZGyjM2+Atpl7P0zmlxH63kdl24dOubtns2aknTDjXqXQGWkE6tQ X-Developer-Key: i=jessica.zhang@oss.qualcomm.com; a=ed25519; pk=gAUCgHZ6wTJOzQa3U0GfeCDH7iZLlqIEPo4rrjfDpWE= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA4MDA2NiBTYWx0ZWRfX6F+15/khZKz7 Gxx1379PcEHNk8HNSWYhFjlQgaUu7n4E59JLJk9x9S55ZCC1TvnehclAYWQtGRk9V6rl2h3dBsf R97WKvG3/wSrQV+lSmWmf4YTd7hrMBbizM6gJ9lw99hnQZ+VxWsYWfWvCURFn0CEZErnAq8P+Aw rsctOHYWOZPy1tK6tn5scoXHPZiTaeRer7WxRBQOYpjCAH3P4khOjovv5FoqdkNq4ArcEwAxlz0 2E4etq6/TE0CpxtGX06RtGwtPdGJoD/Lj5sIFoV8FwffOpxcuG16a1IbOl2n8G/nKjFSRa0EUBi HG6bGeGbIL2By6ZtzL68H3h3uqzv4/weBkIwpDnVsUrERcY6f6RNnvoVzTqlONMW5dh6OIGQgyX iVJl72TX X-Proofpoint-GUID: 5P4wj2eLPQM1TZCMI5vWnKD669MI-Z4y X-Proofpoint-ORIG-GUID: 5P4wj2eLPQM1TZCMI5vWnKD669MI-Z4y X-Authority-Analysis: v=2.4 cv=Xpv6OUF9 c=1 sm=1 tr=0 ts=689697de cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=3k-UeYenDjfnnxpotcMA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-08_08,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 clxscore=1015 malwarescore=0 adultscore=0 phishscore=0 priorityscore=1501 spamscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508080066 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 --- drivers/gpu/drm/msm/dp/dp_display.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index e2556de99894..c849befe58f0 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -427,11 +427,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 @@ -1680,6 +1675,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); + dp->connector->state->link_status =3D DRM_LINK_STATUS_BAD; + } + msm_dp_display_enable(msm_dp_display, force_link_train); =20 rc =3D msm_dp_display_post_enable(dp); @@ -1839,7 +1840,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_hpd_plug_handle(dp, 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_hpd_unplug_handle(dp, 0); } --=20 2.50.1 From nobody Sun Oct 5 03:36:54 2025 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 3FA9E23B63A for ; Sat, 9 Aug 2025 00:35:44 +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=1754699745; cv=none; b=lRagouL7A9cfC08XPbEAdE/vGWa2kEG5dQ9Hm5ZHPDKsBzqYZEDs81I53ho/RlPQyhpgXGL8EnIu4ObSXr+gwcg0o5U8fGc5OG85bM091oa6ka4XZb6/frWNy257PNHvNF5lIxNyYqgpGLqGaXZtq3zRhbex/ibuoWkEcw4gI1c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754699745; c=relaxed/simple; bh=0luC8UsEHN9fWfXH6p1zip80kT4QBQaB8aTLon8BdOg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TPvytitn3n7M90KrISjfZg5qH4fqCOQ+tYDoeAXBYen+a6p1YjTbDDVs4djkbSzLErGjtJqsmt0uVg9FfEDdRp9t22ER5o59BL9chEIp81wXwRMs8PQFuc+tduknrgRWLojvHMw2iYpObhOjb9AR2rur1RPKQ/Gdjjv0j6oQS7w= 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=KFkS5kGJ; 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="KFkS5kGJ" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 578F9klg007961 for ; Sat, 9 Aug 2025 00:35:43 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= AZ2xPxZ0aADglH/NNiPMVpiBOUDybWneJMhux20a+5g=; b=KFkS5kGJwoLDxjp8 bC3AjVCcdw/tfdFuNHCF+IhBgmBBehYl/9I6Aa2o9maWBN3eXY+tZhfVzIwaDuRE zJHZ6ZlMk4YgKGGzmiVpo0wo7D+gZYL51sPqdj37qzE7GIAJiOt69limnIx8k8FH L/ZReglf9rxUYsV8y5tFGqlOVBDTeoJnz/QMDzSMHrXrTCa1ssX7z6sxASFsDC5s 9QA7Jxaa5cVkW+t2vU2IvbcTvkjNCSdzH8r3c/06QPHhlWQpSjUHzOGSTSLX05wN 6B7WikKnFbqAwnMkLloSdKDK48NU961+pWBd/CCDlDDp6Umo0u9pD2+6jwyXWNJw nTfPHQ== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48bpy73h8p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 09 Aug 2025 00:35:43 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-242aa2e4887so58314815ad.3 for ; Fri, 08 Aug 2025 17:35:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699743; x=1755304543; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AZ2xPxZ0aADglH/NNiPMVpiBOUDybWneJMhux20a+5g=; b=nBfK5wWLAMNwWkNhC+iqoE5rQvKdBL3e/N/hBNa6e5f647IAsul1xY3r0a+9cGwxr6 kM7hh78pMxo2QYeUAsiH1FqoYuqFa19vwEeaCjI2lQUHeaQs8LNaP4i5gr3WuC9iMjnU L/5+LH6Nw+59nvKpRPjJTV7V3N53pHOjUPIlDR8gJxA5MgciZr13MCHlIMPNhWlnd9gE /Zdf8Ld8Kt/cVbjmurIiL5P4kGk9ZnsdTYGuTWPPGqc/7n1M+e1WhNbeqertM/00AITf mfp2HlDPpk4lHDkVymHD71tJRgfwxjFi6yAvVlgs8LIzqoLlFWsqVAHk5yXxFl5QpiuK +Uew== X-Forwarded-Encrypted: i=1; AJvYcCW0+M6wftZKBEL9oQhNuqhSDAk5uhuvYqe26TdXw9n5FuDdUm7wa0xeF4SFsiDSij7QWPR+GjDwgfO01pw=@vger.kernel.org X-Gm-Message-State: AOJu0YyqDrjh7x7ehOTahBYqRkbzq1tifB9NWDZSd2PTuMlk6VIRs1M5 d+14AEgYHZ3zYizfini+gv8vOCPl22tVqia2G35mtwCl6Sxholfme2rjQzfXSTIvr1EwJyYcb+X X6NEr7/DaKPB5EF5Ujhhz6YAYQs/b2IhhObOMHio8ZpOYiaAXH+Xh7imG9Vvv9jBPoK4= X-Gm-Gg: ASbGnctv9kla5w+60C5US1gcoh1LKs4CRWNlWU6tOa1+n+OFtb2s7xIe0X3KLoWrydK GI2jvjCscDZ6mJZ+gKn/3bdKnG7Xz29NhLfDK4h1Qs8cDxwhdKqlj0dlzd0UN8jwgqhEzTzPEPq ghZ2dXohwGdSt8Q1WYSmoUB18SvOPR8yv/iq/eIbXNUc4XLC3ZcwZgCx/7YBk62EOSYV5tJQzm3 hn7HTOUVSWzPkqP44M3yq+DjYsUa/G/oIzfkB7Q911sBJpN33O+tq2/zPiiGsqMFmTHWVjacwSQ rB2uO+IcH/Vodap06E8C+LmS7Ak59aHBjhNQLNbVqBRsGMHzLDEP13W+4ydT4hADE0uw1yxp/lq SiZrDU4iQ0I++YsvN/gp9gted X-Received: by 2002:a17:903:2987:b0:23f:8d56:b75b with SMTP id d9443c01a7336-242c224116cmr68534875ad.41.1754699742720; Fri, 08 Aug 2025 17:35:42 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHAEqIzA4w/9X4in72ZzPva96ldMzCraSZJQFVFPIFyVWnAUhCwow2pLKBe5AzUihPqywBT1w== X-Received: by 2002:a17:903:2987:b0:23f:8d56:b75b with SMTP id d9443c01a7336-242c224116cmr68534535ad.41.1754699742334; Fri, 08 Aug 2025 17:35:42 -0700 (PDT) Received: from jesszhan-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef678dsm219865355ad.39.2025.08.08.17.35.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 17:35:42 -0700 (PDT) From: Jessica Zhang Date: Fri, 08 Aug 2025 17:35:17 -0700 Subject: [PATCH v2 05/12] 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: <20250808-hpd-refactor-v2-5-7f4e1e741aa3@oss.qualcomm.com> References: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> In-Reply-To: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1754699734; l=2134; i=jessica.zhang@oss.qualcomm.com; s=20230329; h=from:subject:message-id; bh=0luC8UsEHN9fWfXH6p1zip80kT4QBQaB8aTLon8BdOg=; b=KNHcay1Gz47I5v9s9LO4RakqENVxCn6/IpqtvSmuQPh6gYrJ4N3079g2LhjPpuzGoc1HhXkfJ VeSdBpztAebC7a6u6j0IrGagrIck7UzQwpogYuVlmzDmeeGdRJ5o8hg X-Developer-Key: i=jessica.zhang@oss.qualcomm.com; a=ed25519; pk=gAUCgHZ6wTJOzQa3U0GfeCDH7iZLlqIEPo4rrjfDpWE= X-Proofpoint-ORIG-GUID: otcpU0L9FPiYfF6ZS_mEtXieqmCAmNGb X-Proofpoint-GUID: otcpU0L9FPiYfF6ZS_mEtXieqmCAmNGb X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA2MDAwOSBTYWx0ZWRfX0zJ11tk12bi1 8b9OMfvmRbwkkkPdY+juutVi+/JxNakIFzSpZgklZC4ixs7i6zh7Dwzor3/hRzTeaXDLypsp3g3 yxwBUGjlB7UvnUobzY1ilxy2axokF7GK/QO/O6kFIp/e7+CKd+ZjhETqCumhwgSi0qvaLcL4cVO NqKMNE4c8lSLePXavBGZ9CbDm0RvQJqZqMmTJvKGf1APhYAA68dlkRWCwlSFKxpq1zFAivxL6Hr 7UO357b9orqAe0kTTUox7EjAxTKmSGmBH0woUSSgzpBQ4vuwOvGdZTUsk1wzOVaON/urtclY3bG icUkKlr85yTgSacZk6um0oadaHJrpC8iZlKI69TBtQqUtUV+0xH27yZ/KZ4wD8PdeeL0x3HkUFg 8aWiJ8/z X-Authority-Analysis: v=2.4 cv=LNVmQIW9 c=1 sm=1 tr=0 ts=689697df cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=isfJdaZdMnE_RitM90UA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-08_08,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 malwarescore=0 adultscore=0 phishscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508060009 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 --- drivers/gpu/drm/msm/dp/dp_display.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index c849befe58f0..55fe8c95657e 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 */ @@ -428,7 +427,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; @@ -497,7 +496,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; } @@ -518,7 +517,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) { @@ -1112,10 +1111,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; } --=20 2.50.1 From nobody Sun Oct 5 03:36:54 2025 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 AD0AF237A4F for ; Sat, 9 Aug 2025 00:35:45 +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=1754699748; cv=none; b=HmRwYdIOGq6iah6G9eY5d2MjiUhPHvu9UTkeIH/tLn/Zrk5TOrk2ybj/4VxkUwCkiBCEof2AVSpxVLgm3Ag4vmHrYbT38y/+JJCF9WcFBIfAHNBh1K0lPx0Xy/e3h07ptrG+u5RFQCtgUXtmDCYIYQehzPtPUiZfm6YDMpiQrQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754699748; c=relaxed/simple; bh=29HYP/DXnl5EwK/8eh4LDOHT+urC513pYg2fM9mWL2U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rdvrh73fLYvIrkSKSAjNC0A42gvh8F+Psh6FUCuIliCG5doLgvyvfNGT2y/Hg35PSs0sjXa7aCDLxp+iuwy6kWuvrRHxsfEkiB8mgkOi53KC1ap0w9c8WeEuI4w+qXc6Ac48zlNWyVUs76gnPV3qK8qPgGFJQSbIcKIre1jgybA= 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=E+SL+fuf; 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="E+SL+fuf" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 578NvISk013733 for ; Sat, 9 Aug 2025 00:35:45 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= 1hdCfTP1N1Lll13RFi4QL7o8c/WBGzlCEwL+AMYyzJM=; b=E+SL+fufl61vfuki fbXAWnPJNTGbn1TtP32D96aGYWG66TAvIz1ls1heHdVLJhJ6l1leMvSqBGe7l/2u +ANgQoqNvvFNAsy0Pm3lHdb1UBsy4Sf8h+R24sF5VbNtQDlw67ZGZdu1QmidD3br vjWQ0N+H61kkPE3tThVmZ21ddln1VstzvLQaExVJJOMup4G3nNywTVOiNL8Uq2tP bx3R91/G4Z6/9474W9SLawl5Hvyw0WSeN/OdQh01jJUTJLb0NbKZ8Kkj7ZCBroa1 MWVjTlBzNLeU5a/UW71dGOw6Ib/RR0lozSXh2m4Xg286s2pWr4qx/Lwkr5LOPpuh 5DGmKA== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48cpvy69d6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 09 Aug 2025 00:35:45 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2400a0ad246so21448875ad.2 for ; Fri, 08 Aug 2025 17:35:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699744; x=1755304544; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1hdCfTP1N1Lll13RFi4QL7o8c/WBGzlCEwL+AMYyzJM=; b=uk0sRPE1eOc+PQ02T0pu5Qv1Mo3ctpCmubYFKPNZGc4PHMnHTSfcGNY7DBXa/THBWr vhYCqTg2Pn7hWd7D/2E0tGMeFJYzdjCnpRZqycb6Yski3dyGGAs/Nawt58IXuO3180mf le6O3oKkHm/lQHo+N63tKkNJPDgJmw8NZ6xJjI0PVF5nSxtfQ+EAJ68XT1vu8K3LpGP/ 2crDzZXUzcG2mZ0Dz353oKIj7WJwmjeSY9gJlh0VKwQc+rOLHs0ZRqVBS9EEfm8CDK4c 4m97CcP4sz3zdsbHdWMSOJ2zYEmvGpZZnDOjZPseJSB3EmTMTrAKm3gVVcR7KN74JAk7 E+Hg== X-Forwarded-Encrypted: i=1; AJvYcCXH3ISmEF4VnJWoKfZ2uqhcgsCr+3BwLuktggYfC2pk2aKTW5QnU5yVcqrcTOvf2u3vat4ZqsY09cuh4pI=@vger.kernel.org X-Gm-Message-State: AOJu0YwHf49GqozbYsst5nNeQmwdt59MfNtCM6VZ7SLGbl9FvQ6puVPd rdKhZUHCF980JP64NHwWYlNcbwPZfrpmxTAq50XSuO5c60AhalqEjE7kZcorb8toJjl2pwKCJmN xnJJh1KtLMctOkcwPUFxz0RmlxRxxL1keaa3Br7oPdoEF8ezAr+xQpnyVKmh55T0eLXY= X-Gm-Gg: ASbGnct/qNlvUfxHCnBRk9sHKWlj7Q2moY2CyD/T4TQyTxl1VwIAkfjehpQwh3+ukIT UzlJ9VfDdSqKLBaeHCsNYrbzdmRGiKna158kukanX842K4ail3Si322sG7jZ3/DB+MTWfsf8xTk mMAbdgmklNYmpG+gWIue4sdQXUfSeUFnlJyHImbwHQnVmsPJcbMeQ6RmDo+lufHh0jdXUvZOGOC LaWWqvj5rkckcSZsU5nBs6hg1B4qqIbZjZ1rrQtAIQayNYCC/suUCfoVYsMI3vuCwVEsYjwx5bp whggDuGBM/pOwVjLBlXCT8X2LyFwbY1RRAPd4t4dDFSqa7EE/CYQ8MOHNDEFwu8sNngTkZjrYDx emb8fVRr/DaejIJmRi4LXdB1b X-Received: by 2002:a17:903:1c9:b0:240:e9d:6c54 with SMTP id d9443c01a7336-242c2271e8dmr79852985ad.48.1754699744034; Fri, 08 Aug 2025 17:35:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHiff/ThYc6UuyZtbEXTBnN49IuMPgSQgl9gfWHA+0K+TeLvuc4b9uNZ9TWhJt8aKuTgT0LiQ== X-Received: by 2002:a17:903:1c9:b0:240:e9d:6c54 with SMTP id d9443c01a7336-242c2271e8dmr79852665ad.48.1754699743574; Fri, 08 Aug 2025 17:35:43 -0700 (PDT) Received: from jesszhan-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef678dsm219865355ad.39.2025.08.08.17.35.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 17:35:43 -0700 (PDT) From: Jessica Zhang Date: Fri, 08 Aug 2025 17:35:18 -0700 Subject: [PATCH v2 06/12] drm/msm/dp: Use drm_bridge_hpd_notify() 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: <20250808-hpd-refactor-v2-6-7f4e1e741aa3@oss.qualcomm.com> References: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> In-Reply-To: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1754699734; l=2470; i=jessica.zhang@oss.qualcomm.com; s=20230329; h=from:subject:message-id; bh=29HYP/DXnl5EwK/8eh4LDOHT+urC513pYg2fM9mWL2U=; b=hUDrHjRGa0KSwFA/brYTaqQ3aB1uEyojqFJUPg/WEOdZZ0zMPAQBmtvg12Q6ggaRIFRwqN2hA NgI6QAvH7kCA9iTY0rUfx519/9SnrO0gy/ydRL5EGu4CCUm7Fs+e6Ka X-Developer-Key: i=jessica.zhang@oss.qualcomm.com; a=ed25519; pk=gAUCgHZ6wTJOzQa3U0GfeCDH7iZLlqIEPo4rrjfDpWE= X-Authority-Analysis: v=2.4 cv=TJpFS0la c=1 sm=1 tr=0 ts=689697e1 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=vUZxlgmVQAOzQBO0PGoA:9 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-GUID: Dg25MCErl5KM5mBXx3jjQl4LGI5t0e2y X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA3MDA0NiBTYWx0ZWRfX3BiHui2Dkgnk zb/e7DMgqQ0MokZIyOjVlRz2eDom33QGcML4261QSr7PEQhvGWr+ifK6uL8hJO/5tM6h9nuipU9 9OM5iNR2kVZ0L2B/yCPb+eDtC6B6t0d4AFJdnDXNbLwwfK647uaH2ROJmHE8hmOJTcwMlqkj9R4 Uj87NYYyjcJuyn/PCuOQ9sAaekMhXZChIMFN5SV1RXV0O4fE3gygJrVsY45Kp1Epy07rUHaLRx5 Xe4fa8dU5e11ucfPCY1ZlJQSmpxVtODNVyxGr+AOpZdkp0j8Hnn+dJkOG/aqLQtZFtvEv+mdSO6 vscgvFjviVU1P5Jore6Q4ZZiGiOKV5VEZMstTWV2deJPU0eKvDqp4D95qGsdEny9QrJkRje8l3c bB7gVAN2 X-Proofpoint-ORIG-GUID: Dg25MCErl5KM5mBXx3jjQl4LGI5t0e2y X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-08_08,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 phishscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 adultscore=0 spamscore=0 malwarescore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508070046 Call drm_bridge_hpd_notify() instead of drm_helper_hpd_irq_event(). This way, we can directly call hpd_notify() via the bridge connector. Signed-off-by: Jessica Zhang --- drivers/gpu/drm/msm/dp/dp_display.c | 17 +++++------------ drivers/gpu/drm/msm/dp/dp_display.h | 1 + drivers/gpu/drm/msm/dp/dp_drm.c | 2 ++ 3 files changed, 8 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 55fe8c95657e..8779bcd1b27c 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -333,17 +333,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) { @@ -367,7 +356,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; } 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.50.1 From nobody Sun Oct 5 03:36:54 2025 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 354F924167D for ; Sat, 9 Aug 2025 00:35:47 +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=1754699748; cv=none; b=Wg9Ox/0ZsVPmEUDrIturMpHVvC4TBGRA4EYFFeamcvYhoesTrnrZD1DDk1q7aqtoaUs/ZgDBeWtoDrbtKJjjrTwg7BPK1S3r5aNrI5w9oJMNfbhGgFBZJPcNjV46Id1uWbbzHulOgKtO9xj1gEn0fnV9jN6zRYXkc+l5FLZ747Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754699748; c=relaxed/simple; bh=NtDdlTY6ajF5Cn/Kyk0d5E8/TBSy+P52roB0OK+a+7s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Zv+m+U6qKYMGxbZ/H5LtHjmGO44IrdQVPKWIOeoAQEebLcKNqIp+U/hTIOhEb+QXuK0eMweUm/c8d0sftSz7biJb1OnwTWE1Vvz3OKCdiS14skyKzCP6CMmoxQ/dtdn3rhzbU/v1zy763pdM8XBTbLsRmG1cDRSjMARRbkGQg44= 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=iQOW6Jk5; 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="iQOW6Jk5" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 578EvAdI003579 for ; Sat, 9 Aug 2025 00:35:46 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= bu9JC9zHNP1OllCJIaZCuXVLfyKeem9bnATi8oCUDNY=; b=iQOW6Jk5GUU0bVVd I1yLLuufa0Dp0XT/yBvhy6m6tdQloQG8ZG6GODWIrpFUhQRotWzBRIK9fh/epbhj qbuy+htC/toDLwF3Ee6Qmjtay9yAs8tfQeYIuYJTDUn7AEBdpmxJZ//By1qvUURm XlQJkrTDQxY8OAsM5iSxv1xejiha0EEQq+bRdVUQzftoN5NCSebpefUpttDFzwdW XUShqAY8Um3sy1gOgHAtbsUu7V6Q7HNM1jiVj4o6OWAsDPzK3rYR+vp45n3+QeRw 2Ob3aadfCaS3x3F47UP9hbpQbqlex52VVMVs5e9E1qT24pKd6u7A7cJIKm7j3QFd 7PRcaQ== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48bpyakhvk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 09 Aug 2025 00:35:46 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-240012b74dfso20676745ad.2 for ; Fri, 08 Aug 2025 17:35:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699746; x=1755304546; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bu9JC9zHNP1OllCJIaZCuXVLfyKeem9bnATi8oCUDNY=; b=c4tgTHlWFkk9APX2VtGedu/Bjgv9KU/7SA94gaIUPcxO/W1TpKJVA62Ih4m8Gog9Wr yHcC2Z5WDYGhh7Voi15kVxQaDrfdmqnq1cVmlsii9OIzPfsCS8ERpVa9cABprBC2OZ9o Yua7JB6pg70M7hSPqqOPtOpDRhoyC4c2coHl3KTl/Vzt0JhFL2V0CZ3+85yWAlx6qy4i 8GJ4Q6IHhEWx/zF9QicHBgzLj7eoTrTprN+zteQhjpaaPOqkzchAqobmEjO2y6lUAgT/ h7ne2KGm8Fog82EDu94rBg2JbmjpvsV1P23ohN6WBHm931X9Q8WkRoPNWiduGhBO+Abc aMWg== X-Forwarded-Encrypted: i=1; AJvYcCWdR2Jsm+pRF6Qh3YQ+/85id0F+CMdKOrnkPTk28UbK/qP4Il+0/TSM/K/DUpjV5z6f8Iiq09i7UIkJNdE=@vger.kernel.org X-Gm-Message-State: AOJu0YwrfyvxlHH3IKCP0zhFzXeUFIJDWeCFj2Qyc4ByXBAUr8ZCoWHE 2KAtHvMXohWIeJcb7CpM2CQmk5UF6Pg2ppHv9BH8YFJDOMWDRgsLKGIYSCnfrb0IXdSK2zRxtlW nEHAQF03ohvbWUtVlbTlGL+FU5OM69YTFgtmqCcGni5s741ZOdG74Sb2h9uB9NUztcsc= X-Gm-Gg: ASbGncv/R1rErrWxosb5C+sjyqcohUkglfYDCJFwfBvhPvG5IS9x4iH4A/NlZTIjpqV AsRA24Sr5xsrx9yGwoxjZ2hM3K6ijNvwR0l/6ia2+XsjwSpNjFLv7PZmO5DdND+aJaGUMfa5CDD 39U08j6FdRUvKn+rrR1P7UYgGnzqXBjKO00QDRZ7fljGe+vvQ0RBjr8GeO/uSQxGT7AhbBny9C/ O4Ox4b8LVUgXNPi5B0P0VHy0nmFg4pl9wyzV8UUfJp1EWs2jtPmsQ0qINWHENy5cvVQGX+mtRXI TCsMpdWXNHBm/h1PkCDj9dqcwlY0mq4MDn9Nz3eojNPzAxAadm+VdpUedwMxbcKmYacaWYnJ1QA 1XHdiU2BOM6K0/yUnelcWUjwu X-Received: by 2002:a17:903:46cb:b0:242:9bbc:3647 with SMTP id d9443c01a7336-242c225d0a3mr72360985ad.57.1754699745402; Fri, 08 Aug 2025 17:35:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE5oheQKh0vVLh3BuayrDEhBZWfIYUi6SiluwbsB/hAdJ7WViVAEgmlUVSgsmClxqPvza/2KA== X-Received: by 2002:a17:903:46cb:b0:242:9bbc:3647 with SMTP id d9443c01a7336-242c225d0a3mr72360555ad.57.1754699744953; Fri, 08 Aug 2025 17:35:44 -0700 (PDT) Received: from jesszhan-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef678dsm219865355ad.39.2025.08.08.17.35.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 17:35:44 -0700 (PDT) From: Jessica Zhang Date: Fri, 08 Aug 2025 17:35:19 -0700 Subject: [PATCH v2 07/12] drm/msm/dp: Handle internal HPD IRQ in hpd_notify() 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: <20250808-hpd-refactor-v2-7-7f4e1e741aa3@oss.qualcomm.com> References: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> In-Reply-To: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1754699734; l=8145; i=jessica.zhang@oss.qualcomm.com; s=20230329; h=from:subject:message-id; bh=NtDdlTY6ajF5Cn/Kyk0d5E8/TBSy+P52roB0OK+a+7s=; b=64v9EwkavX5hcUROjX+cegb6NBCEoeYw/F/oKT/Tc6EqSzROzgIrBsc2z38w2ux/J6JTTHum6 sAUi7lWbSrFCV+iW5DyNMJjgX2bi90kVLqy/my+e8KKkhgiY9sKxEnJ X-Developer-Key: i=jessica.zhang@oss.qualcomm.com; a=ed25519; pk=gAUCgHZ6wTJOzQa3U0GfeCDH7iZLlqIEPo4rrjfDpWE= X-Proofpoint-ORIG-GUID: uZvbTZbo-bpRQn4niv-tVmpLHxXwlb3P X-Authority-Analysis: v=2.4 cv=MrlS63ae c=1 sm=1 tr=0 ts=689697e2 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=Wiw9OC-66MpX0Jk431gA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA2MDAwOSBTYWx0ZWRfX338yn6JHEzNR vrN+9qruwu4b6vpEy8eLpp2TP2nHjXBxmzU/54IRaealstbkLiZyMHClAZs7wMmmvCMOFRsaQDl XCvuKzl6rBOwsinjNP92qTl3ohvWaIdqS0x68jHOo1qazkeFVevJ3MNciKPrPNgL7Il6cvqTGT+ hgmykXRFzdiP6eZpN6+/JFgODa0IoGguJmw4W2Fz1fZDUipLJhrXiSm88+E5VRQFhu70Jc5HuTK UTcfxL9BSByMOm9cf0+DZKYyJ7mc0NGpdEdtsUuvvl74kJQQ+KxYQdToeHF9QaMZXM9cHZ/rkUs 2nH8voPQcJQvMH0AFriXItwGr031heuXgreDYrFgpyw/HAXDcD+F3bgNNhSHPeqNATRZoMioYw3 jbBLx6ZA X-Proofpoint-GUID: uZvbTZbo-bpRQn4niv-tVmpLHxXwlb3P X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-08_08,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 adultscore=0 priorityscore=1501 phishscore=0 spamscore=0 bulkscore=0 clxscore=1015 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508060009 Switch to using a threaded IRQ to handle HPD IRQ events and moving handling of internal HPD IRQ events to hpd_notify(). This will simplify the handling of HPD events by unifying the handling of both external and internal HPD events in hpd_notify(). Also, having internal HPD IRQ use the DRM framework calls removes the need for msm_dp to track the HPD state internally. Note: The setting of linked ready is moved out of *_send_hpd_notification() as it should only be set after the plug/unplug handling has been completed. Signed-off-by: Jessica Zhang --- drivers/gpu/drm/msm/dp/dp_display.c | 127 +++++++++++++++++++++++++-------= ---- 1 file changed, 90 insertions(+), 37 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 8779bcd1b27c..b9e2e368c4a8 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -96,6 +96,10 @@ struct msm_dp_display_private { /* wait for audio signaling */ struct completion audio_comp; =20 + /* HPD IRQ handling */ + spinlock_t irq_thread_lock; + u32 hpd_isr_status; + /* event related only access by event thread */ struct mutex event_mutex; wait_queue_head_t event_q; @@ -345,14 +349,8 @@ static int msm_dp_display_send_hpd_notification(struct= msm_dp_display_private *d /* 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); } =20 - dp->msm_dp_display.link_ready =3D hpd; =20 drm_dbg_dp(dp->drm_dev, "type=3D%d hpd=3D%d\n", dp->msm_dp_display.connector_type, hpd); @@ -407,6 +405,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; @@ -420,7 +420,8 @@ 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); + if (!dp->msm_dp_display.internal_hpd) + msm_dp_display_send_hpd_notification(dp, true); =20 end: return rc; @@ -489,7 +490,16 @@ static int msm_dp_display_notify_disconnect(struct dev= ice *dev) { struct msm_dp_display_private *dp =3D dev_get_dp_display_private(dev); =20 - msm_dp_display_send_hpd_notification(dp, 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 false; + + if (!dp->msm_dp_display.internal_hpd) + msm_dp_display_send_hpd_notification(dp, false); =20 return 0; } @@ -1182,40 +1192,56 @@ enum drm_connector_status msm_dp_bridge_detect(stru= ct drm_bridge *bridge) 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, 0); =20 - if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK) { - msm_dp_add_event(dp, EV_IRQ_HPD_INT, 0, 0); - } + 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 - 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); - } + /* DP controller isr */ + ret |=3D msm_dp_ctrl_isr(dp->ctrl); =20 - if (hpd_isr_status & DP_DP_HPD_UNPLUG_INT_MASK) - msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0); + return ret; +} =20 - ret =3D IRQ_HANDLED; +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; + + if (!dp) { + DRM_ERROR("invalid data\n"); + return IRQ_NONE; } =20 - /* DP controller isr */ - ret |=3D msm_dp_ctrl_isr(dp->ctrl); + 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); + + /* hpd related interrupts */ + if (hpd_isr_status & DP_DP_HPD_PLUG_INT_MASK) + msm_dp_display_send_hpd_notification(dp, true); + + if (hpd_isr_status & DP_DP_HPD_UNPLUG_INT_MASK) + msm_dp_display_send_hpd_notification(dp, false); + + if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK) + msm_dp_display_send_hpd_notification(dp, true); + + ret =3D IRQ_HANDLED; =20 return ret; } @@ -1231,9 +1257,13 @@ static int msm_dp_display_request_irq(struct msm_dp_= display_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", @@ -1413,6 +1443,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) @@ -1822,13 +1853,35 @@ 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) - return; + 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) + drm_dbg_dp(dp->drm_dev, "type=3D%d link connected=3D0x%x, link_ready=3D%d= , status=3D%d\n", + msm_dp_display->connector_type, hpd_link_status, + msm_dp_display->link_ready, status); + + if ((!msm_dp_display->internal_hpd || hpd_link_status =3D=3D ISR_CONNECTE= D) && + status =3D=3D connector_status_connected) + msm_dp_hpd_plug_handle(dp, 0); + else if ((hpd_link_status =3D=3D ISR_IRQ_HPD_PULSE_COUNT) && + status =3D=3D connector_status_connected) + msm_dp_irq_hpd_handle(dp, 0); + else if (hpd_link_status =3D=3D ISR_HPD_REPLUG_COUNT) { msm_dp_hpd_plug_handle(dp, 0); - else if (msm_dp_display->link_ready && status =3D=3D connector_status_dis= connected) msm_dp_hpd_unplug_handle(dp, 0); + } else if ((!msm_dp_display->internal_hpd || + hpd_link_status =3D=3D ISR_DISCONNECTED) && + status =3D=3D connector_status_disconnected) + msm_dp_hpd_unplug_handle(dp, 0); + + if (msm_dp_display->internal_hpd) + pm_runtime_put_sync(&msm_dp_display->pdev->dev); } --=20 2.50.1 From nobody Sun Oct 5 03:36:54 2025 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 E378823B63A for ; Sat, 9 Aug 2025 00:35:49 +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=1754699751; cv=none; b=AfSlFQWGRryHzfm6BNfP8X5egGBmwcU+SRrJRguoUPgmU/jTwv+6MKWHQJD+XInmid/AWdYVdiN0VRW/NnLjAbLhPtdvSuPXrlSboESQ+zGZ50eQnGMuIk9hkH1fGm1Yd2lxLmmoTltzsvNwMoKtLcObC/RjflclIzO5ZqktIdY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754699751; c=relaxed/simple; bh=HTqrrF+C5QTfFndFWgmnWgSjgmkkDUYYRxWdw3qjL0o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mr90BJFmAnm6p+ZBMBq0eeMpz4l+UpUXjZnN9/mOfYhEm67FHP4pLYryft2D8Jm0LmJjJkPY9ExCsP+/HVSsRSZlQjhHxR7aJeacHQlOQdWCj2U294nfPV3tynk8KNhfdmQQp3csVJbgs90iFD45iKynCmq5pweSlikVqukBY1o= 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=H9pA9wdZ; 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="H9pA9wdZ" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 578NExXc022010 for ; Sat, 9 Aug 2025 00:35:48 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= pVp2LvuWfzIBugnNlvc8UhhBMesOGUqQJS4eHYhxUXE=; b=H9pA9wdZWtZ5bCRd onuweo1yrHB6viIZDm+SOzCyiUZeMGfOe/eDqfKvnKSADFGALA9sBnqZJRrbHB8l egOd2iXASsfB4ywFuWmpoY7meDjKyIOzyb3dNntnPrc6rWPh6RS46PhYE8PRE7v8 YWhLnMyix4WScpUQ0KidnE86n8m+lAm++KY5SWtFe2oo6PKlZFdJ+45MQPy0NEjC nkH0NtoePOoOIjbAUt2GpK4Va52S62I46Kapy2HFcHBvp0rble7GeG+TLQcXv9Yp HpDTW+J49/IrPZpVpeODzDiDuBg0FZ90PqHfXZzXq3G/cbHnwT/T8JKM95J+GCyY dZC9Eg== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48bpybkm6g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 09 Aug 2025 00:35:48 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-242abac2cb4so32192585ad.0 for ; Fri, 08 Aug 2025 17:35:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699747; x=1755304547; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pVp2LvuWfzIBugnNlvc8UhhBMesOGUqQJS4eHYhxUXE=; b=m1CNNJPx9dR5QoHm4dfSxVPNyytelU4370+fhOoNogJdxryhpJ3SugadmcycFfyvOO IqP0cBZ2/twdrhCeRXnypUVK/sj2KhR5QLFTStAWP1u7yjd3aPQog4k25kqCuxbdc9ve 0kXyeROlhMxribfw1xvcExJIehJ+iryQPPe3vSJ0VgG6ZDSf4BQ7yIZmuOxfu7Ux+6lM A3DlR0THH0BpecuM7wdgplnycev7yyHcWdH7veqQ7u8elkDrOa2HwW+eWeu24d6vZJwU vY7waeYWVWPHCwgrg+V7u203SY1So4yMFtxis/XuMps0KydMtGjMjbxja+wM+UdlM45Q qgJw== X-Forwarded-Encrypted: i=1; AJvYcCU94dmPYUpDTRP9gk6dXSzF59pyvn8gy8f4QMqpxv9bImQhRq8cRX+GWYzOpvXCPyxPx/8dim5zZr1GCwU=@vger.kernel.org X-Gm-Message-State: AOJu0Yxb9NxFtCQvGWHYAIVC2tz0/zZ3tSekzADw3OaDB44JMyoYXcer cB8gKIJkIZpXBCeMvAufjbjEzZKMqWRHSM+s9SDAtuoQwfSzl2rQ5iu3sh/sIfvUs0UU6GWOCP+ wu5nXUlv51ekeh6RYs3SQI6oAX3xeAuIIGNk5cHRMTk8qKnwSQ8JM7bth5hlK7wkJ9XkL8LI1Yf g= X-Gm-Gg: ASbGnctBwsvLSfqQ00mZmp+VwvVhitKyP4X1d+6EZ6i+w9XaltPFUDptZ1vDYVv2Umx 6fM/bW0auOJqN0LI9wbuu16oSLEoWOTlO7ctjI40Yavuy/jFymypzIUCTyi/nfYvDYEnbgPhxjO 5cjpfq4iwFdgyDEHoGElQI/OGWVWf9VUAn4y47vWfF4baB5Sr21ICRZXNw1I+SuMEUBSoY1CN5b QomVkzEDpZyCy2zfX8Lul0fN6NXbksPH/BY8gJVUclyeoZnslishP8y/bZhnSsLGo98f8+MLQwG wdS1yGqMr9UwqaliaumUGbF+3ZHPpDQKnU3Cz9siO+wlNkduTQlucmvIQBpn0big4EHBfhgH3Yk 9IfrdkcLCTqJ6ysKzZtKwoZF/ X-Received: by 2002:a17:902:d585:b0:23f:d903:d867 with SMTP id d9443c01a7336-242c21dcdc9mr66684665ad.35.1754699746874; Fri, 08 Aug 2025 17:35:46 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHpDzXJUG2NG/inVALaMSroTXHJ0oWYwhYOpF7guVZ6NqIs4yl+/T4nnDKa6V0uCpokze4sOA== X-Received: by 2002:a17:902:d585:b0:23f:d903:d867 with SMTP id d9443c01a7336-242c21dcdc9mr66684055ad.35.1754699746283; Fri, 08 Aug 2025 17:35:46 -0700 (PDT) Received: from jesszhan-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef678dsm219865355ad.39.2025.08.08.17.35.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 17:35:45 -0700 (PDT) From: Jessica Zhang Date: Fri, 08 Aug 2025 17:35:20 -0700 Subject: [PATCH v2 08/12] drm/msm/dp: Drop event waitqueue 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: <20250808-hpd-refactor-v2-8-7f4e1e741aa3@oss.qualcomm.com> References: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> In-Reply-To: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1754699734; l=15203; i=jessica.zhang@oss.qualcomm.com; s=20230329; h=from:subject:message-id; bh=HTqrrF+C5QTfFndFWgmnWgSjgmkkDUYYRxWdw3qjL0o=; b=UJDbpsNuP3Llm5q+JW9nAZCwXzU559UaTsfBS+2xaxmyWqCzL2MvJufSsoeyxm/mGL3bZX0sz hdO4w+8z7wiBv0gkxveaFL2GP3NFm+VzutpY442bBVbynZVkkU2KkLw X-Developer-Key: i=jessica.zhang@oss.qualcomm.com; a=ed25519; pk=gAUCgHZ6wTJOzQa3U0GfeCDH7iZLlqIEPo4rrjfDpWE= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA2MDAwOSBTYWx0ZWRfX9TTeqbvqQEP4 iWgNFL9iIl/g3iUdPvGDoyOvTP9DMeR8IF/GaMnams6SwbJOA6wVZ9l7ESlHP4d9qxRKzRY2nQ2 FplY6iwDAoI6d9yd6adGBwqv4KLuFHUoWnVRUvfNhZiy9+wXp17a9FeSXRqiv/gqQ18v5mGe7fy Qo7my2Q1XpNLDRrjdce8saMyb1gIBRPxqzxCDG/Zcp4tmRw4BrcFY2Pw+niJkCg5z6HhwdUltj2 3VQYKQzhf4YnFw+HOKG4wQsUxjWfHG4bteeWoyH5fh+o9gvR/JbvFQqvdosvHxjAiz11W1MVccI L2o3gWbt65OL0dOLVFYPFeImyHJrY4xVlImfbDGmEpYv8L4gHRiPBCw5ayHabvN6X7qDYNEWyYD qfvAtokr X-Proofpoint-GUID: 8vyJkFwia8raOlaKMNJU74b7bKhSqnCq X-Authority-Analysis: v=2.4 cv=EavIQOmC c=1 sm=1 tr=0 ts=689697e4 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=WmteE7YyU5uwuhFq2T4A:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: 8vyJkFwia8raOlaKMNJU74b7bKhSqnCq X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-08_08,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 priorityscore=1501 adultscore=0 bulkscore=0 phishscore=0 spamscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508060009 Since the HPD IRQ handler directly notifies DRM core for hotplug events, there is no need to maintain a separate event waitqueue. Drop the event waitqueue and all related structs and helpers. Signed-off-by: Jessica Zhang --- drivers/gpu/drm/msm/dp/dp_display.c | 255 +-------------------------------= ---- 1 file changed, 7 insertions(+), 248 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index b9e2e368c4a8..eabd6e6981fb 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -52,27 +52,6 @@ enum { ST_DISPLAY_OFF, }; =20 -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 data; - u32 delay; -}; - struct msm_dp_display_private { int irq; =20 @@ -100,16 +79,7 @@ struct msm_dp_display_private { spinlock_t irq_thread_lock; u32 hpd_isr_status; =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; - bool wide_bus_supported; =20 struct msm_dp_audio *audio; @@ -212,60 +182,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 data, 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->data =3D data; - 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; @@ -284,8 +200,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) { @@ -305,12 +219,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; @@ -322,8 +230,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); @@ -585,33 +491,22 @@ static int msm_dp_hpd_plug_handle(struct msm_dp_displ= ay_private *dp, u32 data) =20 msm_dp_aux_enable_xfers(dp->aux, true); =20 - 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); =20 - if (state =3D=3D ST_DISPLAY_OFF) { - mutex_unlock(&dp->event_mutex); + if (state =3D=3D ST_DISPLAY_OFF) return 0; - } =20 - if (state =3D=3D ST_MAINLINK_READY || state =3D=3D ST_CONNECTED) { - mutex_unlock(&dp->event_mutex); + if (state =3D=3D ST_MAINLINK_READY || state =3D=3D ST_CONNECTED) return 0; - } =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 */ - mutex_unlock(&dp->event_mutex); + if (state =3D=3D ST_DISCONNECT_PENDING) 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 @@ -625,7 +520,6 @@ static int msm_dp_hpd_plug_handle(struct msm_dp_display= _private *dp, u32 data) =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); =20 /* uevent will complete connection part */ return 0; @@ -652,26 +546,19 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_dis= play_private *dp, u32 data) =20 msm_dp_aux_enable_xfers(dp->aux, false); =20 - mutex_lock(&dp->event_mutex); - state =3D dp->hpd_state; =20 drm_dbg_dp(dp->drm_dev, "Before, type=3D%d hpd_state=3D%d\n", dp->msm_dp_display.connector_type, state); =20 - /* unplugged, no more irq_hpd handle */ - msm_dp_del_event(dp, EV_IRQ_HPD_INT); - 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); 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); @@ -679,7 +566,6 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_displ= ay_private *dp, u32 data) 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 @@ -703,7 +589,6 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_displ= ay_private *dp, u32 data) =20 /* uevent will complete disconnection part */ pm_runtime_put_sync(&pdev->dev); - mutex_unlock(&dp->event_mutex); return 0; } =20 @@ -711,32 +596,22 @@ static int msm_dp_irq_hpd_handle(struct msm_dp_displa= y_private *dp, u32 data) { u32 state; =20 - mutex_lock(&dp->event_mutex); - /* 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); =20 - if (state =3D=3D ST_DISPLAY_OFF) { - mutex_unlock(&dp->event_mutex); + if (state =3D=3D ST_DISPLAY_OFF) return 0; - } =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 */ - mutex_unlock(&dp->event_mutex); + if (state =3D=3D ST_MAINLINK_READY || state =3D=3D ST_DISCONNECT_PENDING) return 0; - } =20 msm_dp_display_usbpd_attention_cb(&dp->msm_dp_display.pdev->dev); =20 drm_dbg_dp(dp->drm_dev, "After, type=3D%d hpd_state=3D%d\n", dp->msm_dp_display.connector_type, state); =20 - mutex_unlock(&dp->event_mutex); - return 0; } =20 @@ -1013,12 +888,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"); @@ -1028,8 +899,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) @@ -1045,96 +914,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->data =3D todo->data; - 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, todo->data); - break; - case EV_HPD_UNPLUG_INT: - msm_dp_hpd_unplug_handle(msm_dp_priv, todo->data); - break; - case EV_IRQ_HPD_INT: - msm_dp_irq_hpd_handle(msm_dp_priv, todo->data); - 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 @@ -1455,11 +1234,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 @@ -1667,23 +1441,18 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge = *drm_bridge, if (dp->is_edp) msm_dp_hpd_plug_handle(msm_dp_display, 0); =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 (hpd_state !=3D ST_DISPLAY_OFF && hpd_state !=3D ST_MAINLINK_READY) 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 @@ -1712,7 +1481,6 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *d= rm_bridge, msm_dp_display->hpd_state =3D ST_CONNECTED; =20 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, @@ -1740,8 +1508,6 @@ void msm_dp_bridge_atomic_post_disable(struct drm_bri= dge *drm_bridge, if (dp->is_edp) msm_dp_hpd_unplug_handle(msm_dp_display, 0); =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", @@ -1760,7 +1526,6 @@ void msm_dp_bridge_atomic_post_disable(struct drm_bri= dge *drm_bridge, 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, @@ -1816,10 +1581,8 @@ void msm_dp_bridge_hpd_enable(struct drm_bridge *bri= dge) * 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 @@ -1827,7 +1590,6 @@ void msm_dp_bridge_hpd_enable(struct drm_bridge *brid= ge) msm_dp_aux_hpd_intr_enable(dp->aux); =20 msm_dp_display->internal_hpd =3D true; - mutex_unlock(&dp->event_mutex); } =20 void msm_dp_bridge_hpd_disable(struct drm_bridge *bridge) @@ -1836,15 +1598,12 @@ 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; =20 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, --=20 2.50.1 From nobody Sun Oct 5 03:36:54 2025 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 C50FA246BAA for ; Sat, 9 Aug 2025 00:35:49 +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=1754699751; cv=none; b=Vvo/aO4ZZdtWV0RTdAG2f4P+dh5FLSjIGx6dzeK1ruvxtKVhu1i4DmH+FlErCqNXAXu29buDOp1tG+kvBMrjGP9WDve7eYIBltI9KPE1d/SgerlLIE6b4+h6bGUwwWD5QDZwfsOUpsRMJeZeBR1I0aBAq/wwVlcqPdSo5AQqbzI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754699751; c=relaxed/simple; bh=ggjVjCaXkx6Mamyc1EgH8Z1xDLiJkr291pJTB5zorsY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NIhXgfv88qPeyqK2eWVBGUGlBoxaJjKGz7WUuJwWxg7fdOUECfBXBY2xRLiaLoVqSRNF55/BY54zoQQHT10kcuy8YMmW6byjDv0PKjRhUeT4B3Bm//tEjKNODA+e7R67o4MIH/Orukmv0un6aeRj/jlzPj1q6VKjH5WEykaF+ps= 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=npBGLZGl; 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="npBGLZGl" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 578Ewkh9011668 for ; Sat, 9 Aug 2025 00:35:49 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= 3eZyTM1lKAlxwHu0KgfbpHrzCleYc0+uy6KH19detY8=; b=npBGLZGlyc08LaU9 kco4hlyvKU2rGweNbK6e3aJwO4lcjBj+EJeHiLv+73LNdhlCU6JX/eG4np2vuZGv +N1c2UGqOJFE8HnKbNzQ65/jM11QgmHEmx3zaH41+Y1Mq3F6so2XKaW2HQ/QeEfX ZHJ5R9GDF3elvWzYIU5eBP56zcnqXdUtpjYEjjJ+QI8uTqrZes3Wp8/uefdFgNJr +1YL567h9yr+WnujIu9aaX+kJ3VQQvAFyql3HzgJ5/qd8EL7/VYfA9uVx9WfyC3o kXSS0c6L2Fe516WBdcJwDLkZm8zFBF00MwHWFkPWHKiC7ykul2CFwJFHMgdqpUol qkUX4A== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48cpvy69dn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 09 Aug 2025 00:35:48 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-23fd8c99dbfso22177945ad.2 for ; Fri, 08 Aug 2025 17:35:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699748; x=1755304548; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3eZyTM1lKAlxwHu0KgfbpHrzCleYc0+uy6KH19detY8=; b=emK63tDsKoLm8nJenvPHgabsEPkENXsC3RxCvNg+PXwatenPI/3I+G38jqujwWbWeH Tb8fh7zgiLY3Zd34xOYzCeOcVKw+Hsj5sA7p+YqtQxziaZkh6CN/PlQ9X/UAYR36iLV1 k5QZF13nWN7ICy8+AsfnQT8xMAFvEsMxPx0sdY4S5eXoe2EpQOs4GsaDXAVKwFxFmlEO Yfgk6iTKB5Nfha16fNsAJIgg5vDonesjaslTaNUFJo7UT/dg+4Q9c4reNibbt7w/Nsqy tZzzSEE4c/wB2Okp3odCcy/f5rQhfWO9N4nUuvuFZXcjpdaheI7/PE3EuXNJ0dfLgg0W N7lQ== X-Forwarded-Encrypted: i=1; AJvYcCW8g2+djT/mNrm14jD4IlH+zf/jjDE/IElhIjsI7PEYfKshdyogjrH89vP+sMOOY5wQg3KN+Ar2umFOltw=@vger.kernel.org X-Gm-Message-State: AOJu0YzPNAeCHR/vtjC5wlYzePLH3ogGZv/36Kg+eiwnCWOpkJ9gTIeG TYPy3Q/PnF5F/qx7Q4cCsZ8Us+3I1S/GCbLrYvT+io3mztguMmkJG5r5S5aOPuSlZLWDWcfH9oX sNXeyIm90nWvUQF+Iug/s/GfqFbbL7ySgizYLUCLFf6dvVkRl6Ajw0NPMtZKKnsLKXMo= X-Gm-Gg: ASbGncu0cFUYRCmaUtbupEmUuM5QYQDR1x3rdr3T9sDXvwZjVPJ256OjjOZhblUO2Ku SDDnbqj2VFQLHSo549xPsgyyEvRklLxOgZDRcJ+/wuMHx535sHGzoptBaZIql2UFGWjEvRIirsL EsfWPM90PSx/o8C94s2Iu5gnw7hM/oxCMBFSrx64Ssdbt5Gg4XUwichoTRnN0QuMB7471Y97eOJ C5R1m/8WkgLiJg+93I0HHiZZFjr/DWIengA8tvPfMSjGOhIBDwGarNOjuwpnxTsppiFo8eu+d1/ K1uD6OaUAYpuSmwQbjV2/YmhtILNaFsVZZZVV49fEDDRnwT0Wn7hLExyVFIFWOh/UkOcI3ecCEl AG9seLTsQQTffps/pS+K/8Y32 X-Received: by 2002:a17:902:e786:b0:23f:f96d:7581 with SMTP id d9443c01a7336-242c2039e50mr64543035ad.20.1754699748047; Fri, 08 Aug 2025 17:35:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFcMrJNf4hYbUM6Mca4QfD0ZQhsL/38byXKglBB4WfSR1lbVjH3mDxc+Vqs9SUlmhl07AwLRQ== X-Received: by 2002:a17:902:e786:b0:23f:f96d:7581 with SMTP id d9443c01a7336-242c2039e50mr64542765ad.20.1754699747607; Fri, 08 Aug 2025 17:35:47 -0700 (PDT) Received: from jesszhan-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef678dsm219865355ad.39.2025.08.08.17.35.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 17:35:47 -0700 (PDT) From: Jessica Zhang Date: Fri, 08 Aug 2025 17:35:21 -0700 Subject: [PATCH v2 09/12] drm/msm/dp: remove redundant checks related to ST_DISPLAY_OFF in plug handler 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: <20250808-hpd-refactor-v2-9-7f4e1e741aa3@oss.qualcomm.com> References: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> In-Reply-To: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Abhinav Kumar X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1754699734; l=1745; i=jessica.zhang@oss.qualcomm.com; s=20230329; h=from:subject:message-id; bh=L/K5K5k1xBQ/wx+huy+cI13UFEAuqZN8YUVxLinE3Yk=; b=bDAongJDXX6a6O+352pvsIP13wU3uFnz7DQHr8iAWYbGG6fO0Ff2FBG7AzARKFuAkqFwsvxpz WAmus7KaTCSAThVoDDaKKbokeJY6sI8CUyT3NiIbYW7Lmqljm/T3ElI X-Developer-Key: i=jessica.zhang@oss.qualcomm.com; a=ed25519; pk=gAUCgHZ6wTJOzQa3U0GfeCDH7iZLlqIEPo4rrjfDpWE= X-Authority-Analysis: v=2.4 cv=TJpFS0la c=1 sm=1 tr=0 ts=689697e4 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=e5mUnYsNAAAA:8 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=3iXaqZgdguojTDSw8eMA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 a=Vxmtnl_E_bksehYqCbjh:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: 5IBZJnDFw_WaD6iEP9vByfkpFKcAGyyg X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA3MDA0NiBTYWx0ZWRfXyrkl1XkoH3t8 29FfWVXdpuSbIS880yW3FQtblESLCj8MOIzg5cmMeJwKxV9sq0/Js+Nufn56YUYUa/FR9N6mg09 6/G1/lP4sj05qBlESrNOVyVK/c88BWMpPl0NxoMXl+t7k00SX+6oTCzOeN/qqmHKAq02pLwndxp 0YMG51gJ6IqRsrvyBFngasFLRU7oceKdywkDXnq3z0CryqnVi+t+/FruvgYAPAjgHzDMXaSRQ39 OL1KduvVjK17zV30LffMz076pGwlpTCIEUdmYJA4Ke4qUkxSkokXBY/9wfWs4/mHWVQkfs5+tlp /2Dq6XkrpLx9csqrONUZkeyJrUEn/mhqPXSUsL9fXYEzUwlE9Q9MXerXx/LgLNdcCdQ5wLcMLhG /rna1ASp X-Proofpoint-ORIG-GUID: 5IBZJnDFw_WaD6iEP9vByfkpFKcAGyyg X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-08_08,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 phishscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 adultscore=0 spamscore=0 malwarescore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508070046 From: Abhinav Kumar In commit 8ede2ecc3e5ee ("drm/msm/dp: Add DP compliance tests on Snapdragon Chipsets"), checks were introduced to avoid handling any plug event in ST_DISPLAY_OFF state. Even if we do get hpd events, after the bridge was disabled, it should get handled. Moreover, its unclear under what circumstances these events will fire because ST_DISPLAY_OFF means that the link was still connected but only the bridge was disabled. If the link was untouched, then interrupts shouldn't fire. Even in the case of the DP compliance equipment, it should be raising these interrupts during the start of the test which is usually accompanied with either a HPD pulse or a IRQ HPD but after the bridge is disabled it should be fine to handle these anyway. In the absence of a better reason to keep these checks, drop these and if any other issues do arise, it should be handled in a different way. Signed-off-by: Abhinav Kumar Signed-off-by: Jessica Zhang --- Note: Taken from https://patchwork.freedesktop.org/series/142010/ --- drivers/gpu/drm/msm/dp/dp_display.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index eabd6e6981fb..dd3fdeaacc91 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -495,9 +495,6 @@ static int msm_dp_hpd_plug_handle(struct msm_dp_display= _private *dp, u32 data) drm_dbg_dp(dp->drm_dev, "Before, type=3D%d hpd_state=3D%d\n", dp->msm_dp_display.connector_type, state); =20 - if (state =3D=3D ST_DISPLAY_OFF) - return 0; - if (state =3D=3D ST_MAINLINK_READY || state =3D=3D ST_CONNECTED) return 0; =20 --=20 2.50.1 From nobody Sun Oct 5 03:36:54 2025 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 442C124DCF8 for ; Sat, 9 Aug 2025 00:35:51 +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=1754699752; cv=none; b=a/Sxjbm+E9WY/8gIrBljhjZZhRJ6CzXKZC4MNObmr7SK8x4+nIJP/smyiWWlRahA29PF7EOtdxJC/HRRl5itOXnKAzHfntfpxtK5AtNb37GzXC1OdbgMzgSQOLT9O1g82zqcH19w6PT2yleCjcVpm5UGs90LtgWcXQjPqUopLrE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754699752; c=relaxed/simple; bh=4NtupbLbHXZJKW3LGWuziF6T3O+S2Clq0/ZFSk/f48A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Hmj8fC8jmD643MBd4G2NEirjTnNvvFhwhIcdRX5p7evNm4V2lc+4gJ/MDxbLBsn2dudRAK7DNBV6GQB+Wr2RoKfcn/on6vqFIZLtvWCDODE/WSDbvEDlNhNfggBOMK7s+EJrJe6GqhhCLsNYT3ueMY9zIujF5jw+mky/yucCfjI= 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=LV0hx5sa; 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="LV0hx5sa" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 578FuskG022433 for ; Sat, 9 Aug 2025 00:35:50 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= PiZ22avjMQ6yPSDZ6+PmnqKblqG/QInLtG55ppMw6bc=; b=LV0hx5sa7UOFHmvt K4N5be3m9douJyU9YeYoEbgSBnU50CLRN5ntDb/xiGsPfn8yJUGFBGERALz3hXDu IGN2WkM5Xum8J11P/Nrs/3PSjpOjNA2BSBi3RXmYsVqeM9p/CWd4gcoOGLAjTrF2 2gFoRFtMx3nq1w+dzF7KRKwjhnzcwnViqADzwglvcdViQTZrko6SZvCcMIJVoIfU 6FS/hbVwxSKUWuQlmlmbl79+IrcDP0vHoEpzVtr4hN3uvtFB5uE7XJ5mH6KwOoyY xw79v6+7V9wPXwP98nkt4cGc2e+lPJmhTNMJaEgJ4y/qTme13nhG8rkcznFptBGI ObMVHg== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48cs5ndtwh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 09 Aug 2025 00:35:50 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3214765a5b9so5148463a91.3 for ; Fri, 08 Aug 2025 17:35:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699749; x=1755304549; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PiZ22avjMQ6yPSDZ6+PmnqKblqG/QInLtG55ppMw6bc=; b=hqwaFUdfY9COw91jztoxDDPdPTaFyDW3gyK4ccMR3ScSs3ZH5znxRXggqcUKTybCqJ 105WmlDKVz7SD6GgaVin6icusmJv8DN0XBqgXJ9HUbJDjqqtWNVMaERZH9C8RQ2KakCe hZRM6IIEcM5+LtK7pggUkW0945+bl6pkrIDEPI2W/KBFsdJF4BR3bdUJ5NgBMvIkI0Nn TVkllBweoXtY6UqRiyuyc3ReobqPJyDW1UQ+iV/xCNyibsM1JSA2JQq3MUK2Fd3HckKA /T0c7i4Q4dIDAzXgJpCr8TqJncVjqB9KyuVEIo8mFnJvmma13hhtgvAB0vF4c+maYI/B h11w== X-Forwarded-Encrypted: i=1; AJvYcCUD3bhxBDyaXGBSlnMoq+HoC3yW6Tkz+BvZOYjRtoDyfPZo/5Cdq+ZK4/gNq56tSki3ECuZ4rtahlOm1oc=@vger.kernel.org X-Gm-Message-State: AOJu0Yx8ejKksr3niCMy0PHgYxD9IVvagPZ5d9pbRCyuh5DipsG1dZqA ByHXoExGuG6J1j9l7nr7l9QkJalCZj6FfPtaj+8TMDxNFir5nNOvolJK8f+rsl216u/PdW463PG ZwYvy7q7iRX7k3IZuPfCvSapAiCYOuDDFtFooMzn7qqnFwU4vwLqkeyFLCrR4WI76felZ4uid1B U= X-Gm-Gg: ASbGnctqj490vE5/Uvr2DM7KPnqz6CIvWIgPop6Bx1hV+1pnzw7neBaJzaQLhI5mH5I OU+yFl/7FAYY0vez2r9Np9UXAoaQYKzlPe7HF4uGw9HwqLLUULk1SHsCa17xctf5KCi0Ldrw8mO eHhwVgREvfANWt1v75FUUmFXb3ukJyS9hxpuxryUhlVrfPndqnX08jX4VxUUFi4jMTlpOJnKci1 p4mM4Bll7J7fUqMOvP2B1kXWqtfzw8bijmDv9wkw5FyfbD00EDOerV08bqii0CAPBWouijrzL8P XdgFqoKpQvOs65u7wRBSJ9MQNQWeVXXhviC4hDIWSgp0oj7+nrStUJAwELw4YEoikxLskVStt9T J0T0hcjJeyScM9arJ2I6M5RB3 X-Received: by 2002:a17:902:cec8:b0:242:9bbc:6018 with SMTP id d9443c01a7336-242c2277f70mr67504835ad.56.1754699749331; Fri, 08 Aug 2025 17:35:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHRcmkdoPKn0Y/gtVgwKawEtn3XJx+wDXdjs6KbTeVW7Zyo7yLwrrGGpLbIydsVcXp/EeUE5w== X-Received: by 2002:a17:902:cec8:b0:242:9bbc:6018 with SMTP id d9443c01a7336-242c2277f70mr67504525ad.56.1754699748876; Fri, 08 Aug 2025 17:35:48 -0700 (PDT) Received: from jesszhan-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef678dsm219865355ad.39.2025.08.08.17.35.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 17:35:48 -0700 (PDT) From: Jessica Zhang Date: Fri, 08 Aug 2025 17:35:22 -0700 Subject: [PATCH v2 10/12] drm/msm/dp: Return early from atomic_enable() if cable is not connected 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: <20250808-hpd-refactor-v2-10-7f4e1e741aa3@oss.qualcomm.com> References: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> In-Reply-To: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1754699734; l=1258; i=jessica.zhang@oss.qualcomm.com; s=20230329; h=from:subject:message-id; bh=4NtupbLbHXZJKW3LGWuziF6T3O+S2Clq0/ZFSk/f48A=; b=pzZTjzYITZ80tgTHFP+3PXCECEW+ccVzZNuZooIm+CrqIvDUL9LgrFJnwSPGcSTtpuU2/mngE 3yJTVSVx8BHCAAqhjaPQm2i2nj4ByCXG0skte9RwSkKuNRukmpO0gIp X-Developer-Key: i=jessica.zhang@oss.qualcomm.com; a=ed25519; pk=gAUCgHZ6wTJOzQa3U0GfeCDH7iZLlqIEPo4rrjfDpWE= X-Authority-Analysis: v=2.4 cv=Q+XS452a c=1 sm=1 tr=0 ts=689697e6 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=C9iwNz8zScVtocZF6eoA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-GUID: Eo-MfRPbIsfQIrx2zfHjjypQv04mbTJX X-Proofpoint-ORIG-GUID: Eo-MfRPbIsfQIrx2zfHjjypQv04mbTJX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA3MDA2OSBTYWx0ZWRfX+4NVnGHa6q0q /Qibaje78pV55rYScH7I4en7grkhXVRjKXJu2pBN/0b2GNqVwnJeNkciPrKWklnjSSIQFU7z/Tb hvf869ta//myG+2FX7smA2B0/7Ls1jLPRlZ4KZdYCFjJwU1trFEDDo7j7hSZY7cewNg6vPmpE7F xnissj0Z/3IuNk6Z+qZWSAbsdYB7J9OKInaW8LEfYgPQXnQb0K4yl/yESmDUCJSnRefY8zTD8EG FvlVMWV5qrcMi8G+3gJ/iOI3n7y5ICAu5R+C6Vssd8T39ArURcLAuoUKXqYk6gm884n1Z0sobIj KCI835PCXjjtiO/xNkLUEaeEpRlA+VmdnLAJo4JujMSJqmgPiETATwgg/P55wVb1IOKReRKngBb 8ne3N7zn X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-08_08,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 suspectscore=0 malwarescore=0 spamscore=0 impostorscore=0 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508070069 Replace the ST_MAINLINK_READY check here with a check for sink count. Since atomic_check() fails if the link isn't ready, we technically don't need a check against ST_MAINLINK_READY. The hpd_state should also never really hit ST_DISPLAY_OFF since atomic_enable() shouldn't be called twice in a row without an atomic_disable() in between. That being said, it is possible for the cable to be disconnected after atomic_check() but before atomic_enable(). So let's change this check to guard against sink_count instead. Signed-off-by: Jessica Zhang --- drivers/gpu/drm/msm/dp/dp_display.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index dd3fdeaacc91..82f0b6bdbf39 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1444,7 +1444,7 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *d= rm_bridge, } =20 hpd_state =3D msm_dp_display->hpd_state; - if (hpd_state !=3D ST_DISPLAY_OFF && hpd_state !=3D ST_MAINLINK_READY) + 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); --=20 2.50.1 From nobody Sun Oct 5 03:36:54 2025 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 AE98F239E7A for ; Sat, 9 Aug 2025 00:35:52 +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=1754699754; cv=none; b=l+65m8rkWO/IAyS5UuMG55lau3IpjvSmMCrc3+chOMubAWFSw/bpBCtIlWpNToPrkBFZyoCLssX/ZytOis55ZUtBOJA3RBtwPSzgRIxL4pBzvjqulChYpu3gEw3e0UMjydaJm37ZKebcXWBVcaE8rC9NxLEcME2xD5qT5HFpWJk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754699754; c=relaxed/simple; bh=w6BSJBqJqbIRJ05+nno85RYDhBvoyNtIQfjze0MwCY4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=F05MqD3zt3M2vzXa1xzN07So+gmDyXHwxVD0ps5pMO/ZAuP1psFp687elHYTZZ9y2pVF+UbKqokysEnaLx1gQuzzBeFNQ5cX4novjNq/QgVnHFTzmeIBR//r0dA9sSdQZbqnIaNdgk2rkcx/yTIyJseAFFU5fApcXgzjDJYRIuM= 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=GARjsjIx; 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="GARjsjIx" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 578Ftxx5003585 for ; Sat, 9 Aug 2025 00:35:52 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= hc2PomjCEUqKfvXR+bI4mzShsBkkrWDeiNQWOs+oPq4=; b=GARjsjIxBjPqaEs+ dRrhK3m/x63COM+8JPBDXUZwuIpO43+hrbxxKGKURxs0zEVf8PoWQHyYC1Csr+U2 DUFhNE1gbWLvar9Lbws6KTtA7KMMsbLFWnEo+Ax27lyzpD9dPVmoB01SrWgGP/S2 q6qEk0ESqPVWhe/YpZDGKnpZ67Deu6GNANKam2EWkPdy2DGIBeyeJawcmQi6usSw I6RDzd6jh7IV7POxRqLqJdtRwmJXQmcHTk/izilHm6u63EnBZoFOyakgvV+L2Gio jIvEN9QBUAVK0SI0KaNPSm3ihPPEhsGOERvT1Llnk5Vdih0uBI/owJiOO4/LAZun MnArbA== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48bpyakhw9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 09 Aug 2025 00:35:51 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-b2fcbd76b61so4176293a12.3 for ; Fri, 08 Aug 2025 17:35:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699751; x=1755304551; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hc2PomjCEUqKfvXR+bI4mzShsBkkrWDeiNQWOs+oPq4=; b=USYEPjPPIwu9deS+aDbIT9sb14NQplr189DLMnhFfKpCFcsq44y2V7WhF8Me1LkEqQ yGaQb0iMJcR2anefmOHTd+mjHA7BXVI6M78Lry0rsUVBFMVrHZV9smqxTyyHBny3Ii6G BroBXfFbvxiafKa6rJngEQTkkjRlhF7Kc/kV/ajhMh9ejlR8O0ZXhFeQXmIzRQ9xAqwJ Lcc5J9fdv6JZCEonWJCMcRvxuG5Yhukj6qZ8MlqG5Nvm4FXKT6jeuQKSBuWsOHbQJA+c KJ/k/jSSu0XPQo3kOAU7AjqpEx3s7EKpQ0348cjrNwaAtd0r8o+mjtmGDhiXUJt38Gko nTWA== X-Forwarded-Encrypted: i=1; AJvYcCV6JbAg1FgEVJzo2b78OyclUyjYI+PD760GYmskjgYVaEeiA+ZkdHPb3NRd7RozGB0bHojtbiacIhu4gLg=@vger.kernel.org X-Gm-Message-State: AOJu0YxXL/DfzaoV64JenWxJ92aYVJhpYwu5akEOF9fo4tWSPoY1gzP+ L2rsWVuLEaIKoaV9zZDblPxL5IXWuLLurW0muXhWDM59YMxPqzXyfu0Ipd6n0XcwuiwJBkpvDnR LB5sjCSoq5UoGS+Cx7+rc00DUTmTMGmexS9ri+ePGiJCOfILFGSEQ/ZU05GZsB9UnIsg= X-Gm-Gg: ASbGncutE2M4ZlF2f+VzSdswYdwIv/PQIRvQ9SZMgxwPpYTVubAagg64fHfW+eurTRz BCgixmt3WCwKX4l8WoLwFWpDr6ZVZpu87TXU+domUraCyb9fNFYKWttI5w3MpDgfRsFs9URlz5q AQLZKiFS6guNgxftwKQuxfWxcW9mr68FXFa+XvCu/d98o2wC7ekQ2x2DxPI3gVJrpHsDTmklHU1 3Syi4mcnfXpEp1Bf8FXgfjNraEOi3B/D5CLxrTk+GXGuAyqnIqhfg6lDzE1pSedmflp4ZpxTvwZ rc/OwQfITzasDa2daB/Jr+yKWovIPn5z1rTTlDUTwc4jxZs0Wa8vkk9uLg5S7kj+E6FcdepjUof /LwR5AVFkFLUQ/c+nuxfDBdlh X-Received: by 2002:a17:903:2ace:b0:234:b123:b4ff with SMTP id d9443c01a7336-242c2011167mr76235195ad.21.1754699750674; Fri, 08 Aug 2025 17:35:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHEVZKvg/CHR+DlFz8GZZA1oxge4Mj/q2fUpvjTmYPJPdIKAl3vEyocljUvcweSNDD/Po99vQ== X-Received: by 2002:a17:903:2ace:b0:234:b123:b4ff with SMTP id d9443c01a7336-242c2011167mr76234835ad.21.1754699750208; Fri, 08 Aug 2025 17:35:50 -0700 (PDT) Received: from jesszhan-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef678dsm219865355ad.39.2025.08.08.17.35.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 17:35:49 -0700 (PDT) From: Jessica Zhang Date: Fri, 08 Aug 2025 17:35:23 -0700 Subject: [PATCH v2 11/12] drm/msm/dp: drop the entire HPD state machine 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: <20250808-hpd-refactor-v2-11-7f4e1e741aa3@oss.qualcomm.com> References: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> In-Reply-To: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1754699734; l=12541; i=jessica.zhang@oss.qualcomm.com; s=20230329; h=from:subject:message-id; bh=w6BSJBqJqbIRJ05+nno85RYDhBvoyNtIQfjze0MwCY4=; b=ue+ZOIXB8H7Ln9T8HYJ680b1Q6pLSgOQ13/vHpi2GRDQuKoxwiT/FHvI25mesYj/sAf4FAAS6 jGpB6F9C4XWCIdY9mstgxG0hrmbyYDm/+4qjnt0/JDkphkp389mItmV X-Developer-Key: i=jessica.zhang@oss.qualcomm.com; a=ed25519; pk=gAUCgHZ6wTJOzQa3U0GfeCDH7iZLlqIEPo4rrjfDpWE= X-Proofpoint-ORIG-GUID: tfTz88xGCt9cqeemin_SIiSiB9x248I0 X-Authority-Analysis: v=2.4 cv=MrlS63ae c=1 sm=1 tr=0 ts=689697e7 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=T1xWuFrC4okc8hw_pIcA:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA2MDAwOSBTYWx0ZWRfX6QLrDxqOHqV3 rGsZO2az6EgaZ6VXeHES7neXWgrFCMarmsmswfiGhryJlJIJ7ZID365EQL3d1ERqI0lFG8bvWzg KqBLksko6x4rpyv0oabSs0C2NEBYk7QuNLq/BZNKooBNNmbYH3+2VniTyaHjmHh2KK0lVXS/1SH Jw39EJP6kXTGy7eCvEI74hUNUtYYuOVSuOVv+gBOJk5a7d9TMDlV4e6uku1Si1N6lvyJMCgOnzN sDtRDGhbJAJGs0nGGiVu0oIJ6qf7CvZA5DAteu+UNw3mJHDCevAEOqQOL9MtriqZU57mIP+N/xl UvaU+amjaPnaY5DbjvX4YlkrcGx0DzIBByPtA9K5a7FWz8bx0L3GPd+EUOsQF/QDjhSOlHQSY36 vTGsIdkM X-Proofpoint-GUID: tfTz88xGCt9cqeemin_SIiSiB9x248I0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-08_08,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 adultscore=0 priorityscore=1501 phishscore=0 spamscore=0 bulkscore=0 clxscore=1015 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508060009 Since internal HPD IRQ event handling has been moved to being handled by the DRM framework detect() and hpd_notify() callbacks, there is no need for the MSM driver to track the HPD state separately. Drop all references to the HPD state machine and replace existing checks with checks for link_ready or sink_count. Signed-off-by: Jessica Zhang --- 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 | 148 +++++++++-----------------------= ---- 3 files changed, 34 insertions(+), 137 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index c42fd2c17a32..4cf269b98029 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -2567,28 +2567,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 82f0b6bdbf39..dd529942f7db 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -43,15 +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, -}; - struct msm_dp_display_private { int irq; =20 @@ -79,7 +70,6 @@ struct msm_dp_display_private { spinlock_t irq_thread_lock; u32 hpd_isr_status; =20 - u32 hpd_state; bool wide_bus_supported; =20 struct msm_dp_audio *audio; @@ -392,24 +382,6 @@ static int msm_dp_display_usbpd_configure_cb(struct de= vice *dev) return msm_dp_display_process_hpd_high(dp); } =20 -static int msm_dp_display_notify_disconnect(struct device *dev) -{ - struct msm_dp_display_private *dp =3D dev_get_dp_display_private(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); - - dp->msm_dp_display.link_ready =3D false; - - if (!dp->msm_dp_display.internal_hpd) - 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) { @@ -424,17 +396,11 @@ static int msm_dp_display_handle_port_status_changed(= struct msm_dp_display_priva =20 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; + if (dp->msm_dp_display.link_ready) msm_dp_display_send_hpd_notification(dp, false); - } } else { - if (dp->hpd_state =3D=3D ST_DISCONNECTED) { - dp->hpd_state =3D ST_MAINLINK_READY; + if (!dp->msm_dp_display.link_ready) rc =3D msm_dp_display_process_hpd_high(dp); - if (rc) - dp->hpd_state =3D ST_DISCONNECTED; - } } =20 return rc; @@ -445,7 +411,7 @@ 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); @@ -472,8 +438,7 @@ static int msm_dp_display_usbpd_attention_cb(struct dev= ice *dev) 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); + 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_handle_port_status_changed(dp); else @@ -485,20 +450,15 @@ static int msm_dp_display_usbpd_attention_cb(struct d= evice *dev) =20 static int msm_dp_hpd_plug_handle(struct msm_dp_display_private *dp, u32 d= ata) { - u32 state; int ret; struct platform_device *pdev =3D dp->msm_dp_display.pdev; =20 msm_dp_aux_enable_xfers(dp->aux, true); =20 - 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_MAINLINK_READY || state =3D=3D ST_CONNECTED) - 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_DISCONNECT_PENDING) + if (dp->msm_dp_display.link_ready) return 0; =20 ret =3D pm_runtime_resume_and_get(&pdev->dev); @@ -509,14 +469,12 @@ static int msm_dp_hpd_plug_handle(struct msm_dp_displ= ay_private *dp, u32 data) =20 ret =3D msm_dp_display_usbpd_configure_cb(&pdev->dev); if (ret) { /* link train failed */ - dp->hpd_state =3D ST_DISCONNECTED; + dp->msm_dp_display.link_ready =3D 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); + 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; @@ -538,51 +496,40 @@ 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= data) { - u32 state; struct platform_device *pdev =3D dp->msm_dp_display.pdev; =20 msm_dp_aux_enable_xfers(dp->aux, false); =20 - 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); + 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); + if (!dp->msm_dp_display.link_ready) return 0; - } else if (state =3D=3D ST_DISCONNECT_PENDING) { - 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); - 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; + + if (!dp->msm_dp_display.internal_hpd) + msm_dp_display_send_hpd_notification(dp, 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); @@ -591,23 +538,14 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_dis= play_private *dp, u32 data) =20 static int msm_dp_irq_hpd_handle(struct msm_dp_display_private *dp, u32 da= ta) { - u32 state; - /* 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) - return 0; - - if (state =3D=3D ST_MAINLINK_READY || state =3D=3D ST_DISCONNECT_PENDING) - return 0; + drm_dbg_dp(dp->drm_dev, "Before, type=3D%d\n", + dp->msm_dp_display.connector_type); =20 msm_dp_display_usbpd_attention_cb(&dp->msm_dp_display.pdev->dev); =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 return 0; } @@ -1426,7 +1364,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); @@ -1443,7 +1380,6 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *d= rm_bridge, return; } =20 - hpd_state =3D msm_dp_display->hpd_state; if (msm_dp_display->link->sink_count =3D=3D 0) return; =20 @@ -1453,9 +1389,7 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *d= rm_bridge, 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; } @@ -1474,9 +1408,6 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *d= rm_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); } =20 @@ -1497,7 +1428,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); @@ -1505,21 +1435,11 @@ 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, 0); =20 - 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); --=20 2.50.1 From nobody Sun Oct 5 03:36:54 2025 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 94A05258CC9 for ; Sat, 9 Aug 2025 00:35:53 +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=1754699755; cv=none; b=e8MqXrW30uiULl9FQV2TGaR0fMbO6e3gADVa8wHvGn4T0QTnDQnB4Sg84RDlbyk2cZJmhWyQHPxPbb7EERMGlGBwgRjeaLAf6/0VkUV1GKeFbGArqLnP62QDnBRWg5WD0Rp1trQTCecdjFEosXU3bi86TP5S3Ner0JPIF/isJ3E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754699755; c=relaxed/simple; bh=JQn53FWdqnsenAxhsXtXftYUURqXJ8dtPT1Q4jRdnDU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EzHXx/bCkBSmoJhK26Muk4PZEBI5Qqui6duJqnjPj5vu1t+Ddd0LGaWbo7WnY4JJIA8+a29gt8tncZbuRJZhVeBb1Zc0Aj0GxwIW1319XX8v7K8czd51Hc5s72WE1qmlP7r/+x0Zs94dHwqWL10k5BOGmu53RSwbes9KME/HpuE= 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=J71t2Ve+; 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="J71t2Ve+" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 578DhDaT022425 for ; Sat, 9 Aug 2025 00:35:53 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= lygnt7Zi/DkDBsXWW/2tMmsIMiJD5/QBa7Q1HdwAysI=; b=J71t2Ve+xg0D+Yw9 +Bs7s5zBjwvaNfF4eswxmyQNq3gopOMpfOaSBAuX18u+UZWwuOjMDeA8NdXkuT3U pL0GlnI3zDkMj5Ed29gs8AVaZmkWi+U4xRlkqQ9tCLg7Hycp35tK4YoUy2r/jD6V 58BUZg+J1kDC0phV6l0tc2sjmlbiTBoW+U8eYgGlhzMlBXhFOJReMaNVhrH7lBgB vH3duJW74/OYT9x9KpUIrWsjfApUBuBx3YLaHJHOTbrQL0dd3J3f1ynLJG5wyqTP 1piGel42/S7+ka33rRiD3jyVCLICRqCx+6JAFsYbZ6hSdltQx8FX+Xzld5+LxfLp Vy5/YA== Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48cs5ndtwt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 09 Aug 2025 00:35:52 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b2fa1a84566so2335051a12.1 for ; Fri, 08 Aug 2025 17:35:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699752; x=1755304552; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lygnt7Zi/DkDBsXWW/2tMmsIMiJD5/QBa7Q1HdwAysI=; b=TOAeM+F7AmDu2KGqcO3XAWAvir5BApbOifou75cIuac4lYD38/voV3JyQ59AMdlOGy 4f4OZoQnl8i++N3JO3G2rGgCrt3BccnBxRUme561rkmztQUHSsv/OiVolCiD5E/9zaJM 0tppN/KxrCcoyAwMHxhIjHLkdPPCM6TMpT5j5ytY5JzwJ1LDy3bdOrJaXFzkHqto5STL cjFYV/M69y9ZzlewzioEf+dMjUrET/lUzKQa6VWCrVTtTHStFCfSHtbrmkmnfIRQzpRT 39pFMrG8tWRsiVuDExeBm0M64kg7wq0JkhIhp06dg+8L29dDH9Vc7idwtDwn8Z8v8J7r Risw== X-Forwarded-Encrypted: i=1; AJvYcCUNulGY9TEpM/D+u77+z6c/Yak6gz84q9esk+czbGFMR6w1sPvAriWoVCEjEfYyfiYQL4u6F9KRe1rqgGY=@vger.kernel.org X-Gm-Message-State: AOJu0Yx8ItspqpN+I9QavFFBDiG1+8ZEitEbyn0mpPchF05lb6XosP72 7mp7ZniWXLIjxY95hOKnS+9UKnPiJ6J3wavegpij5qUpuLOosZKqS3t+Hy/n6xwf/GG+ams5hfU HZnmahHRyK7Jrl4APpPurp7lvXnMabapJJkCbU8kCRbHh3E2E57sJ5BcMTS1HkEDJ7o8= X-Gm-Gg: ASbGncsG/cOvq266VK3H+AspLUbumi445K3ARqf5Cf2Kewgr/n11TxkByoMP3WZqn+e J2XJ+0SpYd8y5xt5eFLtrql+AJs7frwz+t6n3bmBzQGMQxCuf/hiMXeRmXaYMLqSi8Mx3tMwcYl 9v5tTJmHBqcXWAwzRVofnFqbtakmuooxZ3pxNVR58hlISk1ajD1I74IfR4vG5lnV9oEV7S/6FqL SWRPB0UbF6POEczXZIlzPaxpz8t8Y1t0r41JkMl0YhWETgFNHd+qw79XouZw3TcVwH44MGmaBOd 4zjX8bGHLXKHMgvJUFf+VVJcXcQvUT4glCAU7OhboZVDRhjaiEvr5wL0RGRWv+as4aoc/pU1T4X nEe6SRt+cBE9/dCBK9EoNFwrE X-Received: by 2002:a17:902:e550:b0:240:bf61:fee3 with SMTP id d9443c01a7336-242c225701dmr76135355ad.44.1754699752005; Fri, 08 Aug 2025 17:35:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE33DCMAedQDUiF2/I3ZWb+fz5inLjDwdHMAuwQmrl6+a26bmnVEJtkyEOMMqC99p7LJwIB1g== X-Received: by 2002:a17:902:e550:b0:240:bf61:fee3 with SMTP id d9443c01a7336-242c225701dmr76135015ad.44.1754699751568; Fri, 08 Aug 2025 17:35:51 -0700 (PDT) Received: from jesszhan-linux.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef678dsm219865355ad.39.2025.08.08.17.35.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 17:35:51 -0700 (PDT) From: Jessica Zhang Date: Fri, 08 Aug 2025 17:35:24 -0700 Subject: [PATCH v2 12/12] 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: <20250808-hpd-refactor-v2-12-7f4e1e741aa3@oss.qualcomm.com> References: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> In-Reply-To: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang , Kuogee Hsieh Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1754699734; l=3874; i=jessica.zhang@oss.qualcomm.com; s=20230329; h=from:subject:message-id; bh=JQn53FWdqnsenAxhsXtXftYUURqXJ8dtPT1Q4jRdnDU=; b=UfAJZEmii2W1xg/n7I3OixqLYvkqxFi5dqufHjpIdry9W5CQqZsyJUliQA/+ckK85WtgecgCZ CVY9K6KZqniDV8ngdPtL9w803gnE4hUnfeNcWL8TSsh2p37Dk/WXnlm X-Developer-Key: i=jessica.zhang@oss.qualcomm.com; a=ed25519; pk=gAUCgHZ6wTJOzQa3U0GfeCDH7iZLlqIEPo4rrjfDpWE= X-Authority-Analysis: v=2.4 cv=Q+XS452a c=1 sm=1 tr=0 ts=689697e9 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=JYp8KDb2vCoCEuGobkYCKw==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=nsv5_4zRg9i3qj8PKKQA:9 a=QEXdDO2ut3YA:10 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-GUID: X8G3rWTDVQWbxcIKqhvJX4QGzVUTPJDE X-Proofpoint-ORIG-GUID: X8G3rWTDVQWbxcIKqhvJX4QGzVUTPJDE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA3MDA2OSBTYWx0ZWRfX33bBFsqK4+f5 R+MNeqxYHv7JJ6SMseFuWFU1NLW0Ip31IRcDUkv3Lrb72rwV0T4yDUp+mr4JAHXDdyQ/orlKU4N D+49k/Vn7kH7c1Woo2HOqg1qDiS2feHh+NbiZNkNNBnhJ0CWo/hcY7RMFLYGKpymYkjK8luibtI teH0wvvO4bj6D2+cNd9bGNeJl3YinMl8WlRaZ7wIQtf37Fju0KyQVEGE1WK+zDsBKcHZKqeMemN D0Xgra0p8Shblh0itLaVolNbY7gqUYJDtr0pR1Zc88qH0PM+QrJc8QkIYsXyMPyXpcXi30y2KQr KV5qQC7iBVUth2PNrPzk0kiup5jEInhRx6CGylVpxaHB63wADF1UHpLtCcO5Pe+aQtOTSvynLnu z8bTcwpn X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-08_08,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 suspectscore=0 malwarescore=0 spamscore=0 impostorscore=0 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508070069 Add sink count and link_ready to the debug logs for [un]plug and HPD IRQ handling. Signed-off-by: Jessica Zhang --- drivers/gpu/drm/msm/dp/dp_display.c | 38 ++++++++++++++++++++++++---------= ---- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index dd529942f7db..93ea623473f4 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -455,8 +455,10 @@ static int msm_dp_hpd_plug_handle(struct msm_dp_displa= y_private *dp, u32 data) =20 msm_dp_aux_enable_xfers(dp->aux, true); =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; @@ -473,8 +475,10 @@ static int msm_dp_hpd_plug_handle(struct msm_dp_displa= y_private *dp, u32 data) 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; @@ -500,8 +504,10 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_disp= lay_private *dp, u32 data) =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; @@ -528,8 +534,10 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_disp= lay_private *dp, u32 data) /* 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); @@ -539,13 +547,17 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_dis= play_private *dp, u32 data) static int msm_dp_irq_hpd_handle(struct msm_dp_display_private *dp, u32 da= ta) { /* 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 msm_dp_display_usbpd_attention_cb(&dp->msm_dp_display.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 return 0; } @@ -1540,7 +1552,7 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge *brid= ge, hpd_link_status =3D msm_dp_aux_is_link_connected(dp->aux); } =20 - drm_dbg_dp(dp->drm_dev, "type=3D%d link connected=3D0x%x, link_ready=3D%d= , status=3D%d\n", + 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); =20 --=20 2.50.1