xref: /rk3399_rockchip-uboot/drivers/video/drm/rockchip_crtc.h (revision 60e6e79d7a046ddb710e589fd559751760c3b206)
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