Lines Matching +full:frame +full:- +full:buffer
17 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
43 return 256 - csum; in hdmi_infoframe_checksum()
46 static void hdmi_infoframe_set_checksum(void *buffer, size_t size) in hdmi_infoframe_set_checksum() argument
48 u8 *ptr = buffer; in hdmi_infoframe_set_checksum()
50 ptr[3] = hdmi_infoframe_checksum(buffer, size); in hdmi_infoframe_set_checksum()
54 * hdmi_avi_infoframe_init() - initialize an HDMI AVI infoframe
55 * @frame: HDMI AVI infoframe
59 int hdmi_avi_infoframe_init(struct hdmi_avi_infoframe *frame) in hdmi_avi_infoframe_init() argument
61 memset(frame, 0, sizeof(*frame)); in hdmi_avi_infoframe_init()
63 frame->type = HDMI_INFOFRAME_TYPE_AVI; in hdmi_avi_infoframe_init()
64 frame->version = 2; in hdmi_avi_infoframe_init()
65 frame->length = HDMI_AVI_INFOFRAME_SIZE; in hdmi_avi_infoframe_init()
72 * hdmi_avi_infoframe_pack() - write HDMI AVI infoframe to binary buffer
73 * @frame: HDMI AVI infoframe
74 * @buffer: destination buffer
75 * @size: size of buffer
77 * Packs the information contained in the @frame structure into a binary
82 * Returns the number of bytes packed into the binary buffer or a negative
85 ssize_t hdmi_avi_infoframe_pack(struct hdmi_avi_infoframe *frame, void *buffer, in hdmi_avi_infoframe_pack() argument
88 u8 *ptr = buffer; in hdmi_avi_infoframe_pack()
91 length = HDMI_INFOFRAME_HEADER_SIZE + frame->length; in hdmi_avi_infoframe_pack()
94 return -ENOSPC; in hdmi_avi_infoframe_pack()
96 if (frame->picture_aspect > HDMI_PICTURE_ASPECT_16_9) in hdmi_avi_infoframe_pack()
97 return -EINVAL; in hdmi_avi_infoframe_pack()
99 memset(buffer, 0, size); in hdmi_avi_infoframe_pack()
101 ptr[0] = frame->type; in hdmi_avi_infoframe_pack()
102 ptr[1] = frame->version; in hdmi_avi_infoframe_pack()
103 ptr[2] = frame->length; in hdmi_avi_infoframe_pack()
109 ptr[0] = ((frame->colorspace & 0x3) << 5) | (frame->scan_mode & 0x3); in hdmi_avi_infoframe_pack()
115 if (frame->active_aspect & 0xf) in hdmi_avi_infoframe_pack()
119 if (frame->top_bar || frame->bottom_bar) in hdmi_avi_infoframe_pack()
122 if (frame->left_bar || frame->right_bar) in hdmi_avi_infoframe_pack()
125 ptr[1] = ((frame->colorimetry & 0x3) << 6) | in hdmi_avi_infoframe_pack()
126 ((frame->picture_aspect & 0x3) << 4) | in hdmi_avi_infoframe_pack()
127 (frame->active_aspect & 0xf); in hdmi_avi_infoframe_pack()
129 ptr[2] = ((frame->extended_colorimetry & 0x7) << 4) | in hdmi_avi_infoframe_pack()
130 ((frame->quantization_range & 0x3) << 2) | in hdmi_avi_infoframe_pack()
131 (frame->nups & 0x3); in hdmi_avi_infoframe_pack()
133 if (frame->itc) in hdmi_avi_infoframe_pack()
136 ptr[3] = frame->video_code & 0x7f; in hdmi_avi_infoframe_pack()
138 ptr[4] = ((frame->ycc_quantization_range & 0x3) << 6) | in hdmi_avi_infoframe_pack()
139 ((frame->content_type & 0x3) << 4) | in hdmi_avi_infoframe_pack()
140 (frame->pixel_repeat & 0xf); in hdmi_avi_infoframe_pack()
142 ptr[5] = frame->top_bar & 0xff; in hdmi_avi_infoframe_pack()
143 ptr[6] = (frame->top_bar >> 8) & 0xff; in hdmi_avi_infoframe_pack()
144 ptr[7] = frame->bottom_bar & 0xff; in hdmi_avi_infoframe_pack()
145 ptr[8] = (frame->bottom_bar >> 8) & 0xff; in hdmi_avi_infoframe_pack()
146 ptr[9] = frame->left_bar & 0xff; in hdmi_avi_infoframe_pack()
147 ptr[10] = (frame->left_bar >> 8) & 0xff; in hdmi_avi_infoframe_pack()
148 ptr[11] = frame->right_bar & 0xff; in hdmi_avi_infoframe_pack()
149 ptr[12] = (frame->right_bar >> 8) & 0xff; in hdmi_avi_infoframe_pack()
151 hdmi_infoframe_set_checksum(buffer, length); in hdmi_avi_infoframe_pack()
158 * hdmi_spd_infoframe_init() - initialize an HDMI SPD infoframe
159 * @frame: HDMI SPD infoframe
165 int hdmi_spd_infoframe_init(struct hdmi_spd_infoframe *frame, in hdmi_spd_infoframe_init() argument
168 memset(frame, 0, sizeof(*frame)); in hdmi_spd_infoframe_init()
170 frame->type = HDMI_INFOFRAME_TYPE_SPD; in hdmi_spd_infoframe_init()
171 frame->version = 1; in hdmi_spd_infoframe_init()
172 frame->length = HDMI_SPD_INFOFRAME_SIZE; in hdmi_spd_infoframe_init()
174 strncpy(frame->vendor, vendor, sizeof(frame->vendor)); in hdmi_spd_infoframe_init()
175 strncpy(frame->product, product, sizeof(frame->product)); in hdmi_spd_infoframe_init()
182 * hdmi_spd_infoframe_pack() - write HDMI SPD infoframe to binary buffer
183 * @frame: HDMI SPD infoframe
184 * @buffer: destination buffer
185 * @size: size of buffer
187 * Packs the information contained in the @frame structure into a binary
192 * Returns the number of bytes packed into the binary buffer or a negative
195 ssize_t hdmi_spd_infoframe_pack(struct hdmi_spd_infoframe *frame, void *buffer, in hdmi_spd_infoframe_pack() argument
198 u8 *ptr = buffer; in hdmi_spd_infoframe_pack()
201 length = HDMI_INFOFRAME_HEADER_SIZE + frame->length; in hdmi_spd_infoframe_pack()
204 return -ENOSPC; in hdmi_spd_infoframe_pack()
206 memset(buffer, 0, size); in hdmi_spd_infoframe_pack()
208 ptr[0] = frame->type; in hdmi_spd_infoframe_pack()
209 ptr[1] = frame->version; in hdmi_spd_infoframe_pack()
210 ptr[2] = frame->length; in hdmi_spd_infoframe_pack()
216 memcpy(ptr, frame->vendor, sizeof(frame->vendor)); in hdmi_spd_infoframe_pack()
217 memcpy(ptr + 8, frame->product, sizeof(frame->product)); in hdmi_spd_infoframe_pack()
219 ptr[24] = frame->sdi; in hdmi_spd_infoframe_pack()
221 hdmi_infoframe_set_checksum(buffer, length); in hdmi_spd_infoframe_pack()
228 * hdmi_audio_infoframe_init() - initialize an HDMI audio infoframe
229 * @frame: HDMI audio infoframe
233 int hdmi_audio_infoframe_init(struct hdmi_audio_infoframe *frame) in hdmi_audio_infoframe_init() argument
235 memset(frame, 0, sizeof(*frame)); in hdmi_audio_infoframe_init()
237 frame->type = HDMI_INFOFRAME_TYPE_AUDIO; in hdmi_audio_infoframe_init()
238 frame->version = 1; in hdmi_audio_infoframe_init()
239 frame->length = HDMI_AUDIO_INFOFRAME_SIZE; in hdmi_audio_infoframe_init()
246 * hdmi_audio_infoframe_pack() - write HDMI audio infoframe to binary buffer
247 * @frame: HDMI audio infoframe
248 * @buffer: destination buffer
249 * @size: size of buffer
251 * Packs the information contained in the @frame structure into a binary
256 * Returns the number of bytes packed into the binary buffer or a negative
259 ssize_t hdmi_audio_infoframe_pack(struct hdmi_audio_infoframe *frame, in hdmi_audio_infoframe_pack() argument
260 void *buffer, size_t size) in hdmi_audio_infoframe_pack() argument
263 u8 *ptr = buffer; in hdmi_audio_infoframe_pack()
266 length = HDMI_INFOFRAME_HEADER_SIZE + frame->length; in hdmi_audio_infoframe_pack()
269 return -ENOSPC; in hdmi_audio_infoframe_pack()
271 memset(buffer, 0, size); in hdmi_audio_infoframe_pack()
273 if (frame->channels >= 2) in hdmi_audio_infoframe_pack()
274 channels = frame->channels - 1; in hdmi_audio_infoframe_pack()
278 ptr[0] = frame->type; in hdmi_audio_infoframe_pack()
279 ptr[1] = frame->version; in hdmi_audio_infoframe_pack()
280 ptr[2] = frame->length; in hdmi_audio_infoframe_pack()
286 ptr[0] = ((frame->coding_type & 0xf) << 4) | (channels & 0x7); in hdmi_audio_infoframe_pack()
287 ptr[1] = ((frame->sample_frequency & 0x7) << 2) | in hdmi_audio_infoframe_pack()
288 (frame->sample_size & 0x3); in hdmi_audio_infoframe_pack()
289 ptr[2] = frame->coding_type_ext & 0x1f; in hdmi_audio_infoframe_pack()
290 ptr[3] = frame->channel_allocation; in hdmi_audio_infoframe_pack()
291 ptr[4] = (frame->level_shift_value & 0xf) << 3; in hdmi_audio_infoframe_pack()
293 if (frame->downmix_inhibit) in hdmi_audio_infoframe_pack()
296 hdmi_infoframe_set_checksum(buffer, length); in hdmi_audio_infoframe_pack()
303 * hdmi_vendor_infoframe_init() - initialize an HDMI vendor infoframe
304 * @frame: HDMI vendor infoframe
308 int hdmi_vendor_infoframe_init(struct hdmi_vendor_infoframe *frame) in hdmi_vendor_infoframe_init() argument
310 memset(frame, 0, sizeof(*frame)); in hdmi_vendor_infoframe_init()
312 frame->type = HDMI_INFOFRAME_TYPE_VENDOR; in hdmi_vendor_infoframe_init()
313 frame->version = 1; in hdmi_vendor_infoframe_init()
315 frame->oui = HDMI_IEEE_OUI; in hdmi_vendor_infoframe_init()
321 frame->s3d_struct = HDMI_3D_STRUCTURE_INVALID; in hdmi_vendor_infoframe_init()
327 static int hdmi_vendor_infoframe_length(const struct hdmi_vendor_infoframe *frame) in hdmi_vendor_infoframe_length() argument
330 if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF) in hdmi_vendor_infoframe_length()
332 else if (frame->vic != 0 || frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID) in hdmi_vendor_infoframe_length()
339 * hdmi_vendor_infoframe_pack() - write a HDMI vendor infoframe to binary buffer
340 * @frame: HDMI infoframe
341 * @buffer: destination buffer
342 * @size: size of buffer
344 * Packs the information contained in the @frame structure into a binary
349 * Returns the number of bytes packed into the binary buffer or a negative
352 ssize_t hdmi_vendor_infoframe_pack(struct hdmi_vendor_infoframe *frame, in hdmi_vendor_infoframe_pack() argument
353 void *buffer, size_t size) in hdmi_vendor_infoframe_pack() argument
355 u8 *ptr = buffer; in hdmi_vendor_infoframe_pack()
359 if (frame->vic != 0 && frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID) in hdmi_vendor_infoframe_pack()
360 return -EINVAL; in hdmi_vendor_infoframe_pack()
362 frame->length = hdmi_vendor_infoframe_length(frame); in hdmi_vendor_infoframe_pack()
364 length = HDMI_INFOFRAME_HEADER_SIZE + frame->length; in hdmi_vendor_infoframe_pack()
367 return -ENOSPC; in hdmi_vendor_infoframe_pack()
369 memset(buffer, 0, size); in hdmi_vendor_infoframe_pack()
371 ptr[0] = frame->type; in hdmi_vendor_infoframe_pack()
372 ptr[1] = frame->version; in hdmi_vendor_infoframe_pack()
373 ptr[2] = frame->length; in hdmi_vendor_infoframe_pack()
381 if (frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID) { in hdmi_vendor_infoframe_pack()
383 ptr[8] = (frame->s3d_struct & 0xf) << 4; in hdmi_vendor_infoframe_pack()
384 if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF) in hdmi_vendor_infoframe_pack()
385 ptr[9] = (frame->s3d_ext_data & 0xf) << 4; in hdmi_vendor_infoframe_pack()
386 } else if (frame->vic) { in hdmi_vendor_infoframe_pack()
388 ptr[8] = frame->vic; in hdmi_vendor_infoframe_pack()
393 hdmi_infoframe_set_checksum(buffer, length); in hdmi_vendor_infoframe_pack()
400 * hdmi_vendor_any_infoframe_pack() - write a vendor infoframe to binary buffer
403 hdmi_vendor_any_infoframe_pack(union hdmi_vendor_any_infoframe *frame, in hdmi_vendor_any_infoframe_pack() argument
404 void *buffer, size_t size) in hdmi_vendor_any_infoframe_pack() argument
407 if (frame->any.oui != HDMI_IEEE_OUI) in hdmi_vendor_any_infoframe_pack()
408 return -EINVAL; in hdmi_vendor_any_infoframe_pack()
410 return hdmi_vendor_infoframe_pack(&frame->hdmi, buffer, size); in hdmi_vendor_any_infoframe_pack()
414 * hdmi_infoframe_pack() - write a HDMI infoframe to binary buffer
415 * @frame: HDMI infoframe
416 * @buffer: destination buffer
417 * @size: size of buffer
419 * Packs the information contained in the @frame structure into a binary
424 * Returns the number of bytes packed into the binary buffer or a negative
428 hdmi_infoframe_pack(union hdmi_infoframe *frame, void *buffer, size_t size) in hdmi_infoframe_pack() argument
432 switch (frame->any.type) { in hdmi_infoframe_pack()
434 length = hdmi_avi_infoframe_pack(&frame->avi, buffer, size); in hdmi_infoframe_pack()
437 length = hdmi_spd_infoframe_pack(&frame->spd, buffer, size); in hdmi_infoframe_pack()
440 length = hdmi_audio_infoframe_pack(&frame->audio, buffer, size); in hdmi_infoframe_pack()
443 length = hdmi_vendor_any_infoframe_pack(&frame->vendor, in hdmi_infoframe_pack()
444 buffer, size); in hdmi_infoframe_pack()
447 WARN(1, "Bad infoframe type %d\n", frame->any.type); in hdmi_infoframe_pack()
448 length = -EINVAL; in hdmi_infoframe_pack()
474 struct hdmi_any_infoframe *frame) in hdmi_infoframe_log_header() argument
477 hdmi_infoframe_type_get_name(frame->type), in hdmi_infoframe_log_header()
478 frame->version, frame->length); in hdmi_infoframe_log_header()
629 return "Unknown Non-uniform Scaling"; in hdmi_nups_get_name()
669 * hdmi_avi_infoframe_log() - log info of HDMI AVI infoframe
672 * @frame: HDMI AVI infoframe
676 struct hdmi_avi_infoframe *frame) in hdmi_avi_infoframe_log() argument
679 (struct hdmi_any_infoframe *)frame); in hdmi_avi_infoframe_log()
682 hdmi_colorspace_get_name(frame->colorspace)); in hdmi_avi_infoframe_log()
684 hdmi_scan_mode_get_name(frame->scan_mode)); in hdmi_avi_infoframe_log()
686 hdmi_colorimetry_get_name(frame->colorimetry)); in hdmi_avi_infoframe_log()
688 hdmi_picture_aspect_get_name(frame->picture_aspect)); in hdmi_avi_infoframe_log()
690 hdmi_active_aspect_get_name(frame->active_aspect)); in hdmi_avi_infoframe_log()
691 hdmi_log(" itc: %s\n", frame->itc ? "IT Content" : "No Data"); in hdmi_avi_infoframe_log()
693 hdmi_extended_colorimetry_get_name(frame->extended_colorimetry)); in hdmi_avi_infoframe_log()
695 hdmi_quantization_range_get_name(frame->quantization_range)); in hdmi_avi_infoframe_log()
696 hdmi_log(" nups: %s\n", hdmi_nups_get_name(frame->nups)); in hdmi_avi_infoframe_log()
697 hdmi_log(" video code: %u\n", frame->video_code); in hdmi_avi_infoframe_log()
699 hdmi_ycc_quantization_range_get_name(frame->ycc_quantization_range)); in hdmi_avi_infoframe_log()
701 hdmi_content_type_get_name(frame->content_type)); in hdmi_avi_infoframe_log()
702 hdmi_log(" pixel repeat: %u\n", frame->pixel_repeat); in hdmi_avi_infoframe_log()
704 frame->top_bar, frame->bottom_bar, in hdmi_avi_infoframe_log()
705 frame->left_bar, frame->right_bar); in hdmi_avi_infoframe_log()
720 return "D-VHS"; in hdmi_spd_sdi_get_name()
734 return "Blu-Ray Disc (BD)"; in hdmi_spd_sdi_get_name()
746 * hdmi_spd_infoframe_log() - log info of HDMI SPD infoframe
749 * @frame: HDMI SPD infoframe
753 struct hdmi_spd_infoframe *frame) in hdmi_spd_infoframe_log() argument
758 (struct hdmi_any_infoframe *)frame); in hdmi_spd_infoframe_log()
762 strncpy(buf, frame->vendor, 8); in hdmi_spd_infoframe_log()
764 strncpy(buf, frame->product, 16); in hdmi_spd_infoframe_log()
767 hdmi_spd_sdi_get_name(frame->sdi), frame->sdi); in hdmi_spd_infoframe_log()
779 return "AC-3"; in hdmi_audio_coding_type_get_name()
797 return "DTS-HD"; in hdmi_audio_coding_type_get_name()
866 return "MPEG-4 HE AAC"; in hdmi_audio_coding_type_ext_get_name()
868 return "MPEG-4 HE AAC v2"; in hdmi_audio_coding_type_ext_get_name()
870 return "MPEG-4 AAC LC"; in hdmi_audio_coding_type_ext_get_name()
874 return "MPEG-4 HE AAC + MPEG Surround"; in hdmi_audio_coding_type_ext_get_name()
876 return "MPEG-4 AAC LC + MPEG Surround"; in hdmi_audio_coding_type_ext_get_name()
882 * hdmi_audio_infoframe_log() - log info of HDMI AUDIO infoframe
885 * @frame: HDMI AUDIO infoframe
889 struct hdmi_audio_infoframe *frame) in hdmi_audio_infoframe_log() argument
892 (struct hdmi_any_infoframe *)frame); in hdmi_audio_infoframe_log()
894 if (frame->channels) in hdmi_audio_infoframe_log()
895 hdmi_log(" channels: %u\n", frame->channels - 1); in hdmi_audio_infoframe_log()
899 hdmi_audio_coding_type_get_name(frame->coding_type)); in hdmi_audio_infoframe_log()
901 hdmi_audio_sample_size_get_name(frame->sample_size)); in hdmi_audio_infoframe_log()
903 hdmi_audio_sample_frequency_get_name(frame->sample_frequency)); in hdmi_audio_infoframe_log()
905 hdmi_audio_coding_type_ext_get_name(frame->coding_type_ext)); in hdmi_audio_infoframe_log()
907 frame->channel_allocation); in hdmi_audio_infoframe_log()
909 frame->level_shift_value); in hdmi_audio_infoframe_log()
911 frame->downmix_inhibit ? "Yes" : "No"); in hdmi_audio_infoframe_log()
922 return "Frame Packing"; in hdmi_3d_structure_get_name()
928 return "Side-by-side (Full)"; in hdmi_3d_structure_get_name()
932 return "L + Depth + Graphics + Graphics-depth"; in hdmi_3d_structure_get_name()
934 return "Top-and-Bottom"; in hdmi_3d_structure_get_name()
936 return "Side-by-side (Half)"; in hdmi_3d_structure_get_name()
944 * hdmi_vendor_infoframe_log() - log info of HDMI VENDOR infoframe
947 * @frame: HDMI VENDOR infoframe
952 union hdmi_vendor_any_infoframe *frame) in hdmi_vendor_any_infoframe_log() argument
954 struct hdmi_vendor_infoframe *hvf = &frame->hdmi; in hdmi_vendor_any_infoframe_log()
957 (struct hdmi_any_infoframe *)frame); in hdmi_vendor_any_infoframe_log()
959 if (frame->any.oui != HDMI_IEEE_OUI) { in hdmi_vendor_any_infoframe_log()
963 if (hvf->vic == 0 && hvf->s3d_struct == HDMI_3D_STRUCTURE_INVALID) { in hdmi_vendor_any_infoframe_log()
964 hdmi_log(" empty frame\n"); in hdmi_vendor_any_infoframe_log()
968 if (hvf->vic) in hdmi_vendor_any_infoframe_log()
969 hdmi_log(" HDMI VIC: %u\n", hvf->vic); in hdmi_vendor_any_infoframe_log()
970 if (hvf->s3d_struct != HDMI_3D_STRUCTURE_INVALID) { in hdmi_vendor_any_infoframe_log()
972 hdmi_3d_structure_get_name(hvf->s3d_struct)); in hdmi_vendor_any_infoframe_log()
973 if (hvf->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF) in hdmi_vendor_any_infoframe_log()
975 hvf->s3d_ext_data); in hdmi_vendor_any_infoframe_log()
980 * hdmi_infoframe_log() - log info of HDMI infoframe
983 * @frame: HDMI infoframe
987 union hdmi_infoframe *frame) in hdmi_infoframe_log() argument
989 switch (frame->any.type) { in hdmi_infoframe_log()
991 hdmi_avi_infoframe_log(level, dev, &frame->avi); in hdmi_infoframe_log()
994 hdmi_spd_infoframe_log(level, dev, &frame->spd); in hdmi_infoframe_log()
997 hdmi_audio_infoframe_log(level, dev, &frame->audio); in hdmi_infoframe_log()
1000 hdmi_vendor_any_infoframe_log(level, dev, &frame->vendor); in hdmi_infoframe_log()
1007 * hdmi_avi_infoframe_unpack() - unpack binary buffer to a HDMI AVI infoframe
1008 * @buffer: source buffer
1009 * @frame: HDMI AVI infoframe
1011 * Unpacks the information contained in binary @buffer into a structured
1012 * @frame of the HDMI Auxiliary Video (AVI) information frame.
1018 static int hdmi_avi_infoframe_unpack(struct hdmi_avi_infoframe *frame, in hdmi_avi_infoframe_unpack() argument
1019 void *buffer) in hdmi_avi_infoframe_unpack() argument
1021 u8 *ptr = buffer; in hdmi_avi_infoframe_unpack()
1027 return -EINVAL; in hdmi_avi_infoframe_unpack()
1029 if (hdmi_infoframe_checksum(buffer, HDMI_INFOFRAME_SIZE(AVI)) != 0) in hdmi_avi_infoframe_unpack()
1030 return -EINVAL; in hdmi_avi_infoframe_unpack()
1032 ret = hdmi_avi_infoframe_init(frame); in hdmi_avi_infoframe_unpack()
1038 frame->colorspace = (ptr[0] >> 5) & 0x3; in hdmi_avi_infoframe_unpack()
1040 frame->active_aspect = ptr[1] & 0xf; in hdmi_avi_infoframe_unpack()
1042 frame->top_bar = (ptr[6] << 8) | ptr[5]; in hdmi_avi_infoframe_unpack()
1043 frame->bottom_bar = (ptr[8] << 8) | ptr[7]; in hdmi_avi_infoframe_unpack()
1046 frame->left_bar = (ptr[10] << 8) | ptr[9]; in hdmi_avi_infoframe_unpack()
1047 frame->right_bar = (ptr[12] << 8) | ptr[11]; in hdmi_avi_infoframe_unpack()
1049 frame->scan_mode = ptr[0] & 0x3; in hdmi_avi_infoframe_unpack()
1051 frame->colorimetry = (ptr[1] >> 6) & 0x3; in hdmi_avi_infoframe_unpack()
1052 frame->picture_aspect = (ptr[1] >> 4) & 0x3; in hdmi_avi_infoframe_unpack()
1053 frame->active_aspect = ptr[1] & 0xf; in hdmi_avi_infoframe_unpack()
1055 frame->itc = ptr[2] & 0x80 ? true : false; in hdmi_avi_infoframe_unpack()
1056 frame->extended_colorimetry = (ptr[2] >> 4) & 0x7; in hdmi_avi_infoframe_unpack()
1057 frame->quantization_range = (ptr[2] >> 2) & 0x3; in hdmi_avi_infoframe_unpack()
1058 frame->nups = ptr[2] & 0x3; in hdmi_avi_infoframe_unpack()
1060 frame->video_code = ptr[3] & 0x7f; in hdmi_avi_infoframe_unpack()
1061 frame->ycc_quantization_range = (ptr[4] >> 6) & 0x3; in hdmi_avi_infoframe_unpack()
1062 frame->content_type = (ptr[4] >> 4) & 0x3; in hdmi_avi_infoframe_unpack()
1064 frame->pixel_repeat = ptr[4] & 0xf; in hdmi_avi_infoframe_unpack()
1070 * hdmi_spd_infoframe_unpack() - unpack binary buffer to a HDMI SPD infoframe
1071 * @buffer: source buffer
1072 * @frame: HDMI SPD infoframe
1074 * Unpacks the information contained in binary @buffer into a structured
1075 * @frame of the HDMI Source Product Description (SPD) information frame.
1081 static int hdmi_spd_infoframe_unpack(struct hdmi_spd_infoframe *frame, in hdmi_spd_infoframe_unpack() argument
1082 void *buffer) in hdmi_spd_infoframe_unpack() argument
1084 u8 *ptr = buffer; in hdmi_spd_infoframe_unpack()
1090 return -EINVAL; in hdmi_spd_infoframe_unpack()
1093 if (hdmi_infoframe_checksum(buffer, HDMI_INFOFRAME_SIZE(SPD)) != 0) in hdmi_spd_infoframe_unpack()
1094 return -EINVAL; in hdmi_spd_infoframe_unpack()
1098 ret = hdmi_spd_infoframe_init(frame, ptr, ptr + 8); in hdmi_spd_infoframe_unpack()
1102 frame->sdi = ptr[24]; in hdmi_spd_infoframe_unpack()
1108 * hdmi_audio_infoframe_unpack() - unpack binary buffer to a HDMI AUDIO infoframe
1109 * @buffer: source buffer
1110 * @frame: HDMI Audio infoframe
1112 * Unpacks the information contained in binary @buffer into a structured
1113 * @frame of the HDMI Audio information frame.
1119 static int hdmi_audio_infoframe_unpack(struct hdmi_audio_infoframe *frame, in hdmi_audio_infoframe_unpack() argument
1120 void *buffer) in hdmi_audio_infoframe_unpack() argument
1122 u8 *ptr = buffer; in hdmi_audio_infoframe_unpack()
1128 return -EINVAL; in hdmi_audio_infoframe_unpack()
1131 if (hdmi_infoframe_checksum(buffer, HDMI_INFOFRAME_SIZE(AUDIO)) != 0) in hdmi_audio_infoframe_unpack()
1132 return -EINVAL; in hdmi_audio_infoframe_unpack()
1134 ret = hdmi_audio_infoframe_init(frame); in hdmi_audio_infoframe_unpack()
1140 frame->channels = ptr[0] & 0x7; in hdmi_audio_infoframe_unpack()
1141 frame->coding_type = (ptr[0] >> 4) & 0xf; in hdmi_audio_infoframe_unpack()
1142 frame->sample_size = ptr[1] & 0x3; in hdmi_audio_infoframe_unpack()
1143 frame->sample_frequency = (ptr[1] >> 2) & 0x7; in hdmi_audio_infoframe_unpack()
1144 frame->coding_type_ext = ptr[2] & 0x1f; in hdmi_audio_infoframe_unpack()
1145 frame->channel_allocation = ptr[3]; in hdmi_audio_infoframe_unpack()
1146 frame->level_shift_value = (ptr[4] >> 3) & 0xf; in hdmi_audio_infoframe_unpack()
1147 frame->downmix_inhibit = ptr[4] & 0x80 ? true : false; in hdmi_audio_infoframe_unpack()
1153 * hdmi_vendor_infoframe_unpack() - unpack binary buffer to a HDMI vendor infoframe
1154 * @buffer: source buffer
1155 * @frame: HDMI Vendor infoframe
1157 * Unpacks the information contained in binary @buffer into a structured
1158 * @frame of the HDMI Vendor information frame.
1165 hdmi_vendor_any_infoframe_unpack(union hdmi_vendor_any_infoframe *frame, in hdmi_vendor_any_infoframe_unpack() argument
1166 void *buffer) in hdmi_vendor_any_infoframe_unpack() argument
1168 u8 *ptr = buffer; in hdmi_vendor_any_infoframe_unpack()
1172 struct hdmi_vendor_infoframe *hvf = &frame->hdmi; in hdmi_vendor_any_infoframe_unpack()
1177 return -EINVAL; in hdmi_vendor_any_infoframe_unpack()
1181 if (hdmi_infoframe_checksum(buffer, in hdmi_vendor_any_infoframe_unpack()
1183 return -EINVAL; in hdmi_vendor_any_infoframe_unpack()
1191 return -EINVAL; in hdmi_vendor_any_infoframe_unpack()
1196 return -EINVAL; in hdmi_vendor_any_infoframe_unpack()
1202 hvf->length = length; in hdmi_vendor_any_infoframe_unpack()
1206 return -EINVAL; in hdmi_vendor_any_infoframe_unpack()
1207 hvf->s3d_struct = ptr[4] >> 4; in hdmi_vendor_any_infoframe_unpack()
1208 if (hvf->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF) { in hdmi_vendor_any_infoframe_unpack()
1210 return -EINVAL; in hdmi_vendor_any_infoframe_unpack()
1211 hvf->s3d_ext_data = ptr[5] >> 4; in hdmi_vendor_any_infoframe_unpack()
1215 return -EINVAL; in hdmi_vendor_any_infoframe_unpack()
1216 hvf->vic = ptr[4]; in hdmi_vendor_any_infoframe_unpack()
1219 return -EINVAL; in hdmi_vendor_any_infoframe_unpack()
1226 * hdmi_infoframe_unpack() - unpack binary buffer to a HDMI infoframe
1227 * @buffer: source buffer
1228 * @frame: HDMI infoframe
1230 * Unpacks the information contained in binary buffer @buffer into a structured
1231 * @frame of a HDMI infoframe.
1237 int hdmi_infoframe_unpack(union hdmi_infoframe *frame, void *buffer) in hdmi_infoframe_unpack() argument
1240 u8 *ptr = buffer; in hdmi_infoframe_unpack()
1244 ret = hdmi_avi_infoframe_unpack(&frame->avi, buffer); in hdmi_infoframe_unpack()
1247 ret = hdmi_spd_infoframe_unpack(&frame->spd, buffer); in hdmi_infoframe_unpack()
1250 ret = hdmi_audio_infoframe_unpack(&frame->audio, buffer); in hdmi_infoframe_unpack()
1253 ret = hdmi_vendor_any_infoframe_unpack(&frame->vendor, buffer); in hdmi_infoframe_unpack()
1256 ret = -EINVAL; in hdmi_infoframe_unpack()