1 #ifndef _LINUX_DISPLAY_RK_H
2 #define _LINUX_DISPLAY_RK_H
4 #include <linux/device.h>
6 #include <linux/list.h>
7 #include <dt-bindings/rkfb/rk_fb.h>
9 struct rk_display_device;
11 enum rk_display_priority {
12 DISPLAY_PRIORITY_TV = 0,
13 DISPLAY_PRIORITY_YPBPR,
15 DISPLAY_PRIORITY_HDMI,
24 enum rk_display_property {
31 struct display_modelist {
32 struct list_head list;
33 struct fb_videomode mode;
35 unsigned int format_3d;
36 unsigned int detail_3d;
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 *);
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 (*getedidaudioinfo)(struct rk_display_device *,
65 char *audioinfo, int len);
66 int (*getmonspecs)(struct rk_display_device *,
67 struct fb_monspecs *monspecs);
70 struct rk_display_device {
71 struct module *owner; /* Owner module */
72 struct rk_display_driver *driver;
73 struct device *parent; /* This is the parent */
74 struct device *dev; /* This is this display device */
80 struct rk_display_ops *ops;
83 struct list_head list;
86 struct rk_display_devicelist {
87 struct list_head list;
88 struct rk_display_device *dev;
91 struct rk_display_device
92 *rk_display_device_register(struct rk_display_driver *driver,
93 struct device *parent, void *devdata);
94 void rk_display_device_unregister(struct rk_display_device *dev);
95 void rk_display_device_enable(struct rk_display_device *ddev);
96 void rk_display_device_enable_other(struct rk_display_device *ddev);
97 void rk_display_device_disable_other(struct rk_display_device *ddev);
98 void rk_display_device_select(int property, int priority);
100 int display_add_videomode(const struct fb_videomode *mode,
101 struct list_head *head);