1. 13 12月, 2017 1 次提交
    • K
      drm: Update edid-derived drm_display_info fields at edid property set [v2] · 4b4df570
      Keith Packard 提交于
      There are a set of values in the drm_display_info structure for each
      connector which hold information derived from EDID. These are computed
      in drm_add_display_info. Before this patch, that was only called in
      drm_add_edid_modes. This meant that they were only set when EDID was
      present and never reset when EDID was not, as happened when the
      display was disconnected.
      
      One of these fields, non_desktop, is used from
      drm_mode_connector_update_edid_property, the function responsible for
      assigning the new edid value to the application-visible property.
      
      Various drivers call these two functions (drm_add_edid_modes and
      drm_mode_connector_update_edid_property) in different orders. This
      means that even when EDID is present, the drm_display_info fields may
      not have been computed at the time that
      drm_mode_connector_update_edid_property used the non_desktop value to
      set the non_desktop property.
      
      I've added a public function (drm_reset_display_info) that resets the
      drm_display_info field values to default values and then made the
      drm_add_display_info function public. These two functions are now
      called directly from drm_mode_connector_update_edid_property so that
      the drm_display_info fields are always computed from the current EDID
      information before being used in that function.
      
      This means that the drm_display_info values are often computed twice,
      once when the EDID property it set and a second time when EDID is used
      to compute modes for the device. The alternative would be to uniformly
      ensure that the values were computed once before being used, which
      would require that all drivers reliably invoke the two paths in the
      same order. The computation is inexpensive enough that it seems more
      maintainable in the long term to simply compute them in both paths.
      
      The API to drm_add_display_info has been changed so that it no longer
      takes the set of edid-based quirks as a parameter. Rather, it now
      computes those quirks itself and returns them for further use by
      drm_add_edid_modes.
      
      This patch also includes a number of 'const' additions caused by
      drm_mode_connector_update_edid_property taking a 'const struct edid *'
      parameter and wanting to pass that along to drm_add_display_info.
      
      v2: after review by Daniel Vetter <daniel.vetter@ffwll.ch>
      
      	Removed EXPORT_SYMBOL_GPL for drm_reset_display_info and
      	drm_add_display_info.
      
      	Added FIXME in drm_mode_connector_update_edid_property about
      	potentially merging that with drm_add_edid_modes to avoid
      	the need for two driver calls.
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171213084427.31199-1-keithp@keithp.com
      (danvet: cherry picked from commit 12a889bf4bca ("drm: rework delayed
      connector cleanup in connector_iter") from drm-misc-next since
      functional conflict with changes in -next and we need to make sure
      both have the right version and nothing gets lost.)
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      4b4df570
  2. 15 11月, 2017 1 次提交
  3. 19 9月, 2017 1 次提交
  4. 15 7月, 2017 2 次提交
    • S
      drm/edid: parse ycbcr 420 deep color information · e6a9a2c3
      Shashank Sharma 提交于
      CEA-861-F spec adds ycbcr420 deep color support information
      in hf-vsdb block. This patch extends the existing hf-vsdb parsing
      function by adding parsing of ycbcr420 deep color support from the
      EDID and adding it into display information stored.
      
      V2: Rebase
      V3: Rebase
      V4: Moved definition of y420_dc_modes into this patch, where its used
          (Ville)
      V5: Optimize function, if(conditions) not reqd (Ville)
      V6: Rebase
      V7: Rebase
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Jose Abreu <joabreu@synopsys.com>
      Signed-off-by: NShashank Sharma <shashank.sharma@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1499960000-9232-8-git-send-email-shashank.sharma@intel.com
      [vsyrjala: Fix sparse indentation warn]
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      e6a9a2c3
    • S
      drm: handle HDMI 2.0 VICs in AVI info-frames · 0c1f528c
      Shashank Sharma 提交于
      HDMI 1.4b support the CEA video modes as per range of CEA-861-D (VIC 1-64).
      For any other mode, the VIC filed in AVI infoframes should be 0.
      HDMI 2.0 sinks, support video modes range as per CEA-861-F spec, which is
      extended to (VIC 1-107).
      
      This patch adds a bool input variable, which indicates if the connected
      sink is a HDMI 2.0 sink or not. This will make sure that we don't pass a
      HDMI 2.0 VIC to a HDMI 1.4 sink.
      
      This patch touches all drm drivers, who are callers of this function
      drm_hdmi_avi_infoframe_from_display_mode but to make sure there is
      no change in current behavior, is_hdmi2 is kept as false.
      
      In case of I915 driver, this patch:
      - checks if the connected display is HDMI 2.0.
      - HDMI infoframes carry one of this two type of information:
      	- VIC for 4K modes for HDMI 1.4 sinks
      	- S3D information for S3D modes
        As CEA-861-F has already defined VICs for 4K videomodes, this
        patch doesn't allow sending HDMI infoframes for HDMI 2.0 sinks,
        until the mode is 3D.
      
      Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
      Cc: Jose Abreu <jose.abreu@synopsys.com>
      Cc: Andrzej Hajda <a.hajda@samsung.com>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      
      PS: This patch touches a few lines in few files, which were
      already above 80 char, so checkpatch gives 80 char warning again.
      - gpu/drm/omapdrm/omap_encoder.c
      - gpu/drm/i915/intel_sdvo.c
      
      V2: Rebase, Added r-b from Andrzej
      V3: Addressed review comment from Ville:
      	- Do not send VICs in both AVI-IF and HDMI-IF
      	  send only one of it.
      V4: Rebase
      V5: Added r-b from Neil.
          Addressed review comments from Ville
          - Do not block HDMI vendor IF, instead check for VIC while
            handling AVI infoframes
      V6: Rebase
      V7: Rebase
      Reviewed-by: NAndrzej Hajda <a.hajda@samsung.com>
      Reviewed-by: NNeil Armstrong <narmstrong@baylibre.com>
      Signed-off-by: NShashank Sharma <shashank.sharma@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1499960000-9232-2-git-send-email-shashank.sharma@intel.comSigned-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      0c1f528c
  5. 21 3月, 2017 1 次提交
    • S
      drm/edid: detect SCDC support in HF-VSDB · 62c58af3
      Shashank Sharma 提交于
      This patch does following:
      - Adds a new structure (drm_hdmi_info) in drm_display_info.
        This structure will be used to save and indicate if sink
        supports advanced HDMI 2.0 features
      - Adds another structure drm_scdc within drm_hdmi_info, to
        reflect scdc support and capabilities in connected HDMI 2.0 sink.
      - Checks the HF-VSDB block for presence of SCDC, and marks it
        in scdc structure
      - If SCDC is present, checks if sink is capable of generating
        SCDC read request, and marks it in scdc structure.
      
      V2: Addressed review comments
        Thierry:
        - Fix typos in commit message and make abbreviation consistent
          across the commit message.
        - Change structure object name from hdmi_info -> hdmi
        - Fix typos and abbreviations in description of structure drm_hdmi_info
          end the description with a full stop.
        - Create a structure drm_scdc, and keep all information related to SCDC
          register set (supported, read request supported) etc in it.
      
        Ville:
        - Change rr -> read_request
        - Call drm_detect_scrambling function drm_parse_hf_vsdb so that all
          of HF-VSDB parsing can be kept in same function, in incremental
          patches.
      
      V3: Rebase.
      V4: Rebase.
      V5: Rebase.
      V6: Addressed review comments from Ville
        - Add clock rate calculations for 1/10 and 1/40 ratios
        - Remove leftovers from old patchset
      V7: Added R-B from Jose.
      V8: Rebase.
      V9: Rebase.
      V10: Rebase.
      Signed-off-by: NShashank Sharma <shashank.sharma@intel.com>
      Reviewed-by: NThierry Reding <treding@nvidia.com>
      Reviewed-by: NJose Abreu <joabreu@synopsys.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1489404244-16608-5-git-send-email-shashank.sharma@intel.com
      62c58af3
  6. 21 2月, 2017 1 次提交
  7. 27 1月, 2017 4 次提交
  8. 20 1月, 2017 1 次提交
  9. 09 11月, 2016 1 次提交
  10. 19 9月, 2016 1 次提交
  11. 20 4月, 2016 1 次提交
  12. 16 2月, 2016 1 次提交
  13. 09 9月, 2015 2 次提交
  14. 20 8月, 2015 1 次提交
  15. 18 8月, 2015 1 次提交
  16. 13 4月, 2015 1 次提交
  17. 09 12月, 2014 1 次提交
  18. 27 11月, 2014 1 次提交
  19. 05 11月, 2014 1 次提交
  20. 03 6月, 2014 1 次提交
  21. 31 8月, 2013 1 次提交
  22. 30 8月, 2013 1 次提交
  23. 24 4月, 2013 1 次提交
  24. 22 2月, 2013 1 次提交
  25. 24 4月, 2012 1 次提交
  26. 20 4月, 2012 1 次提交
  27. 20 3月, 2012 1 次提交
    • C
      drm: allow loading an EDID as firmware to override broken monitor · da0df92b
      Carsten Emde 提交于
      Broken monitors and/or broken graphic boards may send erroneous or no
      EDID data. This also applies to broken KVM devices that are unable to
      correctly forward the EDID data of the connected monitor but invent
      their own fantasy data.
      
      This patch allows to specify an EDID data set to be used instead of
      probing the monitor for it. It contains built-in data sets of frequently
      used screen resolutions. In addition, a particular EDID data set may be
      provided in the /lib/firmware directory and loaded via the firmware
      interface. The name is passed to the kernel as module parameter of the
      drm_kms_helper module either when loaded
        options drm_kms_helper edid_firmware=edid/1280x1024.bin
      or as kernel commandline parameter
        drm_kms_helper.edid_firmware=edid/1280x1024.bin
      
      It is also possible to restrict the usage of a specified EDID data set
      to a particular connector. This is done by prepending the name of the
      connector to the name of the EDID data set using the syntax
        edid_firmware=[<connector>:]<edid>
      such as, for example,
        edid_firmware=DVI-I-1:edid/1920x1080.bin
      in which case no other connector will be affected.
      
      The built-in data sets are
      Resolution    Name
      --------------------------------
      1024x768      edid/1024x768.bin
      1280x1024     edid/1280x1024.bin
      1680x1050     edid/1680x1050.bin
      1920x1080     edid/1920x1080.bin
      
      They are ignored, if a file with the same name is available in the
      /lib/firmware directory.
      
      The built-in EDID data sets are based on standard timings that may not
      apply to a particular monitor and even crash it. Ideally, EDID data of
      the connected monitor should be used. They may be obtained through the
      drm/cardX/cardX-<connector>/edid entry in the /sys/devices PCI directory
      of a correctly working graphics adapter.
      
      It is even possible to specify the name of an EDID data set on-the-fly
      via the /sys/module interface, e.g.
      echo edid/myedid.bin >/sys/module/drm_kms_helper/parameters/edid_firmware
      The new screen mode is considered when the related kernel function is
      called for the first time after the change. Such calls are made when the
      X server is started or when the display settings dialog is opened in an
      already running X server.
      Signed-off-by: NCarsten Emde <C.Emde@osadl.org>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      da0df92b
  28. 22 9月, 2011 1 次提交
    • W
      drm: support routines for HDMI/DP ELD · 76adaa34
      Wu Fengguang 提交于
      ELD (EDID-Like Data) describes to the HDMI/DP audio driver the audio
      capabilities of the plugged monitor.
      
      This adds drm_edid_to_eld() for converting EDID to ELD. The converted
      ELD will be saved in a new drm_connector.eld[128] data field. This is
      necessary because the graphics driver will need to fixup some of the
      data fields (eg. HDMI/DP connection type, AV sync delay) before writing
      to the hardware ELD buffer. drm_av_sync_delay() will help the graphics
      drivers dynamically compute the AV sync delay for fixing-up the ELD.
      
      ELD selection policy: it's possible for one encoder to be associated
      with multiple connectors (ie. monitors), in which case the first found
      ELD will be returned by drm_select_eld(). This policy may not be
      suitable for all users, but let's start it simple first.
      
      The impact of ELD selection policy: assume there are two monitors, one
      supports stereo playback and the other has 8-channel output; cloned
      display mode is used, so that the two monitors are associated with the
      same internal encoder. If only the stereo playback capability is reported,
      the user won't be able to start 8-channel playback; if the 8-channel ELD
      is reported, then user space applications may send 8-channel samples
      down, however the user may actually be listening to the 2-channel
      monitor and not connecting speakers to the 8-channel monitor.
      
      According to James, many TVs will either refuse the display anything or
      pop-up an OSD warning whenever they receive hdmi audio which they cannot
      handle. Eventually we will require configurability and/or per-monitor
      audio control even when the video is cloned.
      
      CC: Zhao Yakui <yakui.zhao@intel.com>
      CC: Wang Zhenyu <zhenyu.z.wang@intel.com>
      CC: Jeremy Bush <contractfrombelow@gmail.com>
      CC: Christopher White <c.white@pulseforce.com>
      CC: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
      CC: Paul Menzel <paulepanter@users.sourceforge.net>
      CC: James Cloos <cloos@jhcloos.com>
      CC: Chris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NBen Skeggs <bskeggs@redhat.com>
      Signed-off-by: NWu Fengguang <fengguang.wu@intel.com>
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      76adaa34
  29. 28 4月, 2011 2 次提交
  30. 10 8月, 2010 1 次提交
  31. 18 5月, 2010 1 次提交
    • D
      drm_edid: There should be 6 Standard Timings · 96525a2f
      Dan Carpenter 提交于
      Smatch complained that we initialize 6 elements in add_detailed_modes()
      but the timings[] array is declared with 5 elements.  Adam Jackson
      verified that 6 is the correct number of timings.
      
      On Mon, May 10, 2010 at 12:08:24PM -0400, Adam Jackson wrote:
      > > >                 struct std_timing timings[5];
      > > >                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      >
      > This decl is wrong, should be 6.  From the 1.4 spec:
      >
      > "Six additional Standard Timings may be listed as a display descriptor
      > (tag #FAh)."
      >
      > The 1.3 spec is a little less explicit about it, but does show 6
      > standard timing codes in the 0xFA detailed subblock, terminated by 0x0A
      > in the 18th byte.  I don't have the docs for 1.2 or earlier, but we're
      > paranoid enough about not adding broken timings that we should be fine.
      
      This patch is basically a clean up, because timings[] is declared inside
      a union and increasing the number of elements here doesn't change the
      overall size of the union.
      Signed-off-by: NDan Carpenter <error27@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      96525a2f
  32. 06 4月, 2010 1 次提交
  33. 09 2月, 2010 1 次提交
  34. 04 12月, 2009 1 次提交