1 #ifndef _LINUX_DISPLAY_RK_H
2 #define _LINUX_DISPLAY_RK_H
4 #include <linux/device.h>
6 #include <linux/list.h>
8 struct rk_display_device;
10 enum rk_display_priority {
11 DISPLAY_PRIORITY_TV = 0,
12 DISPLAY_PRIORITY_YPbPr,
14 DISPLAY_PRIORITY_HDMI,
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 *);
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);
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 */
45 struct rk_display_ops *ops;
47 struct list_head list;
50 struct rk_display_devicelist {
51 struct list_head list;
52 struct rk_display_device *dev;
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);
59 extern void rk_display_device_enable(struct rk_display_device *ddev);
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);
65 extern void rk_display_device_select(int priority);
67 #define to_rk_display_device(obj) container_of(obj, struct rk_display_device, class_dev)