YCBCR 4:2:0 support for LSPCON

Submitted by Sharma, Shashank on Aug. 9, 2017, 6:43 a.m.

Details

Reviewer None
Submitted Aug. 9, 2017, 6:43 a.m.
Last Updated Aug. 9, 2017, 7:04 a.m.
Revision 1

Cover Letter(s)

Revision 1
      LSPCON is a DP->HDMI active dongle, enumerated as DP dual
mode adapter on Intel GEN9 platforms. It's provided by two
different vendors
        - Mega Chips America (MCA)
        - Parade Technologies (Parade)

In order to support YCBCR 4:2:0 outputs, these are the essential
steps:
        - Convert HDMI output format from RGB to YCBCR 4:4:4.
        - Set appropriate color space in AVI infoframes.
        - Write AVI infoframes to vendor specific AUX registers.

This patch series adds 7 patches, to accommodate above steps and
enable YCBCR 4:2:0 output for LSPCON based HDMI displays. First
4 patches are from Ville Syrjälä's patch series, which makes
infoframe functions available for DDI displays, published here:
https://patchwork.freedesktop.org/series/8183/

Rest 3 patches add:
- Vendor identification for LSPCON chips.
- AVI infoframe infrastructure for LSPCON displays.
- 4:2:0 support for LSPCON displays.

Shashank Sharma (3):
  drm/i915: check LSPCON vendor OUI
  drm/i915: write AVI infoframes for LSPCON
  drm/i915: YCBCR 420 support for LSPCON

Ville Syrjälä (4):
  drm/i915: Check has_infoframes when enabling infoframes
  drm/i915: Disable infoframes when shutting down DDI HDMI
  drm/i915: Move infoframe vfuncs into intel_digital_port
  drm/i915: Init infoframe vfuncs for DP encoders as well

 drivers/gpu/drm/i915/intel_ddi.c     |  37 ++--
 drivers/gpu/drm/i915/intel_display.c |  15 +-
 drivers/gpu/drm/i915/intel_dp.c      |  16 +-
 drivers/gpu/drm/i915/intel_drv.h     |  54 ++++--
 drivers/gpu/drm/i915/intel_hdmi.c    |  97 ++++++-----
 drivers/gpu/drm/i915/intel_lspcon.c  | 317 +++++++++++++++++++++++++++++++++--
 6 files changed, 457 insertions(+), 79 deletions(-)
    

Revisions

Patches download mbox

Tests

Series 28536v1 YCBCR 4:2:0 support for LSPCON
https://patchwork.freedesktop.org/api/1.0/series/28536/revisions/1/mbox/

Test gem_exec_suspend:
        Subgroup basic-s3:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-s4-devices:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
Test kms_busy:
        Subgroup basic-flip-a:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-flip-b:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-flip-c:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
Test kms_cursor_legacy:
        Subgroup basic-busy-flip-before-cursor-atomic:
                pass       -> DMESG-WARN (fi-skl-6770hq) fdo#100215 +3
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-busy-flip-before-cursor-legacy:
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-flip-after-cursor-atomic:
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-flip-after-cursor-legacy:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-flip-after-cursor-varying-size:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-flip-before-cursor-atomic:
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-flip-before-cursor-legacy:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-flip-before-cursor-varying-size:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
Test kms_flip:
        Subgroup basic-flip-vs-dpms:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-flip-vs-modeset:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-flip-vs-wf_vblank:
                pass       -> DMESG-WARN (fi-skl-6770hq) fdo#99739
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup basic-plain-flip:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
Test kms_frontbuffer_tracking:
        Subgroup basic:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
Test kms_pipe_crc_basic:
        Subgroup hang-read-crc-pipe-a:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup hang-read-crc-pipe-b:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup hang-read-crc-pipe-c:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup nonblocking-crc-pipe-a:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup nonblocking-crc-pipe-a-frame-sequence:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup nonblocking-crc-pipe-b:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup nonblocking-crc-pipe-b-frame-sequence:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup nonblocking-crc-pipe-c:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup nonblocking-crc-pipe-c-frame-sequence:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup read-crc-pipe-a:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup read-crc-pipe-a-frame-sequence:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup read-crc-pipe-b:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup read-crc-pipe-b-frame-sequence:
                pass       -> DMESG-WARN (fi-skl-6770hq)
                pass       -> DMESG-WARN (fi-kbl-7500u)
        Subgroup read-crc-pipe-c:
WARNING: Long output truncated

e2586470ba9f468a2f72b1619d79aa1d510c45a7 drm-tip: 2017y-08m-08d-20h-39m-09s UTC integration manifest
3bb5d2dec1f7 drm/i915: YCBCR 420 support for LSPCON
13314ea74ed6 drm/i915: write AVI infoframes for LSPCON
8ffd6e3c7ca1 drm/i915: check LSPCON vendor OUI
d1880ab5c81f drm/i915: Init infoframe vfuncs for DP encoders as well
eb83618c7424 drm/i915: Move infoframe vfuncs into intel_digital_port
12132038736e drm/i915: Disable infoframes when shutting down DDI HDMI
57449692e789 drm/i915: Check has_infoframes when enabling infoframes