From nobody Mon Oct 6 06:32:11 2025 Received: from mail-m49244.qiye.163.com (mail-m49244.qiye.163.com [45.254.49.244]) (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 38786272815; Thu, 24 Jul 2025 08:18:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.254.49.244 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753345124; cv=none; b=qMxtj22+XvL7itfkk+FUYpJPJKoGThEfymFd9vov9B8HRhuyFMNfxA7Ii5Nb/BIOgekrp7chnOGp4ofFUwiqe0wtC9LGZMf1UnB9BSoeEzrRXM8Ktm/TuaWXFaT+u6+c2VsIvRFzPl5KRuKHEJ4PyDMXuuv2TGHMhxAiWVsI4vw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753345124; c=relaxed/simple; bh=HP9g5bPVTqd5Z2/EK+046wExGnLQZ3/+isZpXOi9GLw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Mwq2bEgZaoBmTYfOb+wJbiE+xDTt6DBozW+LgC3mXV80H6oqyFRsDC2Uk9vpo69c1p8sU5H7lSTQw7zY+IelrxnFDwturnntmJgMwNxR5WqZcp98dNBxYGCgJ+/o+ejPfX15lGKwtXObFv6vWHcyH0yOXXaCGzzj1ZTMYWvgY+w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=WVnfcPt4; arc=none smtp.client-ip=45.254.49.244 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) header.d=rock-chips.com header.i=@rock-chips.com header.b="WVnfcPt4" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id 1d1c34397; Thu, 24 Jul 2025 16:03:17 +0800 (GMT+08:00) From: Damon Ding To: andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org Cc: Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, jingoohan1@gmail.com, inki.dae@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, krzk@kernel.org, alim.akhtar@samsung.com, hjc@rock-chips.com, heiko@sntech.de, andy.yan@rock-chips.com, dmitry.baryshkov@oss.qualcomm.com, l.stach@pengutronix.de, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, Damon Ding Subject: [PATCH v3 01/14] drm/bridge: analogix_dp: Formalize the struct analogix_dp_device Date: Thu, 24 Jul 2025 16:02:51 +0800 Message-Id: <20250724080304.3572457-2-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250724080304.3572457-1-damon.ding@rock-chips.com> References: <20250724080304.3572457-1-damon.ding@rock-chips.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-HM-Tid: 0a983b75423b03a3kunmbbba7af29d8f X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZGUpPQ1YYH0NMQxpIGkpOHUNWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSU9PT0 hVSktLVUpCS0tZBg++ DKIM-Signature: a=rsa-sha256; b=WVnfcPt4YsVlDYzPgdhutJ+2/5lpTO/LBQueT1WX656ov2q2LJvh+E7zPYIBWA1x6FiWVyV/aA4B8bk2F77ZdWsxuGuZUQgF5He2dR5xA1ypYzJQMctdyfuoTsILnJXwaxq4i96+tj6SPvwHmLZFu35IdH7JRlcEITISWVY/Mis=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=p8Q9no+T4MDXxyIkiNkZJti3sEtvUKV9beBUeeO4aS0=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" Use the tap instead of the space for &analogix_dp_device.aux and &analogix_dp_device.force_hpd. Signed-off-by: Damon Ding Reviewed-by: Dmitry Baryshkov Tested-by: Heiko Stuebner --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.h index b86e93f30ed6..91b215c6a0cf 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h @@ -156,7 +156,7 @@ struct analogix_dp_device { struct drm_device *drm_dev; struct drm_connector connector; struct drm_bridge bridge; - struct drm_dp_aux aux; + struct drm_dp_aux aux; struct clk *clock; unsigned int irq; void __iomem *reg_base; @@ -166,7 +166,7 @@ struct analogix_dp_device { struct phy *phy; int dpms_mode; struct gpio_desc *hpd_gpiod; - bool force_hpd; + bool force_hpd; bool fast_train_enable; bool psr_supported; =20 --=20 2.34.1 From nobody Mon Oct 6 06:32:11 2025 Received: from mail-m32120.qiye.163.com (mail-m32120.qiye.163.com [220.197.32.120]) (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 6A43327147D; Thu, 24 Jul 2025 08:03:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.32.120 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753344213; cv=none; b=XQ4PgSW8caLVMenm4HxlIXqL+dyP1szhk8Mhevg2cXLJ0Y653Ax32n91RniiGJzN2X8qtMEcBzbSj/dQP+YPkpjg4StnXUyNjTGBvg35Jdsh5ctQU8T7wlGWLitj4aOZVTJcAgUkSGeFXwqP9yqy9ZuaBl6qMwzu4s1lYQEIDdg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753344213; c=relaxed/simple; bh=3xQYD58mFmghAcfEZ+1U73cxFtAHLs1gyXKdCXJgmsQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Vs3t6bgB0MfZ0mTzuVXTkYtHYYKgRTu6QYhFckx+923D9655yKsm0RDI5ciBE3xkHDtT4plavfST31cfbGQ29ckjd5dPq55/O09TuTS+pVUrQIQXCb81OIfx1ARHezmc5E0pDKVhNgS8yJnaNo2FBeI5LGMBpxLOxaajyYHX2N4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=BnfDBOwG; arc=none smtp.client-ip=220.197.32.120 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) header.d=rock-chips.com header.i=@rock-chips.com header.b="BnfDBOwG" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id 1d1c343ac; Thu, 24 Jul 2025 16:03:19 +0800 (GMT+08:00) From: Damon Ding To: andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org Cc: Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, jingoohan1@gmail.com, inki.dae@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, krzk@kernel.org, alim.akhtar@samsung.com, hjc@rock-chips.com, heiko@sntech.de, andy.yan@rock-chips.com, dmitry.baryshkov@oss.qualcomm.com, l.stach@pengutronix.de, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, Damon Ding Subject: [PATCH v3 02/14] drm/bridge: analogix_dp: Move &drm_bridge_funcs.mode_set to &drm_bridge_funcs.atomic_enable Date: Thu, 24 Jul 2025 16:02:52 +0800 Message-Id: <20250724080304.3572457-3-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250724080304.3572457-1-damon.ding@rock-chips.com> References: <20250724080304.3572457-1-damon.ding@rock-chips.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-HM-Tid: 0a983b754bd503a3kunmbbba7af29de8 X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZGR5NTVYeGkJIQhkdQk0fSE1WFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSEpKQk 1VSktLVUpCWQY+ DKIM-Signature: a=rsa-sha256; b=BnfDBOwGRxTL7kryxwnR4u/GLr0CZh28iSz8X6EV2jJWwz16teYYaO0UR5gtmvpek/2Xky+o4vVveJEmP6DdC99hc6onQga9pHeEer7NcxQFj849c8Npk5yaIpdVBzfP/whC8LJ223QbuemPTvay5azih8x6qYVjggJDjImdWz0=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=iRIQPqf5FgKCUcwwQNJRIfqVXyG5a6BwS2hQtnRVAHU=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" According to the include/drm/drm_bridge.h, the callback &drm_bridge_funcs.mode_set is deprecated and it should be better to include the mode setting in the &drm_bridge_funcs.atomic_enable instead. Signed-off-by: Damon Ding Reviewed-by: Dmitry Baryshkov Tested-by: Heiko Stuebner --- .../drm/bridge/analogix/analogix_dp_core.c | 161 +++++++++--------- 1 file changed, 82 insertions(+), 79 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index ed35e567d117..0106e7e0f093 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1177,12 +1177,88 @@ static int analogix_dp_set_bridge(struct analogix_d= p_device *dp) return ret; } =20 +static void analogix_dp_bridge_mode_set(struct drm_bridge *bridge, + const struct drm_display_mode *mode) +{ + struct analogix_dp_device *dp =3D to_dp(bridge); + struct drm_display_info *display_info =3D &dp->connector.display_info; + struct video_info *video =3D &dp->video_info; + struct device_node *dp_node =3D dp->dev->of_node; + int vic; + + /* Input video interlaces & hsync pol & vsync pol */ + video->interlaced =3D !!(mode->flags & DRM_MODE_FLAG_INTERLACE); + video->v_sync_polarity =3D !!(mode->flags & DRM_MODE_FLAG_NVSYNC); + video->h_sync_polarity =3D !!(mode->flags & DRM_MODE_FLAG_NHSYNC); + + /* Input video dynamic_range & colorimetry */ + vic =3D drm_match_cea_mode(mode); + if ((vic =3D=3D 6) || (vic =3D=3D 7) || (vic =3D=3D 21) || (vic =3D=3D 22= ) || + (vic =3D=3D 2) || (vic =3D=3D 3) || (vic =3D=3D 17) || (vic =3D=3D 18= )) { + video->dynamic_range =3D CEA; + video->ycbcr_coeff =3D COLOR_YCBCR601; + } else if (vic) { + video->dynamic_range =3D CEA; + video->ycbcr_coeff =3D COLOR_YCBCR709; + } else { + video->dynamic_range =3D VESA; + video->ycbcr_coeff =3D COLOR_YCBCR709; + } + + /* Input vide bpc and color_formats */ + switch (display_info->bpc) { + case 12: + video->color_depth =3D COLOR_12; + break; + case 10: + video->color_depth =3D COLOR_10; + break; + case 8: + video->color_depth =3D COLOR_8; + break; + case 6: + video->color_depth =3D COLOR_6; + break; + default: + video->color_depth =3D COLOR_8; + break; + } + if (display_info->color_formats & DRM_COLOR_FORMAT_YCBCR444) + video->color_space =3D COLOR_YCBCR444; + else if (display_info->color_formats & DRM_COLOR_FORMAT_YCBCR422) + video->color_space =3D COLOR_YCBCR422; + else + video->color_space =3D COLOR_RGB; + + /* + * NOTE: those property parsing code is used for providing backward + * compatibility for samsung platform. + * Due to we used the "of_property_read_u32" interfaces, when this + * property isn't present, the "video_info" can keep the original + * values and wouldn't be modified. + */ + of_property_read_u32(dp_node, "samsung,color-space", + &video->color_space); + of_property_read_u32(dp_node, "samsung,dynamic-range", + &video->dynamic_range); + of_property_read_u32(dp_node, "samsung,ycbcr-coeff", + &video->ycbcr_coeff); + of_property_read_u32(dp_node, "samsung,color-depth", + &video->color_depth); + if (of_property_read_bool(dp_node, "hsync-active-high")) + video->h_sync_polarity =3D true; + if (of_property_read_bool(dp_node, "vsync-active-high")) + video->v_sync_polarity =3D true; + if (of_property_read_bool(dp_node, "interlaced")) + video->interlaced =3D true; +} + static void analogix_dp_bridge_atomic_enable(struct drm_bridge *bridge, struct drm_atomic_state *old_state) { struct analogix_dp_device *dp =3D to_dp(bridge); struct drm_crtc *crtc; - struct drm_crtc_state *old_crtc_state; + struct drm_crtc_state *old_crtc_state, *new_crtc_state; int timeout_loop =3D 0; int ret; =20 @@ -1190,6 +1266,11 @@ static void analogix_dp_bridge_atomic_enable(struct = drm_bridge *bridge, if (!crtc) return; =20 + new_crtc_state =3D drm_atomic_get_new_crtc_state(old_state, crtc); + if (!new_crtc_state) + return; + analogix_dp_bridge_mode_set(bridge, &new_crtc_state->adjusted_mode); + old_crtc_state =3D drm_atomic_get_old_crtc_state(old_state, crtc); /* Not a full enable, just disable PSR and continue */ if (old_crtc_state && old_crtc_state->self_refresh_active) { @@ -1296,83 +1377,6 @@ static void analogix_dp_bridge_atomic_post_disable(s= truct drm_bridge *bridge, DRM_ERROR("Failed to enable psr (%d)\n", ret); } =20 -static void analogix_dp_bridge_mode_set(struct drm_bridge *bridge, - const struct drm_display_mode *orig_mode, - const struct drm_display_mode *mode) -{ - struct analogix_dp_device *dp =3D to_dp(bridge); - struct drm_display_info *display_info =3D &dp->connector.display_info; - struct video_info *video =3D &dp->video_info; - struct device_node *dp_node =3D dp->dev->of_node; - int vic; - - /* Input video interlaces & hsync pol & vsync pol */ - video->interlaced =3D !!(mode->flags & DRM_MODE_FLAG_INTERLACE); - video->v_sync_polarity =3D !!(mode->flags & DRM_MODE_FLAG_NVSYNC); - video->h_sync_polarity =3D !!(mode->flags & DRM_MODE_FLAG_NHSYNC); - - /* Input video dynamic_range & colorimetry */ - vic =3D drm_match_cea_mode(mode); - if ((vic =3D=3D 6) || (vic =3D=3D 7) || (vic =3D=3D 21) || (vic =3D=3D 22= ) || - (vic =3D=3D 2) || (vic =3D=3D 3) || (vic =3D=3D 17) || (vic =3D=3D 18= )) { - video->dynamic_range =3D CEA; - video->ycbcr_coeff =3D COLOR_YCBCR601; - } else if (vic) { - video->dynamic_range =3D CEA; - video->ycbcr_coeff =3D COLOR_YCBCR709; - } else { - video->dynamic_range =3D VESA; - video->ycbcr_coeff =3D COLOR_YCBCR709; - } - - /* Input vide bpc and color_formats */ - switch (display_info->bpc) { - case 12: - video->color_depth =3D COLOR_12; - break; - case 10: - video->color_depth =3D COLOR_10; - break; - case 8: - video->color_depth =3D COLOR_8; - break; - case 6: - video->color_depth =3D COLOR_6; - break; - default: - video->color_depth =3D COLOR_8; - break; - } - if (display_info->color_formats & DRM_COLOR_FORMAT_YCBCR444) - video->color_space =3D COLOR_YCBCR444; - else if (display_info->color_formats & DRM_COLOR_FORMAT_YCBCR422) - video->color_space =3D COLOR_YCBCR422; - else - video->color_space =3D COLOR_RGB; - - /* - * NOTE: those property parsing code is used for providing backward - * compatibility for samsung platform. - * Due to we used the "of_property_read_u32" interfaces, when this - * property isn't present, the "video_info" can keep the original - * values and wouldn't be modified. - */ - of_property_read_u32(dp_node, "samsung,color-space", - &video->color_space); - of_property_read_u32(dp_node, "samsung,dynamic-range", - &video->dynamic_range); - of_property_read_u32(dp_node, "samsung,ycbcr-coeff", - &video->ycbcr_coeff); - of_property_read_u32(dp_node, "samsung,color-depth", - &video->color_depth); - if (of_property_read_bool(dp_node, "hsync-active-high")) - video->h_sync_polarity =3D true; - if (of_property_read_bool(dp_node, "vsync-active-high")) - video->v_sync_polarity =3D true; - if (of_property_read_bool(dp_node, "interlaced")) - video->interlaced =3D true; -} - static const struct drm_bridge_funcs analogix_dp_bridge_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_bridge_destroy_state, @@ -1381,7 +1385,6 @@ static const struct drm_bridge_funcs analogix_dp_brid= ge_funcs =3D { .atomic_enable =3D analogix_dp_bridge_atomic_enable, .atomic_disable =3D analogix_dp_bridge_atomic_disable, .atomic_post_disable =3D analogix_dp_bridge_atomic_post_disable, - .mode_set =3D analogix_dp_bridge_mode_set, .attach =3D analogix_dp_bridge_attach, }; =20 --=20 2.34.1 From nobody Mon Oct 6 06:32:11 2025 Received: from mail-m32114.qiye.163.com (mail-m32114.qiye.163.com [220.197.32.114]) (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 5F16E272E48; Thu, 24 Jul 2025 08:08:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.32.114 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753344516; cv=none; b=HJDyYriud1rC+wo6yVzf3xAGt8MF2pyQwtXQzvBh9xSbvWO3HphuG49Ftnt2DHwnf2umR+BJ78b6G2qobgUZkWOw911YInQej6gYd6+cRZUO1zEpUdWPmUKMIZ974SDEoN4YmJLtqHBqhtiMaEQjwaqjn/YkysWck3IWwnIEuZg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753344516; c=relaxed/simple; bh=1IfZl5n2m0tZRI7GC00+4Jmyv+FwiI2Y9ybSvWp/PjQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bKUN7Si6jqVUiapqSDWHB2afs1HjlV+ofvxEQZNi4qMzPWi1HNdQlwZY5nKAUmgcesCIxuXwstY8fR/CM80+ZIiXubxqLswsRClu0taRjHCLfzI8EAA+gZ2W2RWBfntUcv9ncbYMLp8DMu/mXs9fRTZQ4R7SE+GVsG2x0bk5DG0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=YfDYoGjC; arc=none smtp.client-ip=220.197.32.114 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) header.d=rock-chips.com header.i=@rock-chips.com header.b="YfDYoGjC" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id 1d1c343b6; Thu, 24 Jul 2025 16:03:22 +0800 (GMT+08:00) From: Damon Ding To: andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org Cc: Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, jingoohan1@gmail.com, inki.dae@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, krzk@kernel.org, alim.akhtar@samsung.com, hjc@rock-chips.com, heiko@sntech.de, andy.yan@rock-chips.com, dmitry.baryshkov@oss.qualcomm.com, l.stach@pengutronix.de, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, Damon Ding Subject: [PATCH v3 03/14] drm/rockchip: analogix_dp: Apply drmm_encoder_init() instead of drm_simple_encoder_init() Date: Thu, 24 Jul 2025 16:02:53 +0800 Message-Id: <20250724080304.3572457-4-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250724080304.3572457-1-damon.ding@rock-chips.com> References: <20250724080304.3572457-1-damon.ding@rock-chips.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-HM-Tid: 0a983b75552c03a3kunmbbba7af29e17 X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZQx5PS1YYSkwfHh1LTxgZSEtWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSEpKQk 1VSktLVUpCWQY+ DKIM-Signature: a=rsa-sha256; b=YfDYoGjCgbqbap6Xope3CMOTeL5G4HyiADww89thVcDx5PrOC2nhPJRGR8xm9EXI5ETC4Nb0u8x7ex5r3ooVPQp6UmDQitJW0ytrB5iAhfuQdM7zc5l3PVWiaUNkO0F1YFlPeXViN197gGK1K68UvMECzNB8v12ArF99gLt0JkE=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=zPlxZWDQIK3s2FJH/2CXtRJ9gZ/3RtAB+yN2+4NuAvE=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" Compared with drm_simple_encoder_init(), drmm_encoder_init() can handle the cleanup automatically through registering drm_encoder_cleanup() with drmm_add_action(). Signed-off-by: Damon Ding Tested-by: Heiko Stuebner --- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/= drm/rockchip/analogix_dp-rockchip.c index d30f0983a53a..4ed6bf9e5377 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -29,7 +29,6 @@ #include #include #include -#include =20 #include "rockchip_drm_drv.h" =20 @@ -377,8 +376,7 @@ static int rockchip_dp_drm_create_encoder(struct rockch= ip_dp_device *dp) dev->of_node); DRM_DEBUG_KMS("possible_crtcs =3D 0x%x\n", encoder->possible_crtcs); =20 - ret =3D drm_simple_encoder_init(drm_dev, encoder, - DRM_MODE_ENCODER_TMDS); + ret =3D drmm_encoder_init(drm_dev, encoder, NULL, DRM_MODE_ENCODER_TMDS, = NULL); if (ret) { DRM_ERROR("failed to initialize encoder with drm\n"); return ret; --=20 2.34.1 From nobody Mon Oct 6 06:32:11 2025 Received: from mail-m1973194.qiye.163.com (mail-m1973194.qiye.163.com [220.197.31.94]) (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 5433F2749F4; Thu, 24 Jul 2025 08:18:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.31.94 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753345128; cv=none; b=ZsytMBzAqiCvh+lURR1m3uy+bLPj6GVXVQ2FtSS6Ol1Bcijq4JnLGCpSez2Eq5LIjRSZZuJZIjFKWwZlPlLeyoVGzFjU+eOHaWYfiuurm1lhsVUfEAdICBrkwGcoGHdzNeMavcVbcPO4WyZ57PYI3/mkwftpbgE0JNoV5geGd/c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753345128; c=relaxed/simple; bh=IU3dVT44HTJ1x3IsPqfZXnYKBGmJWldIbLDLo8C0H+A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=k/8zm7AtvX+FfSmQq94QVCrc95zazKen4idIoBbYoRg2+3ogmhNVVkOGpbOwN1aFT0WX0aQjwZM/XGF7AtM4qkUMVWg1zeKgOgYBbv0LoQDKtPBr8H9ERP6PrbNkFmzWsh+WLfUtJnZ194GcmZ7OVMoq4AqBhuEl9+ESx/Nc9+Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=fvrDZiti; arc=none smtp.client-ip=220.197.31.94 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) header.d=rock-chips.com header.i=@rock-chips.com header.b="fvrDZiti" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id 1d1c343c1; Thu, 24 Jul 2025 16:03:24 +0800 (GMT+08:00) From: Damon Ding To: andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org Cc: Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, jingoohan1@gmail.com, inki.dae@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, krzk@kernel.org, alim.akhtar@samsung.com, hjc@rock-chips.com, heiko@sntech.de, andy.yan@rock-chips.com, dmitry.baryshkov@oss.qualcomm.com, l.stach@pengutronix.de, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, Damon Ding Subject: [PATCH v3 04/14] drm/bridge: analogix_dp: Add &analogix_dp_plat_data.bridge Date: Thu, 24 Jul 2025 16:02:54 +0800 Message-Id: <20250724080304.3572457-5-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250724080304.3572457-1-damon.ding@rock-chips.com> References: <20250724080304.3572457-1-damon.ding@rock-chips.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-HM-Tid: 0a983b755e6503a3kunmbbba7af29e4d X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZGk1JHlYdSUwdHR8dHk9IHU9WFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSU9PT0 hVSktLVUpCS0tZBg++ DKIM-Signature: a=rsa-sha256; b=fvrDZitiqPsnkbshS2zs1sVJ8+w5cmlv8Hwci7xudfoQVT+Uyctobkjw4GnICUaA//hNpV66aGrhTp9usI2keUViGj/rhk6PFMu7tZKIKNZItatdXYS9Mcw+61qQMdMfQtlyd4BrwhRGp6ohKk3yn5xrnLffPK3Stix9ALX24Oc=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=PewsLHkceWyRvdTSxULk4/P8ldyIOQ9uY/Rr+3pxG9Y=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" In order to move the parnel/bridge parsing and attachmenet to the Analogix side, add component struct drm_bridge *bridge to platform data struct analogix_dp_plat_data. The movemenet makes sense because the panel/bridge should logically be positioned behind the Analogix bridge in the display pipeline. Signed-off-by: Damon Ding Reviewed-by: Dmitry Baryshkov Tested-by: Heiko Stuebner --- include/drm/bridge/analogix_dp.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/drm/bridge/analogix_dp.h b/include/drm/bridge/analogix= _dp.h index cf17646c1310..15cb6b706e9f 100644 --- a/include/drm/bridge/analogix_dp.h +++ b/include/drm/bridge/analogix_dp.h @@ -27,6 +27,7 @@ static inline bool is_rockchip(enum analogix_dp_devtype t= ype) struct analogix_dp_plat_data { enum analogix_dp_devtype dev_type; struct drm_panel *panel; + struct drm_bridge *bridge; struct drm_encoder *encoder; struct drm_connector *connector; bool skip_connector; --=20 2.34.1 From nobody Mon Oct 6 06:32:11 2025 Received: from mail-m3276.qiye.163.com (mail-m3276.qiye.163.com [220.197.32.76]) (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 41DA5273808; Thu, 24 Jul 2025 08:03:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.32.76 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753344221; cv=none; b=qxGslyyLB/zxuQwRZ1zwSOtUJvWaz/Joc1iJQvt4AeLp+9mMKTuQ+row6gAQ+r2DCfFSxIMPAjk7W9VoknVBGZgrWt6FNcWVmq2L01jQwORwiJzljpA4oUA0Wqk3+JwRjACDjfmJD1+Gu/haYwoVmOxnKtPX2L61X74x0Y/9w8Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753344221; c=relaxed/simple; bh=jT5+Z5U5sum8vHmDrj2CVBqXDRFbK1zWTaaYn7p3ja8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SV9H4ihsH+jnV/F86A3ePymlwuHlW3JMVHdZfapTCNVoPO6u6ApkHFajV/CwUgABDapBpLpNuJaiDnlrzzeJ0vQOo/VDCiOIFf8X4akDDDurdbdfI4M6S1Aocz7ob6qiC5VR1jKxYjt0lOK7Ko38NaxMJPl2fcYLtWGqONg2Bso= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=I3k8wOYd; arc=none smtp.client-ip=220.197.32.76 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) header.d=rock-chips.com header.i=@rock-chips.com header.b="I3k8wOYd" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id 1d1c343d3; Thu, 24 Jul 2025 16:03:26 +0800 (GMT+08:00) From: Damon Ding To: andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org Cc: Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, jingoohan1@gmail.com, inki.dae@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, krzk@kernel.org, alim.akhtar@samsung.com, hjc@rock-chips.com, heiko@sntech.de, andy.yan@rock-chips.com, dmitry.baryshkov@oss.qualcomm.com, l.stach@pengutronix.de, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, Damon Ding Subject: [PATCH v3 05/14] drm/exynos: exynos_dp: Remove &exynos_dp_device.ptn_bridge Date: Thu, 24 Jul 2025 16:02:55 +0800 Message-Id: <20250724080304.3572457-6-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250724080304.3572457-1-damon.ding@rock-chips.com> References: <20250724080304.3572457-1-damon.ding@rock-chips.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-HM-Tid: 0a983b75683803a3kunmbbba7af29ea0 X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZQ0MYGVZJSx9MSEkZTB0aGhhWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSU9PT0 hVSktLVUpCS0tZBg++ DKIM-Signature: a=rsa-sha256; b=I3k8wOYdkhKpFm2TzGVlBZ6mVlMcNdEg58YIbPs4FAT50bncGUnoSaK5CasFKJyVVeo7+sK8cWnMf2Etu4Mkj24pGnQW7DDThF4BqnvsbDItXWVcl0GX3ebbhekVWJl/l+9wCi++sft2SypvmS/+/+qpznEo8Wh5pnDg1kiukiU=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=ftWKcCAPncVuZGxO/NUOEgWcmkKrmQW+yGmcRXo934A=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" Use &analogix_dp_plat_data.bridge instead of &exynos_dp_device.ptn_bridge directly. Signed-off-by: Damon Ding Reviewed-by: Dmitry Baryshkov Tested-by: Heiko Stuebner ------ Changes in v3: - Fix the typographical error for &dp->plat_data.bridge. --- drivers/gpu/drm/exynos/exynos_dp.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/ex= ynos_dp.c index 5bcf41e0bd04..1e8f6b4d399e 100644 --- a/drivers/gpu/drm/exynos/exynos_dp.c +++ b/drivers/gpu/drm/exynos/exynos_dp.c @@ -36,7 +36,6 @@ struct exynos_dp_device { struct drm_encoder encoder; struct drm_connector *connector; - struct drm_bridge *ptn_bridge; struct drm_device *drm_dev; struct device *dev; =20 @@ -106,8 +105,8 @@ static int exynos_dp_bridge_attach(struct analogix_dp_p= lat_data *plat_data, dp->connector =3D connector; =20 /* Pre-empt DP connector creation if there's a bridge */ - if (dp->ptn_bridge) { - ret =3D drm_bridge_attach(&dp->encoder, dp->ptn_bridge, bridge, + if (plat_data->bridge) { + ret =3D drm_bridge_attach(&dp->encoder, plat_data->bridge, bridge, 0); if (ret) return ret; @@ -155,7 +154,7 @@ static int exynos_dp_bind(struct device *dev, struct de= vice *master, void *data) =20 dp->drm_dev =3D drm_dev; =20 - if (!dp->plat_data.panel && !dp->ptn_bridge) { + if (!dp->plat_data.panel && !dp->plat_data.bridge) { ret =3D exynos_dp_dt_parse_panel(dp); if (ret) return ret; @@ -232,6 +231,7 @@ static int exynos_dp_probe(struct platform_device *pdev) =20 /* The remote port can be either a panel or a bridge */ dp->plat_data.panel =3D panel; + dp->plat_data.bridge =3D bridge; dp->plat_data.dev_type =3D EXYNOS_DP; dp->plat_data.power_on =3D exynos_dp_poweron; dp->plat_data.power_off =3D exynos_dp_poweroff; @@ -239,8 +239,6 @@ static int exynos_dp_probe(struct platform_device *pdev) dp->plat_data.get_modes =3D exynos_dp_get_modes; dp->plat_data.skip_connector =3D !!bridge; =20 - dp->ptn_bridge =3D bridge; - out: dp->adp =3D analogix_dp_probe(dev, &dp->plat_data); if (IS_ERR(dp->adp)) --=20 2.34.1 From nobody Mon Oct 6 06:32:11 2025 Received: from mail-m32122.qiye.163.com (mail-m32122.qiye.163.com [220.197.32.122]) (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 97657274FF5; Thu, 24 Jul 2025 08:18:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.32.122 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753345133; cv=none; b=mPf7yHNxENDyOGzTVUa8/gTXG+Vn9RtWvVZVEZTM5+Kt3lE4i+x6Pmwlen7PxKp353vbC8BdKFBWRiyH7/HOiomoXHsBRMG714hHh+Iof8rh4J/oZzXIGDiHKtcAPRzqXZ8iIH547OHfkFOLdeQf7hN34rZ55fcVbZdU8nPQuBA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753345133; c=relaxed/simple; bh=D4O6+IZwQcZkm/LCKBJpW+5k3LU4a066cVhpttkbT3g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=unnltb9brirmRPPn6WOwjpINY2TVa6Zv02NCTpK8amIgId/Hm/AzIAkholvgy9reRMD9norKH7kJIVbMJrCgvSDwOucB8CxyLy1AHFD0ZEsv0HO6aYGbK8NQE+UiCyDA/GNmi4y1CDyf61nv4/ZPcp6gSbHm69kUhSt27Lv05yg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=IjVR4Stf; arc=none smtp.client-ip=220.197.32.122 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) header.d=rock-chips.com header.i=@rock-chips.com header.b="IjVR4Stf" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id 1d1c343e3; Thu, 24 Jul 2025 16:03:29 +0800 (GMT+08:00) From: Damon Ding To: andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org Cc: Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, jingoohan1@gmail.com, inki.dae@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, krzk@kernel.org, alim.akhtar@samsung.com, hjc@rock-chips.com, heiko@sntech.de, andy.yan@rock-chips.com, dmitry.baryshkov@oss.qualcomm.com, l.stach@pengutronix.de, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, Damon Ding Subject: [PATCH v3 06/14] drm/bridge: exynos_dp: Remove unused &exynos_dp_device.connector Date: Thu, 24 Jul 2025 16:02:56 +0800 Message-Id: <20250724080304.3572457-7-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250724080304.3572457-1-damon.ding@rock-chips.com> References: <20250724080304.3572457-1-damon.ding@rock-chips.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-HM-Tid: 0a983b7571e103a3kunmbbba7af29ee7 X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZGU9JTlYdHkhOGk8YGh8dHxhWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSU9PT0 hVSktLVUpCS0tZBg++ DKIM-Signature: a=rsa-sha256; b=IjVR4StfYegeQwZGEx6upd0cgwFT6wvzbKO5XBUrMCMqyGfsSfWnGbizh3QBNMM02QP5Cbcnk7BjsnoffMGHFYyP/VCXVjYvLxja3Exz64w62o2Hvq5KNJcz9iprWRY2rsxcTsIkE5nwnP/FHcW4jpx14nOaaLdFCnZu5gjm4sM=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=kJrmzWG8o3w3Fx2XvyBvGH6uPr9lyKcjsz1Ja3HmYE0=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" The &exynos_dp_device.connector is assigned in exynos_dp_bridge_attach() but never used. It should make sense to remove it. Signed-off-by: Damon Ding Reviewed-by: Dmitry Baryshkov Tested-by: Heiko Stuebner --- drivers/gpu/drm/exynos/exynos_dp.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/ex= ynos_dp.c index 1e8f6b4d399e..004ab9db5216 100644 --- a/drivers/gpu/drm/exynos/exynos_dp.c +++ b/drivers/gpu/drm/exynos/exynos_dp.c @@ -35,7 +35,6 @@ =20 struct exynos_dp_device { struct drm_encoder encoder; - struct drm_connector *connector; struct drm_device *drm_dev; struct device *dev; =20 @@ -102,8 +101,6 @@ static int exynos_dp_bridge_attach(struct analogix_dp_p= lat_data *plat_data, struct exynos_dp_device *dp =3D to_dp(plat_data); int ret; =20 - dp->connector =3D connector; - /* Pre-empt DP connector creation if there's a bridge */ if (plat_data->bridge) { ret =3D drm_bridge_attach(&dp->encoder, plat_data->bridge, bridge, --=20 2.34.1 From nobody Mon Oct 6 06:32:11 2025 Received: from mail-m32121.qiye.163.com (mail-m32121.qiye.163.com [220.197.32.121]) (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 6A1D72D29B1; Thu, 24 Jul 2025 12:39:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.32.121 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753360777; cv=none; b=UlpS8MFmlx5MkgCSJNBM+iGloh2K4Y1/COjGI6av/pJJOZX1nF3CWKlrLbeX+vRXVvQx8804b0zaEcAJDbjeJ4IKypAsXHLmwnyppW0ZzbvV9/eXGs/7BhAu5UrIvxL6sTBKoMVSh8wahtVYYjgsKGWOgbfKonJOMy2r2+U8Kn0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753360777; c=relaxed/simple; bh=Bc8Dpcjbg42WAE07UJNo2a4cH1Xlm64jzkwIyqufsmk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EU/rERquL5gRZ0oDLuW/APiOtUdpJWdFtRMJNBxHU3H9qGWcMkFKp74w1v0BYfKgUlHe/eOdwDkWy1cWEGP32jtyyA3o83uBHB/ZUyHH0pIo8+oOAaqJNn1OUn6uygi+ZYnviLlHZn4jIIsoJBl6JBH43mciMKaoVInN/vayqF0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=QaQNRK3Q; arc=none smtp.client-ip=220.197.32.121 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) header.d=rock-chips.com header.i=@rock-chips.com header.b="QaQNRK3Q" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id 1d1c343f2; Thu, 24 Jul 2025 16:03:31 +0800 (GMT+08:00) From: Damon Ding To: andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org Cc: Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, jingoohan1@gmail.com, inki.dae@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, krzk@kernel.org, alim.akhtar@samsung.com, hjc@rock-chips.com, heiko@sntech.de, andy.yan@rock-chips.com, dmitry.baryshkov@oss.qualcomm.com, l.stach@pengutronix.de, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, Damon Ding Subject: [PATCH v3 07/14] drm/bridge: analogix_dp: Remove redundant &analogix_dp_plat_data.skip_connector Date: Thu, 24 Jul 2025 16:02:57 +0800 Message-Id: <20250724080304.3572457-8-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250724080304.3572457-1-damon.ding@rock-chips.com> References: <20250724080304.3572457-1-damon.ding@rock-chips.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-HM-Tid: 0a983b757bb003a3kunmbbba7af29f23 X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZGU9DHlZIGhlLHh0fTktJHUxWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSU9PT0 hVSktLVUpCS0tZBg++ DKIM-Signature: a=rsa-sha256; b=QaQNRK3QEGCcr5kiHPuIHkgcxwxZtAhGh7KZXSv29zNte3URKg0wUa9bu8qS6hgxowGmIX2YTVbButpC/J9K2Z3HPT2yA2mYWAZHB7urymGWtCPNZaP+dRgl2zAj/qFwGwE3S2a6au3+M1/bGIaZ3AOXecsrea6VUDG39HzcFvU=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=elZsTON64Rbs8eA/23hDRwUKSVNerPscCvmr/a9VXzY=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" The &analogix_dp_plat_data.skip_connector related check can be replaced by &analogix_dp_plat_data.bridge. Signed-off-by: Damon Ding Reviewed-by: Dmitry Baryshkov Tested-by: Heiko Stuebner ------ Changes in v3: - Squash the Exynos side commit and the Analogix side commit together. --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 2 +- drivers/gpu/drm/exynos/exynos_dp.c | 1 - include/drm/bridge/analogix_dp.h | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index 0106e7e0f093..8ce7ceb70be4 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1050,7 +1050,7 @@ static int analogix_dp_bridge_attach(struct drm_bridg= e *bridge, return -EINVAL; } =20 - if (!dp->plat_data->skip_connector) { + if (!dp->plat_data->bridge) { connector =3D &dp->connector; connector->polled =3D DRM_CONNECTOR_POLL_HPD; =20 diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/ex= ynos_dp.c index 004ab9db5216..d8bea1a00815 100644 --- a/drivers/gpu/drm/exynos/exynos_dp.c +++ b/drivers/gpu/drm/exynos/exynos_dp.c @@ -234,7 +234,6 @@ static int exynos_dp_probe(struct platform_device *pdev) dp->plat_data.power_off =3D exynos_dp_poweroff; dp->plat_data.attach =3D exynos_dp_bridge_attach; dp->plat_data.get_modes =3D exynos_dp_get_modes; - dp->plat_data.skip_connector =3D !!bridge; =20 out: dp->adp =3D analogix_dp_probe(dev, &dp->plat_data); diff --git a/include/drm/bridge/analogix_dp.h b/include/drm/bridge/analogix= _dp.h index 15cb6b706e9f..202e5eafb2cc 100644 --- a/include/drm/bridge/analogix_dp.h +++ b/include/drm/bridge/analogix_dp.h @@ -30,7 +30,6 @@ struct analogix_dp_plat_data { struct drm_bridge *bridge; struct drm_encoder *encoder; struct drm_connector *connector; - bool skip_connector; =20 int (*power_on)(struct analogix_dp_plat_data *); int (*power_off)(struct analogix_dp_plat_data *); --=20 2.34.1 From nobody Mon Oct 6 06:32:11 2025 Received: from mail-m15588.qiye.163.com (mail-m15588.qiye.163.com [101.71.155.88]) (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 19F352749CA; Thu, 24 Jul 2025 08:03:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=101.71.155.88 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753344229; cv=none; b=sCa/8/gvl4ZxRaU0E7whQ1sM+7Ct0AdaDe1baeJHrW4B0r7kQbF2jQM4kCiV9WtIMlWnxX49Qd9dD0n69h/fiL9PQQCw2b8o+ya2BAZrpVkzFAXrkssXcy0KFctKBt2F0H7MJiRIQVJiHA65Wuw4UrFPGeCk7IeSFGj4/OJvSoI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753344229; c=relaxed/simple; bh=/FhEk66oN3deHI1hw47d/sWw3ypY5X1bnRxEuViiP7U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mu9UHa1nqNWcbOg1lC/fZcvMXvNTKvGsQD1zGIlTE3TNFZo07gCcdpwzWsFU/BKZQchpJSEl7h5wQ4R7bnkfM00gEiz65eYLUcDezO1FRZZAT2XoUqvG4JB852iPRpmPUFSXk67w0Irky4U7Vaoa1sixGXjUWRk6aQ5KELqElj0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=U1RyA7hS; arc=none smtp.client-ip=101.71.155.88 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) header.d=rock-chips.com header.i=@rock-chips.com header.b="U1RyA7hS" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id 1d1c34401; Thu, 24 Jul 2025 16:03:34 +0800 (GMT+08:00) From: Damon Ding To: andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org Cc: Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, jingoohan1@gmail.com, inki.dae@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, krzk@kernel.org, alim.akhtar@samsung.com, hjc@rock-chips.com, heiko@sntech.de, andy.yan@rock-chips.com, dmitry.baryshkov@oss.qualcomm.com, l.stach@pengutronix.de, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, Damon Ding Subject: [PATCH v3 08/14] drm/bridge: analogix_dp: Apply drm_bridge_connector helper Date: Thu, 24 Jul 2025 16:02:58 +0800 Message-Id: <20250724080304.3572457-9-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250724080304.3572457-1-damon.ding@rock-chips.com> References: <20250724080304.3572457-1-damon.ding@rock-chips.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-HM-Tid: 0a983b7584e103a3kunmbbba7af29f6c X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZGkxJTVZKTB9JGBgZTEpKTR5WFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSEpKQk 1VSktLVUpCWQY+ DKIM-Signature: a=rsa-sha256; b=U1RyA7hSDBPkU1zmjB4FuwQMl/T0wdWOBL6Nhi+O5urqi/3h6E6rkihTjLbHNPz5QcgzUOxKubM8KU2kfjsOGNaY4POZKWkH+Xh7btFbJHuvFHtKxeO/sk6B4itT/SCF4GkyDHpyjaWTkvmGanH06sMg8EWK8JN8A1vt8okDdQc=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=YU5E5IFf1IyArAT5oSNBUwHLOn0kFiNIk85hLUQSFBY=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" Apply drm_bridge_connector helper for Analogix DP driver. The following changes have been made: - Apply drm_bridge_connector helper to get rid of &drm_connector_funcs and &drm_connector_helper_funcs. - Remove unnecessary parameter struct drm_connector* for callback &analogix_dp_plat_data.attach. - Remove &analogix_dp_device.connector. - Convert analogix_dp_atomic_check()/analogix_dp_detect() to &drm_bridge_funcs.atomic_check()/&drm_bridge_funcs.detect(). - Split analogix_dp_get_modes() into &drm_bridge_funcs.get_modes() and &drm_bridge_funcs.edid_read(). Signed-off-by: Damon Ding Tested-by: Heiko Stuebner ------ Changes in v2: - For &drm_bridge.ops, remove DRM_BRIDGE_OP_HPD and add DRM_BRIDGE_OP_EDID. - Add analogix_dp_bridge_edid_read(). - Move &analogix_dp_plat_data.skip_connector deletion to the previous patches. Changes in v3: - Rebase with the new devm_drm_bridge_alloc() related commit 48f05c3b4b70 ("drm/bridge: analogix_dp: Use devm_drm_bridge_alloc() API"). - Expand the commit message. - Call drm_bridge_get_modes() in analogix_dp_bridge_get_modes() if the bridge is available. - Remove unnecessary parameter struct drm_connector* for callback &analogix_dp_plat_data.attach. - In order to decouple the connector driver and the bridge driver, move the bridge connector initilization to the Rockchip and Exynos sides. --- .../drm/bridge/analogix/analogix_dp_core.c | 145 ++++++++---------- .../drm/bridge/analogix/analogix_dp_core.h | 1 - drivers/gpu/drm/exynos/exynos_dp.c | 18 ++- .../gpu/drm/rockchip/analogix_dp-rockchip.c | 11 +- include/drm/bridge/analogix_dp.h | 3 +- 5 files changed, 88 insertions(+), 90 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index 8ce7ceb70be4..938925955ca5 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -947,24 +947,16 @@ static int analogix_dp_disable_psr(struct analogix_dp= _device *dp) return analogix_dp_send_psr_spd(dp, &psr_vsc, true); } =20 -static int analogix_dp_get_modes(struct drm_connector *connector) +static int analogix_dp_bridge_get_modes(struct drm_bridge *bridge, struct = drm_connector *connector) { - struct analogix_dp_device *dp =3D to_dp(connector); - const struct drm_edid *drm_edid; + struct analogix_dp_device *dp =3D to_dp(bridge); int num_modes =3D 0; =20 - if (dp->plat_data->panel) { + if (dp->plat_data->panel) num_modes +=3D drm_panel_get_modes(dp->plat_data->panel, connector); - } else { - drm_edid =3D drm_edid_read_ddc(connector, &dp->aux.ddc); =20 - drm_edid_connector_update(&dp->connector, drm_edid); - - if (drm_edid) { - num_modes +=3D drm_edid_connector_add_modes(&dp->connector); - drm_edid_free(drm_edid); - } - } + if (dp->plat_data->bridge) + num_modes +=3D drm_bridge_get_modes(dp->plat_data->bridge, connector); =20 if (dp->plat_data->get_modes) num_modes +=3D dp->plat_data->get_modes(dp->plat_data, connector); @@ -972,51 +964,39 @@ static int analogix_dp_get_modes(struct drm_connector= *connector) return num_modes; } =20 -static struct drm_encoder * -analogix_dp_best_encoder(struct drm_connector *connector) +static const struct drm_edid *analogix_dp_bridge_edid_read(struct drm_brid= ge *bridge, + struct drm_connector *connector) { - struct analogix_dp_device *dp =3D to_dp(connector); + struct analogix_dp_device *dp =3D to_dp(bridge); + const struct drm_edid *drm_edid =3D NULL; =20 - return dp->encoder; -} + drm_edid =3D drm_edid_read_ddc(connector, &dp->aux.ddc); =20 + if (dp->plat_data->get_modes) + dp->plat_data->get_modes(dp->plat_data, connector); =20 -static int analogix_dp_atomic_check(struct drm_connector *connector, - struct drm_atomic_state *state) -{ - struct analogix_dp_device *dp =3D to_dp(connector); - struct drm_connector_state *conn_state; - struct drm_crtc_state *crtc_state; + return drm_edid; +} =20 - conn_state =3D drm_atomic_get_new_connector_state(state, connector); - if (WARN_ON(!conn_state)) - return -ENODEV; +static int analogix_dp_bridge_atomic_check(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state, + struct drm_crtc_state *crtc_state, + struct drm_connector_state *conn_state) +{ + struct analogix_dp_device *dp =3D to_dp(bridge); =20 conn_state->self_refresh_aware =3D true; =20 - if (!conn_state->crtc) - return 0; - - crtc_state =3D drm_atomic_get_new_crtc_state(state, conn_state->crtc); - if (!crtc_state) - return 0; - if (crtc_state->self_refresh_active && !dp->psr_supported) return -EINVAL; =20 return 0; } =20 -static const struct drm_connector_helper_funcs analogix_dp_connector_helpe= r_funcs =3D { - .get_modes =3D analogix_dp_get_modes, - .best_encoder =3D analogix_dp_best_encoder, - .atomic_check =3D analogix_dp_atomic_check, -}; - static enum drm_connector_status -analogix_dp_detect(struct drm_connector *connector, bool force) +analogix_dp_bridge_detect(struct drm_bridge *bridge) { - struct analogix_dp_device *dp =3D to_dp(connector); + struct analogix_dp_device *dp =3D to_dp(bridge); enum drm_connector_status status =3D connector_status_disconnected; =20 if (dp->plat_data->panel) @@ -1028,21 +1008,11 @@ analogix_dp_detect(struct drm_connector *connector,= bool force) return status; } =20 -static const struct drm_connector_funcs analogix_dp_connector_funcs =3D { - .fill_modes =3D drm_helper_probe_single_connector_modes, - .detect =3D analogix_dp_detect, - .destroy =3D drm_connector_cleanup, - .reset =3D drm_atomic_helper_connector_reset, - .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, - .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, -}; - static int analogix_dp_bridge_attach(struct drm_bridge *bridge, struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct analogix_dp_device *dp =3D to_dp(bridge); - struct drm_connector *connector =3D NULL; int ret =3D 0; =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) { @@ -1050,31 +1020,8 @@ static int analogix_dp_bridge_attach(struct drm_brid= ge *bridge, return -EINVAL; } =20 - if (!dp->plat_data->bridge) { - connector =3D &dp->connector; - connector->polled =3D DRM_CONNECTOR_POLL_HPD; - - ret =3D drm_connector_init(dp->drm_dev, connector, - &analogix_dp_connector_funcs, - DRM_MODE_CONNECTOR_eDP); - if (ret) { - DRM_ERROR("Failed to initialize connector with drm\n"); - return ret; - } - - drm_connector_helper_add(connector, - &analogix_dp_connector_helper_funcs); - drm_connector_attach_encoder(connector, encoder); - } - - /* - * NOTE: the connector registration is implemented in analogix - * platform driver, that to say connector would be exist after - * plat_data->attch return, that's why we record the connector - * point after plat attached. - */ if (dp->plat_data->attach) { - ret =3D dp->plat_data->attach(dp->plat_data, bridge, connector); + ret =3D dp->plat_data->attach(dp->plat_data, bridge); if (ret) { DRM_ERROR("Failed at platform attach func\n"); return ret; @@ -1178,14 +1125,21 @@ static int analogix_dp_set_bridge(struct analogix_d= p_device *dp) } =20 static void analogix_dp_bridge_mode_set(struct drm_bridge *bridge, + struct drm_atomic_state *state, const struct drm_display_mode *mode) { struct analogix_dp_device *dp =3D to_dp(bridge); - struct drm_display_info *display_info =3D &dp->connector.display_info; struct video_info *video =3D &dp->video_info; struct device_node *dp_node =3D dp->dev->of_node; + struct drm_connector *connector; + struct drm_display_info *display_info; int vic; =20 + connector =3D drm_atomic_get_new_connector_for_encoder(state, bridge->enc= oder); + if (!connector) + return; + display_info =3D &connector->display_info; + /* Input video interlaces & hsync pol & vsync pol */ video->interlaced =3D !!(mode->flags & DRM_MODE_FLAG_INTERLACE); video->v_sync_polarity =3D !!(mode->flags & DRM_MODE_FLAG_NVSYNC); @@ -1269,7 +1223,7 @@ static void analogix_dp_bridge_atomic_enable(struct d= rm_bridge *bridge, new_crtc_state =3D drm_atomic_get_new_crtc_state(old_state, crtc); if (!new_crtc_state) return; - analogix_dp_bridge_mode_set(bridge, &new_crtc_state->adjusted_mode); + analogix_dp_bridge_mode_set(bridge, old_state, &new_crtc_state->adjusted_= mode); =20 old_crtc_state =3D drm_atomic_get_old_crtc_state(old_state, crtc); /* Not a full enable, just disable PSR and continue */ @@ -1385,7 +1339,11 @@ static const struct drm_bridge_funcs analogix_dp_bri= dge_funcs =3D { .atomic_enable =3D analogix_dp_bridge_atomic_enable, .atomic_disable =3D analogix_dp_bridge_atomic_disable, .atomic_post_disable =3D analogix_dp_bridge_atomic_post_disable, + .atomic_check =3D analogix_dp_bridge_atomic_check, .attach =3D analogix_dp_bridge_attach, + .get_modes =3D analogix_dp_bridge_get_modes, + .edid_read =3D analogix_dp_bridge_edid_read, + .detect =3D analogix_dp_bridge_detect, }; =20 static int analogix_dp_dt_parse_pdata(struct analogix_dp_device *dp) @@ -1615,6 +1573,7 @@ EXPORT_SYMBOL_GPL(analogix_dp_resume); =20 int analogix_dp_bind(struct analogix_dp_device *dp, struct drm_device *drm= _dev) { + struct drm_bridge *bridge =3D &dp->bridge; int ret; =20 dp->drm_dev =3D drm_dev; @@ -1628,7 +1587,16 @@ int analogix_dp_bind(struct analogix_dp_device *dp, = struct drm_device *drm_dev) return ret; } =20 - ret =3D drm_bridge_attach(dp->encoder, &dp->bridge, NULL, 0); + bridge->ops =3D DRM_BRIDGE_OP_DETECT | + DRM_BRIDGE_OP_EDID | + DRM_BRIDGE_OP_MODES; + bridge->of_node =3D dp->dev->of_node; + bridge->type =3D DRM_MODE_CONNECTOR_eDP; + ret =3D devm_drm_bridge_add(dp->dev, &dp->bridge); + if (ret) + goto err_unregister_aux; + + ret =3D drm_bridge_attach(dp->encoder, bridge, NULL, 0); if (ret) { DRM_ERROR("failed to create bridge (%d)\n", ret); goto err_unregister_aux; @@ -1646,7 +1614,6 @@ EXPORT_SYMBOL_GPL(analogix_dp_bind); void analogix_dp_unbind(struct analogix_dp_device *dp) { analogix_dp_bridge_disable(&dp->bridge); - dp->connector.funcs->destroy(&dp->connector); =20 drm_panel_unprepare(dp->plat_data->panel); =20 @@ -1656,7 +1623,8 @@ EXPORT_SYMBOL_GPL(analogix_dp_unbind); =20 int analogix_dp_start_crc(struct drm_connector *connector) { - struct analogix_dp_device *dp =3D to_dp(connector); + struct analogix_dp_device *dp; + struct drm_bridge *bridge; =20 if (!connector->state->crtc) { DRM_ERROR("Connector %s doesn't currently have a CRTC.\n", @@ -1664,13 +1632,26 @@ int analogix_dp_start_crc(struct drm_connector *con= nector) return -EINVAL; } =20 + bridge =3D drm_bridge_chain_get_first_bridge(connector->encoder); + if (bridge->type !=3D DRM_MODE_CONNECTOR_eDP) + return -EINVAL; + + dp =3D to_dp(bridge); + return drm_dp_start_crc(&dp->aux, connector->state->crtc); } EXPORT_SYMBOL_GPL(analogix_dp_start_crc); =20 int analogix_dp_stop_crc(struct drm_connector *connector) { - struct analogix_dp_device *dp =3D to_dp(connector); + struct analogix_dp_device *dp; + struct drm_bridge *bridge; + + bridge =3D drm_bridge_chain_get_first_bridge(connector->encoder); + if (bridge->type !=3D DRM_MODE_CONNECTOR_eDP) + return -EINVAL; + + dp =3D to_dp(bridge); =20 return drm_dp_stop_crc(&dp->aux); } diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.h index 91b215c6a0cf..17347448c6b0 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h @@ -154,7 +154,6 @@ struct analogix_dp_device { struct drm_encoder *encoder; struct device *dev; struct drm_device *drm_dev; - struct drm_connector connector; struct drm_bridge bridge; struct drm_dp_aux aux; struct clk *clock; diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/ex= ynos_dp.c index d8bea1a00815..39dfb7a44c85 100644 --- a/drivers/gpu/drm/exynos/exynos_dp.c +++ b/drivers/gpu/drm/exynos/exynos_dp.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -95,8 +96,7 @@ static int exynos_dp_get_modes(struct analogix_dp_plat_da= ta *plat_data, } =20 static int exynos_dp_bridge_attach(struct analogix_dp_plat_data *plat_data, - struct drm_bridge *bridge, - struct drm_connector *connector) + struct drm_bridge *bridge) { struct exynos_dp_device *dp =3D to_dp(plat_data); int ret; @@ -147,6 +147,7 @@ static int exynos_dp_bind(struct device *dev, struct de= vice *master, void *data) struct exynos_dp_device *dp =3D dev_get_drvdata(dev); struct drm_encoder *encoder =3D &dp->encoder; struct drm_device *drm_dev =3D data; + struct drm_connector *connector; int ret; =20 dp->drm_dev =3D drm_dev; @@ -168,10 +169,19 @@ static int exynos_dp_bind(struct device *dev, struct = device *master, void *data) dp->plat_data.encoder =3D encoder; =20 ret =3D analogix_dp_bind(dp->adp, dp->drm_dev); - if (ret) + if (ret) { dp->encoder.funcs->destroy(&dp->encoder); + return ret; + } + + connector =3D drm_bridge_connector_init(dp->drm_dev, dp->plat_data.encode= r); + if (IS_ERR(connector)) { + ret =3D PTR_ERR(connector); + dev_err(dp->dev, "Failed to initialize bridge_connector\n"); + return ret; + } =20 - return ret; + return drm_connector_attach_encoder(connector, dp->plat_data.encoder); } =20 static void exynos_dp_unbind(struct device *dev, struct device *master, diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/= drm/rockchip/analogix_dp-rockchip.c index 4ed6bf9e5377..250dc8cf2c38 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -392,6 +393,7 @@ static int rockchip_dp_bind(struct device *dev, struct = device *master, { struct rockchip_dp_device *dp =3D dev_get_drvdata(dev); struct drm_device *drm_dev =3D data; + struct drm_connector *connector; int ret; =20 dp->drm_dev =3D drm_dev; @@ -411,7 +413,14 @@ static int rockchip_dp_bind(struct device *dev, struct= device *master, if (ret) goto err_cleanup_encoder; =20 - return 0; + connector =3D drm_bridge_connector_init(dp->drm_dev, dp->plat_data.encode= r); + if (IS_ERR(connector)) { + ret =3D PTR_ERR(connector); + dev_err(dp->dev, "Failed to initialize bridge_connector\n"); + goto err_cleanup_encoder; + } + + return drm_connector_attach_encoder(connector, dp->plat_data.encoder); err_cleanup_encoder: dp->encoder.encoder.funcs->destroy(&dp->encoder.encoder); return ret; diff --git a/include/drm/bridge/analogix_dp.h b/include/drm/bridge/analogix= _dp.h index 202e5eafb2cc..5346cb1961c3 100644 --- a/include/drm/bridge/analogix_dp.h +++ b/include/drm/bridge/analogix_dp.h @@ -33,8 +33,7 @@ struct analogix_dp_plat_data { =20 int (*power_on)(struct analogix_dp_plat_data *); int (*power_off)(struct analogix_dp_plat_data *); - int (*attach)(struct analogix_dp_plat_data *, struct drm_bridge *, - struct drm_connector *); + int (*attach)(struct analogix_dp_plat_data *, struct drm_bridge *); int (*get_modes)(struct analogix_dp_plat_data *, struct drm_connector *); }; --=20 2.34.1 From nobody Mon Oct 6 06:32:11 2025 Received: from mail-m49219.qiye.163.com (mail-m49219.qiye.163.com [45.254.49.219]) (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 626DA2749D5; Thu, 24 Jul 2025 08:03:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.254.49.219 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753344230; cv=none; b=MkPqF3Uh4JsVIR8Bx5X5wrX5OwAaAmWsAGyLHWOgDvxlsSpaE3jIm161Ql0iwT2OtST0+MA26F6Qll+kDWtzsPoKQYGZ/xRAjwA7zNnt42P9iihqfpUcW3bVAjMXeFZTjlhRtIteZPNuC8CiXa1d9M/mNgSKPR+kRR5NESWzUAk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753344230; c=relaxed/simple; bh=qXnKK6jPp+NB28H5t8I/FZQINl8JQ7/yWKIZ0Nz/8H0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NT9949TeC2cdr9SuYgZOv0NOK46pLTx8jYwI+s2T6DhcXMMBcp8/PR5G/Zm+e4xqSd+9dAZFgah7bz4339Wk4ezFmiOIwJhsRiQL+IN3kDBlVLGo1ugsgQJPqdqu334hADWEnppcqEh7jOe5VjPl6yRqDqyx7Hyh8fFtO7y8bko= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=JubxdhRn; arc=none smtp.client-ip=45.254.49.219 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) header.d=rock-chips.com header.i=@rock-chips.com header.b="JubxdhRn" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id 1d1c34416; Thu, 24 Jul 2025 16:03:36 +0800 (GMT+08:00) From: Damon Ding To: andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org Cc: Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, jingoohan1@gmail.com, inki.dae@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, krzk@kernel.org, alim.akhtar@samsung.com, hjc@rock-chips.com, heiko@sntech.de, andy.yan@rock-chips.com, dmitry.baryshkov@oss.qualcomm.com, l.stach@pengutronix.de, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, Damon Ding Subject: [PATCH v3 09/14] drm/bridge: analogix_dp: Add support to find panel or bridge Date: Thu, 24 Jul 2025 16:02:59 +0800 Message-Id: <20250724080304.3572457-10-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250724080304.3572457-1-damon.ding@rock-chips.com> References: <20250724080304.3572457-1-damon.ding@rock-chips.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-HM-Tid: 0a983b758f0b03a3kunmbbba7af29fad X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZGkxMHVZCTE5ISUkdGB9IThpWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSU9PT0 hVSktLVUpCS0tZBg++ DKIM-Signature: a=rsa-sha256; b=JubxdhRnNhOYTJdDf9NEv/X5dHERJx813WCtCgy4QrxlTo8pKqy+B4fwQIlf5/puKDGeXGTXmFqfR6mGHE2bV2Ac1G7fDMoiLHra9L+V7Q1c3YPApu5fa+Zwgg6ASed5Lxp3ZvOH3lJ3ZyjLf8wRgIRrXwNWxhocmGc4rbHIwHw=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=+qFYdE2asUltTdumHH9zvwAqzVtqPVsA0nTWCLOWRh4=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" Since the panel/bridge should logically be positioned behind the Analogix bridge in the display pipeline, it makes sense to handle the panel/bridge parsing on the Analogix side. Signed-off-by: Damon Ding Tested-by: Heiko Stuebner --- .../drm/bridge/analogix/analogix_dp_core.c | 48 +++++++++++++++++++ include/drm/bridge/analogix_dp.h | 2 + 2 files changed, 50 insertions(+) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index 938925955ca5..b67087639609 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -20,12 +20,14 @@ #include =20 #include +#include #include #include #include #include #include #include +#include #include #include #include @@ -1671,6 +1673,52 @@ struct drm_dp_aux *analogix_dp_get_aux(struct analog= ix_dp_device *dp) } EXPORT_SYMBOL_GPL(analogix_dp_get_aux); =20 +static int analogix_dp_aux_done_probing(struct drm_dp_aux *aux) +{ + struct analogix_dp_device *dp =3D to_dp(aux); + struct analogix_dp_plat_data *plat_data =3D dp->plat_data; + int port =3D plat_data->dev_type =3D=3D EXYNOS_DP ? 0 : 1; + int ret; + + /* + * If drm_of_find_panel_or_bridge() returns -ENODEV, there may be no vali= d panel + * or bridge nodes. The driver should go on for the driver-free bridge or= the DP + * mode applications. + */ + ret =3D drm_of_find_panel_or_bridge(dp->dev->of_node, port, 0, + &plat_data->panel, &plat_data->bridge); + if (ret && ret !=3D -ENODEV) + return ret; + + return component_add(dp->dev, plat_data->ops); +} + +int analogix_dp_find_panel_or_bridge(struct analogix_dp_device *dp) +{ + int ret; + + ret =3D devm_of_dp_aux_populate_bus(&dp->aux, analogix_dp_aux_done_probin= g); + if (ret) { + /* + * If devm_of_dp_aux_populate_bus() returns -ENODEV, the done_probing() = will + * not be called because there are no EP devices. Then the callback func= tion + * analogix_dp_aux_done_probing() will be called directly in order to su= pport + * the other valid DT configurations. + * + * NOTE: The devm_of_dp_aux_populate_bus() is allowed to return -EPROBE_= DEFER. + */ + if (ret !=3D -ENODEV) { + dev_err(dp->dev, "failed to populate aux bus\n"); + return ret; + } + + return analogix_dp_aux_done_probing(&dp->aux); + } + + return 0; +} +EXPORT_SYMBOL_GPL(analogix_dp_find_panel_or_bridge); + MODULE_AUTHOR("Jingoo Han "); MODULE_DESCRIPTION("Analogix DP Core Driver"); MODULE_LICENSE("GPL v2"); diff --git a/include/drm/bridge/analogix_dp.h b/include/drm/bridge/analogix= _dp.h index 5346cb1961c3..8558fb9384a1 100644 --- a/include/drm/bridge/analogix_dp.h +++ b/include/drm/bridge/analogix_dp.h @@ -30,6 +30,7 @@ struct analogix_dp_plat_data { struct drm_bridge *bridge; struct drm_encoder *encoder; struct drm_connector *connector; + const struct component_ops *ops; =20 int (*power_on)(struct analogix_dp_plat_data *); int (*power_off)(struct analogix_dp_plat_data *); @@ -51,5 +52,6 @@ int analogix_dp_stop_crc(struct drm_connector *connector); =20 struct analogix_dp_plat_data *analogix_dp_aux_to_plat_data(struct drm_dp_a= ux *aux); struct drm_dp_aux *analogix_dp_get_aux(struct analogix_dp_device *dp); +int analogix_dp_find_panel_or_bridge(struct analogix_dp_device *dp); =20 #endif /* _ANALOGIX_DP_H_ */ --=20 2.34.1 From nobody Mon Oct 6 06:32:11 2025 Received: from mail-m3298.qiye.163.com (mail-m3298.qiye.163.com [220.197.32.98]) (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 50C5A27780C; Thu, 24 Jul 2025 08:39:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.32.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753346359; cv=none; b=qTwQKnf4/qdvAwAeDr1lxTJt6LZwxlV1PoWonksUJeTK6qhdSsCXwPnYJ3T849VzjE08lEKdqWaOtiOcPrAPHcH41md/F6BXuKJd5k+3uIylqr552YKDNGKLRuj8HXn4Gv1CHz387QRCp8VFezf8vtsRbiiAIRX7Z2E5gRreLbc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753346359; c=relaxed/simple; bh=8BaD5j84xOzKkBX9D7v36H+105hLMQE6rqvmqiuudBE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=XEUSFTS97GVj3xKn7S+5a2j9/RLaelyOUkS1/Sqom+DeosRnKWDC+ZiuwlfRuBkjUmDT/yF0GKbzm8CxRVwcnntpJmhSMcysLuaJKsFRl3Hb0AkBdo0fr8+zeYEH6zOW1Oj7+8DnqbImvQo0Htjzqef146wAoyK8cXY4jDmKKYs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=JwLof/Ae; arc=none smtp.client-ip=220.197.32.98 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) header.d=rock-chips.com header.i=@rock-chips.com header.b="JwLof/Ae" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id 1d1c3442d; Thu, 24 Jul 2025 16:03:39 +0800 (GMT+08:00) From: Damon Ding To: andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org Cc: Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, jingoohan1@gmail.com, inki.dae@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, krzk@kernel.org, alim.akhtar@samsung.com, hjc@rock-chips.com, heiko@sntech.de, andy.yan@rock-chips.com, dmitry.baryshkov@oss.qualcomm.com, l.stach@pengutronix.de, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, Damon Ding Subject: [PATCH v3 10/14] drm/rockchip: analogix_dp: Apply analogix_dp_find_panel_or_bridge() Date: Thu, 24 Jul 2025 16:03:00 +0800 Message-Id: <20250724080304.3572457-11-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250724080304.3572457-1-damon.ding@rock-chips.com> References: <20250724080304.3572457-1-damon.ding@rock-chips.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-HM-Tid: 0a983b7599db03a3kunmbbba7af2a011 X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZGk1DSVZKTBkZGUoYHkpITU5WFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSU9PT0 hVSktLVUpCS0tZBg++ DKIM-Signature: a=rsa-sha256; b=JwLof/AecGjHyL7bqO8nAoDMBhdinatwbZwmCGW7QWJ0h+MSreSnnGk+cMafFKWvMomcKDGFWdkOVt7OZyADGFg57d+7ST8oNSLWegZwlU7OzS5p2ZRZG7kA1YS2RKDqHoa6wF8jtoPU3KAuGW2H3vcPvJSIYsdIyLieq3GHQHo=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=4FmX0hJrax5z0SZLorVZJncCs9XNPWI37hiQWr8E528=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" Apply analogix_dp_find_panel_or_bridge() in order to move the panel/bridge parsing from Rockchip side to the Analogix side. Signed-off-by: Damon Ding Reviewed-by: Dmitry Baryshkov Tested-by: Heiko Stuebner --- .../gpu/drm/rockchip/analogix_dp-rockchip.c | 38 +------------------ 1 file changed, 2 insertions(+), 36 deletions(-) diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/= drm/rockchip/analogix_dp-rockchip.c index 250dc8cf2c38..f92e663dc61a 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -21,14 +21,12 @@ #include