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 u8 bg_ovl_dly; 15 }; 16 17 struct rockchip_crtc { 18 const struct rockchip_crtc_funcs *funcs; 19 const void *data; 20 struct drm_display_mode active_mode; 21 struct rockchip_vp vps[4]; 22 bool hdmi_hpd : 1; 23 bool active : 1; 24 }; 25 26 struct rockchip_crtc_funcs { 27 int (*preinit)(struct display_state *state); 28 int (*init)(struct display_state *state); 29 void (*deinit)(struct display_state *state); 30 int (*set_plane)(struct display_state *state); 31 int (*prepare)(struct display_state *state); 32 int (*enable)(struct display_state *state); 33 int (*disable)(struct display_state *state); 34 void (*unprepare)(struct display_state *state); 35 int (*fixup_dts)(struct display_state *state, void *blob); 36 int (*send_mcu_cmd)(struct display_state *state, u32 type, u32 value); 37 }; 38 39 struct vop_data; 40 struct vop2_data; 41 extern const struct rockchip_crtc_funcs rockchip_vop_funcs; 42 extern const struct rockchip_crtc_funcs rockchip_vop2_funcs; 43 extern const struct vop_data rk3036_vop; 44 extern const struct vop_data px30_vop_lit; 45 extern const struct vop_data px30_vop_big; 46 extern const struct vop_data rk3308_vop; 47 extern const struct vop_data rk1808_vop; 48 extern const struct vop_data rk3288_vop_big; 49 extern const struct vop_data rk3288_vop_lit; 50 extern const struct vop_data rk3368_vop; 51 extern const struct vop_data rk3366_vop; 52 extern const struct vop_data rk3399_vop_big; 53 extern const struct vop_data rk3399_vop_lit; 54 extern const struct vop_data rk322x_vop; 55 extern const struct vop_data rk3328_vop; 56 extern const struct vop_data rv1108_vop; 57 extern const struct vop_data rv1126_vop; 58 extern const struct vop2_data rk3568_vop; 59 #endif 60