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;