Merge branch android-common-3.10
[firefly-linux-kernel-4.4.55.git] / drivers / video / rockchip / rk_drm_fb.h
1 #include <linux/rk_fb.h>
2
3 #define RK_DRM_WIN_MASK  0x7fff
4 #define RK_DRM_CMD_MASK  0x7fff
5
6 #define RK_DRM_CALLBACK_VSYNC     0x1
7 #define RK_DRM_CALLBACK_HOTPLUG   0x2
8
9 #define RK_DRM_SCREEN_SET       1<<0
10 #define RK_DRM_SCREEN_BLANK     1<<1
11 #define RK_DRM_WIN_COMMIT       1<<2
12 #define RK_DRM_DISPLAY_COMMIT   1<<3
13
14 enum drm_screen_type {
15         RK_DRM_PRIMARY_SCREEN = 0,
16         RK_DRM_EXTEND_SCREEN,
17         RK_DRM_MAX_SCREEN_NUM,
18 };
19 struct rk_win_data {
20         unsigned int            win_id;
21         enum data_format        format;
22         unsigned int            xpos;
23         unsigned int            ypos;
24         unsigned int            xact;
25         unsigned int            yact;
26         unsigned int            xsize;
27         unsigned int            ysize;
28         unsigned int            xvir;
29
30         dma_addr_t              yrgb_addr;
31         dma_addr_t              uv_addr;
32         
33         bool                    enabled;
34 };
35
36 struct rk_drm_display {
37 /***** hardware define *****/ 
38         enum drm_screen_type screen_type;
39
40         struct list_head *modelist;
41         int num_videomode;
42         int best_mode;
43         bool is_connected;
44
45 /***** user fill info  *****/
46         struct fb_videomode *mode;
47         bool enable;
48         struct rk_win_data win[RK30_MAX_LAYER_SUPPORT]; 
49         int num_win;
50
51         void (*event_call_back)(struct rk_drm_display *drm_disp,int win_id,int event);
52 };
53
54 struct rk_drm_screen_private {
55         struct rk_drm_display drm_disp;
56         struct rk_screen screen;
57         atomic_t wait_vsync_done;
58         wait_queue_head_t wait_vsync_queue;
59         struct rk_fb_trsm_ops *trsm_ops;
60         struct rk_lcdc_driver *lcdc_dev_drv;
61
62         struct rk_display_device *ex_display;
63 };
64 struct rk_drm_private {
65         struct rk_drm_screen_private screen_priv[RK_DRM_MAX_SCREEN_NUM];
66         int num_screen;
67
68         int disp_mode;
69 };
70
71 extern struct rk_drm_display *rk_drm_get_diplay(int screen_type);
72 extern int rk_drm_disp_handle(struct rk_drm_display *drm_disp,unsigned int win_id,unsigned int cmd_id);