video: screen-timeing: sdk mipi: The frame rate increased from 44 to 55
[firefly-linux-kernel-4.4.55.git] / include / linux / display-sys.h
1 #ifndef _LINUX_DISPLAY_RK_H
2 #define _LINUX_DISPLAY_RK_H
3
4 #include <linux/device.h>
5 #include <linux/fb.h>
6 #include <linux/list.h>
7 #include <dt-bindings/display/rk_fb.h>
8
9 struct rk_display_device;
10
11 enum rk_display_priority {
12         DISPLAY_PRIORITY_TV = 0,
13         DISPLAY_PRIORITY_YPBPR,
14         DISPLAY_PRIORITY_VGA,
15         DISPLAY_PRIORITY_HDMI,
16         DISPLAY_PRIORITY_LCD,
17 };
18
19 enum {
20         DISPLAY_SCALE_X = 0,
21         DISPLAY_SCALE_Y
22 };
23
24 enum rk_display_property {
25         DISPLAY_MAIN = 0,
26         DISPLAY_AUX
27 };
28
29
30 /* HDMI mode list*/
31 struct display_modelist {
32         struct list_head        list;
33         struct fb_videomode     mode;
34         unsigned int            vic;
35         unsigned int            format_3d;
36         unsigned int            detail_3d;
37 };
38
39 /* This structure defines all the properties of a Display. */
40 struct rk_display_driver {
41         void (*suspend)(struct rk_display_device *, pm_message_t state);
42         void (*resume)(struct rk_display_device *);
43         int  (*probe)(struct rk_display_device *, void *);
44         int  (*remove)(struct rk_display_device *);
45 };
46
47 struct rk_display_ops {
48         int (*setenable)(struct rk_display_device *, int enable);
49         int (*getenable)(struct rk_display_device *);
50         int (*getstatus)(struct rk_display_device *);
51         int (*getmodelist)(struct rk_display_device *,
52                            struct list_head **modelist);
53         int (*setmode)(struct rk_display_device *,
54                        struct fb_videomode *mode);
55         int (*getmode)(struct rk_display_device *,
56                        struct fb_videomode *mode);
57         int (*setscale)(struct rk_display_device *, int, int);
58         int (*getscale)(struct rk_display_device *, int);
59         int (*get3dmode)(struct rk_display_device *);
60         int (*set3dmode)(struct rk_display_device *, int);
61         int (*getcolor)(struct rk_display_device *, char *);
62         int (*setcolor)(struct rk_display_device *, const char *, int);
63         int (*setdebug)(struct rk_display_device *, int);
64         int (*getdebug)(struct rk_display_device *, char *);
65         int (*getedidaudioinfo)(struct rk_display_device *,
66                                 char *audioinfo, int len);
67         int (*getmonspecs)(struct rk_display_device *,
68                            struct fb_monspecs *monspecs);
69 };
70
71 struct rk_display_device {
72         struct module *owner;           /* Owner module */
73         struct rk_display_driver *driver;
74         struct device *parent;          /* This is the parent */
75         struct device *dev;             /* This is this display device */
76         struct mutex lock;
77         void *priv_data;
78         char type[16];
79         char *name;
80         int idx;
81         struct rk_display_ops *ops;
82         int priority;
83         int property;
84         struct list_head list;
85 };
86
87 struct rk_display_devicelist {
88         struct list_head list;
89         struct rk_display_device *dev;
90 };
91
92 struct rk_display_device
93         *rk_display_device_register(struct rk_display_driver *driver,
94                                     struct device *parent, void *devdata);
95 void rk_display_device_unregister(struct rk_display_device *dev);
96 void rk_display_device_enable(struct rk_display_device *ddev);
97 void rk_display_device_enable_other(struct rk_display_device *ddev);
98 void rk_display_device_disable_other(struct rk_display_device *ddev);
99 void rk_display_device_select(int property, int priority);
100
101 int display_add_videomode(const struct fb_videomode *mode,
102                           struct list_head *head);
103 #endif