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