59 static void evergreen_hdmi_infoframe_checksum(
uint8_t packetType,
65 frame[0] = packetType + versionNumber +
length;
66 for (i = 1; i <=
length; i++)
68 frame[0] = 0x100 - frame[0];
74 static void evergreen_hdmi_videoinfoframe(
77 int active_information_present,
78 uint8_t active_format_aspect_ratio,
85 uint8_t video_format_identification,
87 uint8_t non_uniform_picture_scaling,
105 (scan_information & 0x3) |
106 ((bar_info_data_valid & 0x3) << 2) |
107 ((active_information_present & 0x1) << 4) |
108 ((color_format & 0x3) << 5);
110 (active_format_aspect_ratio & 0xF) |
111 ((picture_aspect_ratio & 0x3) << 4) |
112 ((colorimetry & 0x3) << 6);
114 (non_uniform_picture_scaling & 0x3) |
115 ((quantization & 0x3) << 2) |
116 ((ex_colorimetry & 0x7) << 4) |
118 frame[0x4] = (video_format_identification & 0x7F);
119 frame[0x5] = (pixel_repetition & 0xF);
120 frame[0x6] = (top_bar & 0xFF);
121 frame[0x7] = (top_bar >> 8);
122 frame[0x8] = (bottom_bar & 0xFF);
123 frame[0x9] = (bottom_bar >> 8);
124 frame[0xA] = (left_bar & 0xFF);
125 frame[0xB] = (left_bar >> 8);
126 frame[0xC] = (right_bar & 0xFF);
127 frame[0xD] = (right_bar >> 8);
129 evergreen_hdmi_infoframe_checksum(0x82, 0x02, 0x0D, frame);
139 frame[0x0] | (frame[0x1] << 8) | (frame[0x2] << 16) | (frame[0x3] << 24));
141 frame[0x4] | (frame[0x5] << 8) | (frame[0x6] << 16) | (frame[0x7] << 24));
143 frame[0x8] | (frame[0x9] << 8) | (frame[0xA] << 16) | (frame[0xB] << 24));
145 frame[0xC] | (frame[0xD] << 8));
160 if (!dig->
afmt->enabled)
162 offset = dig->
afmt->offset;
203 evergreen_hdmi_videoinfoframe(encoder, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
206 evergreen_hdmi_update_ACR(encoder, mode->
clock);