1. 16 Jun, 2017 15 commits
    • Alastair Bridgewater's avatar
      drm/nouveau: Enable stereoscopic 3D output over HDMI · 0f18d276
      Alastair Bridgewater authored
      Enable stereoscopic output for HDMI and DisplayPort connectors on
      NV50+ (G80+) hardware.  We do not enable stereoscopy on older
      hardware in case there is some older board that still has HDMI
      output but for which we have no logic for setting the Vendor
      InfoFrame.
      
      With this, I get an obvious 3D output when using the "testdisplay"
      program from intel-gpu-tools with the "-3" parameter and outputting
      to a 3D-capable HDMI display, for all available 3D modes (be they
      TB, SBSH, or FP) on all four G80+ DISPs.
      Signed-off-by: default avatarAlastair Bridgewater <alastair.bridgewater@gmail.com>
      0f18d276
    • Alastair Bridgewater's avatar
      drm/nouveau: Handle frame-packing mode geometry and timing effects · 37aa2243
      Alastair Bridgewater authored
      Frame-packing modes add an extra vtotal raster lines to each frame
      above and beyond what the basic mode description calls for.
      Account for this during scaler configuration (possibly a bit of a
      hack), during CRTC configuration (clearly not a hack), and when
      checking that a mode is valid for a given connector (cribbed from
      the i915 driver).
      Signed-off-by: default avatarAlastair Bridgewater <alastair.bridgewater@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      37aa2243
    • Alastair Bridgewater's avatar
      drm/nouveau/disp/gk104-: Use supplied HDMI InfoFrames · a8970743
      Alastair Bridgewater authored
      Now that we have the InfoFrame data being provided, for the most
      part, program the hardware to use it.
      
      While we're here, and since the functionality will come in handy
      for supporting 3D stereoscopy, implement setting the Vendor
      ("generic"?) InfoFrame.
      
      Also don't enable any InfoFrame that is not provided, and disable
      the Vendor InfoFrame when disabling the output.
      Signed-off-by: default avatarAlastair Bridgewater <alastair.bridgewater@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      a8970743
    • Alastair Bridgewater's avatar
      drm/nouveau/disp/gf119: Use supplied HDMI InfoFrames · 2709b275
      Alastair Bridgewater authored
      Now that we have the InfoFrame data being provided, for the most
      part, program the hardware to use it.
      
      While we're here, and since the functionality will come in handy
      for supporting 3D stereoscopy, implement setting the Vendor
      ("generic"?) InfoFrame.
      
      Also don't enable any InfoFrame that is not provided, and disable
      the Vendor InfoFrame when disabling the output.
      Signed-off-by: default avatarAlastair Bridgewater <alastair.bridgewater@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      2709b275
    • Alastair Bridgewater's avatar
      drm/nouveau/disp/gt215: Use supplied HDMI InfoFrames · ba328368
      Alastair Bridgewater authored
      Now that we have the InfoFrame data being provided, for the most
      part, program the hardware to use it.
      
      While we're here, and since the functionality will come in handy
      for supporting 3D stereoscopy, implement setting the Vendor
      ("generic") InfoFrame.
      
      Also don't enable any AVI or Vendor InfoFrame that is not provided,
      and disable the Vendor InfoFrame when disabling the output.
      
      Ignore the Audio InfoFrame: We don't supply it, and altering HDMI
      audio semantics (for better or worse) on this hardware is out of
      scope for me at this time.
      Signed-off-by: default avatarAlastair Bridgewater <alastair.bridgewater@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      ba328368
    • Alastair Bridgewater's avatar
      drm/nouveau/disp/g84-gt200: Use supplied HDMI InfoFrames · a45f7908
      Alastair Bridgewater authored
      Now that we have the InfoFrame data being provided, for the most
      part, program the hardware to use it.
      
      While we're here, and since the functionality will come in handy
      for supporting 3D stereoscopy, implement setting the Vendor
      ("generic"?) InfoFrame.
      
      Also don't enable any AVI or Vendor InfoFrame that is not provided,
      and disable the Vendor InfoFrame when disabling the output.
      
      Ignore the Audio InfoFrame: We don't supply it, and altering HDMI
      audio semantics (for better or worse) on this hardware is out of
      scope for me at this time.
      Signed-off-by: default avatarAlastair Bridgewater <alastair.bridgewater@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      a45f7908
    • Alastair Bridgewater's avatar
      drm/nouveau/disp: Add mechanism to convert HDMI InfoFrames to hardware format · f60213c0
      Alastair Bridgewater authored
      HDMI InfoFrames are passed to NVKM as bags of bytes, but the
      hardware needs them to be packed into words.  Rather than having
      four (or more) copies of the packing logic introduce a single copy
      now, in a central place.
      
      We currently need these for AVI and Vendor InfoFrames, but we may
      also expect to need them for Audio InfoFrames at some point.
      Signed-off-by: default avatarAlastair Bridgewater <alastair.bridgewater@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      f60213c0
    • Alastair Bridgewater's avatar
      drm/nouveau: Pass mode-dependent AVI and Vendor HDMI InfoFrames to NVKM · 34fd3e5d
      Alastair Bridgewater authored
      Now that we have mechanism by which to pass mode-dependent HDMI
      InfoFrames to the low-level hardware driver, it is incumbent upon
      us to do so.
      Signed-off-by: default avatarAlastair Bridgewater <alastair.bridgewater@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      34fd3e5d
    • Alastair Bridgewater's avatar
      drm/nouveau/disp/g84-: Extend NVKM HDMI power control method to set InfoFrames · 31fe2c20
      Alastair Bridgewater authored
      The nouveau driver, in the Linux 3.7 days, used to try and set the
      AVI InfoFrame based on the selected display mode.  These days, it
      uses a fixed set of InfoFrames.  Start to correct that, by
      providing a mechanism whereby InfoFrame data may be passed to the
      NVKM functions that do the actual configuration.
      
      At this point, only establish the new parameters and their parsing,
      don't actually use the data anywhere yet (since it's not supplied
      anywhere).
      Signed-off-by: default avatarAlastair Bridgewater <alastair.bridgewater@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      31fe2c20
    • Alastair Bridgewater's avatar
      drm/nouveau: Clean up nv50_head_atomic_check_mode() and fix blankus calculation · 35dd9874
      Alastair Bridgewater authored
      drm_mode_set_crtcinfo() does compensation for interlace and
      doublescan timing effects already, so do it first and use the
      compensated figures instead of the constant "vscan / ilace" terms
      that we had before.
      
      And then it turns out that the hardware model for how the timing
      parameters are configured is basically the standard model, but
      starting one clock before the sync pulse rather than at the start
      of the display area, which lets us drastically simplify the
      overall timing calculations (verifying the changes by algebraic
      operations is left as an exercise for the reader).
      
      Finally, there were a couple of issues with the computation of
      m->v.blankus that are addressed here.  Interlaced modes would
      generate a negative intermediate result.  Double scan modes would
      generate an overestimate rather than an underestimate.  And when
      enabling frame-packing modes, a rather extreme overestimate would
      be generated.  Fixed, by using the timings as adjusted for the
      CRTC to find the length of the vertical blanking period instead of
      mixing adjusted and pre-adjustment timing parameters.
      Signed-off-by: default avatarAlastair Bridgewater <alastair.bridgewater@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      35dd9874
    • Dave Airlie's avatar
      BackMerge tag 'v4.12-rc5' into drm-next · 925344cc
      Dave Airlie authored
      Linux 4.12-rc5 for nouveau fixes
      925344cc
    • Dave Airlie's avatar
      Merge tag 'imx-drm-next-2017-06-08' of git://git.pengutronix.de/git/pza/linux into drm-next · a6821698
      Dave Airlie authored
      imx-drm: cleanups and YUV 4:2:0 memory read/write reduction support
      
      - Remove counter load enable form PRE, which has no effect.
      - Add support for setting the double read/write reduction flag in channel
        parameter memory. This can be used to save some memory bandwidth when
        capturing in YUV 4:2:0 chroma subsampled formats.
      - Allocate DMA channel structures as needed, most of the 64 channels are
        unused or even reserved.
      - Remove unused interrupt busy waiting routine.
      - Set VDIC field order for both AUTO and MAN inputs simultaneously as
        both can't be active at the same time.
      
      * tag 'imx-drm-next-2017-06-08' of git://git.pengutronix.de/git/pza/linux:
        gpu: ipu-v3: vdic: include AUTO field order bit in ipu_vdi_set_field_order
        gpu: ipu-v3: remove interrupt busy waiting routine
        gpu: ipu-v3: allocate ipuv3_channels as needed
        gpu: ipu-v3: Add support for double read/write reduction
        gpu: ipu-v3: prg: remove counter load enable
      a6821698
    • Dave Airlie's avatar
      Merge tag 'drm-fsl-dcu-for-v4.13' of http://git.agner.ch/git/linux-drm-fsl-dcu into drm-next · 033fd325
      Dave Airlie authored
      some fsl-dcu cleanups
      
      * tag 'drm-fsl-dcu-for-v4.13' of http://git.agner.ch/git/linux-drm-fsl-dcu:
        drm/fsl-dcu: use new drm_atomic_helper_shutdown
        drm/fsl-dcu: implement irq_preinstall/uninstall callbacks
        drm/fsl: Drop drm_vblank_cleanup
      033fd325
    • Dave Airlie's avatar
      Merge branch 'drm/next/du' of git://linuxtv.org/pinchartl/media into drm-next · 202dfa08
      Dave Airlie authored
      The series interleaves DRM and V4L2 patches due to dependencies between the R-
      Car DU and VSP drivers. Mauro has acked all the V4L2 patches to go through
      your tree, and they don't conflict with anything queued for v4.13 in his tree.
      If I need to send any conflicting patches through Mauro's tree for v4.13, I'll
      make sure to base them on this branch.
      
      * 'drm/next/du' of git://linuxtv.org/pinchartl/media:
        drm: rcar-du: Map memory through the VSP device
        v4l: vsp1: Add API to map and unmap DRM buffers through the VSP
        v4l: vsp1: Map the DL and video buffers through the proper bus master
        v4l: rcar-fcp: Add an API to retrieve the FCP device
        v4l: rcar-fcp: Don't get/put module reference
        drm: rcar-du: Register a completion callback with VSP1
        v4l: vsp1: Extend VSP1 module API to allow DRM callbacks
        v4l: vsp1: Postpone frame end handling in event of display list race
        drm: rcar-du: Arm the page flip event after queuing the page flip
      202dfa08
    • Dave Airlie's avatar
      Merge tag 'sunxi-drm-for-4.13' of... · 7249e3d6
      Dave Airlie authored
      Merge tag 'sunxi-drm-for-4.13' of https://git.kernel.org/pub/scm/linux/kernel/git/mripard/linux into drm-next
      
      sun4i-drm changes for 4.13
      
      An unusually big pull request for this merge window, with three notable
      features:
        - V3s display engine support. This is especially notable because it uses
          a different display engine used on the newer Allwinner SoCs (H3, A64
          and the likes) that will be quite easily supported now.
        - HDMI support for the old Allwinner SoCs. This is enabled only on the
          A10s for now, but should be really easy to extend to deal with A10, A20
          and A31
        - Preliminary work to deal with dual-pipeline SoCs (A10, A20, A31, H3,
          etc.). It currently ignores the second pipeline, but we can use the
          dual-pipelines bindings. This will be useful to enable the display
          pipeline while we work on the dual-pipeline.
      
      * tag 'sunxi-drm-for-4.13' of https://git.kernel.org/pub/scm/linux/kernel/git/mripard/linux: (27 commits)
        drm/sun4i: Add compatible for the A10s pipeline
        drm/sun4i: Add HDMI support
        dt-bindings: display: sun4i: Add allwinner,tcon-channel property
        dt-bindings: display: sun4i: Add HDMI display bindings
        drm/sun4i: Ignore the generic connectors for components
        drm/sun4i: tcon: multiply the vtotal when not in interlace
        drm/sun4i: tcon: Change vertical total size computation inconsistency
        drm/sun4i: tcon: Fix tcon channel 1 backporch calculation
        drm/sun4i: tcon: Switch mux on only for composite
        drm/sun4i: tcon: Move the muxing out of the mode set function
        drm/sun4i: tcon: Add channel debug
        drm/sun4i: tcon: add support for V3s TCON
        drm/sun4i: Add compatible string for V3s display engine
        drm/sun4i: add support for Allwinner DE2 mixers
        drm/sun4i: add a Kconfig option for sun4i-backend
        drm/sun4i: abstract a engine type
        drm/sun4i: return only planes for layers created
        dt-bindings: add bindings for DE2 on V3s SoC
        drm/sun4i: backend: Clarify sun4i_backend_layer_enable debug message
        drm/sun4i: Set TCON clock inside sun4i_tconX_mode_set
        ...
      7249e3d6
  2. 15 Jun, 2017 25 commits