1 /* 2 * (C) Copyright 2008-2017 Fuzhou Rockchip Electronics Co., Ltd 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 7 #ifndef _ROCKCHIP_CRTC_H_ 8 #define _ROCKCHIP_CRTC_H_ 9 10 #define VOP2_MAX_VP 4 11 12 struct rockchip_vp { 13 bool enable; 14 bool xmirror_en; 15 bool sharp_en; 16 u8 bg_ovl_dly; 17 u8 primary_plane_id; 18 u8 cursor_plane_id; 19 u8 dclk_div; 20 int output_type; 21 u32 plane_mask; 22 }; 23 24 struct rockchip_crtc { 25 const struct rockchip_crtc_funcs *funcs; 26 const void *data; 27 struct drm_display_mode active_mode; 28 struct rockchip_vp vps[4]; 29 bool hdmi_hpd : 1; 30 bool active : 1; 31 bool assign_plane : 1; 32 bool splice_mode : 1; 33 u8 splice_crtc_id; 34 }; 35 36 struct rockchip_crtc_funcs { 37 int (*reset) (struct udevice *dev, u32 axi, u32 vp_mask, u32 plane_mask); 38 int (*preinit)(struct display_state *state); 39 int (*init)(struct display_state *state); 40 void (*deinit)(struct display_state *state); 41 int (*set_plane)(struct display_state *state); 42 int (*prepare)(struct display_state *state); 43 int (*enable)(struct display_state *state); 44 int (*post_enable)(struct display_state *state); 45 int (*disable)(struct display_state *state); 46 void (*unprepare)(struct display_state *state); 47 int (*fixup_dts)(struct display_state *state, void *blob); 48 int (*send_mcu_cmd)(struct display_state *state, u32 type, u32 value); 49 int (*check)(struct display_state *state); 50 int (*mode_valid)(struct display_state *state); 51 int (*mode_fixup)(struct display_state *state); 52 int (*plane_check)(struct display_state *state); 53 int (*regs_dump)(struct display_state *state); 54 int (*active_regs_dump)(struct display_state *state); 55 int (*apply_soft_te)(struct display_state *state); 56 }; 57 58 struct vop_data; 59 struct vop2_data; 60 extern const struct rockchip_crtc_funcs rockchip_vop_funcs; 61 extern const struct rockchip_crtc_funcs rockchip_vop2_funcs; 62 extern const struct vop_data rk3036_vop; 63 extern const struct vop_data px30_vop_lit; 64 extern const struct vop_data px30_vop_big; 65 extern const struct vop_data rk3308_vop; 66 extern const struct vop_data rk1808_vop; 67 extern const struct vop_data rk3288_vop_big; 68 extern const struct vop_data rk3288_vop_lit; 69 extern const struct vop_data rk3368_vop; 70 extern const struct vop_data rk3366_vop; 71 extern const struct vop_data rk3399_vop_big; 72 extern const struct vop_data rk3399_vop_lit; 73 extern const struct vop_data rk322x_vop; 74 extern const struct vop_data rk3328_vop; 75 extern const struct vop_data rk3506_vop; 76 extern const struct vop_data rv1106_vop; 77 extern const struct vop_data rv1108_vop; 78 extern const struct vop_data rv1126_vop; 79 extern const struct vop_data rv1126b_vop; 80 extern const struct vop2_data rk3528_vop; 81 extern const struct vop2_data rk3562_vop; 82 extern const struct vop2_data rk3568_vop; 83 extern const struct vop2_data rk3576_vop; 84 extern const struct vop2_data rk3576_vop_lit; 85 extern const struct vop2_data rk3588_vop; 86 #endif 87