Skip to content
Permalink
Maxime-Ripard/…
Switch branches/tags

Commits on Jan 13, 2022

  1. drm/vc4: hdmi: Support HDMI YUV output

    In addition to the RGB444 output, the BCM2711 HDMI controller supports
    the YUV444 and YUV422 output formats.
    
    Let's add support for them in the driver, but still use RGB as the
    preferred format.
    
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  2. drm/vc4: hdmi: Always try to have the highest bpc

    Currently we take the max_bpc property as the bpc value and do not try
    anything else.
    
    However, what the other drivers seem to be doing is that they would try
    with the highest bpc allowed by the max_bpc property and the hardware
    capabilities, test if it results in an acceptable configuration, and if
    not decrease the bpc and try again.
    
    Let's use the same logic.
    
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  3. drm/vc4: hdmi: Take bpp into account for the scrambler

    The current code only base its decision for whether the scrambler must be
    enabled or not on the pixel clock of the mode, but doesn't take the bits
    per color into account.
    
    Let's leverage the new function to compute the clock rate in the
    scrambler setup code.
    
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  4. drm/vc4: hdmi: Take the sink maximum TMDS clock into account

    In the function that validates that the clock isn't too high, we've only
    taken our controller limitations into account so far.
    
    However, the sink can have a limit on the maximum TMDS clock it can deal
    with too which is exposed through the EDID and the drm_display_info.
    
    Make sure we check it.
    
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  5. drm/vc4: hdmi: Move clock calculation into its own function

    The code to compute our clock rate for a given setup will be called in
    multiple places in the next patches, so let's create a separate function
    for it.
    
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  6. drm/vc4: hdmi: Move clock validation to its own function

    Our code is doing the same clock rate validation in multiple instances.
    Let's create a helper to share the rate validation.
    
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  7. drm/vc4: hdmi: Change CSC callback prototype

    In order to support the YUV output, we'll need the atomic state to know
    what is the state of the associated property in the CSC setup callback.
    
    Let's change the prototype of that callback to allow us to access it.
    
    Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  8. drm/vc4: hdmi: Define colorspace matrices

    The current CSC setup code for the BCM2711 uses a sequence of register
    writes to configure the CSC depending on whether we output using a full
    or limited range.
    
    However, with the upcoming introduction of the YUV output, we're going
    to add new matrices to perform the conversions, so we should switch to
    something a bit more flexible that takes the matrix as an argument and
    programs the CSC accordingly.
    
    Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  9. drm/vc4: hdmi: Replace CSC_CTL hardcoded value by defines

    On BCM2711, the HDMI_CSC_CTL register value has been hardcoded to an
    opaque value. Let's replace it with properly defined values.
    
    Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  10. drm/vc4: hdmi: Move XBAR setup to csc_setup

    On the BCM2711, the HDMI_VEC_INTERFACE_XBAR register configuration
    depends on whether we're using an RGB or YUV output. Let's move that
    configuration to the CSC setup.
    
    Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  11. drm/vc4: hdmi: Use full range helper in csc functions

    The CSC callbacks takes a boolean as an argument to tell whether we're
    using the full range or limited range RGB.
    
    However, with the upcoming YUV support, the logic will be a bit more
    complex. In order to address this, let's make the callbacks take the
    entire mode, and call our new helper to tell whether the full or limited
    range RGB should be used.
    
    Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  12. drm/vc4: hdmi: Add full range RGB helper

    We're going to need to tell whether we want to run with a full or
    limited range RGB output in multiple places in the code, so let's create
    a helper that will return whether we need with full range or not.
    
    Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  13. drm/connector: Fix typo in output format

    The HDMI specification mentions YCbCr everywhere, but our enums have
    YCrCb. Let's rename it to match.
    
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  14. drm/edid: Split deep color modes between RGB and YUV444

    The current code assumes that the RGB444 and YUV444 formats are the
    same, but the HDMI 2.0 specification states that:
    
       The three DC_XXbit bits above only indicate support for RGB 4:4:4 at
       that pixel size. Support for YCBCR 4:4:4 in Deep Color modes is
       indicated with the DC_Y444 bit. If DC_Y444 is set, then YCBCR 4:4:4
       is supported for all modes indicated by the DC_XXbit flags.
    
    So if we have YUV444 support and any DC_XXbit flag set but the DC_Y444
    flag isn't, we'll assume that we support that deep colour mode for
    YUV444 which breaks the specification.
    
    In order to fix this, let's split the edid_hdmi_dc_modes field in struct
    drm_display_info into two fields, one for RGB444 and one for YUV444.
    
    Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Fixes: d0c9469 ("drm/edid: Parse and handle HDMI deep color modes.")
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  15. drm/edid: Don't clear formats if using deep color

    The current code, when parsing the EDID Deep Color depths, that the
    YUV422 cannot be used, referring to the HDMI 1.3 Specification.
    
    This specification, in its section 6.2.4, indeed states:
    
      For each supported Deep Color mode, RGB 4:4:4 shall be supported and
      optionally YCBCR 4:4:4 may be supported.
    
      YCBCR 4:2:2 is not permitted for any Deep Color mode.
    
    This indeed can be interpreted like the code does, but the HDMI 1.4
    specification further clarifies that statement in its section 6.2.4:
    
      For each supported Deep Color mode, RGB 4:4:4 shall be supported and
      optionally YCBCR 4:4:4 may be supported.
    
      YCBCR 4:2:2 is also 36-bit mode but does not require the further use
      of the Deep Color modes described in section 6.5.2 and 6.5.3.
    
    This means that, even though YUV422 can be used with 12 bit per color,
    it shouldn't be treated as a deep color mode.
    
    This is also broken with YUV444 if it's supported by the display, but
    DRM_EDID_HDMI_DC_Y444 isn't set. In such a case, the code will clear
    color_formats of the YUV444 support set previously in
    drm_parse_cea_ext(), but will not set it back.
    
    Since the formats supported are already setup properly in
    drm_parse_cea_ext(), let's just remove the code modifying the formats in
    drm_parse_hdmi_deep_color_info()
    
    Fixes: d0c9469 ("drm/edid: Parse and handle HDMI deep color modes.")
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022
  16. drm/edid: Rename drm_hdmi_avi_infoframe_colorspace to _colorimetry

    The drm_hdmi_avi_infoframe_colorspace() function actually sets the
    colorimetry and extended_colorimetry fields in the hdmi_avi_infoframe
    structure with DRM_MODE_COLORIMETRY_* values.
    
    To make things worse, the hdmi_avi_infoframe structure also has a
    colorspace field used to signal whether an RGB or YUV output is being
    used.
    
    Let's remove the inconsistency and allow for the colorspace usage by
    renaming the function.
    
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    mripard authored and intel-lab-lkp committed Jan 13, 2022

Commits on Dec 31, 2021

  1. Merge tag 'amd-drm-next-5.17-2021-12-30' of ssh://gitlab.freedesktop.…

    …org/agd5f/linux into drm-next
    
    amd-drm-next-5.17-2021-12-30:
    
    amdgpu:
    - Suspend/resume fixes
    - Fence fix
    - Misc code cleanups
    - IP discovery fixes
    - SRIOV fixes
    - RAS fixes
    - GMC 8 VRAM detection fix
    - FRU fixes for Aldebaran
    - Display fixes
    
    amdkfd:
    - SVM fixes
    - IP discovery fixes
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    From: Alex Deucher <alexander.deucher@amd.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211230141032.613596-1-alexander.deucher@amd.com
    airlied committed Dec 31, 2021

Commits on Dec 30, 2021

  1. drm/amdgpu: no DC support for headless chips

    Chips with no display hardware should return false for
    DC support.
    
    v2: drop Arcturus and Aldebaran
    
    Fixes: f7f12b2 ("drm/amdgpu: default to true in amdgpu_device_asic_has_dc_support")
    Reviewed-by: Evan Quan <evan.quan@amd.com>
    Reviewed-by: Guchun Chen <guchun.chen@amd.com>
    Reported-by: Tareque Md.Hanif <tarequemd.hanif@yahoo.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Alex Deucher committed Dec 30, 2021
  2. drm/amd/display: fix dereference before NULL check

    The "plane_state" pointer was access before checking if it was NULL.
    
    Avoid a possible NULL pointer dereference by accessing the plane
    address after the check.
    
    Addresses-Coverity-ID: 1493892 ("Dereference before null check")
    Fixes: 3f68c01 ("drm/amd/display: add cyan_skillfish display support")
    Signed-off-by: José Expósito <jose.exposito89@gmail.com>
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    JoseExposito authored and Alex Deucher committed Dec 30, 2021
  3. drm/amdgpu: always reset the asic in suspend (v2)

    If the platform suspend happens to fail and the power rail
    is not turned off, the GPU will be in an unknown state on
    resume, so reset the asic so that it will be in a known
    good state on resume even if the platform suspend failed.
    
    v2: handle s0ix
    
    Acked-by: Luben Tuikov <luben.tuikov@amd.com>
    Acked-by: Evan Quan <evan.quan@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Alex Deucher committed Dec 30, 2021
  4. drm/amdgpu: put SMU into proper state on runpm suspending for BOCO ca…

    …pable platform
    
    By setting mp1_state as PP_MP1_STATE_UNLOAD, MP1 will do some proper cleanups and
    put itself into a state ready for PNP. That can workaround some random resuming
    failure observed on BOCO capable platforms.
    
    Signed-off-by: Evan Quan <evan.quan@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Guchun Chen <guchun.chen@amd.com>
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Evan Quan authored and Alex Deucher committed Dec 30, 2021
  5. drm/amd/display: Fix the uninitialized variable in enable_stream_feat…

    …ures()
    
    In function enable_stream_features(), the variable "old_downspread.raw"
    could be uninitialized if core_link_read_dpcd() fails, however, it is
    used in the later if statement, and further, core_link_write_dpcd()
    may write random value, which is potentially unsafe.
    
    Fixes: 6016cd9 ("drm/amd/display: add helper for enabling mst stream features")
    Cc: stable@vger.kernel.org
    Signed-off-by: Yizhuo Zhai <yzhai003@ucr.edu>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Yizhuo Zhai authored and Alex Deucher committed Dec 30, 2021
  6. drm/amdgpu: fix runpm documentation

    It's not only supported by HG/PX laptops.  It's supported
    by all dGPUs which supports BOCO/BACO functionality (runtime
    D3).
    
    BOCO - Bus Off, Chip Off.  The entire chip is powered off.
           This is controlled by ACPI.
    BACO - Bus Active, Chip Off.  The chip still shows up
           on the PCI bus, but the device itself is powered
           down.
    
    v2: fix missed HG/PX reference
    
    Reviewed-by: Evan Quan <evan.quan@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Alex Deucher committed Dec 30, 2021
  7. amdgpu/pm: Make sysfs pm attributes as read-only for VFs

    == Description ==
    Setting values of pm attributes through sysfs
    should not be allowed in SRIOV mode.
    These calls will not be processed by FW anyway,
    but error handling on sysfs level should be improved.
    
    == Changes ==
    This patch prohibits performing of all set commands
    in SRIOV mode on sysfs level.
    It offers better error handling as calls that are
    not allowed will not be propagated further.
    
    == Test ==
    Writing to any sysfs file in passthrough mode will succeed.
    Writing to any sysfs file in ONEVF mode will yield error:
    "calling process does not have sufficient permission to execute a command".
    
    Signed-off-by: Marina Nikolic <Marina.Nikolic@amd.com>
    Acked-by: Evan Quan <evan.quan@amd.com>
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Marina Nikolic authored and Alex Deucher committed Dec 30, 2021
  8. drm/amdgpu: save error count in RAS poison handler

    Otherwise the RAS error count couldn't be queried from sysfs.
    
    Signed-off-by: Tao Zhou <tao.zhou1@amd.com>
    Reviewed-by: Stanley.Yang <Stanley.Yang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Tao Zhou authored and Alex Deucher committed Dec 30, 2021
  9. drm/amdgpu: drop redundant semicolon

    A minor typo.
    
    Signed-off-by: Guchun Chen <guchun.chen@amd.com>
    Reviewed-by: Evan Quan <evan.quan@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Guchun Chen authored and Alex Deucher committed Dec 30, 2021
  10. drm/amd/display: get and restore link res map

    [why]
    When reboot the link res map should be persisted.  So during boot up,
    driver will look at the map to determine which link should take priority
    to use certain link res.  This is to ensure that link res remains
    unshuffled after a reboot.
    
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Reviewed-by: Jun Lei <Jun.Lei@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Wenjing Liu authored and Alex Deucher committed Dec 30, 2021
  11. drm/amd/display: support dynamic HPO DP link encoder allocation

    [why]
    When there are more DP2.0 RXs connected than the number HPO DP link
    encoders we have, we need to dynamically allocate HPO DP link encoder to
    the port that needs it.
    
    [how]
    Only allocate HPO DP link encoder when it is needed.
    
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Reviewed-by: Jun Lei <Jun.Lei@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Wenjing Liu authored and Alex Deucher committed Dec 30, 2021
  12. drm/amd/display: access hpo dp link encoder only through link resource

    [why]
    Update all accesses to use hpo dp link encoder through link resource
    only.
    
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Reviewed-by: Jun Lei <Jun.Lei@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Wenjing Liu authored and Alex Deucher committed Dec 30, 2021
  13. drm/amd/display: populate link res in both detection and validation

    [why]
    This commit is to populate link res in preparation of the next commit.
    The next commit will replace all existing code to use link res instead
    
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Reviewed-by: Jun Lei <Jun.Lei@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Wenjing Liu authored and Alex Deucher committed Dec 30, 2021
  14. drm/amd/display: define link res and make it accessible to all link i…

    …nterfaces
    
    [why]
    There will be a series of re-arch changes in Link Resource Management.
    They are more and more muxable link resource objects and the resource is
    insufficient for a one to one allocation to all links created.
    Therefore a link resource sharing logic is required to determine which
    link should use certain link resource.
    
    This commit is the first one in this series that starts by defining a
    link resource struct, this struct will be available to all interfaces
    that need to perform link programming sequence.
    
    In later commits, we will granduately decouple link resource objects out
    of dc link. So instead of access a link resource from dc link. Current
    link's resource can be accessible through pipe_ctx->link_res during
    commit, or by calling  dc_link_get_cur_link_res function with current
    link passed in after commit.
    
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Reviewed-by: Jun Lei <Jun.Lei@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Wenjing Liu authored and Alex Deucher committed Dec 30, 2021
  15. drm/amd/display: 3.2.167

    This version brings along the following:
    
    - Fixes and improvements in the LTTPR code
    - Improve z-state
    - Fix null pointer check
    - Improve communication with s0i2
    - Update multiple-display split policy
    - Add missing registers
    
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Aric Cyr <aric.cyr@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    AMD-aric authored and Alex Deucher committed Dec 30, 2021
  16. drm/amd/display: [FW Promotion] Release 0.0.98

    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Anthony Koo <Anthony.Koo@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Anthony Koo authored and Alex Deucher committed Dec 30, 2021
  17. drm/amd/display: Undo ODM combine

    Undo ODM Combine regression causing causing pipe allocation issues.
    
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Martin Leung <Martin.Leung@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Martin Leung authored and Alex Deucher committed Dec 30, 2021
  18. drm/amd/display: Add reg defs for DCN303

    [WHY]
    These registers are currently missing from the DCN303 header files
    
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Reviewed-by: George Shen <George.Shen@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Wesley Chalmers <Wesley.Chalmers@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Wesley Chalmers authored and Alex Deucher committed Dec 30, 2021
Older