rk30 hdmi:
[firefly-linux-kernel-4.4.55.git] / drivers / video / rockchip / hdmi / rk_hdmi.h
1 #ifndef __RK_HDMI_H__
2 #define __RK_HDMI_H__
3
4 /********************************************************************
5 **                          ½á¹¹¶¨Òå                                *
6 ********************************************************************/
7 /* HDMI video mode code according CEA-861-E*/
8 enum hdmi_video_mode
9 {
10         HDMI_640x480p_60Hz = 1,
11         HDMI_720x480p_60Hz_4_3,
12         HDMI_720x480p_60Hz_16_9,
13         HDMI_1280x720p_60Hz,
14         HDMI_1920x1080i_60Hz,           //5
15         HDMI_720x480i_60Hz_4_3,
16         HDMI_720x480i_60Hz_16_9,
17         HDMI_720x240p_60Hz_4_3,
18         HDMI_720x240p_60Hz_16_9,
19         HDMI_2880x480i_60Hz_4_3,        //10
20         HDMI_2880x480i_60Hz_16_9,
21         HDMI_2880x240p_60Hz_4_3,
22         HDMI_2880x240p_60Hz_16_9,
23         HDMI_1440x480p_60Hz_4_3,
24         HDMI_1440x480p_60Hz_16_9,       //15
25         HDMI_1920x1080p_60Hz,
26         HDMI_720x576p_50Hz_4_3,
27         HDMI_720x576p_50Hz_16_9,
28         HDMI_1280x720p_50Hz,
29         HDMI_1920x1080i_50Hz,           //20
30         HDMI_720x576i_50Hz_4_3,
31         HDMI_720x576i_50Hz_16_9,
32         HDMI_720x288p_50Hz_4_3,
33         HDMI_720x288p_50Hz_16_9,
34         HDMI_2880x576i_50Hz_4_3,        //25
35         HDMI_2880x576i_50Hz_16_9,
36         HDMI_2880x288p_50Hz_4_3,
37         HDMI_2880x288p_50Hz_16_9,
38         HDMI_1440x576p_50Hz_4_3,
39         HDMI_1440x576p_50Hz_16_9,       //30
40         HDMI_1920x1080p_50Hz,
41         HDMI_1920x1080p_24Hz,
42         HDMI_1920x1080p_25Hz,
43         HDMI_1920x1080p_30Hz,
44         HDMI_2880x480p_60Hz_4_3,        //35
45         HDMI_2880x480p_60Hz_16_9,
46         HDMI_2880x576p_50Hz_4_3,
47         HDMI_2880x576p_50Hz_16_9,
48         HDMI_1920x1080i_50Hz_2,         // V Line 1250 total
49         HDMI_1920x1080i_100Hz,          //40
50         HDMI_1280x720p_100Hz,
51         HDMI_720x576p_100Hz_4_3,
52         HDMI_720x576p_100Hz_16_9,
53         HDMI_720x576i_100Hz_4_3,
54         HDMI_720x576i_100Hz_16_9,       //45
55         HDMI_1920x1080i_120Hz,
56         HDMI_1280x720p_120Hz,
57         HDMI_720x480p_120Hz_4_3,
58         HDMI_720x480p_120Hz_16_9,       
59         HDMI_720x480i_120Hz_4_3,        //50
60         HDMI_720x480i_120Hz_16_9,
61         HDMI_720x576p_200Hz_4_3,
62         HDMI_720x576p_200Hz_16_9,
63         HDMI_720x576i_200Hz_4_3,
64         HDMI_720x576i_200Hz_16_9,       //55
65         HDMI_720x480p_240Hz_4_3,
66         HDMI_720x480p_240Hz_16_9,       
67         HDMI_720x480i_240Hz_4_3,
68         HDMI_720x480i_240Hz_16_9,
69         HDMI_1280x720p_24Hz,            //60
70         HDMI_1280x720p_25Hz,
71         HDMI_1280x720p_30Hz,
72         HDMI_1920x1080p_120Hz,
73         HDMI_1920x1080p_100Hz,
74 };
75
76 /* HDMI Video Data Color Mode */
77 enum {
78         HDMI_COLOR_RGB = 0,
79         HDMI_COLOR_YCbCr422,
80         HDMI_COLOR_YCbCr444
81 };
82
83 /* HDMI Audio type */
84 enum hdmi_audio_type
85 {
86         HDMI_AUDIO_LPCM = 1,
87         HDMI_AUDIO_AC3,
88         HDMI_AUDIO_MPEG1,
89         HDMI_AUDIO_MP3,
90         HDMI_AUDIO_MPEG2,
91         HDMI_AUDIO_AAC_LC,              //AAC
92         HDMI_AUDIO_DTS,
93         HDMI_AUDIO_ATARC,
94         HDMI_AUDIO_DSD,                 //One bit Audio
95         HDMI_AUDIO_E_AC3,
96         HDMI_AUDIO_DTS_HD,
97         HDMI_AUDIO_MLP,
98         HDMI_AUDIO_DST,
99         HDMI_AUDIO_WMA_PRO
100 };
101
102 /* I2S Fs */
103 enum hdmi_audio_fs {
104         HDMI_AUDIO_FS_32000  = 0x1,
105         HDMI_AUDIO_FS_44100  = 0x2,
106         HDMI_AUDIO_FS_48000  = 0x4,
107         HDMI_AUDIO_FS_88200  = 0x8,
108         HDMI_AUDIO_FS_96000  = 0x10,
109         HDMI_AUDIO_FS_176400 = 0x20,
110         HDMI_AUDIO_FS_192000 = 0x40
111 };
112
113 /* Audio Word Length */
114 enum hdmi_audio_word_length {
115         HDMI_AUDIO_WORD_LENGTH_16bit = 0x1,
116         HDMI_AUDIO_WORD_LENGTH_20bit = 0x2,
117         HDMI_AUDIO_WORD_LENGTH_24bit = 0x4
118 };
119
120 /* EDID block size */
121 #define HDMI_EDID_BLOCK_SIZE    128
122
123 // HDMI state machine
124 enum hdmi_state{
125         HDMI_SLEEP = 0,
126         HDMI_INITIAL,
127         WAIT_HOTPLUG,
128         READ_PARSE_EDID,
129         WAIT_HDMI_ENABLE,
130         SYSTEM_CONFIG,
131         CONFIG_VIDEO,
132         CONFIG_AUDIO,
133         PLAY_BACK,
134 };
135
136 // HDMI configuration command
137 enum hdmi_change {
138         HDMI_CONFIG_NONE = 0,
139         HDMI_CONFIG_VIDEO,
140         HDMI_CONFIG_AUDIO,
141         HDMI_CONFIG_COLOR,
142         HDMI_CONFIG_HDCP,
143         HDMI_CONFIG_ENABLE,
144         HDMI_CONFIG_DISABLE,
145         HDMI_CONFIG_DISPLAY
146 };
147
148 // HDMI Hotplug status
149 enum {
150         HDMI_HPD_REMOVED = 0,
151         HDMI_HPD_INSERT
152 };
153
154 /* HDMI STATUS */
155 #define HDMI_DISABLE    0
156 #define HDMI_ENABLE             1
157 #define HDMI_UNKOWN             0xFF
158
159 /* HDMI Error Code */
160 enum hdmi_errorcode
161 {
162         HDMI_ERROR_SUCESS = 0,
163         HDMI_ERROR_FALSE,
164         HDMI_ERROR_I2C,
165         HDMI_ERROR_EDID,
166 };
167
168 /* HDMI audio parameters */
169 struct hdmi_audio {
170         u32 type;                                                       //Audio type
171         u32     channel;                                                //Audio channel number
172         u32     rate;                                                   //Audio sampling rate
173         u32     word_length;                                    //Audio data word length
174 };
175
176 struct hdmi_edid {
177         unsigned char sink_hdmi;                        //HDMI display device flag
178         unsigned char ycbcr444;                         //Display device support YCbCr444
179         unsigned char ycbcr422;                         //Display device support YCbCr422
180         unsigned char deepcolor;                        //bit3:DC_48bit; bit2:DC_36bit; bit1:DC_30bit; bit0:DC_Y444;
181         struct fb_monspecs      *specs;                 //Device spec
182         struct list_head modelist;                      //Device supported display mode list
183         struct hdmi_audio *audio;                       //Device supported audio info
184         int     audio_num;                                              //Device supported audio type number
185 };
186
187 extern const struct fb_videomode hdmi_mode[];
188
189 #define HDMI_DEBUG
190
191 #ifdef HDMI_DEBUG
192 #define hdmi_dbg(dev, format, arg...)           \
193         dev_printk(KERN_INFO , dev , format , ## arg)
194 #else
195 #define hdmi_dbg(dev, format, arg...)   
196 #endif
197
198 extern int hdmi_get_hotplug(void);
199
200 #endif