1 #include <linux/rk_fb.h>
3 #define RK_DRM_WIN_MASK 0x7fff
4 #define RK_DRM_CMD_MASK 0x7fff
6 #define RK_DRM_CALLBACK_VSYNC 0x1
7 #define RK_DRM_CALLBACK_HOTPLUG 0x2
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
14 enum drm_screen_type {
15 RK_DRM_PRIMARY_SCREEN = 0,
17 RK_DRM_MAX_SCREEN_NUM,
21 enum data_format format;
36 struct rk_drm_display {
37 /***** hardware define *****/
38 enum drm_screen_type screen_type;
40 struct list_head *modelist;
45 /***** user fill info *****/
46 struct fb_videomode *mode;
48 struct rk_win_data win[RK30_MAX_LAYER_SUPPORT];
51 void (*event_call_back)(struct rk_drm_display *drm_disp,int win_id,int event);
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;
62 struct rk_display_device *ex_display;
64 struct rk_drm_private {
65 struct rk_drm_screen_private screen_priv[RK_DRM_MAX_SCREEN_NUM];
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);