From nobody Thu Feb 12 14:10:52 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C27E23FBA4 for ; Tue, 11 Jun 2024 16:02:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121764; cv=none; b=hhk0BCHdTGeSzRgbgB6Vsxkl+KQd2eUOjr9ra8a5zKaMoJZyFxvDOM4ruGxw6Z2qI6UegZwziVzGQsTvp2ML1l2jAJpOm1NEo6yuyt06RGaEVIrxayNuv3E4fLY67d+HHG8VbtkTzQAPDP8rqVwH4PzuD5fDBxu07ZHCWlfwGhk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121764; c=relaxed/simple; bh=mLkItQy6ITMzYQXoDl1EQD0hawEd4UBN77gKWr1dYhM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tsAo71Z2bWIbpY/xfuvgaf13qcneIt5NdpGFJ42iwqqCBoHXnj49fgwYHedDxzdPcj71cwwW0srmfIIquBTExfkjs2+dwVk6EQ4hJe6dmPOT0Nq6pl+6KBlfbQTWs5luZ6iwiFVGeYfgmrKrxMbYszc6YyXFXNVnicDcDdxVDYI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=vMcuuFt/; arc=none smtp.client-ip=149.28.215.223 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="vMcuuFt/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1718121749; bh=0XDwfJc/IwpzEz4wRvrO6aRIQFt9tGAc7Bg1rLoc9K0=; b=vMcuuFt/b/z+kEgfu2zmt1+8fpY0WtPIfOYAyRfr1ZQFS/XRP/313qGHt1+D5RuiEuC7cm095 HEr/kTQHVeRHhOJKE8xnaLWE/6w476BYT7CibECAJSRjIEVjRvTv4yY59LdZlpEbAfrr/y8lgbo K4uKFPpVySgBrqg6YCrPQZsfLtB8UddLQUHj1RIyXa6FWcLynsULJgqfd/TrNmUvkbtheCst98K JwvPvBTfnCa1YwsUxwDUgplaXueLumTbKo5rVwI6i9wLgHI21A4hpVEs3bHGIflmfySy0nDPOPG LMOq0qXPYf5tsRutdcSS7ohJZHQDib/zvrktMfs3BQBw== From: Jonas Karlman To: Andrzej Hajda , Neil Armstrong , Robert Foss , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/8] drm: bridge: dw_hdmi: Call poweron/poweroff from atomic enable/disable Date: Tue, 11 Jun 2024 15:50:53 +0000 Message-ID: <20240611155108.1436502-2-jonas@kwiboo.se> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240611155108.1436502-1-jonas@kwiboo.se> References: <20240611155108.1436502-1-jonas@kwiboo.se> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Report-Abuse-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Complaints-To: abuse@forwardemail.net X-ForwardEmail-Version: 0.4.40 X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 X-ForwardEmail-ID: 66687277b913b04293b6dc30 Content-Type: text/plain; charset="utf-8" Change to only call poweron/poweroff from atomic_enable/atomic_disable ops instead of trying to keep a bridge_is_on state and poweron/off in the hotplug irq handler. A benefit of this is that drm mode_config mutex is always held at poweron/off, something that may reduce the need for our own mutex. Signed-off-by: Jonas Karlman Tested-by: Christian Hewitt --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 33 ++--------------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 9f2bc932c371..34bc6f4754b8 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -172,7 +172,6 @@ struct dw_hdmi { enum drm_connector_force force; /* mutex-protected force state */ struct drm_connector *curr_conn;/* current connector (only valid when !di= sabled) */ bool disabled; /* DRM has disabled our bridge */ - bool bridge_is_on; /* indicates the bridge is on */ bool rxsense; /* rxsense state */ u8 phy_mask; /* desired phy int mask settings */ u8 mc_clkdis; /* clock disable register */ @@ -2383,8 +2382,6 @@ static void initialize_hdmi_ih_mutes(struct dw_hdmi *= hdmi) =20 static void dw_hdmi_poweron(struct dw_hdmi *hdmi) { - hdmi->bridge_is_on =3D true; - /* * The curr_conn field is guaranteed to be valid here, as this function * is only be called when !hdmi->disabled. @@ -2398,30 +2395,6 @@ static void dw_hdmi_poweroff(struct dw_hdmi *hdmi) hdmi->phy.ops->disable(hdmi, hdmi->phy.data); hdmi->phy.enabled =3D false; } - - hdmi->bridge_is_on =3D false; -} - -static void dw_hdmi_update_power(struct dw_hdmi *hdmi) -{ - int force =3D hdmi->force; - - if (hdmi->disabled) { - force =3D DRM_FORCE_OFF; - } else if (force =3D=3D DRM_FORCE_UNSPECIFIED) { - if (hdmi->rxsense) - force =3D DRM_FORCE_ON; - else - force =3D DRM_FORCE_OFF; - } - - if (force =3D=3D DRM_FORCE_OFF) { - if (hdmi->bridge_is_on) - dw_hdmi_poweroff(hdmi); - } else { - if (!hdmi->bridge_is_on) - dw_hdmi_poweron(hdmi); - } } =20 /* @@ -2546,7 +2519,6 @@ static void dw_hdmi_connector_force(struct drm_connec= tor *connector) =20 mutex_lock(&hdmi->mutex); hdmi->force =3D connector->force; - dw_hdmi_update_power(hdmi); dw_hdmi_update_phy_mask(hdmi); mutex_unlock(&hdmi->mutex); } @@ -2955,7 +2927,7 @@ static void dw_hdmi_bridge_atomic_disable(struct drm_= bridge *bridge, mutex_lock(&hdmi->mutex); hdmi->disabled =3D true; hdmi->curr_conn =3D NULL; - dw_hdmi_update_power(hdmi); + dw_hdmi_poweroff(hdmi); dw_hdmi_update_phy_mask(hdmi); handle_plugged_change(hdmi, false); mutex_unlock(&hdmi->mutex); @@ -2974,7 +2946,7 @@ static void dw_hdmi_bridge_atomic_enable(struct drm_b= ridge *bridge, mutex_lock(&hdmi->mutex); hdmi->disabled =3D false; hdmi->curr_conn =3D connector; - dw_hdmi_update_power(hdmi); + dw_hdmi_poweron(hdmi); dw_hdmi_update_phy_mask(hdmi); handle_plugged_change(hdmi, true); mutex_unlock(&hdmi->mutex); @@ -3073,7 +3045,6 @@ void dw_hdmi_setup_rx_sense(struct dw_hdmi *hdmi, boo= l hpd, bool rx_sense) if (hpd) hdmi->rxsense =3D true; =20 - dw_hdmi_update_power(hdmi); dw_hdmi_update_phy_mask(hdmi); } mutex_unlock(&hdmi->mutex); --=20 2.45.2 From nobody Thu Feb 12 14:10:52 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C6908446AE for ; Tue, 11 Jun 2024 16:02:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121758; cv=none; b=hRzqqN6TQissBjSzcUsDlge/k5Rri76QG0ysNvF0rEJHvO/VWBjkKDvfElzuApTIIfeSIO96EQvpOm8HXwwTKOaxHvOWkkBQhF/0U5gV1e62uSJ/xnWvcHQeHKIhCsKsEKdk7vXpWNF1lVE5gCUDrOAJ9trAyQUC4lLOeZcM9Fk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121758; c=relaxed/simple; bh=lC5OVFU9Qi7ZW5AqBnT0dzLkcAnr3s4trXkUyYPSO6E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=f2q2Zug8FxPRdzxx7PQc7gnVXYA3w4p+dNC4mHIcWGY6Yal3f90jVKNyUsRPe0TIshXpbd3K54Hh3uwgxlyVO9c9Bx0NfamWU0zzmCHULdbkRFRtY3L5ZApTjSMdkCC0DyHbck0A6grRz6t5ZZioadRfOBTDzSFjzareE6iZ6ag= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=xxHZlJeP; arc=none smtp.client-ip=149.28.215.223 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="xxHZlJeP" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1718121749; bh=gBdN7nfT2KsJNoQBTFhnZ2+II985vPoMN7WbKf8ej/Y=; b=xxHZlJePZplB5OxOX0uLso2Q1b1vlgAnzccnyGpL9tm8QWAyGwgPgnilqV6d7v9WPmp+IpnxB eP5a9L+XVykjqwXmWRYt59PN1Ie4iU2BklHsX2ZMuUoEmBNnb/6f/D+EKSbsg+XPbq+sy2AxBiT Y/begZNJO7eQwGVRjigGq8ExH+fglEfhecumCuFcfxYJoGyMDlH2j71fe56b+MvrFdhVXaF5YmD UWiu85pzfVRzu41gaRePo64juwaZlbjglnNaa2NzJgA8yzgKgiHcFwoFHAv1NUmPW/fChjQE29G h7o32HI9SglHs2H94FkxF7r9WgbvvHLga5PdnK9urKXw== From: Jonas Karlman To: Andrzej Hajda , Neil Armstrong , Robert Foss , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/8] drm: bridge: dw_hdmi: Use passed mode instead of stored previous_mode Date: Tue, 11 Jun 2024 15:50:54 +0000 Message-ID: <20240611155108.1436502-3-jonas@kwiboo.se> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240611155108.1436502-1-jonas@kwiboo.se> References: <20240611155108.1436502-1-jonas@kwiboo.se> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Report-Abuse-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Complaints-To: abuse@forwardemail.net X-ForwardEmail-Version: 0.4.40 X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 X-ForwardEmail-ID: 6668727cb913b04293b6dc42 Content-Type: text/plain; charset="utf-8" Use the passed mode instead of mixing use of passed mode and the stored previous_mode. The passed mode is currenly always the previous_mode. Also fix a small type and add a variable to help shorten a code line. Signed-off-by: Jonas Karlman Tested-by: Christian Hewitt --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 34bc6f4754b8..ce4d4d06f758 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2241,6 +2241,7 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, const struct drm_connector *connector, const struct drm_display_mode *mode) { + const struct drm_display_info *display =3D &connector->display_info; int ret; =20 hdmi_disable_overflow_interrupts(hdmi); @@ -2286,12 +2287,10 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, hdmi->hdmi_data.video_mode.mdataenablepolarity =3D true; =20 /* HDMI Initialization Step B.1 */ - hdmi_av_composer(hdmi, &connector->display_info, mode); + hdmi_av_composer(hdmi, display, mode); =20 - /* HDMI Initializateion Step B.2 */ - ret =3D hdmi->phy.ops->init(hdmi, hdmi->phy.data, - &connector->display_info, - &hdmi->previous_mode); + /* HDMI Initialization Step B.2 */ + ret =3D hdmi->phy.ops->init(hdmi, hdmi->phy.data, display, mode); if (ret) return ret; hdmi->phy.enabled =3D true; --=20 2.45.2 From nobody Thu Feb 12 14:10:52 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C27B13B192 for ; Tue, 11 Jun 2024 16:02:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121764; cv=none; b=XpEwvTTcG70BZdQfUebS2LjoFdUYtBlEA5jWjg13JPlmTOz/uQ4msN94ntpMjGDZBCTX8AkEdvovwPkidokaZEUutymog+KZ/whUgX6yxscx91EcnAu5Yq/Lto8M/e8KHJmIA1JREyv+rGQbV2i62kb9FqmIlJgGpWE5cOpAgkM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121764; c=relaxed/simple; bh=Owz/NxfbT/z+E4gk38walpj5V8cX1E68vfjbKeWyo1A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZLUlVQAk+5NOl+P2R9GF26zj5MhgIJsR0R9UO5svhYfYD0/xrrZESqB1eg3H+BI3AAnECUXN1GVkq+11FM/SXIlm3mGIHPD7+yj3I5iSHuCtcrT5uzYir072guDeMR398CN3feEHpbFG1ddPG1F84jVJVagV1zdscPqMLIBds2o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=XFi45RR6; arc=none smtp.client-ip=149.28.215.223 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="XFi45RR6" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1718121749; bh=LpvhwWAJQLNJrsCq2KZZwYoHxw+es+q1tbpvJoFJzrs=; b=XFi45RR6MplbHfJZ29XlthdVri2CewLfjCRXXQTnZqF8Ox94CFe3vcbR17zw8LXUpOy6rwmzw 6+5iiNBd1iWHPbTyvvDl7JDxWm4T0+NlbzjidnHEvKQarWpxM5rarHJYaXWz7V3sOoNZrcB9BiX BdcKg/IzsIrS1MQII9VpeUNPrAOtB+cNUhbWPsx6ZAVdVPYDYq6a5tJrMGO/XqIkkzF7hzrryrp yykEqmcgaS3PqxNZemEi6cYaQq4Pe7a7s8N7n3SmRMf/hI5uNwn4QAY6ggC7Cmp6M5NhDAT42sn PATMdb//pLevqmeXTZC/eB3c4dl655Ejom0hHu09hVGg== From: Jonas Karlman To: Andrzej Hajda , Neil Armstrong , Robert Foss , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/8] drm: bridge: dw_hdmi: Fold poweron and setup functions Date: Tue, 11 Jun 2024 15:50:55 +0000 Message-ID: <20240611155108.1436502-4-jonas@kwiboo.se> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240611155108.1436502-1-jonas@kwiboo.se> References: <20240611155108.1436502-1-jonas@kwiboo.se> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Report-Abuse-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Complaints-To: abuse@forwardemail.net X-ForwardEmail-Version: 0.4.40 X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 X-ForwardEmail-ID: 66687281b913b04293b6dc54 Content-Type: text/plain; charset="utf-8" Fold the poweron and setup functions into one function and use the adjusted_mode directly from the new crtc_state to remove the need of storing previous_mode. Signed-off-by: Jonas Karlman Tested-by: Christian Hewitt --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index ce4d4d06f758..76048fc9fd14 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2237,9 +2237,9 @@ static void hdmi_disable_overflow_interrupts(struct d= w_hdmi *hdmi) HDMI_IH_MUTE_FC_STAT2); } =20 -static int dw_hdmi_setup(struct dw_hdmi *hdmi, - const struct drm_connector *connector, - const struct drm_display_mode *mode) +static int dw_hdmi_poweron(struct dw_hdmi *hdmi, + const struct drm_connector *connector, + const struct drm_display_mode *mode) { const struct drm_display_info *display =3D &connector->display_info; int ret; @@ -2379,15 +2379,6 @@ static void initialize_hdmi_ih_mutes(struct dw_hdmi = *hdmi) hdmi_writeb(hdmi, ih_mute, HDMI_IH_MUTE); } =20 -static void dw_hdmi_poweron(struct dw_hdmi *hdmi) -{ - /* - * The curr_conn field is guaranteed to be valid here, as this function - * is only be called when !hdmi->disabled. - */ - dw_hdmi_setup(hdmi, hdmi->curr_conn, &hdmi->previous_mode); -} - static void dw_hdmi_poweroff(struct dw_hdmi *hdmi) { if (hdmi->phy.enabled) { @@ -2937,15 +2928,19 @@ static void dw_hdmi_bridge_atomic_enable(struct drm= _bridge *bridge, { struct dw_hdmi *hdmi =3D bridge->driver_private; struct drm_atomic_state *state =3D old_state->base.state; + const struct drm_display_mode *mode; struct drm_connector *connector; + struct drm_crtc *crtc; =20 connector =3D drm_atomic_get_new_connector_for_encoder(state, bridge->encoder); + crtc =3D drm_atomic_get_new_connector_state(state, connector)->crtc; + mode =3D &drm_atomic_get_new_crtc_state(state, crtc)->adjusted_mode; =20 mutex_lock(&hdmi->mutex); hdmi->disabled =3D false; hdmi->curr_conn =3D connector; - dw_hdmi_poweron(hdmi); + dw_hdmi_poweron(hdmi, connector, mode); dw_hdmi_update_phy_mask(hdmi); handle_plugged_change(hdmi, true); mutex_unlock(&hdmi->mutex); --=20 2.45.2 From nobody Thu Feb 12 14:10:52 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 97489381D1 for ; Tue, 11 Jun 2024 15:51:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121106; cv=none; b=menW//hJLml+170XhfhK42C5s83j4hoC1tEOU3fRpdSQPowNTWQH+G64zHi+F4TxQIrcfiCSxfCYfdeIsi3DW9mf5rC1lt3DueeiI7/yL4rCwbVbVoA38oYvI+VwSkUN7fXD63dsBqvmvu2U71Akv5mOK2J5Fau1cXlt649tLEM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121106; c=relaxed/simple; bh=Dd5D3QgnITJ2MQp+d5Qg8fdGjvry8Cbr+aPoA/xGNh4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UBeuXaM7XPIVELi6IX4vfC96H9qpYq9Yn0wjW+2ZKr+bFXFYPEf8ncBLO+xVthr0qiBVSQtwiqZHl1K2nufCKm45KRzbdquKrvZU8gMfm1Y8/N4FgcE6MsbUnKc8k3KO/ZP5UPWD0caDkgf4sqkPkEmBGUKAkaQqy9y2GDc1Vck= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=JhV59uOa; arc=none smtp.client-ip=149.28.215.223 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="JhV59uOa" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1718121097; bh=jp6QnjORNUnb+kYtVjyvzeeY+7er+nxl30wpAzBC1Yo=; b=JhV59uOayCh60chJ0OY3As0zjnKEjbQd0z9pw2hXsbwhtPvcgv/9wqSjlPH35XJ8NoWOsm2am 45tSNN7eiXUh0D3mDrZ/82yf1076fMY8lP4KOEagU7KG6VBYOuADcY7v7LtUdxt5LJir5tTBy4I 6skv+R3PV29GxTsMT6chgZ5QYJ548P+jfKYDZ17fO/hifocCWNSC99agMR0FbDaAmGliKmGW/hc Hu+IdJUochqG/UL5jluGOYS9QsuuQ7bwmtqUvEgrAiKcBeKIZVj3C3t1apl7/2fJquwN3HI140Z sFl9zk3wGgVVWjfuyQ0WATHwc6tw2X22dfRwHcOt7s7g== From: Jonas Karlman To: Andrzej Hajda , Neil Armstrong , Robert Foss , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/8] drm: bridge: dw_hdmi: Remove previous_mode and mode_set Date: Tue, 11 Jun 2024 15:50:56 +0000 Message-ID: <20240611155108.1436502-5-jonas@kwiboo.se> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240611155108.1436502-1-jonas@kwiboo.se> References: <20240611155108.1436502-1-jonas@kwiboo.se> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Report-Abuse-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Complaints-To: abuse@forwardemail.net X-ForwardEmail-Version: 0.4.40 X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 X-ForwardEmail-ID: 66687285b913b04293b6dc66 Content-Type: text/plain; charset="utf-8" With the use of adjusted_mode directly from the crtc_state there is no longer a need to store a copy in previous_mode, remove it and the now unneeded mode_set ops. Signed-off-by: Jonas Karlman Tested-by: Christian Hewitt --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 76048fc9fd14..9ecf038f551e 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -157,8 +157,6 @@ struct dw_hdmi { bool enabled; } phy; =20 - struct drm_display_mode previous_mode; - struct i2c_adapter *ddc; void __iomem *regs; bool sink_is_hdmi; @@ -168,7 +166,7 @@ struct dw_hdmi { struct pinctrl_state *default_state; struct pinctrl_state *unwedge_state; =20 - struct mutex mutex; /* for state below and previous_mode */ + struct mutex mutex; /* for state below */ enum drm_connector_force force; /* mutex-protected force state */ struct drm_connector *curr_conn;/* current connector (only valid when !di= sabled) */ bool disabled; /* DRM has disabled our bridge */ @@ -2895,20 +2893,6 @@ dw_hdmi_bridge_mode_valid(struct drm_bridge *bridge, return mode_status; } =20 -static void dw_hdmi_bridge_mode_set(struct drm_bridge *bridge, - const struct drm_display_mode *orig_mode, - const struct drm_display_mode *mode) -{ - struct dw_hdmi *hdmi =3D bridge->driver_private; - - mutex_lock(&hdmi->mutex); - - /* Store the display mode for plugin/DKMS poweron events */ - drm_mode_copy(&hdmi->previous_mode, mode); - - mutex_unlock(&hdmi->mutex); -} - static void dw_hdmi_bridge_atomic_disable(struct drm_bridge *bridge, struct drm_bridge_state *old_state) { @@ -2972,7 +2956,6 @@ static const struct drm_bridge_funcs dw_hdmi_bridge_f= uncs =3D { .atomic_get_input_bus_fmts =3D dw_hdmi_bridge_atomic_get_input_bus_fmts, .atomic_enable =3D dw_hdmi_bridge_atomic_enable, .atomic_disable =3D dw_hdmi_bridge_atomic_disable, - .mode_set =3D dw_hdmi_bridge_mode_set, .mode_valid =3D dw_hdmi_bridge_mode_valid, .detect =3D dw_hdmi_bridge_detect, .edid_read =3D dw_hdmi_bridge_edid_read, --=20 2.45.2 From nobody Thu Feb 12 14:10:52 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3917138FA0 for ; Tue, 11 Jun 2024 15:51:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121109; cv=none; b=NcSHvArZH4iTOwtGjJPHdD5j/5dDi0qg+lh/Osk/TR3Ly4ABcM1o/ZD1HrjOmTlut60U79l7zM85bKd8TaePY5dZQs59qZTq6Ohm1w/ghpY947MH226YYoao8wcY+Oona2EnRfZbY6u+n+MLJzHi+bRheDDgZn08J0hGRVs45pc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121109; c=relaxed/simple; bh=jZZk1d29gTigZH+Kv6p1bJAOLKF6qCjFWdy4VvZ7L/M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=W03R6caql/d0Sx48EFO8FxxPbWtSBMHKi04eTtytXSoTM4nw3opNsQgiFsteEPwvaiP4bsp4ZIicaHj2ZUhEL4AWWF+hnZ9dUrowLFF+aUVybGfYhMYhJz7UTwoQW3VECUdNygsD6VnxlyqFeGxi0ZShmCssGq4FAR0cUVcDyro= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=kcXTApXE; arc=none smtp.client-ip=149.28.215.223 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="kcXTApXE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1718121102; bh=REtok9etTT8YZD85IuWhOTviPIDsMbrkB4bJID+iBnA=; b=kcXTApXEFKaVqyQsLlfLwW/a5cltLGEKD5i1GImhfy2kyAsFBPUbuC6GJj5sRGLKRhGveev13 287x76GPsufzLP812jdif2NrlX8uEovQ1c3WVGtPhwjrLC8ZCz+stdsGdH4YS7MCAhmeooNfODx ia8MncqSvNzmPcyichyfOk/KjDVamfZZowZbtGarSqHzRFcLO8Pjm3bo2EalMRtQiUoIrOQQv0+ Nxhu0TpY4PSwbNBRWYCCesC5TOnevX1SkbCmYYMES2GZZgRfLjF8KtQ4o4CH1ngGlsc8hME7Hnb E8Bbp57kMDpkaaaBqqH60WnY5+PUE28w5hHMPQtKzLqA== From: Jonas Karlman To: Andrzej Hajda , Neil Armstrong , Robert Foss , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 5/8] drm: bridge: dw_hdmi: Invalidate CEC phys addr from connector detect Date: Tue, 11 Jun 2024 15:50:57 +0000 Message-ID: <20240611155108.1436502-6-jonas@kwiboo.se> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240611155108.1436502-1-jonas@kwiboo.se> References: <20240611155108.1436502-1-jonas@kwiboo.se> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Report-Abuse-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Complaints-To: abuse@forwardemail.net X-ForwardEmail-Version: 0.4.40 X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 X-ForwardEmail-ID: 6668728ab913b04293b6dc78 Content-Type: text/plain; charset="utf-8" Wait until the connector detect ops is called to invalidate CEC phys addr instead of doing it directly from the irq handler. Signed-off-by: Jonas Karlman Reviewed-by: Neil Armstrong Tested-by: Christian Hewitt --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 9ecf038f551e..0814ca181f04 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2455,7 +2455,17 @@ dw_hdmi_connector_detect(struct drm_connector *conne= ctor, bool force) { struct dw_hdmi *hdmi =3D container_of(connector, struct dw_hdmi, connector); - return dw_hdmi_detect(hdmi); + enum drm_connector_status status; + + status =3D dw_hdmi_detect(hdmi); + + if (status =3D=3D connector_status_disconnected) { + mutex_lock(&hdmi->cec_notifier_mutex); + cec_notifier_phys_addr_invalidate(hdmi->cec_notifier); + mutex_unlock(&hdmi->cec_notifier_mutex); + } + + return status; } =20 static int dw_hdmi_connector_get_modes(struct drm_connector *connector) @@ -3066,12 +3076,6 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id) phy_stat & HDMI_PHY_HPD, phy_stat & HDMI_PHY_RX_SENSE); =20 - if ((phy_stat & (HDMI_PHY_RX_SENSE | HDMI_PHY_HPD)) =3D=3D 0) { - mutex_lock(&hdmi->cec_notifier_mutex); - cec_notifier_phys_addr_invalidate(hdmi->cec_notifier); - mutex_unlock(&hdmi->cec_notifier_mutex); - } - if (phy_stat & HDMI_PHY_HPD) status =3D connector_status_connected; =20 --=20 2.45.2 From nobody Thu Feb 12 14:10:52 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [167.172.40.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7505B38F82 for ; Tue, 11 Jun 2024 15:52:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=167.172.40.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121122; cv=none; b=EGEnsx5twh37II5NaS6yHDvI+Gc3UdxDNJgPNcDA2jEPbJwV+mjKA+GhFCeB9ROWCQ87VWEmqwAS8yriAOMshp2+aefaRRX+DEBFLEpKqQBehMzGGnS6E7MEOVpSEMI8Br01ejmdI1a1pchKm4yeQUZ/0tORe9w0ksFHolRLTGI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121122; c=relaxed/simple; bh=jjoPpoRjL3DOZo4yXBvOoton5pxjTMU09QetBxLUSxY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kBKHchrws2jh6euF+7ScZCbLFGYMsjMRQs3abeB/1OvR9yqV9g/c4Au9w3B8sxKcY7a5PHw94JsbLXsuHg94pz7GnG7qY/E/jCaYHkRdWDHax4WRq1pXQggnk1tkVaRtt1OpLA9PhBmkjc8d0Jz4fmsGegRq5Z92D5+utUY51cM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=v05AxTpp; arc=none smtp.client-ip=167.172.40.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="v05AxTpp" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1718121105; bh=OS3NU+RvpotAQqpVjqqkbRKiRgEhuSmytUWvvgOanmg=; b=v05AxTppFIZAnx6pivBSAocoIXCSk72tNXct89QH0vLTjj2N9Fedkxsim6hpGp8t/La0s9q9w rPBOve6d6peAr5cnMtsANUd4VvCRUjgHfYSXwdC8zrackxQDlpj45/pMcIvn9jIQYkAnxRzeK3h dm5FHbTTMrS7sIEwtzESyymn91LsZUW9Kvi4gs+R1peWmsvVUnmrnrTHPz1lwb/iDlcNTYUPhzd OfA7Q3/zB6oBogbX4K7t1RUWp+Ha0JisskoPqNzdYnp9yWSAQnrR9xFwDiemvfipKTWcIGCcfU5 apGdY+6rX8Lk5+F39j+82pbynb2zHwR2PhRFKEdYvE1w== From: Jonas Karlman To: Andrzej Hajda , Neil Armstrong , Robert Foss , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/8] drm: bridge: dw_hdmi: Remove cec_notifier_mutex Date: Tue, 11 Jun 2024 15:50:58 +0000 Message-ID: <20240611155108.1436502-7-jonas@kwiboo.se> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240611155108.1436502-1-jonas@kwiboo.se> References: <20240611155108.1436502-1-jonas@kwiboo.se> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Report-Abuse-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Complaints-To: abuse@forwardemail.net X-ForwardEmail-Version: 0.4.40 X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 167.172.40.54 X-ForwardEmail-ID: 6668728fb913b04293b6dc8a Content-Type: text/plain; charset="utf-8" With CEC phys addr invalidation moved away from the irq handler there is no longer a need for cec_notifier_mutex, remove it. Signed-off-by: Jonas Karlman Reviewed-by: Neil Armstrong Tested-by: Christian Hewitt --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 0814ca181f04..256e00a97a9a 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -189,7 +189,6 @@ struct dw_hdmi { void (*enable_audio)(struct dw_hdmi *hdmi); void (*disable_audio)(struct dw_hdmi *hdmi); =20 - struct mutex cec_notifier_mutex; struct cec_notifier *cec_notifier; =20 hdmi_codec_plugged_cb plugged_cb; @@ -2459,11 +2458,8 @@ dw_hdmi_connector_detect(struct drm_connector *conne= ctor, bool force) =20 status =3D dw_hdmi_detect(hdmi); =20 - if (status =3D=3D connector_status_disconnected) { - mutex_lock(&hdmi->cec_notifier_mutex); + if (status =3D=3D connector_status_disconnected) cec_notifier_phys_addr_invalidate(hdmi->cec_notifier); - mutex_unlock(&hdmi->cec_notifier_mutex); - } =20 return status; } @@ -2577,9 +2573,7 @@ static int dw_hdmi_connector_create(struct dw_hdmi *h= dmi) if (!notifier) return -ENOMEM; =20 - mutex_lock(&hdmi->cec_notifier_mutex); hdmi->cec_notifier =3D notifier; - mutex_unlock(&hdmi->cec_notifier_mutex); =20 return 0; } @@ -2877,10 +2871,8 @@ static void dw_hdmi_bridge_detach(struct drm_bridge = *bridge) { struct dw_hdmi *hdmi =3D bridge->driver_private; =20 - mutex_lock(&hdmi->cec_notifier_mutex); cec_notifier_conn_unregister(hdmi->cec_notifier); hdmi->cec_notifier =3D NULL; - mutex_unlock(&hdmi->cec_notifier_mutex); } =20 static enum drm_mode_status @@ -3303,7 +3295,6 @@ struct dw_hdmi *dw_hdmi_probe(struct platform_device = *pdev, =20 mutex_init(&hdmi->mutex); mutex_init(&hdmi->audio_mutex); - mutex_init(&hdmi->cec_notifier_mutex); spin_lock_init(&hdmi->audio_lock); =20 ret =3D dw_hdmi_parse_dt(hdmi); --=20 2.45.2 From nobody Thu Feb 12 14:10:52 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [167.172.40.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D9D2F3A1CC for ; Tue, 11 Jun 2024 15:52:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=167.172.40.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121128; cv=none; b=baUTDbVsxxfdAFcq/t9HLHwebzbuc6oCDySrQ13xgm5HhCxkme//rc134m7wz2Gr/CQWpoMEdlNlMjZjvj7VSTPEIitB8TNo/rE8UUQgM036zhMLue1D5fHz1iFmi8PJJSm0Nlqawk5STLUf2DY0vsEe4Wyp9rJVvpiOJ0gp9rM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121128; c=relaxed/simple; bh=yBC9kQONjNrJ10/RZH427oO18lkJ1ICXuw0hBd94P1k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=edasMcvQpDoFpiHxT288v+W3I5D25BDOxW71hAd5fmnC9cf+Jx4Dz3TA6++EWhGwa4/Xx7TfnZP5i/U1MkawZWrOI3wmK0V0p5BgzB7AhmKwGXIu1wRnKjkt3koPZKm6YXGC+qA/6fM7UlOTrhOHECYWomMSLPgRvQBMbxgHASc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=iKfQvn1O; arc=none smtp.client-ip=167.172.40.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="iKfQvn1O" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1718121111; bh=nlK/Kivspo5uHUE2bxjdk8Lq1XFHOztjsLHLbVDbKeE=; b=iKfQvn1O8EKG3eIiPvHO1sPFkbmRf/Ic9+RLLhZhZcWpeSuAzacBvv767nXy6BAh58bj6Czo5 D3uuDOXwjUJrvM72YInKc9JjaOIyhPLdr+hxKT2tMD96cUmvEJJCIX2a8wKi2ETa6fVqFUXwryD 0VyJBIVQEmjGted3Gf6xWvu7c0ZN/S/W13vl5IbEuuoQjGWTWASDd9p7aoDoyAqgwWvlvIuNzNn BWMGwa5iVQ9ypkOcDuAKjBfo55FeIVDw/0CieNbcpHOCr4xUShPIZ3SxJXDC3f6d/q+rkhgWaqh NvxhZGNU1ICPNL+1nhrUL1LZ0N5cmcINC1VT/WvGQnjg== From: Jonas Karlman To: Andrzej Hajda , Neil Armstrong , Robert Foss , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 7/8] drm: bridge: dw_hdmi: Update EDID during hotplug processing Date: Tue, 11 Jun 2024 15:50:59 +0000 Message-ID: <20240611155108.1436502-8-jonas@kwiboo.se> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240611155108.1436502-1-jonas@kwiboo.se> References: <20240611155108.1436502-1-jonas@kwiboo.se> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Report-Abuse-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Complaints-To: abuse@forwardemail.net X-ForwardEmail-Version: 0.4.40 X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 167.172.40.54 X-ForwardEmail-ID: 66687294b913b04293b6dca0 Content-Type: text/plain; charset="utf-8" Update successfully read EDID during hotplug processing to ensure the connector diplay_info is always up-to-date. Signed-off-by: Jonas Karlman Tested-by: Christian Hewitt --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 256e00a97a9a..a9c39584d31b 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2458,6 +2458,18 @@ dw_hdmi_connector_detect(struct drm_connector *conne= ctor, bool force) =20 status =3D dw_hdmi_detect(hdmi); =20 + /* Update EDID during hotplug processing (force=3Dfalse) */ + if (status =3D=3D connector_status_connected && !force) { + const struct drm_edid *drm_edid; + + drm_edid =3D dw_hdmi_edid_read(hdmi, connector); + if (drm_edid) + drm_edid_connector_update(connector, drm_edid); + cec_notifier_set_phys_addr(hdmi->cec_notifier, + connector->display_info.source_physical_address); + drm_edid_free(drm_edid); + } + if (status =3D=3D connector_status_disconnected) cec_notifier_phys_addr_invalidate(hdmi->cec_notifier); =20 --=20 2.45.2 From nobody Thu Feb 12 14:10:52 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [167.172.40.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E08B03FB83 for ; Tue, 11 Jun 2024 15:52:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=167.172.40.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121135; cv=none; b=dTsfxtHLq0TLAHEomRgSh/Rsn9s3J0V0MAjYqv31uqTJ9LC/nFYdAVtW9JDXSzkwpr5uUIBwb4aN2H9T4iQU+ojGWnCyMt7C6+Apx4NzJMIFCYUzy5PyttOdzqFcWummulWMOrHmnXezhI6IKEhdu4i2z+ZZTYz2grRBRZTIFsU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718121135; c=relaxed/simple; bh=mTH7O8SoMceV83GJW8Kvwdx4Xu7+K6crQrZP50zx1Wc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XQHb5P4z2ihIJ6xcxtjXRoqbsfdqd/6qxW5EziBfCSzxNIUMd4nNpGYfB1bdPUMhKVf7tbVIHYRgEyLzc1u4sFD/BpAYcHiTZqRkHsId2r5xfq/9fGSHS05RqIPPxuz4Rzum62t3WvHIH/LnhNVSdC+88QW5On18z4raXChJyPM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=KMcCShrj; arc=none smtp.client-ip=167.172.40.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="KMcCShrj" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1718121117; bh=EkSsGxXsV4hgJZkNTSQ1UhXjCwhQtYShQRypQ33Ng4Q=; b=KMcCShrjgrH3qHS9P/uAK6eRYbaKJdS18XeGPrOz3XFNtD7wWOfNnhDjnD0XX4Z2OSbbiv/a9 jwZR9HYb38xeW6BPYjuHdHEqOgNNFh8/EZRt8DVarXhH0jfT7fdZKH+8tyu4SfKgURxdJoQDJu+ mo3ZBMOcsb9NJrjB9/bGcXGUTNg+gTp/XqR6reSZAzvPAp8X98jrHUfSBU4vZUit39evXwK1Dm8 fPIiGL0O0AaYXIwbXtSiaOy7z4Og9wCDSts5BI5Qp9ePwjow2vn+pBR2dQHp6wzgIldT4Z+uB7R imR7oMhVg19OW6Hbs2ps/KETi6zhSTw8d2Eyo1sInxng== From: Jonas Karlman To: Andrzej Hajda , Neil Armstrong , Robert Foss , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 8/8] drm: bridge: dw_hdmi: Use display_info is_hdmi and has_audio Date: Tue, 11 Jun 2024 15:51:00 +0000 Message-ID: <20240611155108.1436502-9-jonas@kwiboo.se> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240611155108.1436502-1-jonas@kwiboo.se> References: <20240611155108.1436502-1-jonas@kwiboo.se> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Report-Abuse-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Complaints-To: abuse@forwardemail.net X-ForwardEmail-Version: 0.4.40 X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 167.172.40.54 X-ForwardEmail-ID: 66687298b913b04293b6dcb2 Content-Type: text/plain; charset="utf-8" drm_edid_connector_update() is being called from bridge connector ops and from detect and get_modes ops for dw-hdmi connector. Change to use is_hdmi and has_audio from display_info directly instead of keeping our own state in sink_is_hdmi and sink_has_audio. Also remove the old and unused edid struct member and related define. Signed-off-by: Jonas Karlman Reviewed-by: Neil Armstrong Tested-by: Christian Hewitt --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 32 ++++------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index a9c39584d31b..e162c2786178 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -43,8 +43,6 @@ #define DDC_CI_ADDR 0x37 #define DDC_SEGMENT_ADDR 0x30 =20 -#define HDMI_EDID_LEN 512 - /* DW-HDMI Controller >=3D 0x200a are at least compliant with SCDC version= 1 */ #define SCDC_MIN_SOURCE_VERSION 0x1 =20 @@ -148,8 +146,6 @@ struct dw_hdmi { =20 int vic; =20 - u8 edid[HDMI_EDID_LEN]; - struct { const struct dw_hdmi_phy_ops *ops; const char *name; @@ -159,8 +155,6 @@ struct dw_hdmi { =20 struct i2c_adapter *ddc; void __iomem *regs; - bool sink_is_hdmi; - bool sink_has_audio; =20 struct pinctrl *pinctrl; struct pinctrl_state *default_state; @@ -2041,7 +2035,7 @@ static void hdmi_av_composer(struct dw_hdmi *hdmi, HDMI_FC_INVIDCONF_IN_I_P_INTERLACED : HDMI_FC_INVIDCONF_IN_I_P_PROGRESSIVE; =20 - inv_val |=3D hdmi->sink_is_hdmi ? + inv_val |=3D display->is_hdmi ? HDMI_FC_INVIDCONF_DVI_MODEZ_HDMI_MODE : HDMI_FC_INVIDCONF_DVI_MODEZ_DVI_MODE; =20 @@ -2275,7 +2269,7 @@ static int dw_hdmi_poweron(struct dw_hdmi *hdmi, if (hdmi->hdmi_data.enc_out_bus_format =3D=3D MEDIA_BUS_FMT_FIXED) hdmi->hdmi_data.enc_out_bus_format =3D MEDIA_BUS_FMT_RGB888_1X24; =20 - hdmi->hdmi_data.rgb_limited_range =3D hdmi->sink_is_hdmi && + hdmi->hdmi_data.rgb_limited_range =3D display->is_hdmi && drm_default_rgb_quant_range(mode) =3D=3D HDMI_QUANTIZATION_RANGE_LIMITED; =20 @@ -2295,7 +2289,7 @@ static int dw_hdmi_poweron(struct dw_hdmi *hdmi, /* HDMI Initialization Step B.3 */ dw_hdmi_enable_video_path(hdmi); =20 - if (hdmi->sink_has_audio) { + if (display->has_audio) { dev_dbg(hdmi->dev, "sink has audio support\n"); =20 /* HDMI Initialization Step E - Configure audio */ @@ -2304,7 +2298,7 @@ static int dw_hdmi_poweron(struct dw_hdmi *hdmi, } =20 /* not for DVI mode */ - if (hdmi->sink_is_hdmi) { + if (display->is_hdmi) { dev_dbg(hdmi->dev, "%s HDMI mode\n", __func__); =20 /* HDMI Initialization Step F - Configure AVI InfoFrame */ @@ -2418,29 +2412,13 @@ static const struct drm_edid *dw_hdmi_edid_read(str= uct dw_hdmi *hdmi, struct drm_connector *connector) { const struct drm_edid *drm_edid; - const struct edid *edid; =20 if (!hdmi->ddc) return NULL; =20 drm_edid =3D drm_edid_read_ddc(connector, hdmi->ddc); - if (!drm_edid) { + if (!drm_edid) dev_dbg(hdmi->dev, "failed to get edid\n"); - return NULL; - } - - /* - * FIXME: This should use connector->display_info.is_hdmi and - * connector->display_info.has_audio from a path that has read the EDID - * and called drm_edid_connector_update(). - */ - edid =3D drm_edid_raw(drm_edid); - - dev_dbg(hdmi->dev, "got edid: width[%d] x height[%d]\n", - edid->width_cm, edid->height_cm); - - hdmi->sink_is_hdmi =3D drm_detect_hdmi_monitor(edid); - hdmi->sink_has_audio =3D drm_detect_monitor_audio(edid); =20 return drm_edid; } --=20 2.45.2