From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=156.224.82.218 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793107721; b=1r4M1rMtLdoPTgA7QgJcsBIZRGN9YiXkzzwdiPN8/I76/ZnMnw/1qj94AXx5euF4t4sx Wi8pofoDyzEloeDJh6BHNMJenEEH1XcPNwNCB0+r1NubFjXm2jiqpYEWg6NXKBG+nabLa dKYLV/Nqz/YqGNxc+AVArAB794XK06FLi1eWxgBcJ47OYjVnwd5bivVu1uAw0Ns4IN0dI BVYwUnpwll4rtLZSCXqL5Zt2jrJXL3lyFudtVT6tQYHchfI8tHWedZFueebsLUa5TcqTM 1D8m7JGN3gaMTiT0fIqaTbzQLKvlOmOKT2pN/h3JWyPmpvgJHfb/6dWxJXVW5FNzuFw== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793107721; h=DMARC-Filter:Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer: In-Reply-To:References:MIME-Version:Content-Transfer-Encoding: X-HM-Tid:X-HM-MType:X-HM-Spam-Status:DKIM-Signature; bh=x5DJ4Ep4ksayix6Tt/YRLjc+UGZM0RFbp8TBeZJFSwg=; b=v+2WrRDw5buxyY0kioUb/3NH7MCWlrvpLZzzTumRySYyMe4NDOspfQ5asXsQA5moBD1i Ea7IGIPNiVznUjG45B6+yUHf1rF+GwXYZarvJWERxsJUa0WxTB2xDm6XvJzGRHrtij0kg VnR/pAwlFBubaCR/mnUpn4JRmf/aPdIH3grQgf5pDHvNNg3Wf9s0fMena43HR4rnVW1i6 bcLYVDPQviC55X8wwAx3Iipy5NvlbXd54byA/R6H26M9UwCPB22o1UnqO+nuQbs/nzLrZ 6TNgM9JxHioolCC2OXy5M88mAQ7zp8/r3zFwNsBc7m9o2So7Xk7Uziqpq834SjqtoCw== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass header.d=rock-chips.com header.i=@rock-chips.com header.a=rsa-sha256 header.s=default header.b=RLhJ1KFg; arc=none smtp.remote-ip=156.224.82.218 Received: from mail-m82218.xmail.ntesmail.com (mail-m82218.xmail.ntesmail.com [156.224.82.218]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BE4CA606A33D; Tue, 27 Oct 2026 13:28:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org BE4CA606A33D Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key, unprotected) header.d=rock-chips.com header.i=@rock-chips.com header.a=rsa-sha256 header.s=default header.b=RLhJ1KFg Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [61.154.14.86]) by smtp.qiye.163.com (Hmail) with ESMTP id 528777a39; Tue, 27 Oct 2026 21:28:28 +0800 (GMT+08:00) From: Damon Ding To: Andrzej Hajda , Neil Armstrong , Robert Foss , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jingoo Han , Inki Dae , Seung-Woo Kim , Kyungmin Park , Krzysztof Kozlowski , Peter Griffin , Alim Akhtar , Heiko Stuebner , Sandy Huang Cc: Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Dmitry Baryshkov , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, Damon Ding Subject: [PATCH v5 11/18] drm/bridge: analogix_dp: Skip native HPD interrupt ops for GPIO HPD Date: Tue, 27 Oct 2026 21:28:03 +0800 Message-Id: <20261027132810.1746118-12-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20261027132810.1746118-1-damon.ding@rock-chips.com> References: <20261027132810.1746118-1-damon.ding@rock-chips.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-HM-Tid: 0aa17d8c495803a8kunm87c266213d5717 X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFITzdXWRgWCB1ZQUpXWS1ZQUlXWQ8JGhUIEh9ZQVlDTksaVk1OGR4dT0NPTElMGVYVFA kWGhdVEwETFhoSFyQUDg9ZV1kYEgtZQVlNSlVKTk9VSk9VQ01ZV1kWGg8SFR0UWUFZT0tIVUpLSE pKQk1VSktLVUpCWQY+ DKIM-Signature: a=rsa-sha256; b=RLhJ1KFgU5cGsyry7u4TwtC2Awjep89D8hRLj94wRVCoB+Fc2aK/z7FJ+DjgEXgbhdMdrNIXpn5qYoomofrH+z3vqj/ahFEXYpGDfZFF0HXfLXCHKUlapYiVhkZtcIB+A8VAAUaqUuP7K9omwsq1WZehG04xjknqo1SsxqiYxo4=; c=relaxed/relaxed; s=default; d=rock-chips.com; v=1; bh=x5DJ4Ep4ksayix6Tt/YRLjc+UGZM0RFbp8TBeZJFSwg=; h=date:mime-version:subject:message-id:from; GPIO HPD does not rely on DP controller internal native HPD interrupts. Skip native HPD register manipulations to avoid irrelevant operations. Move the hpd_gpiod guard to its caller so the helper operates purely on the given bitmask, and mute all native HPD interrupts for GPIO mode. Tested-by: Heiko Stuebner Signed-off-by: Damon Ding --- Changes in v2: - Adapt to the newly added IRQF_ONESHOT related commit and expand the commit msg. Changes in v3: - Reorganize the branch layout for hpd_gpiod check. - Simplify the commit msg. Changes in v4: - Add Tested-by tag. --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 2 +- drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index db0aefaf6754..b14a8aa12394 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -720,7 +720,7 @@ static irqreturn_t analogix_dp_irq_thread(int irq, void *arg) bool hpd_detected; irq_type = analogix_dp_get_irq_type(dp); - if (irq_type) + if (!dp->hpd_gpiod && irq_type) analogix_dp_clear_hotplug_interrupts(dp, irq_type); if (!dp->hpd_gpiod && analogix_dp_is_rockchip(dp->plat_data->dev_type)) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c index 025da25463a8..af5e5a8ec88d 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c @@ -193,6 +193,11 @@ void analogix_dp_config_interrupt(struct analogix_dp_device *dp) writel(0, dp->reg_base + ANALOGIX_DP_COMMON_INT_MASK_2); writel(0, dp->reg_base + ANALOGIX_DP_COMMON_INT_MASK_3); + if (dp->hpd_gpiod) { + analogix_dp_mute_hpd_interrupt(dp, HPD_IRQ_ALL); + return; + } + /* * Either HOTPLUG_CHG interrupt or PLUG + HPD_LOST interrupt * pair can be used to implement hotplug detection. @@ -415,7 +420,7 @@ void analogix_dp_clear_hotplug_interrupts(struct analogix_dp_device *dp, u32 irq { u32 reg; - if (dp->hpd_gpiod || !irq_type) + if (!irq_type) return; reg = analogix_dp_irq_type_to_common_int_sta4(irq_type); -- 2.34.1