1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#ifndef _XILINX_DRM_DP_SUB_H_
19#define _XILINX_DRM_DP_SUB_H_
20
21#define XILINX_DRM_DP_SUB_NUM_LAYERS 2
22#define XILINX_DRM_DP_SUB_MAX_WIDTH 4096
23#define XILINX_DRM_DP_SUB_MAX_ALPHA 255
24
25struct drm_device;
26struct xilinx_drm_dp_sub;
27struct xilinx_drm_dp_sub_layer;
28
29int xilinx_drm_dp_sub_layer_check_size(struct xilinx_drm_dp_sub *dp_sub,
30 struct xilinx_drm_dp_sub_layer *layer,
31 uint32_t width, uint32_t height);
32int xilinx_drm_dp_sub_layer_set_fmt(struct xilinx_drm_dp_sub *dp_sub,
33 struct xilinx_drm_dp_sub_layer *layer,
34 uint32_t drm_fmt);
35uint32_t xilinx_drm_dp_sub_layer_get_fmt(struct xilinx_drm_dp_sub *dp_sub,
36 struct xilinx_drm_dp_sub_layer *layer);
37void xilinx_drm_dp_sub_layer_get_fmts(struct xilinx_drm_dp_sub *dp_sub,
38 struct xilinx_drm_dp_sub_layer *layer,
39 uint32_t **drm_fmts,
40 unsigned int *num_fmts);
41void xilinx_drm_dp_sub_layer_enable(struct xilinx_drm_dp_sub *dp_sub,
42 struct xilinx_drm_dp_sub_layer *layer);
43void xilinx_drm_dp_sub_layer_disable(struct xilinx_drm_dp_sub *dp_sub,
44 struct xilinx_drm_dp_sub_layer *layer);
45struct xilinx_drm_dp_sub_layer *
46xilinx_drm_dp_sub_layer_get(struct xilinx_drm_dp_sub *dp_sub, bool priv);
47void xilinx_drm_dp_sub_layer_put(struct xilinx_drm_dp_sub *dp_sub,
48 struct xilinx_drm_dp_sub_layer *layer);
49
50int xilinx_drm_dp_sub_set_output_fmt(struct xilinx_drm_dp_sub *dp_sub,
51 uint32_t drm_fmt);
52void xilinx_drm_dp_sub_set_bg_color(struct xilinx_drm_dp_sub *dp_sub,
53 u32 c0, u32 c1, u32 c2);
54void xilinx_drm_dp_sub_set_alpha(struct xilinx_drm_dp_sub *dp_sub, u32 alpha);
55void
56xilinx_drm_dp_sub_enable_alpha(struct xilinx_drm_dp_sub *dp_sub, bool enable);
57
58void xilinx_drm_dp_sub_enable_vblank(struct xilinx_drm_dp_sub *dp_sub,
59 void (*vblank_fn)(void *),
60 void *vblank_data);
61void xilinx_drm_dp_sub_disable_vblank(struct xilinx_drm_dp_sub *dp_sub);
62void xilinx_drm_dp_sub_handle_vblank(struct xilinx_drm_dp_sub *dp_sub);
63void xilinx_drm_dp_sub_enable(struct xilinx_drm_dp_sub *dp_sub);
64void xilinx_drm_dp_sub_disable(struct xilinx_drm_dp_sub *dp_sub);
65
66struct xilinx_drm_dp_sub *xilinx_drm_dp_sub_of_get(struct device_node *np);
67void xilinx_drm_dp_sub_put(struct xilinx_drm_dp_sub *dp_sub);
68
69#endif
70