Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

OMAPDSS: HDMI5: use common AVI infoframe support

Instead of using OMAP specific AVI infoframe structs, use the common one
from include/linux/hdmi.h.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>

+64 -56
+64 -56
drivers/video/fbdev/omap2/dss/hdmi5_core.c
··· 290 290 } 291 291 292 292 static void hdmi_core_init(struct hdmi_core_vid_config *video_cfg, 293 - struct hdmi_core_infoframe_avi *avi_cfg, 294 293 struct hdmi_config *cfg) 295 294 { 296 295 DSSDBG("hdmi_core_init\n"); ··· 313 314 cfg->timings.vfp + cfg->timings.vbp; 314 315 video_cfg->v_fc_config.cm.mode = cfg->cm.mode; 315 316 video_cfg->v_fc_config.timings.interlace = cfg->timings.interlace; 316 - 317 - /* info frame */ 318 - avi_cfg->db1_format = 0; 319 - avi_cfg->db1_active_info = 0; 320 - avi_cfg->db1_bar_info_dv = 0; 321 - avi_cfg->db1_scan_info = 0; 322 - avi_cfg->db2_colorimetry = 0; 323 - avi_cfg->db2_aspect_ratio = 0; 324 - avi_cfg->db2_active_fmt_ar = 0; 325 - avi_cfg->db3_itc = 0; 326 - avi_cfg->db3_ec = 0; 327 - avi_cfg->db3_q_range = 0; 328 - avi_cfg->db3_nup_scaling = 0; 329 - avi_cfg->db4_videocode = 0; 330 - avi_cfg->db5_pixel_repeat = 0; 331 - avi_cfg->db6_7_line_eoftop = 0; 332 - avi_cfg->db8_9_line_sofbottom = 0; 333 - avi_cfg->db10_11_pixel_eofleft = 0; 334 - avi_cfg->db12_13_pixel_sofright = 0; 335 317 } 336 318 337 319 /* DSS_HDMI_CORE_VIDEO_CONFIG */ ··· 420 440 421 441 static void hdmi_core_aux_infoframe_avi_config(struct hdmi_core_data *core) 422 442 { 443 + struct hdmi_avi_infoframe *frame = &core->avi_infoframe; 423 444 void __iomem *base = core->base; 424 - struct hdmi_core_infoframe_avi avi = core->avi_cfg; 445 + u8 data[HDMI_INFOFRAME_SIZE(AVI)]; 446 + u8 *ptr; 447 + unsigned y, a, b, s; 448 + unsigned c, m, r; 449 + unsigned itc, ec, q, sc; 450 + unsigned vic; 451 + unsigned yq, cn, pr; 425 452 426 - REG_FLD_MOD(base, HDMI_CORE_FC_AVICONF0, avi.db1_format, 1, 0); 427 - REG_FLD_MOD(base, HDMI_CORE_FC_AVICONF0, avi.db1_active_info, 6, 6); 428 - REG_FLD_MOD(base, HDMI_CORE_FC_AVICONF0, avi.db1_bar_info_dv, 3, 2); 429 - REG_FLD_MOD(base, HDMI_CORE_FC_AVICONF0, avi.db1_scan_info, 5, 4); 430 - REG_FLD_MOD(base, HDMI_CORE_FC_AVICONF1, avi.db2_colorimetry, 7, 6); 431 - REG_FLD_MOD(base, HDMI_CORE_FC_AVICONF1, avi.db2_aspect_ratio, 5, 4); 432 - REG_FLD_MOD(base, HDMI_CORE_FC_AVICONF1, avi.db2_active_fmt_ar, 3, 0); 433 - REG_FLD_MOD(base, HDMI_CORE_FC_AVICONF2, avi.db3_itc, 7, 7); 434 - REG_FLD_MOD(base, HDMI_CORE_FC_AVICONF2, avi.db3_ec, 6, 4); 435 - REG_FLD_MOD(base, HDMI_CORE_FC_AVICONF2, avi.db3_q_range, 3, 2); 436 - REG_FLD_MOD(base, HDMI_CORE_FC_AVICONF2, avi.db3_nup_scaling, 1, 0); 437 - REG_FLD_MOD(base, HDMI_CORE_FC_AVIVID, avi.db4_videocode, 6, 0); 438 - REG_FLD_MOD(base, HDMI_CORE_FC_PRCONF, avi.db5_pixel_repeat, 3, 0); 453 + hdmi_avi_infoframe_pack(frame, data, sizeof(data)); 454 + 455 + ptr = data + HDMI_INFOFRAME_HEADER_SIZE; 456 + 457 + y = (ptr[0] >> 5) & 0x3; 458 + a = (ptr[0] >> 4) & 0x1; 459 + b = (ptr[0] >> 2) & 0x3; 460 + s = (ptr[0] >> 0) & 0x3; 461 + 462 + c = (ptr[1] >> 6) & 0x3; 463 + m = (ptr[1] >> 4) & 0x3; 464 + r = (ptr[1] >> 0) & 0x3; 465 + 466 + itc = (ptr[2] >> 7) & 0x1; 467 + ec = (ptr[2] >> 4) & 0x7; 468 + q = (ptr[2] >> 2) & 0x3; 469 + sc = (ptr[2] >> 0) & 0x3; 470 + 471 + vic = ptr[3]; 472 + 473 + yq = (ptr[4] >> 6) & 0x3; 474 + cn = (ptr[4] >> 4) & 0x3; 475 + pr = (ptr[4] >> 0) & 0xf; 476 + 477 + hdmi_write_reg(base, HDMI_CORE_FC_AVICONF0, 478 + (a << 6) | (s << 4) | (b << 2) | (y << 0)); 479 + 480 + hdmi_write_reg(base, HDMI_CORE_FC_AVICONF1, 481 + (c << 6) | (m << 4) | (r << 0)); 482 + 483 + hdmi_write_reg(base, HDMI_CORE_FC_AVICONF2, 484 + (itc << 7) | (ec << 4) | (q << 2) | (sc << 0)); 485 + 486 + hdmi_write_reg(base, HDMI_CORE_FC_AVIVID, vic); 487 + 488 + hdmi_write_reg(base, HDMI_CORE_FC_AVICONF3, 489 + (yq << 2) | (cn << 0)); 490 + 491 + REG_FLD_MOD(base, HDMI_CORE_FC_PRCONF, pr, 3, 0); 439 492 } 440 493 441 494 static void hdmi_core_csc_config(struct hdmi_core_data *core, ··· 510 497 511 498 /* support limited range with 24 bit color depth for now */ 512 499 csc_coeff = csc_table_deepcolor[0]; 513 - core->avi_cfg.db3_q_range = HDMI_INFOFRAME_AVI_DB3Q_LR; 500 + core->avi_infoframe.quantization_range = HDMI_QUANTIZATION_RANGE_LIMITED; 514 501 515 502 hdmi_core_csc_config(core, csc_coeff); 516 503 hdmi_core_aux_infoframe_avi_config(core); ··· 604 591 struct omap_video_timings video_timing; 605 592 struct hdmi_video_format video_format; 606 593 struct hdmi_core_vid_config v_core_cfg; 607 - struct hdmi_core_infoframe_avi *avi_cfg = &core->avi_cfg; 594 + struct hdmi_avi_infoframe *avi_infoframe = &core->avi_infoframe; 608 595 609 596 hdmi_core_mask_interrupts(core); 610 597 611 - hdmi_core_init(&v_core_cfg, avi_cfg, cfg); 598 + hdmi_core_init(&v_core_cfg, cfg); 612 599 613 600 hdmi_wp_init_vid_fmt_timings(&video_format, &video_timing, cfg); 614 601 ··· 637 624 /* 638 625 * configure packet info frame video see doc CEA861-D page 65 639 626 */ 640 - avi_cfg->db1_format = HDMI_INFOFRAME_AVI_DB1Y_RGB; 641 - avi_cfg->db1_active_info = 642 - HDMI_INFOFRAME_AVI_DB1A_ACTIVE_FORMAT_OFF; 643 - avi_cfg->db1_bar_info_dv = HDMI_INFOFRAME_AVI_DB1B_NO; 644 - avi_cfg->db1_scan_info = HDMI_INFOFRAME_AVI_DB1S_0; 645 - avi_cfg->db2_colorimetry = HDMI_INFOFRAME_AVI_DB2C_NO; 646 - avi_cfg->db2_aspect_ratio = HDMI_INFOFRAME_AVI_DB2M_NO; 647 - avi_cfg->db2_active_fmt_ar = HDMI_INFOFRAME_AVI_DB2R_SAME; 648 - avi_cfg->db3_itc = HDMI_INFOFRAME_AVI_DB3ITC_NO; 649 - avi_cfg->db3_ec = HDMI_INFOFRAME_AVI_DB3EC_XVYUV601; 650 - avi_cfg->db3_q_range = HDMI_INFOFRAME_AVI_DB3Q_DEFAULT; 651 - avi_cfg->db3_nup_scaling = HDMI_INFOFRAME_AVI_DB3SC_NO; 652 - avi_cfg->db4_videocode = cfg->cm.code; 653 - avi_cfg->db5_pixel_repeat = HDMI_INFOFRAME_AVI_DB5PR_NO; 654 - avi_cfg->db6_7_line_eoftop = 0; 655 - avi_cfg->db8_9_line_sofbottom = 0; 656 - avi_cfg->db10_11_pixel_eofleft = 0; 657 - avi_cfg->db12_13_pixel_sofright = 0; 658 - 627 + hdmi_avi_infoframe_init(avi_infoframe); 628 + avi_infoframe->colorspace = HDMI_COLORSPACE_RGB; 629 + avi_infoframe->scan_mode = HDMI_SCAN_MODE_NONE; 630 + avi_infoframe->colorimetry = HDMI_COLORIMETRY_NONE; 631 + avi_infoframe->picture_aspect = HDMI_PICTURE_ASPECT_NONE; 632 + avi_infoframe->active_aspect = HDMI_ACTIVE_ASPECT_PICTURE; 633 + avi_infoframe->itc = 0; 634 + avi_infoframe->extended_colorimetry = HDMI_EXTENDED_COLORIMETRY_XV_YCC_601; 635 + avi_infoframe->quantization_range = HDMI_QUANTIZATION_RANGE_DEFAULT; 636 + avi_infoframe->nups = HDMI_NUPS_UNKNOWN; 637 + avi_infoframe->video_code = cfg->cm.code; 638 + avi_infoframe->ycc_quantization_range = HDMI_YCC_QUANTIZATION_RANGE_LIMITED; 639 + avi_infoframe->content_type = HDMI_CONTENT_TYPE_NONE; 640 + avi_infoframe->pixel_repeat = 0; 659 641 hdmi_core_aux_infoframe_avi_config(core); 660 642 661 643 hdmi_core_enable_video_path(core);