Merge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0
[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
8 struct rk_display_device;
9
10 enum rk_display_priority {
11         DISPLAY_PRIORITY_TV = 0,
12         DISPLAY_PRIORITY_YPbPr,
13         DISPLAY_PRIORITY_VGA,
14         DISPLAY_PRIORITY_HDMI,
15         DISPLAY_PRIORITY_LCD,
16 };
17
18 /* This structure defines all the properties of a Display. */
19 struct rk_display_driver {
20         void (*suspend)(struct rk_display_device *, pm_message_t state);
21         void (*resume)(struct rk_display_device *);
22         int  (*probe)(struct rk_display_device *, void *);
23         int  (*remove)(struct rk_display_device *);
24 };
25
26 struct rk_display_ops {
27         int (*setenable)(struct rk_display_device *, int enable);
28         int (*getenable)(struct rk_display_device *);
29         int (*getstatus)(struct rk_display_device *);
30         int (*getmodelist)(struct rk_display_device *, struct list_head **modelist);
31         int (*setmode)(struct rk_display_device *, struct fb_videomode *mode);
32         int (*getmode)(struct rk_display_device *, struct fb_videomode *mode);
33 };
34
35 struct rk_display_device {
36         struct module *owner;                   /* Owner module */
37         struct rk_display_driver *driver;
38         struct device *parent;                  /* This is the parent */
39         struct device *dev;                     /* This is this display device */
40         struct mutex lock;
41         void *priv_data;
42         char type[16];
43         char *name;
44         int idx;
45         struct rk_display_ops *ops;
46         int priority;
47         struct list_head list;
48 };
49
50 struct rk_display_devicelist {
51         struct list_head list;
52         struct rk_display_device *dev;
53 };
54
55 extern struct rk_display_device *rk_display_device_register(struct rk_display_driver *driver,
56                                         struct device *dev, void *devdata);
57 extern void rk_display_device_unregister(struct rk_display_device *dev);
58
59 extern void rk_display_device_enable(struct rk_display_device *ddev);
60
61 extern void rk_display_device_enable_other(struct rk_display_device *ddev);
62 extern void rk_display_device_disable_other(struct rk_display_device *ddev);
63
64
65 extern void rk_display_device_select(int priority);
66
67 #define to_rk_display_device(obj) container_of(obj, struct rk_display_device, class_dev)
68
69 #endif