From nobody Sun Feb 8 18:19:13 2026 Received: from fllvem-ot03.ext.ti.com (fllvem-ot03.ext.ti.com [198.47.19.245]) (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 C6D5B302CCA for ; Tue, 14 Oct 2025 09:46:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.47.19.245 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435199; cv=none; b=FLVBpFS9YrUHEIB4UF9Eqes223tlqXoCcwrPHtrVt1UySPu9vZakBo/9W5IVIn4NbISaZfLjy8di+vgQF/TiRVOFrwOSaLyx8KwIDOvTrXENTPaNHZIUxRiOOpzgLN9RPW/kjeRfz0LGbgbL5rS+uuoUYKNezuie5JyC6jGk7kQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435199; c=relaxed/simple; bh=oWDM8Y0QzM1M/9gOZ7msqyFqaNWOuZL64iKMoTU5ll8=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=IWyrNyFFP55bKuSu//nAGCPM8XmK1af8ErgqTGiDyWBcYd8jmAd7cNr6RYRsMIBd6OpLgFekdT+GdUBoUcT7//+213nxtp1Sg9y+zdf4icUBSBu8T6zf2T1E65R29tlfJzF+6kXDb2v+Rt5TKR9SqiT7wIeoRz/FW8hmahv1NYg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com; spf=pass smtp.mailfrom=ti.com; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b=l3RLF2i0; arc=none smtp.client-ip=198.47.19.245 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ti.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="l3RLF2i0" Received: from fllvem-sh04.itg.ti.com ([10.64.41.54]) by fllvem-ot03.ext.ti.com (8.15.2/8.15.2) with ESMTP id 59E9jhJd1039165; Tue, 14 Oct 2025 04:45:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1760435143; bh=T6S2MvM9uF1TV1afGaorNdjfES/u5wtrBI7oyO7jP4o=; h=From:To:Subject:Date:In-Reply-To:References; b=l3RLF2i0kWYJH1mOOboT+5MB4EWPjdg185kqalxxRSGB7P7PCWC5ltCvU1Mju+sW1 76SSQUDoFeQg3MaKcybqFvNcueo7JVCuaz8HyWMc2DYZtM3Jw6tNhnrhB54fxJie89 afFPiQN+6+pb90T9HEY0NhmpfA36bBxUB3y0M1mU= Received: from DLEE204.ent.ti.com (dlee204.ent.ti.com [157.170.170.84]) by fllvem-sh04.itg.ti.com (8.18.1/8.18.1) with ESMTPS id 59E9jgnC3713461 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 14 Oct 2025 04:45:42 -0500 Received: from DLEE203.ent.ti.com (157.170.170.78) by DLEE204.ent.ti.com (157.170.170.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 14 Oct 2025 04:45:42 -0500 Received: from lelvem-mr06.itg.ti.com (10.180.75.8) by DLEE203.ent.ti.com (157.170.170.78) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend Transport; Tue, 14 Oct 2025 04:45:42 -0500 Received: from hkshenoy.dhcp.ti.com (hkshenoy.dhcp.ti.com [172.24.235.208]) by lelvem-mr06.itg.ti.com (8.18.1/8.18.1) with ESMTP id 59E9jSjT3359281; Tue, 14 Oct 2025 04:45:35 -0500 From: Harikrishna Shenoy To: , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v8 1/6] drm/bridge: cadence: cdns-mhdp8546-core: Set the mhdp connector earlier in atomic_enable() Date: Tue, 14 Oct 2025 15:15:22 +0530 Message-ID: <20251014094527.3916421-2-h-shenoy@ti.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251014094527.3916421-1-h-shenoy@ti.com> References: <20251014094527.3916421-1-h-shenoy@ti.com> 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-C2ProcessedOrg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea Content-Type: text/plain; charset="utf-8" From: Jayesh Choudhary In case if we get errors in cdns_mhdp_link_up() or cdns_mhdp_reg_read() in atomic_enable, we will go to cdns_mhdp_modeset_retry_fn() and will hit NULL pointer while trying to access the mutex. We need the connector to be set before that. Unlike in legacy !(DBANC) cases, we do not have connector initialised in bridge_attach(), so add the mhdp->connector_ptr in device structure to handle both DBANC and !DBANC case and set it in atomic_enable() earlier to avoid possible NULL pointer dereference in recovery paths like modeset_retry_fn() with the DBANC flag set. Fixes: c932ced6b585 ("drm/tidss: Update encoder/bridge chain connect model") Signed-off-by: Jayesh Choudhary Signed-off-by: Harikrishna Shenoy --- .../drm/bridge/cadence/cdns-mhdp8546-core.c | 29 ++++++++++--------- .../drm/bridge/cadence/cdns-mhdp8546-core.h | 1 + 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.c index 38726ae1bf15..f3076e9cdabb 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c @@ -740,7 +740,7 @@ static void cdns_mhdp_fw_cb(const struct firmware *fw, = void *context) bridge_attached =3D mhdp->bridge_attached; spin_unlock(&mhdp->start_lock); if (bridge_attached) { - if (mhdp->connector.dev) + if (mhdp->connector_ptr && mhdp->connector_ptr->dev) drm_kms_helper_hotplug_event(mhdp->bridge.dev); else drm_bridge_hpd_notify(&mhdp->bridge, cdns_mhdp_detect(mhdp)); @@ -1636,6 +1636,7 @@ static int cdns_mhdp_connector_init(struct cdns_mhdp_= device *mhdp) return ret; } =20 + mhdp->connector_ptr =3D conn; drm_connector_helper_add(conn, &cdns_mhdp_conn_helper_funcs); =20 ret =3D drm_display_info_set_bus_formats(&conn->display_info, @@ -1915,17 +1916,25 @@ static void cdns_mhdp_atomic_enable(struct drm_brid= ge *bridge, struct cdns_mhdp_device *mhdp =3D bridge_to_mhdp(bridge); struct cdns_mhdp_bridge_state *mhdp_state; struct drm_crtc_state *crtc_state; - struct drm_connector *connector; struct drm_connector_state *conn_state; struct drm_bridge_state *new_state; const struct drm_display_mode *mode; u32 resp; - int ret; + int ret =3D 0; =20 dev_dbg(mhdp->dev, "bridge enable\n"); =20 mutex_lock(&mhdp->link_mutex); =20 + mhdp->connector_ptr =3D drm_atomic_get_new_connector_for_encoder(state, + bridge->encoder); + if (WARN_ON(!mhdp->connector_ptr)) + goto out; + + conn_state =3D drm_atomic_get_new_connector_state(state, mhdp->connector_= ptr); + if (WARN_ON(!conn_state)) + goto out; + if (mhdp->plugged && !mhdp->link_up) { ret =3D cdns_mhdp_link_up(mhdp); if (ret < 0) @@ -1945,15 +1954,6 @@ static void cdns_mhdp_atomic_enable(struct drm_bridg= e *bridge, cdns_mhdp_reg_write(mhdp, CDNS_DPTX_CAR, resp | CDNS_VIF_CLK_EN | CDNS_VIF_CLK_RSTN); =20 - connector =3D drm_atomic_get_new_connector_for_encoder(state, - bridge->encoder); - if (WARN_ON(!connector)) - goto out; - - conn_state =3D drm_atomic_get_new_connector_state(state, connector); - if (WARN_ON(!conn_state)) - goto out; - if (mhdp->hdcp_supported && mhdp->hw_state =3D=3D MHDP_HW_READY && conn_state->content_protection =3D=3D @@ -2030,6 +2030,7 @@ static void cdns_mhdp_atomic_disable(struct drm_bridg= e *bridge, if (mhdp->info && mhdp->info->ops && mhdp->info->ops->disable) mhdp->info->ops->disable(mhdp); =20 + mhdp->connector_ptr =3D NULL; mutex_unlock(&mhdp->link_mutex); } =20 @@ -2296,7 +2297,7 @@ static void cdns_mhdp_modeset_retry_fn(struct work_st= ruct *work) =20 mhdp =3D container_of(work, typeof(*mhdp), modeset_retry_work); =20 - conn =3D &mhdp->connector; + conn =3D mhdp->connector_ptr; =20 /* Grab the locks before changing connector property */ mutex_lock(&conn->dev->mode_config.mutex); @@ -2373,7 +2374,7 @@ static void cdns_mhdp_hpd_work(struct work_struct *wo= rk) int ret; =20 ret =3D cdns_mhdp_update_link_status(mhdp); - if (mhdp->connector.dev) { + if (mhdp->connector_ptr && mhdp->connector_ptr->dev) { if (ret < 0) schedule_work(&mhdp->modeset_retry_work); else diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.h b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.h index bad2fc0c7306..a76775c76895 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.h +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.h @@ -376,6 +376,7 @@ struct cdns_mhdp_device { struct mutex link_mutex; =20 struct drm_connector connector; + struct drm_connector *connector_ptr; struct drm_bridge bridge; =20 struct cdns_mhdp_link link; --=20 2.34.1 From nobody Sun Feb 8 18:19:13 2026 Received: from lelvem-ot01.ext.ti.com (lelvem-ot01.ext.ti.com [198.47.23.234]) (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 BB5F52FDC57 for ; Tue, 14 Oct 2025 09:46:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.47.23.234 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435200; cv=none; b=SVEd/DO8wCfEP+lpHYSvpcREwqZ3okdSx85Rwclh/n0yPScbIWCCU4MPF3gjmKJ2hAv1Xuz1QY/1b2tALPm/cQe/NBV91Ni2MM7d43zF74Sv8LjdgU0U7PYf8KMa598+0l9lglAT/EC+3Qm5LlNpqc8cH6rWdPrBBh5lbohyb4o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435200; c=relaxed/simple; bh=AvxFicySUy7tAxHB9r1r8REB31ssMmdCVLldUJLPlWc=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ekPUwAHW9lC+dsbubwuOmGlz8iBH1aST2UfOveGUM2RI4Swei2EToMhJIxVhdt2pydvTXI3U827dc/HueWfnBtK4a4HYRQDHY1scC6KYnhlqdub8wVnQM2Q6PUm06eLO8Nl9Wl+8aIakpcWX/l62z6eA6bKChFjjGqMMlMdas2w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com; spf=pass smtp.mailfrom=ti.com; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b=upTHZvYT; arc=none smtp.client-ip=198.47.23.234 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ti.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="upTHZvYT" Received: from fllvem-sh04.itg.ti.com ([10.64.41.54]) by lelvem-ot01.ext.ti.com (8.15.2/8.15.2) with ESMTP id 59E9jono1118512; Tue, 14 Oct 2025 04:45:50 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1760435150; bh=/U4os51AnkFPhZjaN58wUCcTRHoRAW032REhBml+xEU=; h=From:To:Subject:Date:In-Reply-To:References; b=upTHZvYTy2P9SHtWJmlwnCFViB21HHI94gBxSV2+FeJonODe3Lj9UeTAYN/95RXqg LGfQD8yputhrfvRl2t9nP7LSEr7lPViak9fSmDI7K+7tupHrnl7stWO40tOyT8QZyu Ihdb7KLjQpzfy/U68Z10FplIBA0RH+7O7C7eEkUg= Received: from DFLE203.ent.ti.com (dfle203.ent.ti.com [10.64.6.61]) by fllvem-sh04.itg.ti.com (8.18.1/8.18.1) with ESMTPS id 59E9jnKD3713471 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 14 Oct 2025 04:45:49 -0500 Received: from DFLE211.ent.ti.com (10.64.6.69) by DFLE203.ent.ti.com (10.64.6.61) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 14 Oct 2025 04:45:49 -0500 Received: from lelvem-mr06.itg.ti.com (10.180.75.8) by DFLE211.ent.ti.com (10.64.6.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend Transport; Tue, 14 Oct 2025 04:45:49 -0500 Received: from hkshenoy.dhcp.ti.com (hkshenoy.dhcp.ti.com [172.24.235.208]) by lelvem-mr06.itg.ti.com (8.18.1/8.18.1) with ESMTP id 59E9jSjU3359281; Tue, 14 Oct 2025 04:45:42 -0500 From: Harikrishna Shenoy To: , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v8 2/6] drm/bridge: cadence: cdns-mhdp8546-core: Add mode_valid hook to drm_bridge_funcs Date: Tue, 14 Oct 2025 15:15:23 +0530 Message-ID: <20251014094527.3916421-3-h-shenoy@ti.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251014094527.3916421-1-h-shenoy@ti.com> References: <20251014094527.3916421-1-h-shenoy@ti.com> 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-C2ProcessedOrg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea Content-Type: text/plain; charset="utf-8" From: Jayesh Choudhary Add cdns_mhdp_bridge_mode_valid() to check if specific mode is valid for this bridge or not. In the legacy !(DBANC) usecase, we were using the hook from drm_connector_helper_funcs but with DBANC we need to have mode_valid() in drm_bridge_funcs. Fixes: c932ced6b585 ("drm/tidss: Update encoder/bridge chain connect model") Reviewed-by: Tomi Valkeinen Signed-off-by: Jayesh Choudhary Signed-off-by: Harikrishna Shenoy --- .../drm/bridge/cadence/cdns-mhdp8546-core.c | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.c index f3076e9cdabb..7178a01e4d4d 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c @@ -2162,6 +2162,25 @@ static const struct drm_edid *cdns_mhdp_bridge_edid_= read(struct drm_bridge *brid return cdns_mhdp_edid_read(mhdp, connector); } =20 +static enum drm_mode_status +cdns_mhdp_bridge_mode_valid(struct drm_bridge *bridge, + const struct drm_display_info *info, + const struct drm_display_mode *mode) +{ + struct cdns_mhdp_device *mhdp =3D bridge_to_mhdp(bridge); + + mutex_lock(&mhdp->link_mutex); + + if (!cdns_mhdp_bandwidth_ok(mhdp, mode, mhdp->link.num_lanes, + mhdp->link.rate)) { + mutex_unlock(&mhdp->link_mutex); + return MODE_CLOCK_HIGH; + } + + mutex_unlock(&mhdp->link_mutex); + return MODE_OK; +} + static const struct drm_bridge_funcs cdns_mhdp_bridge_funcs =3D { .atomic_enable =3D cdns_mhdp_atomic_enable, .atomic_disable =3D cdns_mhdp_atomic_disable, @@ -2176,6 +2195,7 @@ static const struct drm_bridge_funcs cdns_mhdp_bridge= _funcs =3D { .edid_read =3D cdns_mhdp_bridge_edid_read, .hpd_enable =3D cdns_mhdp_bridge_hpd_enable, .hpd_disable =3D cdns_mhdp_bridge_hpd_disable, + .mode_valid =3D cdns_mhdp_bridge_mode_valid, }; =20 static bool cdns_mhdp_detect_hpd(struct cdns_mhdp_device *mhdp, bool *hpd_= pulse) --=20 2.34.1 From nobody Sun Feb 8 18:19:13 2026 Received: from fllvem-ot03.ext.ti.com (fllvem-ot03.ext.ti.com [198.47.19.245]) (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 CAC62304BDD for ; Tue, 14 Oct 2025 09:46:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.47.19.245 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435199; cv=none; b=I9CGFME56MWvCXG9ecKXvuWGZ0QPY9rr4XCgPHzIrQOFj/y5ylmQT6Up8Xn6Bwe1DLVbC/W3NMdQjOIwa7McdsS46u29NLiQb7hORTmGCuxkhN2x9yJiRwdV/wa6O1Hs04vkompbsGCQUZbbj9L481F3AGavsGV5KtSAFl1E01g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435199; c=relaxed/simple; bh=1+wYFb+rcNkohfJgT8lwydPWZ8DopBA29qXXLGaJZOg=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=oIcMctxOXSaMIQha9i4E6C3gwvLZivEzgdBKMzdNCiTlNiA8PLfpRVvn15FYjUAduH9YWFQ7QBYbHuYqeJduFj8s8hvDVzfBTvFPabXGZYbD0qSy6lQvvlqE8j1r/crcRiUK6LI482G02KxV8zu5Y4Cp57QcQF6owSQhc1u1ZG8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com; spf=pass smtp.mailfrom=ti.com; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b=IpXeHOp+; arc=none smtp.client-ip=198.47.19.245 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ti.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="IpXeHOp+" Received: from fllvem-sh03.itg.ti.com ([10.64.41.86]) by fllvem-ot03.ext.ti.com (8.15.2/8.15.2) with ESMTP id 59E9jv9p1039187; Tue, 14 Oct 2025 04:45:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1760435157; bh=l8iHiY7tMJVLwGXGTY5mepOYcBK+Lwuh11eUlqYpYrM=; h=From:To:Subject:Date:In-Reply-To:References; b=IpXeHOp+JxWTO2NpQssQH8WmkMKPaBgWgXvuzI3mjSBy1714Cmb/1yBKeAhxiduKo hcqHnJQOnhF0ocgf5DRQuks7wDpRSvyQSOlX5W1g4tvIZRl7iqztmgHxxBJXGnmPRS uEmB3+NfD23QzPANm2tBifN/4PhAFRwdtw0ck+Io= Received: from DLEE105.ent.ti.com (dlee105.ent.ti.com [157.170.170.35]) by fllvem-sh03.itg.ti.com (8.18.1/8.18.1) with ESMTPS id 59E9jvD5967965 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA256 bits=128 verify=FAIL); Tue, 14 Oct 2025 04:45:57 -0500 Received: from DLEE204.ent.ti.com (157.170.170.84) by DLEE105.ent.ti.com (157.170.170.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.55; Tue, 14 Oct 2025 04:45:56 -0500 Received: from lelvem-mr06.itg.ti.com (10.180.75.8) by DLEE204.ent.ti.com (157.170.170.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend Transport; Tue, 14 Oct 2025 04:45:56 -0500 Received: from hkshenoy.dhcp.ti.com (hkshenoy.dhcp.ti.com [172.24.235.208]) by lelvem-mr06.itg.ti.com (8.18.1/8.18.1) with ESMTP id 59E9jSjV3359281; Tue, 14 Oct 2025 04:45:49 -0500 From: Harikrishna Shenoy To: , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v8 3/6] drm/bridge: cadence: cdns-mhdp8546-core: Remove legacy support for connector initialisation in bridge Date: Tue, 14 Oct 2025 15:15:24 +0530 Message-ID: <20251014094527.3916421-4-h-shenoy@ti.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251014094527.3916421-1-h-shenoy@ti.com> References: <20251014094527.3916421-1-h-shenoy@ti.com> 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-C2ProcessedOrg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea Content-Type: text/plain; charset="utf-8" From: Jayesh Choudhary Now that we have DBANC framework, remove the connector initialisation code as that piece of code is not called if DRM_BRIDGE_ATTACH_NO_CONNECTOR flag is used. Only TI K3 platforms consume this driver and tidss (their display controller) has this flag set. So this legacy support can be dropped. Reviewed-by: Dmitry Baryshkov Signed-off-by: Jayesh Choudhary Signed-off-by: Harikrishna Shenoy --- .../drm/bridge/cadence/cdns-mhdp8546-core.c | 188 +----------------- 1 file changed, 10 insertions(+), 178 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.c index 7178a01e4d4d..31256ad69602 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c @@ -739,12 +739,8 @@ static void cdns_mhdp_fw_cb(const struct firmware *fw,= void *context) spin_lock(&mhdp->start_lock); bridge_attached =3D mhdp->bridge_attached; spin_unlock(&mhdp->start_lock); - if (bridge_attached) { - if (mhdp->connector_ptr && mhdp->connector_ptr->dev) - drm_kms_helper_hotplug_event(mhdp->bridge.dev); - else - drm_bridge_hpd_notify(&mhdp->bridge, cdns_mhdp_detect(mhdp)); - } + if (bridge_attached) + drm_bridge_hpd_notify(&mhdp->bridge, cdns_mhdp_detect(mhdp)); } =20 static int cdns_mhdp_load_firmware(struct cdns_mhdp_device *mhdp) @@ -1444,56 +1440,6 @@ static const struct drm_edid *cdns_mhdp_edid_read(st= ruct cdns_mhdp_device *mhdp, return drm_edid_read_custom(connector, cdns_mhdp_get_edid_block, mhdp); } =20 -static int cdns_mhdp_get_modes(struct drm_connector *connector) -{ - struct cdns_mhdp_device *mhdp =3D connector_to_mhdp(connector); - const struct drm_edid *drm_edid; - int num_modes; - - if (!mhdp->plugged) - return 0; - - drm_edid =3D cdns_mhdp_edid_read(mhdp, connector); - - drm_edid_connector_update(connector, drm_edid); - - if (!drm_edid) { - dev_err(mhdp->dev, "Failed to read EDID\n"); - return 0; - } - - num_modes =3D drm_edid_connector_add_modes(connector); - drm_edid_free(drm_edid); - - /* - * HACK: Warn about unsupported display formats until we deal - * with them correctly. - */ - if (connector->display_info.color_formats && - !(connector->display_info.color_formats & - mhdp->display_fmt.color_format)) - dev_warn(mhdp->dev, - "%s: No supported color_format found (0x%08x)\n", - __func__, connector->display_info.color_formats); - - if (connector->display_info.bpc && - connector->display_info.bpc < mhdp->display_fmt.bpc) - dev_warn(mhdp->dev, "%s: Display bpc only %d < %d\n", - __func__, connector->display_info.bpc, - mhdp->display_fmt.bpc); - - return num_modes; -} - -static int cdns_mhdp_connector_detect(struct drm_connector *conn, - struct drm_modeset_acquire_ctx *ctx, - bool force) -{ - struct cdns_mhdp_device *mhdp =3D connector_to_mhdp(conn); - - return cdns_mhdp_detect(mhdp); -} - static u32 cdns_mhdp_get_bpp(struct cdns_mhdp_display_fmt *fmt) { u32 bpp; @@ -1547,115 +1493,6 @@ bool cdns_mhdp_bandwidth_ok(struct cdns_mhdp_device= *mhdp, return true; } =20 -static -enum drm_mode_status cdns_mhdp_mode_valid(struct drm_connector *conn, - const struct drm_display_mode *mode) -{ - struct cdns_mhdp_device *mhdp =3D connector_to_mhdp(conn); - - mutex_lock(&mhdp->link_mutex); - - if (!cdns_mhdp_bandwidth_ok(mhdp, mode, mhdp->link.num_lanes, - mhdp->link.rate)) { - mutex_unlock(&mhdp->link_mutex); - return MODE_CLOCK_HIGH; - } - - mutex_unlock(&mhdp->link_mutex); - return MODE_OK; -} - -static int cdns_mhdp_connector_atomic_check(struct drm_connector *conn, - struct drm_atomic_state *state) -{ - struct cdns_mhdp_device *mhdp =3D connector_to_mhdp(conn); - struct drm_connector_state *old_state, *new_state; - struct drm_crtc_state *crtc_state; - u64 old_cp, new_cp; - - if (!mhdp->hdcp_supported) - return 0; - - old_state =3D drm_atomic_get_old_connector_state(state, conn); - new_state =3D drm_atomic_get_new_connector_state(state, conn); - old_cp =3D old_state->content_protection; - new_cp =3D new_state->content_protection; - - if (old_state->hdcp_content_type !=3D new_state->hdcp_content_type && - new_cp !=3D DRM_MODE_CONTENT_PROTECTION_UNDESIRED) { - new_state->content_protection =3D DRM_MODE_CONTENT_PROTECTION_DESIRED; - goto mode_changed; - } - - if (!new_state->crtc) { - if (old_cp =3D=3D DRM_MODE_CONTENT_PROTECTION_ENABLED) - new_state->content_protection =3D DRM_MODE_CONTENT_PROTECTION_DESIRED; - return 0; - } - - if (old_cp =3D=3D new_cp || - (old_cp =3D=3D DRM_MODE_CONTENT_PROTECTION_DESIRED && - new_cp =3D=3D DRM_MODE_CONTENT_PROTECTION_ENABLED)) - return 0; - -mode_changed: - crtc_state =3D drm_atomic_get_new_crtc_state(state, new_state->crtc); - crtc_state->mode_changed =3D true; - - return 0; -} - -static const struct drm_connector_helper_funcs cdns_mhdp_conn_helper_funcs= =3D { - .detect_ctx =3D cdns_mhdp_connector_detect, - .get_modes =3D cdns_mhdp_get_modes, - .mode_valid =3D cdns_mhdp_mode_valid, - .atomic_check =3D cdns_mhdp_connector_atomic_check, -}; - -static const struct drm_connector_funcs cdns_mhdp_conn_funcs =3D { - .fill_modes =3D drm_helper_probe_single_connector_modes, - .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, - .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, - .reset =3D drm_atomic_helper_connector_reset, - .destroy =3D drm_connector_cleanup, -}; - -static int cdns_mhdp_connector_init(struct cdns_mhdp_device *mhdp) -{ - u32 bus_format =3D MEDIA_BUS_FMT_RGB121212_1X36; - struct drm_connector *conn =3D &mhdp->connector; - struct drm_bridge *bridge =3D &mhdp->bridge; - int ret; - - conn->polled =3D DRM_CONNECTOR_POLL_HPD; - - ret =3D drm_connector_init(bridge->dev, conn, &cdns_mhdp_conn_funcs, - DRM_MODE_CONNECTOR_DisplayPort); - if (ret) { - dev_err(mhdp->dev, "Failed to initialize connector with drm\n"); - return ret; - } - - mhdp->connector_ptr =3D conn; - drm_connector_helper_add(conn, &cdns_mhdp_conn_helper_funcs); - - ret =3D drm_display_info_set_bus_formats(&conn->display_info, - &bus_format, 1); - if (ret) - return ret; - - ret =3D drm_connector_attach_encoder(conn, bridge->encoder); - if (ret) { - dev_err(mhdp->dev, "Failed to attach connector to encoder\n"); - return ret; - } - - if (mhdp->hdcp_supported) - ret =3D drm_connector_attach_content_protection_property(conn, true); - - return ret; -} - static int cdns_mhdp_attach(struct drm_bridge *bridge, struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) @@ -1672,9 +1509,11 @@ static int cdns_mhdp_attach(struct drm_bridge *bridg= e, return ret; =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) { - ret =3D cdns_mhdp_connector_init(mhdp); - if (ret) - goto aux_unregister; + ret =3D -EINVAL; + dev_err(mhdp->dev, + "Connector initialisation not supported in bridge_attach %d\n", + ret); + goto aux_unregister; } =20 spin_lock(&mhdp->start_lock); @@ -2391,17 +2230,10 @@ static void cdns_mhdp_hpd_work(struct work_struct *= work) struct cdns_mhdp_device *mhdp =3D container_of(work, struct cdns_mhdp_device, hpd_work); - int ret; =20 - ret =3D cdns_mhdp_update_link_status(mhdp); - if (mhdp->connector_ptr && mhdp->connector_ptr->dev) { - if (ret < 0) - schedule_work(&mhdp->modeset_retry_work); - else - drm_kms_helper_hotplug_event(mhdp->bridge.dev); - } else { - drm_bridge_hpd_notify(&mhdp->bridge, cdns_mhdp_detect(mhdp)); - } + cdns_mhdp_update_link_status(mhdp); + + drm_bridge_hpd_notify(&mhdp->bridge, cdns_mhdp_detect(mhdp)); } =20 static int cdns_mhdp_probe(struct platform_device *pdev) --=20 2.34.1 From nobody Sun Feb 8 18:19:13 2026 Received: from lelvem-ot01.ext.ti.com (lelvem-ot01.ext.ti.com [198.47.23.234]) (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 11E343101B4 for ; Tue, 14 Oct 2025 09:46:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.47.23.234 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435207; cv=none; b=A07D5mtd8vRYxsvU/o8MqizvNp/qnQ2kLuSifQ2+G+Uc0PAyI7udPX8spz0JjHC78CW7VHQXdhgcmyRkrpMvdUmBDpmahNQWzYPfYVtMxsoZMYYmNzvlnHvf3DrngFivM356QoUqrPirVrlS3qQ0XiCZqUsnVZuLjyk9PZhHsWg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435207; c=relaxed/simple; bh=sF62NY/hXkORD2Eeq/8O3ZO4kcfZFnZ0z6Kg9mSuvEk=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MwaXkCYVUGp5TjLUQVffFLkr9Y6nb/bRvCrvubEwMv150SaV45rHKkAzhMSmeCGsCtSUiZkJZHh/PLCYZTyOHKkXydv3B3ZoQcQQbT7NNO+MSU8jyGig0n6pkesY5yb6k4GV99i49TmKpw8CzUazixQ4FOBPIM5VpZKOEIGgOR8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com; spf=pass smtp.mailfrom=ti.com; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b=U3sU7j5T; arc=none smtp.client-ip=198.47.23.234 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ti.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="U3sU7j5T" Received: from lelvem-sh02.itg.ti.com ([10.180.78.226]) by lelvem-ot01.ext.ti.com (8.15.2/8.15.2) with ESMTP id 59E9k4Pd1118566; Tue, 14 Oct 2025 04:46:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1760435164; bh=G2eY2o4OEo6VtywjaA2qCwEaXYWT6r4fqOW+c1QiJww=; h=From:To:Subject:Date:In-Reply-To:References; b=U3sU7j5TGiQ4ob0UCO+la6ysCFOB9tg+WHlDwKNHLju0TORrbiHZCCcWI+qwvVA/I Zm620KfT8ONMMDq2aM35xGjgRETYKBKdK9N5Wb2r1Jmx21mZaS+8O28TwA7o5o9fZq zEuyfy3dMn2+0bO35cnofaax/PKRnCM1Pj1kzwVw= Received: from DLEE100.ent.ti.com (dlee100.ent.ti.com [157.170.170.30]) by lelvem-sh02.itg.ti.com (8.18.1/8.18.1) with ESMTPS id 59E9k4M8350837 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA256 bits=128 verify=FAIL); Tue, 14 Oct 2025 04:46:04 -0500 Received: from DLEE213.ent.ti.com (157.170.170.116) by DLEE100.ent.ti.com (157.170.170.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.55; Tue, 14 Oct 2025 04:46:03 -0500 Received: from lelvem-mr06.itg.ti.com (10.180.75.8) by DLEE213.ent.ti.com (157.170.170.116) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend Transport; Tue, 14 Oct 2025 04:46:03 -0500 Received: from hkshenoy.dhcp.ti.com (hkshenoy.dhcp.ti.com [172.24.235.208]) by lelvem-mr06.itg.ti.com (8.18.1/8.18.1) with ESMTP id 59E9jSjW3359281; Tue, 14 Oct 2025 04:45:56 -0500 From: Harikrishna Shenoy To: , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v8 4/6] drm/bridge: cadence: cdns-mhdp8546*: Change drm_connector from structure to pointer Date: Tue, 14 Oct 2025 15:15:25 +0530 Message-ID: <20251014094527.3916421-5-h-shenoy@ti.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251014094527.3916421-1-h-shenoy@ti.com> References: <20251014094527.3916421-1-h-shenoy@ti.com> 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-C2ProcessedOrg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea Content-Type: text/plain; charset="utf-8" From: Jayesh Choudhary After adding DBANC framework, mhdp->connector is not initialised during bridge_attach(). The connector is however required in few driver calls like cdns_mhdp_hdcp_enable() and cdns_mhdp_modeset_retry_fn(). Now that we have dropped the legacy code which became redundant with introduction of DBNAC usecase in driver, we can cleanly switch to drm_connector pointer instead of structure. Set it in bridge_enable() and clear it in bridge_disable(), and make appropriate changes. This allows us to dynamically set the reference in bridge_enable() when the connector becomes available and clear it in bridge_disable(). This change is necessary to properly integrate with the DBANC framework while maintaining all connector-dependent functionality in the driver. Reviewed-by: Dmitry Baryshkov Signed-off-by: Jayesh Choudhary Signed-off-by: Harikrishna Shenoy --- drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 12 ++++++------ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.h | 3 +-- drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c | 8 ++++---- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.c index 31256ad69602..fe2da567ec66 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c @@ -1765,12 +1765,12 @@ static void cdns_mhdp_atomic_enable(struct drm_brid= ge *bridge, =20 mutex_lock(&mhdp->link_mutex); =20 - mhdp->connector_ptr =3D drm_atomic_get_new_connector_for_encoder(state, - bridge->encoder); - if (WARN_ON(!mhdp->connector_ptr)) + mhdp->connector =3D drm_atomic_get_new_connector_for_encoder(state, + bridge->encoder); + if (WARN_ON(!mhdp->connector)) goto out; =20 - conn_state =3D drm_atomic_get_new_connector_state(state, mhdp->connector_= ptr); + conn_state =3D drm_atomic_get_new_connector_state(state, mhdp->connector); if (WARN_ON(!conn_state)) goto out; =20 @@ -1869,7 +1869,7 @@ static void cdns_mhdp_atomic_disable(struct drm_bridg= e *bridge, if (mhdp->info && mhdp->info->ops && mhdp->info->ops->disable) mhdp->info->ops->disable(mhdp); =20 - mhdp->connector_ptr =3D NULL; + mhdp->connector =3D NULL; mutex_unlock(&mhdp->link_mutex); } =20 @@ -2156,7 +2156,7 @@ static void cdns_mhdp_modeset_retry_fn(struct work_st= ruct *work) =20 mhdp =3D container_of(work, typeof(*mhdp), modeset_retry_work); =20 - conn =3D mhdp->connector_ptr; + conn =3D mhdp->connector; =20 /* Grab the locks before changing connector property */ mutex_lock(&conn->dev->mode_config.mutex); diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.h b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.h index a76775c76895..b297db53ba28 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.h +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.h @@ -375,8 +375,7 @@ struct cdns_mhdp_device { */ struct mutex link_mutex; =20 - struct drm_connector connector; - struct drm_connector *connector_ptr; + struct drm_connector *connector; struct drm_bridge bridge; =20 struct cdns_mhdp_link link; diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c index 42248f179b69..59f18c3281ef 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c @@ -394,7 +394,7 @@ static int _cdns_mhdp_hdcp_disable(struct cdns_mhdp_dev= ice *mhdp) int ret; =20 dev_dbg(mhdp->dev, "[%s:%d] HDCP is being disabled...\n", - mhdp->connector.name, mhdp->connector.base.id); + mhdp->connector->name, mhdp->connector->base.id); =20 ret =3D cdns_mhdp_hdcp_set_config(mhdp, 0, false); =20 @@ -445,7 +445,7 @@ static int cdns_mhdp_hdcp_check_link(struct cdns_mhdp_d= evice *mhdp) =20 dev_err(mhdp->dev, "[%s:%d] HDCP link failed, retrying authentication\n", - mhdp->connector.name, mhdp->connector.base.id); + mhdp->connector->name, mhdp->connector->base.id); =20 ret =3D _cdns_mhdp_hdcp_disable(mhdp); if (ret) { @@ -487,13 +487,13 @@ static void cdns_mhdp_hdcp_prop_work(struct work_stru= ct *work) struct cdns_mhdp_device *mhdp =3D container_of(hdcp, struct cdns_mhdp_device, hdcp); - struct drm_device *dev =3D mhdp->connector.dev; + struct drm_device *dev =3D mhdp->connector->dev; struct drm_connector_state *state; =20 drm_modeset_lock(&dev->mode_config.connection_mutex, NULL); mutex_lock(&mhdp->hdcp.mutex); if (mhdp->hdcp.value !=3D DRM_MODE_CONTENT_PROTECTION_UNDESIRED) { - state =3D mhdp->connector.state; + state =3D mhdp->connector->state; state->content_protection =3D mhdp->hdcp.value; } mutex_unlock(&mhdp->hdcp.mutex); --=20 2.34.1 From nobody Sun Feb 8 18:19:13 2026 Received: from lelvem-ot02.ext.ti.com (lelvem-ot02.ext.ti.com [198.47.23.235]) (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 E87E22F49E4 for ; Tue, 14 Oct 2025 09:47:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.47.23.235 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435224; cv=none; b=czljbvQ6HaJBRCg/XzUEXfYAaG2pxy4PhOq4ZGRnKTqzEBWVOit1bRk+NGbXh3XT0yf9G/1vKsc37ny6u7G+ow5K8fka6yh1/bcf1IWDApSL/dnLbbvnCtzZfDfCKKvyVzU8+EDZROVB0R1J9ehbvcY/AMf1RIaomQwkEkw1ES0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435224; c=relaxed/simple; bh=Q/EwNmJrqKRytUbxXSXQ4BbFzz+9P0jzmJ2FM9kdtTo=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ZWnASqEGs06aX0KugTuOTw8p4c3wRqBkWYMUka/UGmCXaF6Hzs+B6IEPUQy5AHUQimvmKeBfD1l5zklf8J3t2yQMKEcZrcYcVvGg7WgxqLwMtGFmepvIAXms771HxN5hD1kZaxqOMZJSEbPsfcgwLE27ArdVmFmZdC4gWJGI0FY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com; spf=pass smtp.mailfrom=ti.com; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b=a+8SDUCQ; arc=none smtp.client-ip=198.47.23.235 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ti.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="a+8SDUCQ" Received: from fllvem-sh03.itg.ti.com ([10.64.41.86]) by lelvem-ot02.ext.ti.com (8.15.2/8.15.2) with ESMTP id 59E9kBxo1562834; Tue, 14 Oct 2025 04:46:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1760435171; bh=5KAvQrV9PYUXZ+05NgzPPqjv+gxB7wjjkKy2Tu4HNjM=; h=From:To:Subject:Date:In-Reply-To:References; b=a+8SDUCQSXf/ErHFtzETVeSh4xkM2ATneE7z2oP7/hoPetKJlZJIPG4FPOurgXJ6X X7wOona7PlnroVVKHJ6ed2iSk97566BfXGpATgc9VuIbaxpwccGFmbQAVWki/u8kba coD/OpzyWoqTPuzwYYbtW27nW2LEJPunRdpRmkvM= Received: from DLEE100.ent.ti.com (dlee100.ent.ti.com [157.170.170.30]) by fllvem-sh03.itg.ti.com (8.18.1/8.18.1) with ESMTPS id 59E9kBm7968164 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA256 bits=128 verify=FAIL); Tue, 14 Oct 2025 04:46:11 -0500 Received: from DLEE213.ent.ti.com (157.170.170.116) by DLEE100.ent.ti.com (157.170.170.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.55; Tue, 14 Oct 2025 04:46:10 -0500 Received: from lelvem-mr06.itg.ti.com (10.180.75.8) by DLEE213.ent.ti.com (157.170.170.116) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend Transport; Tue, 14 Oct 2025 04:46:10 -0500 Received: from hkshenoy.dhcp.ti.com (hkshenoy.dhcp.ti.com [172.24.235.208]) by lelvem-mr06.itg.ti.com (8.18.1/8.18.1) with ESMTP id 59E9jSjX3359281; Tue, 14 Oct 2025 04:46:03 -0500 From: Harikrishna Shenoy To: , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v8 5/6] drm/bridge: cadence: cdns-mhdp8546-core: Reduce log level for DPCD read/write Date: Tue, 14 Oct 2025 15:15:26 +0530 Message-ID: <20251014094527.3916421-6-h-shenoy@ti.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251014094527.3916421-1-h-shenoy@ti.com> References: <20251014094527.3916421-1-h-shenoy@ti.com> 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-C2ProcessedOrg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea Content-Type: text/plain; charset="utf-8" From: Jayesh Choudhary Reduce the log level for cdns_mhdp_dpcd_read and cdns_mhdp_dpcd_write errors in cdns_mhdp_transfer function as in case of failure, there is flooding of these prints along with other indicators like EDID failure logs which are fairly intuitive in themselves rendering these error logs useless. Also, the caller functions for the cdns_mhdp_transfer in drm_dp_helper.c (which calls it 32 times), has debug log level in case transfer fails. So having a superseding log level in cdns_mhdp_transfer seems bad. Reviewed-by: Tomi Valkeinen Signed-off-by: Jayesh Choudhary Signed-off-by: Harikrishna Shenoy --- drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.c index fe2da567ec66..06ac5c2ee78f 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c @@ -778,7 +778,7 @@ static ssize_t cdns_mhdp_transfer(struct drm_dp_aux *au= x, if (!ret) continue; =20 - dev_err(mhdp->dev, + dev_dbg(mhdp->dev, "Failed to write DPCD addr %u\n", msg->address + i); =20 @@ -788,7 +788,7 @@ static ssize_t cdns_mhdp_transfer(struct drm_dp_aux *au= x, ret =3D cdns_mhdp_dpcd_read(mhdp, msg->address, msg->buffer, msg->size); if (ret) { - dev_err(mhdp->dev, + dev_dbg(mhdp->dev, "Failed to read DPCD addr %u\n", msg->address); =20 --=20 2.34.1 From nobody Sun Feb 8 18:19:13 2026 Received: from lelvem-ot01.ext.ti.com (lelvem-ot01.ext.ti.com [198.47.23.234]) (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 C79C12EBB98 for ; Tue, 14 Oct 2025 09:46:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.47.23.234 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435213; cv=none; b=OAEujjzOc5mZ95FatCNmHjybgDFsGkDnMNvLEi3nFFcvjdEDxroT1Uzh5gmELIqlV/44hX0clNcdCpGzzy+aWHaZ9NFWqs40SY6xKvvfz9K64QobHUnkeXC1FJU3VyIuk7P3DACeJvgAlwpd2kgz29f/O8Mquu3lkqUK1dExyQI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435213; c=relaxed/simple; bh=On5R3LWlsd3PYHTpGMzsiynihZ5ryBLo6IV7fBN3ZHs=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=LbhUrYXxxT90CUoxyDpz+6jWNLyU5hnZNvVRrtIq59cPihud6y9aREEgGSCvPAEyeZl0P22yyLVARuQBzQXbXwcFvke2dXxf5CVGNFcx2ei3wNWI0RY+ipK1BHVk6FzegjBZablJWIbkEqguz42OsgeQ/TSZSecQlF1XrVMS3iA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com; spf=pass smtp.mailfrom=ti.com; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b=A1F21jEd; arc=none smtp.client-ip=198.47.23.234 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ti.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="A1F21jEd" Received: from lelvem-sh01.itg.ti.com ([10.180.77.71]) by lelvem-ot01.ext.ti.com (8.15.2/8.15.2) with ESMTP id 59E9kHcp1118620; Tue, 14 Oct 2025 04:46:17 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1760435177; bh=O6gISXFAw9VI8vW9Gp4gmJ8yOkZNaeDhjskPoc76tQE=; h=From:To:Subject:Date:In-Reply-To:References; b=A1F21jEd5NOeVK98Vng/bYurP16XYxInwsBH6KXGpY6FdwdK2W6q6sPZ61Y3QK66O uLMgkHQZXAWWMy3xpFLmiodONIxDs4t2jZXjHCkCKJ9N1V5wLjblvMNdEj5p+EREgg FFS9DA2xrZ7+E7sqze7ePVAf3u+UDfL+Fp6h5GNU= Received: from DFLE207.ent.ti.com (dfle207.ent.ti.com [10.64.6.65]) by lelvem-sh01.itg.ti.com (8.18.1/8.18.1) with ESMTPS id 59E9kHV73917383 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 14 Oct 2025 04:46:17 -0500 Received: from DFLE202.ent.ti.com (10.64.6.60) by DFLE207.ent.ti.com (10.64.6.65) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 14 Oct 2025 04:46:17 -0500 Received: from lelvem-mr06.itg.ti.com (10.180.75.8) by DFLE202.ent.ti.com (10.64.6.60) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend Transport; Tue, 14 Oct 2025 04:46:17 -0500 Received: from hkshenoy.dhcp.ti.com (hkshenoy.dhcp.ti.com [172.24.235.208]) by lelvem-mr06.itg.ti.com (8.18.1/8.18.1) with ESMTP id 59E9jSjY3359281; Tue, 14 Oct 2025 04:46:10 -0500 From: Harikrishna Shenoy To: , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v8 6/6] drm/bridge: cadence: cdns-mhdp8546-core: Handle HDCP state in bridge atomic check Date: Tue, 14 Oct 2025 15:15:27 +0530 Message-ID: <20251014094527.3916421-7-h-shenoy@ti.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251014094527.3916421-1-h-shenoy@ti.com> References: <20251014094527.3916421-1-h-shenoy@ti.com> 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-C2ProcessedOrg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea Content-Type: text/plain; charset="utf-8" Now that we have DBANC framework and legacy connector functions removed, handle the HDCP disabling in bridge atomic check rather than in connector atomic check in !(DBANC) usecase. Signed-off-by: Harikrishna Shenoy --- .../drm/bridge/cadence/cdns-mhdp8546-core.c | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.c index 06ac5c2ee78f..120eb7ffe20c 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c @@ -1962,6 +1962,10 @@ static int cdns_mhdp_atomic_check(struct drm_bridge = *bridge, { struct cdns_mhdp_device *mhdp =3D bridge_to_mhdp(bridge); const struct drm_display_mode *mode =3D &crtc_state->adjusted_mode; + struct drm_connector_state *old_state, *new_state; + struct drm_atomic_state *state =3D crtc_state->state; + struct drm_connector *conn =3D mhdp->connector; + u64 old_cp, new_cp; =20 mutex_lock(&mhdp->link_mutex); =20 @@ -1981,6 +1985,25 @@ static int cdns_mhdp_atomic_check(struct drm_bridge = *bridge, if (mhdp->info) bridge_state->input_bus_cfg.flags =3D *mhdp->info->input_bus_flags; =20 + if (conn && mhdp->hdcp_supported) { + old_state =3D drm_atomic_get_old_connector_state(state, conn); + new_state =3D drm_atomic_get_new_connector_state(state, conn); + old_cp =3D old_state->content_protection; + new_cp =3D new_state->content_protection; + + if (old_state->hdcp_content_type !=3D new_state->hdcp_content_type && + new_cp !=3D DRM_MODE_CONTENT_PROTECTION_UNDESIRED) { + new_state->content_protection =3D DRM_MODE_CONTENT_PROTECTION_DESIRED; + crtc_state =3D drm_atomic_get_new_crtc_state(state, new_state->crtc); + crtc_state->mode_changed =3D true; + } + + if (!new_state->crtc) { + if (old_cp =3D=3D DRM_MODE_CONTENT_PROTECTION_ENABLED) + new_state->content_protection =3D DRM_MODE_CONTENT_PROTECTION_DESIRED; + } + } + mutex_unlock(&mhdp->link_mutex); return 0; } --=20 2.34.1