Lines Matching refs:frame
128 hdmi_audio_infoframe_init(struct hdmi_audio_infoframe *frame) in hdmi_audio_infoframe_init() argument
132 *frame = zero_frame; in hdmi_audio_infoframe_init()
134 hdmi_infoframe_header_init(&frame->header, HDMI_INFOFRAME_TYPE_AUDIO, in hdmi_audio_infoframe_init()
141 hdmi_audio_infoframe_pack(const struct hdmi_audio_infoframe *frame, void *buf, in hdmi_audio_infoframe_pack() argument
150 KASSERT(frame->header.length == HDMI_AUDIO_INFOFRAME_SIZE); in hdmi_audio_infoframe_pack()
152 ret = hdmi_infoframe_header_pack(&frame->header, length, p, size); in hdmi_audio_infoframe_pack()
159 if (frame->channels >= 2) in hdmi_audio_infoframe_pack()
160 channels = frame->channels - 1; in hdmi_audio_infoframe_pack()
162 p[0] = __SHIFTIN(frame->coding_type, __BITS(7,4)); in hdmi_audio_infoframe_pack()
165 p[1] = __SHIFTIN(frame->sample_frequency, __BITS(4,2)); in hdmi_audio_infoframe_pack()
166 p[1] |= __SHIFTIN(frame->sample_size, __BITS(1,0)); in hdmi_audio_infoframe_pack()
168 p[2] = __SHIFTIN(frame->coding_type_ext, __BITS(5,0)); in hdmi_audio_infoframe_pack()
170 p[3] = __SHIFTIN(frame->level_shift_value, __BITS(6,3)); in hdmi_audio_infoframe_pack()
172 p[4] = __SHIFTIN(frame->downmix_inhibit? 1 : 0, __BIT(7)); in hdmi_audio_infoframe_pack()
189 hdmi_audio_infoframe_unpack(struct hdmi_audio_infoframe *frame, in hdmi_audio_infoframe_unpack() argument
195 ret = hdmi_infoframe_header_unpack(&frame->header, p, size); in hdmi_audio_infoframe_unpack()
198 if (frame->header.length != HDMI_AUDIO_INFOFRAME_SIZE) in hdmi_audio_infoframe_unpack()
203 frame->coding_type = __SHIFTOUT(p[0], __BITS(7,4)); in hdmi_audio_infoframe_unpack()
204 frame->channels = __SHIFTOUT(p[0], __BITS(2,0)); in hdmi_audio_infoframe_unpack()
206 frame->sample_frequency = __SHIFTOUT(p[1], __BITS(4,2)); in hdmi_audio_infoframe_unpack()
207 frame->sample_size = __SHIFTOUT(p[1], __BITS(1,0)); in hdmi_audio_infoframe_unpack()
209 frame->coding_type_ext = __SHIFTOUT(p[2], __BITS(5,0)); in hdmi_audio_infoframe_unpack()
211 frame->level_shift_value = __SHIFTOUT(p[3], __BITS(6,3)); in hdmi_audio_infoframe_unpack()
213 frame->downmix_inhibit = __SHIFTOUT(p[4], __BIT(7)); in hdmi_audio_infoframe_unpack()
221 hdmi_avi_infoframe_init(struct hdmi_avi_infoframe *frame) in hdmi_avi_infoframe_init() argument
225 *frame = zero_frame; in hdmi_avi_infoframe_init()
227 hdmi_infoframe_header_init(&frame->header, HDMI_INFOFRAME_TYPE_AVI, 2, in hdmi_avi_infoframe_init()
234 hdmi_avi_infoframe_check(const struct hdmi_avi_infoframe *frame) in hdmi_avi_infoframe_check() argument
238 ret = hdmi_infoframe_header_check(&frame->header, in hdmi_avi_infoframe_check()
247 hdmi_avi_infoframe_pack(const struct hdmi_avi_infoframe *frame, void *buf, in hdmi_avi_infoframe_pack() argument
255 KASSERT(frame->header.length == HDMI_AVI_INFOFRAME_SIZE); in hdmi_avi_infoframe_pack()
257 ret = hdmi_infoframe_header_pack(&frame->header, length, p, size); in hdmi_avi_infoframe_pack()
264 p[0] = __SHIFTIN(frame->colorspace, __BITS(6,5)); in hdmi_avi_infoframe_pack()
265 p[0] |= __SHIFTIN(frame->active_aspect & 0xf? 1 : 0, __BIT(4)); in hdmi_avi_infoframe_pack()
266 p[0] |= __SHIFTIN(frame->top_bar || frame->bottom_bar, __BIT(3)); in hdmi_avi_infoframe_pack()
267 p[0] |= __SHIFTIN(frame->left_bar || frame->right_bar, __BIT(2)); in hdmi_avi_infoframe_pack()
268 p[0] |= __SHIFTIN(frame->scan_mode, __BITS(1,0)); in hdmi_avi_infoframe_pack()
270 p[1] = __SHIFTIN(frame->colorimetry, __BITS(7,6)); in hdmi_avi_infoframe_pack()
271 p[1] |= __SHIFTIN(frame->picture_aspect, __BITS(5,4)); in hdmi_avi_infoframe_pack()
272 p[1] |= __SHIFTIN(frame->active_aspect, __BITS(3,0)); in hdmi_avi_infoframe_pack()
274 p[2] = __SHIFTIN(frame->itc? 1 : 0, __BIT(7)); in hdmi_avi_infoframe_pack()
275 p[2] |= __SHIFTIN(frame->extended_colorimetry, __BITS(6,4)); in hdmi_avi_infoframe_pack()
276 p[2] |= __SHIFTIN(frame->quantization_range, __BITS(3,2)); in hdmi_avi_infoframe_pack()
277 p[2] |= __SHIFTIN(frame->nups, __BITS(1,0)); in hdmi_avi_infoframe_pack()
279 p[3] = frame->video_code; in hdmi_avi_infoframe_pack()
281 p[4] = __SHIFTIN(frame->ycc_quantization_range, __BITS(7,6)); in hdmi_avi_infoframe_pack()
282 p[4] |= __SHIFTIN(frame->content_type, __BITS(5,4)); in hdmi_avi_infoframe_pack()
283 p[4] |= __SHIFTIN(frame->pixel_repeat, __BITS(3,0)); in hdmi_avi_infoframe_pack()
285 le16enc(&p[5], frame->top_bar); in hdmi_avi_infoframe_pack()
286 le16enc(&p[7], frame->bottom_bar); in hdmi_avi_infoframe_pack()
287 le16enc(&p[9], frame->left_bar); in hdmi_avi_infoframe_pack()
288 le16enc(&p[11], frame->right_bar); in hdmi_avi_infoframe_pack()
297 hdmi_avi_infoframe_unpack(struct hdmi_avi_infoframe *frame, const void *buf, in hdmi_avi_infoframe_unpack() argument
303 ret = hdmi_infoframe_header_unpack(&frame->header, p, size); in hdmi_avi_infoframe_unpack()
306 if (frame->header.length != HDMI_AVI_INFOFRAME_SIZE) in hdmi_avi_infoframe_unpack()
311 frame->colorspace = __SHIFTOUT(p[0], __BITS(6,5)); in hdmi_avi_infoframe_unpack()
312 frame->scan_mode = __SHIFTOUT(p[0], __BITS(1,0)); in hdmi_avi_infoframe_unpack()
314 frame->colorimetry = __SHIFTOUT(p[1], __BITS(7,6)); in hdmi_avi_infoframe_unpack()
315 frame->picture_aspect = __SHIFTOUT(p[1], __BITS(5,4)); in hdmi_avi_infoframe_unpack()
317 frame->active_aspect = __SHIFTOUT(p[1], __BITS(3,0)); in hdmi_avi_infoframe_unpack()
319 frame->itc = __SHIFTOUT(p[2], __BIT(7)); in hdmi_avi_infoframe_unpack()
320 frame->extended_colorimetry = __SHIFTOUT(p[2], __BITS(6,4)); in hdmi_avi_infoframe_unpack()
321 frame->quantization_range = __SHIFTOUT(p[2], __BITS(3,2)); in hdmi_avi_infoframe_unpack()
322 frame->nups = __SHIFTOUT(p[2], __BITS(1,0)); in hdmi_avi_infoframe_unpack()
324 frame->video_code = p[3]; in hdmi_avi_infoframe_unpack()
326 frame->ycc_quantization_range = __SHIFTOUT(p[4], __BITS(7,6)); in hdmi_avi_infoframe_unpack()
327 frame->content_type = __SHIFTOUT(p[4], __BITS(5,4)); in hdmi_avi_infoframe_unpack()
328 frame->pixel_repeat = __SHIFTOUT(p[4], __BITS(3,0)); in hdmi_avi_infoframe_unpack()
331 frame->top_bar = le16dec(&p[5]); in hdmi_avi_infoframe_unpack()
332 frame->bottom_bar = le16dec(&p[7]); in hdmi_avi_infoframe_unpack()
335 frame->left_bar = le16dec(&p[9]); in hdmi_avi_infoframe_unpack()
336 frame->right_bar = le16dec(&p[11]); in hdmi_avi_infoframe_unpack()
345 hdmi_drm_infoframe_init(struct hdmi_drm_infoframe *frame) in hdmi_drm_infoframe_init() argument
349 *frame = zero_frame; in hdmi_drm_infoframe_init()
351 hdmi_infoframe_header_init(&frame->header, HDMI_INFOFRAME_TYPE_DRM, in hdmi_drm_infoframe_init()
358 hdmi_drm_infoframe_check(const struct hdmi_drm_infoframe *frame) in hdmi_drm_infoframe_check() argument
362 ret = hdmi_infoframe_header_check(&frame->header, in hdmi_drm_infoframe_check()
373 hdmi_drm_infoframe_pack(const struct hdmi_drm_infoframe *frame, in __strong_alias()
382 KASSERT(frame->header.length == HDMI_DRM_INFOFRAME_SIZE); in __strong_alias()
384 ret = hdmi_infoframe_header_pack(&frame->header, length, p, size); in __strong_alias()
391 p[0] = frame->eotf; in __strong_alias()
392 p[1] = frame->metadata_type; in __strong_alias()
393 for (i = 0; i < __arraycount(frame->display_primaries); i++) { in __strong_alias()
394 le16enc(&p[2 + 4*i], frame->display_primaries[i].x); in __strong_alias()
395 le16enc(&p[2 + 4*i + 2], frame->display_primaries[i].y); in __strong_alias()
397 le16enc(&p[14], frame->white_point.x); in __strong_alias()
398 le16enc(&p[16], frame->white_point.y); in __strong_alias()
399 le16enc(&p[18], frame->min_display_mastering_luminance); in __strong_alias()
400 le16enc(&p[20], frame->max_display_mastering_luminance); in __strong_alias()
401 le16enc(&p[22], frame->max_cll); in __strong_alias()
402 le16enc(&p[24], frame->max_fall); in __strong_alias()
411 hdmi_drm_infoframe_unpack(struct hdmi_drm_infoframe *frame, const void *buf, in hdmi_drm_infoframe_unpack() argument
418 ret = hdmi_infoframe_header_unpack(&frame->header, p, size); in hdmi_drm_infoframe_unpack()
421 if (frame->header.length != HDMI_DRM_INFOFRAME_SIZE) in hdmi_drm_infoframe_unpack()
426 frame->eotf = p[0]; in hdmi_drm_infoframe_unpack()
427 frame->metadata_type = p[1]; in hdmi_drm_infoframe_unpack()
428 for (i = 0; i < __arraycount(frame->display_primaries); i++) { in hdmi_drm_infoframe_unpack()
429 frame->display_primaries[i].x = le16dec(&p[2 + 4*i]); in hdmi_drm_infoframe_unpack()
430 frame->display_primaries[i].y = le16dec(&p[2 + 4*i + 2]); in hdmi_drm_infoframe_unpack()
432 frame->white_point.x = le16dec(&p[14]); in hdmi_drm_infoframe_unpack()
433 frame->white_point.y = le16dec(&p[16]); in hdmi_drm_infoframe_unpack()
434 frame->min_display_mastering_luminance = le16dec(&p[18]); in hdmi_drm_infoframe_unpack()
435 frame->max_display_mastering_luminance = le16dec(&p[20]); in hdmi_drm_infoframe_unpack()
436 frame->max_cll = le16dec(&p[22]); in hdmi_drm_infoframe_unpack()
437 frame->max_fall = le16dec(&p[24]); in hdmi_drm_infoframe_unpack()
445 hdmi_spd_infoframe_init(struct hdmi_spd_infoframe *frame, const char *vendor, in hdmi_spd_infoframe_init() argument
450 *frame = zero_frame; in hdmi_spd_infoframe_init()
452 hdmi_infoframe_header_init(&frame->header, HDMI_INFOFRAME_TYPE_SPD, in hdmi_spd_infoframe_init()
455 strncpy(frame->vendor, vendor, sizeof(frame->vendor)); in hdmi_spd_infoframe_init()
456 strncpy(frame->product, product, sizeof(frame->product)); in hdmi_spd_infoframe_init()
462 hdmi_spd_infoframe_check(const struct hdmi_spd_infoframe *frame) in hdmi_spd_infoframe_check() argument
466 ret = hdmi_infoframe_header_check(&frame->header, in hdmi_spd_infoframe_check()
475 hdmi_spd_infoframe_pack(const struct hdmi_spd_infoframe *frame, void *buf, in hdmi_spd_infoframe_pack() argument
483 KASSERT(frame->header.length == HDMI_SPD_INFOFRAME_SIZE); in hdmi_spd_infoframe_pack()
485 ret = hdmi_infoframe_header_pack(&frame->header, length, p, size); in hdmi_spd_infoframe_pack()
492 memcpy(&p[0], frame->vendor, 8); in hdmi_spd_infoframe_pack()
493 memcpy(&p[8], frame->product, 16); in hdmi_spd_infoframe_pack()
494 p[24] = frame->sdi; in hdmi_spd_infoframe_pack()
503 hdmi_spd_infoframe_unpack(struct hdmi_spd_infoframe *frame, const void *buf, in hdmi_spd_infoframe_unpack() argument
509 ret = hdmi_infoframe_header_unpack(&frame->header, p, size); in hdmi_spd_infoframe_unpack()
512 if (frame->header.length != HDMI_SPD_INFOFRAME_SIZE) in hdmi_spd_infoframe_unpack()
517 memcpy(frame->vendor, &p[0], 8); in hdmi_spd_infoframe_unpack()
518 memcpy(frame->product, &p[8], 16); in hdmi_spd_infoframe_unpack()
519 frame->sdi = p[24]; in hdmi_spd_infoframe_unpack()
527 hdmi_vendor_infoframe_init(struct hdmi_vendor_infoframe *frame) in hdmi_vendor_infoframe_init() argument
531 *frame = zero_frame; in hdmi_vendor_infoframe_init()
533 hdmi_infoframe_header_init(&frame->header, HDMI_INFOFRAME_TYPE_VENDOR, in hdmi_vendor_infoframe_init()
536 frame->oui = HDMI_IEEE_OUI; in hdmi_vendor_infoframe_init()
537 frame->s3d_struct = HDMI_3D_STRUCTURE_INVALID; in hdmi_vendor_infoframe_init()
543 hdmi_vendor_infoframe_length(const struct hdmi_vendor_infoframe *frame) in hdmi_vendor_infoframe_length() argument
546 if (frame->vic) { in hdmi_vendor_infoframe_length()
548 } else if (frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID) { in hdmi_vendor_infoframe_length()
549 if (frame->s3d_struct < HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF) in hdmi_vendor_infoframe_length()
559 hdmi_vendor_infoframe_check(const struct hdmi_vendor_infoframe *frame) in hdmi_vendor_infoframe_check() argument
562 if (frame->header.type != HDMI_INFOFRAME_TYPE_VENDOR || in hdmi_vendor_infoframe_check()
563 frame->header.version != 1) in hdmi_vendor_infoframe_check()
568 if (frame->vic != 0 && frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID) in hdmi_vendor_infoframe_check()
575 hdmi_vendor_infoframe_pack(const struct hdmi_vendor_infoframe *frame, in hdmi_vendor_infoframe_pack() argument
583 if (frame->vic != 0 && frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID) in hdmi_vendor_infoframe_pack()
587 length += hdmi_vendor_infoframe_length(frame); in hdmi_vendor_infoframe_pack()
589 ret = hdmi_infoframe_header_pack(&frame->header, length, p, size); in hdmi_vendor_infoframe_pack()
600 if (frame->vic) { in hdmi_vendor_infoframe_pack()
602 p[4] = frame->vic; in hdmi_vendor_infoframe_pack()
603 } else if (frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID) { in hdmi_vendor_infoframe_pack()
605 p[4] = __SHIFTIN(frame->s3d_struct, __BITS(7,4)); in hdmi_vendor_infoframe_pack()
606 if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF) in hdmi_vendor_infoframe_pack()
607 p[5] = __SHIFTIN(frame->s3d_ext_data, __BITS(7,4)); in hdmi_vendor_infoframe_pack()
618 hdmi_vendor_infoframe_unpack(struct hdmi_vendor_infoframe *frame, in hdmi_vendor_infoframe_unpack() argument
624 ret = hdmi_infoframe_header_unpack(&frame->header, p, size); in hdmi_vendor_infoframe_unpack()
627 if (frame->header.length < 4) in hdmi_vendor_infoframe_unpack()
637 if (frame->header.length != 4) in hdmi_vendor_infoframe_unpack()
641 if (frame->header.length != 5) in hdmi_vendor_infoframe_unpack()
643 frame->vic = p[4]; in hdmi_vendor_infoframe_unpack()
646 if (frame->header.length < 5) in hdmi_vendor_infoframe_unpack()
648 frame->s3d_struct = __SHIFTOUT(p[4], __BITS(7,4)); in hdmi_vendor_infoframe_unpack()
649 if (frame->s3d_struct < HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF) { in hdmi_vendor_infoframe_unpack()
650 if (frame->header.length != 5) in hdmi_vendor_infoframe_unpack()
653 if (frame->header.length != 6) in hdmi_vendor_infoframe_unpack()
655 frame->s3d_ext_data = __SHIFTOUT(p[5], __BITS(7,4)); in hdmi_vendor_infoframe_unpack()
670 hdmi_infoframe_pack(const union hdmi_infoframe *frame, void *buf, size_t size) in __strong_alias()
673 switch (frame->any.type) { in __strong_alias()
675 return hdmi_vendor_infoframe_pack(&frame->vendor.hdmi, buf, in __strong_alias()
678 return hdmi_avi_infoframe_pack(&frame->avi, buf, size); in __strong_alias()
680 return hdmi_spd_infoframe_pack(&frame->spd, buf, size); in __strong_alias()
682 return hdmi_audio_infoframe_pack(&frame->audio, buf, size); in __strong_alias()
684 return hdmi_drm_infoframe_pack(&frame->drm, buf, size); in __strong_alias()
691 hdmi_infoframe_unpack(union hdmi_infoframe *frame, const void *buf, in hdmi_infoframe_unpack() argument
696 memset(frame, 0, sizeof(*frame)); in hdmi_infoframe_unpack()
698 ret = hdmi_infoframe_header_unpack(&frame->any, buf, size); in hdmi_infoframe_unpack()
701 switch (frame->any.type) { in hdmi_infoframe_unpack()
703 return hdmi_vendor_infoframe_unpack(&frame->vendor.hdmi, buf, in hdmi_infoframe_unpack()
706 return hdmi_avi_infoframe_unpack(&frame->avi, buf, size); in hdmi_infoframe_unpack()
708 return hdmi_spd_infoframe_unpack(&frame->spd, buf, size); in hdmi_infoframe_unpack()
710 return hdmi_audio_infoframe_unpack(&frame->audio, buf, size); in hdmi_infoframe_unpack()
712 return hdmi_drm_infoframe_unpack(&frame->drm, buf, size); in hdmi_infoframe_unpack()
720 const union hdmi_infoframe *frame) in hdmi_infoframe_log() argument
723 hexdump(printf, device_xname(device), frame, sizeof(*frame)); in hdmi_infoframe_log()