Merge remote-tracking branch 'stable/linux-3.0.y' into develop-3.0-jb
[firefly-linux-kernel-4.4.55.git] / include / linux / hdmi.h
1 /* include/linux/hdmi.h\r
2  *\r
3  * This program is free software; you can redistribute it and/or modify\r
4  * it under the terms of the GNU General Public License version 2 as\r
5  * published by the Free Software Foundation.\r
6  *\r
7 */\r
8 \r
9 #ifndef __LINUX_HDMI_CORE_H\r
10 #define __LINUX_HDMI_CORE_H\r
11 \r
12 #include <linux/device.h>\r
13 #include <linux/workqueue.h>\r
14 #include <linux/i2c.h>\r
15 #include <linux/completion.h>\r
16 #include <linux/wakelock.h>\r
17 \r
18 extern int debug_en;\r
19 \r
20 #define hdmi_dbg(dev, format, arg...)           \\r
21 do{\\r
22         if(debug_en == 1) \\r
23                 dev_printk(KERN_INFO , dev , format , ## arg);\\r
24 }while(0)\r
25 \r
26 \r
27 \r
28 typedef int             BOOL;\r
29 \r
30 #define TRUE            1\r
31 #define FALSE           0\r
32 #define HDMI_DISABLE   0\r
33 #define HDMI_ENABLE    1\r
34 \r
35 #define MIN_SCALE               80\r
36 /* mouse event */\r
37 #define MOUSE_NONE                      0x00\r
38 #define MOUSE_LEFT_PRESS        0x01\r
39 #define MOUSE_RIGHT_PRESS       0x02\r
40 #define MOUSE_MIDDLE_PRESS      0x04\r
41 #define HDMI_MOUSE_EVENT        MOUSE_NONE      \r
42 /* mode */\r
43 #define DISP_ON_LCD                             0\r
44 #define DISP_ON_HDMI                    1\r
45 #define DISP_ON_LCD_AND_HDMI    2\r
46 /* dual display */\r
47 #ifdef CONFIG_HDMI_DUAL_DISP\r
48 #define DUAL_DISP_CAP           HDMI_ENABLE \r
49 #define HDMI_DEFAULT_MODE       DISP_ON_LCD_AND_HDMI\r
50 #else\r
51 #define DUAL_DISP_CAP           HDMI_DISABLE \r
52 #define HDMI_DEFAULT_MODE       DISP_ON_HDMI\r
53 #endif\r
54 /* resolution */\r
55 #define HDMI_1920x1080p_50Hz    0\r
56 #define HDMI_1920x1080p_60Hz    1\r
57 #define HDMI_1280x720p_50Hz     2\r
58 #define HDMI_1280x720p_60Hz             3\r
59 #define HDMI_720x576p_50Hz_4x3  4\r
60 #define HDMI_720x576p_50Hz_16x9 5\r
61 #define HDMI_720x480p_60Hz_4x3  6\r
62 #define HDMI_720x480p_60Hz_16x9 7\r
63 \r
64 /* HDMI default resolution */\r
65 #define HDMI_DEFAULT_RESOLUTION  HDMI_1920x1080p_50Hz\r
66 /* I2S Fs */\r
67 #define HDMI_I2S_Fs_44100 0\r
68 #define HDMI_I2S_Fs_48000 2\r
69 /* I2S default sample rate */\r
70 #define HDMI_I2S_DEFAULT_Fs HDMI_I2S_Fs_44100\r
71 \r
72 \r
73 #define HDMI_MAX_ID             32\r
74 struct hdmi;\r
75 struct hdmi_ops{\r
76         int (*set_param)(struct hdmi *);\r
77         int (*hdmi_precent)(struct hdmi *);\r
78         int (*insert)(struct hdmi *);\r
79         int (*remove)(struct hdmi *);\r
80         int (*init)(struct hdmi*);\r
81 };\r
82 struct hdmi {\r
83         int id;\r
84         int wait;\r
85         BOOL display_on;\r
86         BOOL plug;\r
87         BOOL hdcp_on;\r
88         BOOL param_conf;\r
89 \r
90         u8 resolution;\r
91         u8 scale;\r
92         u8 scale_set;\r
93         u8 audio_fs;\r
94         int mode;\r
95         int dual_disp;\r
96         struct timer_list timer;\r
97         struct mutex lock;\r
98         struct device *dev;\r
99         struct delayed_work work;\r
100         struct completion       complete;\r
101         const struct hdmi_ops *ops;\r
102 \r
103         unsigned long           priv[0] ____cacheline_aligned;\r
104 };\r
105 extern int hdmi_is_insert(void);\r
106 extern void *hdmi_priv(struct hdmi *hdmi);\r
107 extern struct hdmi *hdmi_register(int extra, struct device *parent);\r
108 extern void hdmi_unregister(struct hdmi *hdmi);\r
109 extern void hdmi_changed(struct hdmi *hdmi, int msec);\r
110 \r
111 extern int hdmi_switch_fb(struct hdmi *hdmi, int type);\r
112 extern void hdmi_suspend(struct hdmi *hdmi);\r
113 extern void hdmi_resume(struct hdmi *hdmi);\r
114 extern struct hdmi *get_hdmi_struct(int nr);\r
115 \r
116 extern void hdmi_set_spk(int on);\r
117 extern void hdmi_set_backlight(int on);\r
118 extern int hdmi_get_scale(void);\r
119 extern int hdmi_set_scale(int event, char *data, int len);\r
120 extern int fb_get_video_mode(void);\r
121 extern int display_on_hdmi(void);\r
122 extern int hdmi_get_data(void);\r
123 extern int hdmi_set_data(int data);\r
124 #endif\r