From 1543e317f1da31b75942316931e8f491a8920811 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Thu, 04 Jan 2024 10:08:02 +0000
Subject: [PATCH] disable FB
---
kernel/drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 50 ++++++++++++++++----------------------------------
1 files changed, 16 insertions(+), 34 deletions(-)
diff --git a/kernel/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/kernel/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
index 326b571..b80ef0c 100644
--- a/kernel/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/kernel/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -39,7 +39,6 @@
#ifdef CONFIG_DRM_ANALOGIX_DP
#include <drm/bridge/analogix_dp.h>
#endif
-#include <dt-bindings/soc/rockchip-system-status.h>
#include <soc/rockchip/rockchip_dmc.h>
#include <soc/rockchip/rockchip-system-status.h>
@@ -223,7 +222,6 @@
struct dentry *debugfs;
struct drm_info_list *debugfs_files;
struct drm_property *plane_feature_prop;
- struct drm_property *plane_mask_prop;
struct drm_property *feature_prop;
bool is_iommu_enabled;
@@ -238,7 +236,6 @@
u32 background;
u32 line_flag;
u8 id;
- u8 plane_mask;
u64 soc_id;
struct drm_prop_enum_list *plane_name_list;
@@ -318,6 +315,8 @@
{ MEDIA_BUS_FMT_UYYVYY8_0_5X24, "UYYVYY8_0_5X24" },
{ MEDIA_BUS_FMT_YUV10_1X30, "YUV10_1X30" },
{ MEDIA_BUS_FMT_UYYVYY10_0_5X30, "UYYVYY10_0_5X30" },
+ { MEDIA_BUS_FMT_RGB565_2X8_LE, "RGB565_2X8_LE" },
+ { MEDIA_BUS_FMT_RGB666_3X6, "RGB666_3X6" },
{ MEDIA_BUS_FMT_RGB888_3X8, "RGB888_3X8" },
{ MEDIA_BUS_FMT_RGB888_DUMMY_4X8, "RGB888_DUMMY_4X8" },
{ MEDIA_BUS_FMT_RGB888_1X24, "RGB888_1X24" },
@@ -463,6 +462,11 @@
const struct vop_hdr_table *table = vop->data->hdr_table;
uint32_t sdr2hdr_eotf_oetf_yn[65];
uint32_t sdr2hdr_oetf_dx_dxpow[64];
+
+ if (cmd != SDR2HDR_FOR_BT2020 && cmd != SDR2HDR_FOR_HDR && cmd != SDR2HDR_FOR_HLG_HDR) {
+ DRM_WARN("unknown sdr2hdr oetf: %d\n", cmd);
+ return;
+ }
for (i = 0; i < 65; i++) {
if (cmd == SDR2HDR_FOR_BT2020)
@@ -1873,11 +1877,11 @@
to_vop_plane_state(plane->state);
#endif
- rockchip_drm_dbg(vop->dev, VOP_DEBUG_PLANE, "disable win%d-area%d by %s\n",
- win->win_id, win->area_id, current->comm);
-
if (!old_state->crtc)
return;
+
+ rockchip_drm_dbg(vop->dev, VOP_DEBUG_PLANE, "disable win%d-area%d by %s\n",
+ win->win_id, win->area_id, current->comm);
spin_lock(&vop->reg_lock);
@@ -3258,6 +3262,12 @@
{
struct vop *vop = to_vop(crtc);
+ /*
+ * If mcu_hold_mode is 1, set 1 to mcu_frame_st will
+ * refresh one frame from ddr. So mcu_frame_st is needed
+ * to be initialized as 0.
+ */
+ VOP_CTRL_SET(vop, mcu_frame_st, 0);
VOP_CTRL_SET(vop, mcu_clk_sel, 1);
VOP_CTRL_SET(vop, mcu_type, 1);
@@ -4627,32 +4637,6 @@
return 0;
}
-static int vop_crtc_create_plane_mask_property(struct vop *vop, struct drm_crtc *crtc)
-{
- struct drm_property *prop;
-
- static const struct drm_prop_enum_list props[] = {
- { ROCKCHIP_VOP_WIN0, "Win0" },
- { ROCKCHIP_VOP_WIN1, "Win1" },
- { ROCKCHIP_VOP_WIN2, "Win2" },
- { ROCKCHIP_VOP_WIN3, "Win3" },
- };
-
- prop = drm_property_create_bitmask(vop->drm_dev,
- DRM_MODE_PROP_IMMUTABLE, "PLANE_MASK",
- props, ARRAY_SIZE(props),
- 0xffffffff);
- if (!prop) {
- DRM_DEV_ERROR(vop->dev, "create plane_mask prop for vp%d failed\n", vop->id);
- return -ENOMEM;
- }
-
- vop->plane_mask_prop = prop;
- drm_object_attach_property(&crtc->base, vop->plane_mask_prop, vop->plane_mask);
-
- return 0;
-}
-
static int vop_crtc_create_feature_property(struct vop *vop, struct drm_crtc *crtc)
{
const struct vop_data *vop_data = vop->data;
@@ -4780,7 +4764,6 @@
VOP_ATTACH_MODE_CONFIG_PROP(tv_top_margin_property, 100);
VOP_ATTACH_MODE_CONFIG_PROP(tv_bottom_margin_property, 100);
#undef VOP_ATTACH_MODE_CONFIG_PROP
- vop_crtc_create_plane_mask_property(vop, crtc);
vop_crtc_create_feature_property(vop, crtc);
ret = drm_self_refresh_helper_init(crtc);
if (ret)
@@ -4949,7 +4932,6 @@
vop_area->name = devm_kstrdup(vop->dev, name, GFP_KERNEL);
num_wins++;
}
- vop->plane_mask |= BIT(vop_win->win_id);
}
vop->num_wins = num_wins;
--
Gitblit v1.6.2