hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
....@@ -39,7 +39,6 @@
3939 #ifdef CONFIG_DRM_ANALOGIX_DP
4040 #include <drm/bridge/analogix_dp.h>
4141 #endif
42
-#include <dt-bindings/soc/rockchip-system-status.h>
4342
4443 #include <soc/rockchip/rockchip_dmc.h>
4544 #include <soc/rockchip/rockchip-system-status.h>
....@@ -223,7 +222,6 @@
223222 struct dentry *debugfs;
224223 struct drm_info_list *debugfs_files;
225224 struct drm_property *plane_feature_prop;
226
- struct drm_property *plane_mask_prop;
227225 struct drm_property *feature_prop;
228226
229227 bool is_iommu_enabled;
....@@ -238,7 +236,6 @@
238236 u32 background;
239237 u32 line_flag;
240238 u8 id;
241
- u8 plane_mask;
242239 u64 soc_id;
243240 struct drm_prop_enum_list *plane_name_list;
244241
....@@ -318,6 +315,8 @@
318315 { MEDIA_BUS_FMT_UYYVYY8_0_5X24, "UYYVYY8_0_5X24" },
319316 { MEDIA_BUS_FMT_YUV10_1X30, "YUV10_1X30" },
320317 { MEDIA_BUS_FMT_UYYVYY10_0_5X30, "UYYVYY10_0_5X30" },
318
+ { MEDIA_BUS_FMT_RGB565_2X8_LE, "RGB565_2X8_LE" },
319
+ { MEDIA_BUS_FMT_RGB666_3X6, "RGB666_3X6" },
321320 { MEDIA_BUS_FMT_RGB888_3X8, "RGB888_3X8" },
322321 { MEDIA_BUS_FMT_RGB888_DUMMY_4X8, "RGB888_DUMMY_4X8" },
323322 { MEDIA_BUS_FMT_RGB888_1X24, "RGB888_1X24" },
....@@ -463,6 +462,11 @@
463462 const struct vop_hdr_table *table = vop->data->hdr_table;
464463 uint32_t sdr2hdr_eotf_oetf_yn[65];
465464 uint32_t sdr2hdr_oetf_dx_dxpow[64];
465
+
466
+ if (cmd != SDR2HDR_FOR_BT2020 && cmd != SDR2HDR_FOR_HDR && cmd != SDR2HDR_FOR_HLG_HDR) {
467
+ DRM_WARN("unknown sdr2hdr oetf: %d\n", cmd);
468
+ return;
469
+ }
466470
467471 for (i = 0; i < 65; i++) {
468472 if (cmd == SDR2HDR_FOR_BT2020)
....@@ -1873,11 +1877,11 @@
18731877 to_vop_plane_state(plane->state);
18741878 #endif
18751879
1876
- rockchip_drm_dbg(vop->dev, VOP_DEBUG_PLANE, "disable win%d-area%d by %s\n",
1877
- win->win_id, win->area_id, current->comm);
1878
-
18791880 if (!old_state->crtc)
18801881 return;
1882
+
1883
+ rockchip_drm_dbg(vop->dev, VOP_DEBUG_PLANE, "disable win%d-area%d by %s\n",
1884
+ win->win_id, win->area_id, current->comm);
18811885
18821886 spin_lock(&vop->reg_lock);
18831887
....@@ -3258,6 +3262,12 @@
32583262 {
32593263 struct vop *vop = to_vop(crtc);
32603264
3265
+ /*
3266
+ * If mcu_hold_mode is 1, set 1 to mcu_frame_st will
3267
+ * refresh one frame from ddr. So mcu_frame_st is needed
3268
+ * to be initialized as 0.
3269
+ */
3270
+ VOP_CTRL_SET(vop, mcu_frame_st, 0);
32613271 VOP_CTRL_SET(vop, mcu_clk_sel, 1);
32623272 VOP_CTRL_SET(vop, mcu_type, 1);
32633273
....@@ -4627,32 +4637,6 @@
46274637 return 0;
46284638 }
46294639
4630
-static int vop_crtc_create_plane_mask_property(struct vop *vop, struct drm_crtc *crtc)
4631
-{
4632
- struct drm_property *prop;
4633
-
4634
- static const struct drm_prop_enum_list props[] = {
4635
- { ROCKCHIP_VOP_WIN0, "Win0" },
4636
- { ROCKCHIP_VOP_WIN1, "Win1" },
4637
- { ROCKCHIP_VOP_WIN2, "Win2" },
4638
- { ROCKCHIP_VOP_WIN3, "Win3" },
4639
- };
4640
-
4641
- prop = drm_property_create_bitmask(vop->drm_dev,
4642
- DRM_MODE_PROP_IMMUTABLE, "PLANE_MASK",
4643
- props, ARRAY_SIZE(props),
4644
- 0xffffffff);
4645
- if (!prop) {
4646
- DRM_DEV_ERROR(vop->dev, "create plane_mask prop for vp%d failed\n", vop->id);
4647
- return -ENOMEM;
4648
- }
4649
-
4650
- vop->plane_mask_prop = prop;
4651
- drm_object_attach_property(&crtc->base, vop->plane_mask_prop, vop->plane_mask);
4652
-
4653
- return 0;
4654
-}
4655
-
46564640 static int vop_crtc_create_feature_property(struct vop *vop, struct drm_crtc *crtc)
46574641 {
46584642 const struct vop_data *vop_data = vop->data;
....@@ -4780,7 +4764,6 @@
47804764 VOP_ATTACH_MODE_CONFIG_PROP(tv_top_margin_property, 100);
47814765 VOP_ATTACH_MODE_CONFIG_PROP(tv_bottom_margin_property, 100);
47824766 #undef VOP_ATTACH_MODE_CONFIG_PROP
4783
- vop_crtc_create_plane_mask_property(vop, crtc);
47844767 vop_crtc_create_feature_property(vop, crtc);
47854768 ret = drm_self_refresh_helper_init(crtc);
47864769 if (ret)
....@@ -4949,7 +4932,6 @@
49494932 vop_area->name = devm_kstrdup(vop->dev, name, GFP_KERNEL);
49504933 num_wins++;
49514934 }
4952
- vop->plane_mask |= BIT(vop_win->win_id);
49534935 }
49544936
49554937 vop->num_wins = num_wins;