/ src / drivers / dvhstx / dvi.hpp
dvi.hpp
 1  #pragma once
 2  
 3  // ----------------------------------------------------------------------------
 4  // DVI constants
 5  
 6  #define TMDS_CTRL_00 0x354u
 7  #define TMDS_CTRL_01 0x0abu
 8  #define TMDS_CTRL_10 0x154u
 9  #define TMDS_CTRL_11 0x2abu
10  
11  #define TMDS_BALANCED_LOW  0x307u
12  #define TMDS_BALANCED_HIGH 0x2f0u
13  
14  #define TMDS_BLACK_A 0x100u
15  #define TMDS_BLACK_B 0x1ffu
16  
17  #define SYNC_V0_H0 (TMDS_CTRL_00 | (TMDS_CTRL_00 << 10) | (TMDS_CTRL_00 << 20))
18  #define SYNC_V0_H1 (TMDS_CTRL_01 | (TMDS_CTRL_00 << 10) | (TMDS_CTRL_00 << 20))
19  #define SYNC_V1_H0 (TMDS_CTRL_10 | (TMDS_CTRL_00 << 10) | (TMDS_CTRL_00 << 20))
20  #define SYNC_V1_H1 (TMDS_CTRL_11 | (TMDS_CTRL_00 << 10) | (TMDS_CTRL_00 << 20))
21  #define MISSING_PIXEL (TMDS_BALANCED_LOW | (TMDS_BALANCED_LOW << 10) | (TMDS_BALANCED_HIGH << 20))
22  #define BLACK_PIXEL (TMDS_BALANCED_LOW | (TMDS_BALANCED_LOW << 10) | (TMDS_BALANCED_LOW << 20))
23  #define BLACK_PIXEL_A (TMDS_BLACK_A | (TMDS_BLACK_A << 10) | (TMDS_BLACK_A << 20))
24  #define BLACK_PIXEL_B (TMDS_BLACK_B | (TMDS_BLACK_B << 10) | (TMDS_BLACK_B << 20))
25  
26  #define HSTX_CMD_RAW         (0x0u << 12)
27  #define HSTX_CMD_RAW_REPEAT  (0x1u << 12)
28  #define HSTX_CMD_TMDS        (0x2u << 12)
29  #define HSTX_CMD_TMDS_REPEAT (0x3u << 12)
30  #define HSTX_CMD_NOP         (0xfu << 12)
31  
32  struct dvi_timing {
33  	bool h_sync_polarity;
34  	int h_front_porch;
35  	int h_sync_width;
36  	int h_back_porch;
37  	int h_active_pixels;
38  
39  	bool v_sync_polarity;
40  	int v_front_porch;
41  	int v_sync_width;
42  	int v_back_porch;
43  	int v_active_lines;
44  
45  	uint bit_clk_khz;
46  };
47  
48  extern const struct dvi_timing dvi_timing_640x480p_60hz;
49  extern const struct dvi_timing dvi_timing_720x480p_60hz;
50  extern const struct dvi_timing dvi_timing_720x576p_50hz;
51  extern const struct dvi_timing dvi_timing_720x400p_70hz;
52  extern const struct dvi_timing dvi_timing_800x450p_60hz;
53  extern const struct dvi_timing dvi_timing_800x480p_60hz;
54  extern const struct dvi_timing dvi_timing_800x600p_60hz;
55  extern const struct dvi_timing dvi_timing_960x540p_60hz;
56  extern const struct dvi_timing dvi_timing_960x540p_50hz;
57  extern const struct dvi_timing dvi_timing_1024x768_rb_60hz;
58  extern const struct dvi_timing dvi_timing_1280x720p_rb_50hz;
59  extern const struct dvi_timing dvi_timing_1280x720p_rb_60hz;
60  extern const struct dvi_timing dvi_timing_1920x1080p_rb2_30hz;
61  extern const struct dvi_timing dvi_timing_1920x1080p_yolo_50hz;
62  extern const struct dvi_timing dvi_timing_1920x1080p_yolo_60hz;