From patchwork Tue Nov 24 10:42:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: You-Sheng Yang X-Patchwork-Id: 1405432 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=canonical.com Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4CgLGR3Ns3z9sRR; Tue, 24 Nov 2020 21:43:26 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1khVn6-0002qI-3b; Tue, 24 Nov 2020 10:43:20 +0000 Received: from mail-pf1-f194.google.com ([209.85.210.194]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1khVn4-0002q4-Oa for kernel-team@lists.ubuntu.com; Tue, 24 Nov 2020 10:43:18 +0000 Received: by mail-pf1-f194.google.com with SMTP id v12so18078196pfm.13 for ; Tue, 24 Nov 2020 02:43:18 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=BQW7JZMK1+ReAbQ3dnX7OLiHTpzft80zfGOfZajV3rI=; b=cNyrpHXor/X6dhHVkJzDuWkP1rMD9/k2xsbotEPEYtIZfbslYlBZ0UYm02T/HPL71+ pEMfTd8I7WWSeSUlSZX92UQ+o6xL+P9fC7D3nZnSNiiNzYD8pVMMfOGsQaxuSWZEX0c6 VaGM1Yk0tzDYh6qKeunM5wvz/mn87ny/qTT4qSzdGQ4/tbDDbkWIx6do+r0Qbo1uua4w gPUUW/Ay5hRj4yzS/L4D/nzyIavLt/STIAG3pgWQ+3LJ0jB0xIxVlDsFYbRcQ20FNPH7 ORnV1o2pqD86790vb5/q0FbxRcNrVqaDAmmEaN3+oxRKH2GZor3TR/EUa7VdorZT4y2y Jp0w== X-Gm-Message-State: AOAM530WXwBbuQWe/z9HcODZ62iiJxFaHQg/V5FetXxB/aVAnBvGKgkN ueojxAjFXFh/WnEtmt8kt2X+tM2OPvpSOQ== X-Google-Smtp-Source: ABdhPJwG3hYVlBwCrwEheZ325qKqANHYoFDRPBxHWrKqan5h76Vb1GxvokP46a7jyH+QfWnBzhtr2w== X-Received: by 2002:aa7:92d4:0:b029:163:e68e:5ffb with SMTP id k20-20020aa792d40000b0290163e68e5ffbmr3493624pfa.40.1606214596152; Tue, 24 Nov 2020 02:43:16 -0800 (PST) Received: from localhost (61-220-137-37.HINET-IP.hinet.net. [61.220.137.37]) by smtp.gmail.com with ESMTPSA id w18sm15161663pfi.216.2020.11.24.02.43.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Nov 2020 02:43:14 -0800 (PST) From: You-Sheng Yang To: kernel-team@lists.ubuntu.com Subject: [PATCH 00/38][SRU][G/H] Add DRM support for LTTPR non-transparent link training mode Date: Tue, 24 Nov 2020 18:42:35 +0800 Message-Id: <20201124104313.421860-1-vicamo.yang@canonical.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.210.194; envelope-from=vicamo@gmail.com; helo=mail-pf1-f194.google.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/1903969 [Impact] On platforms supported DP tunneling over USB 3.2 or so, a Retimer is required on the host side to cover insertion loss. On such platforms the rtimer firmware maybe configured to use LTTPR (Link Training Tunable PHY Repeater) non-transparent mode only, which is only supported in drm-tip currently. Without LTTPR support, link training may fail with following error messages depending on the data path configuration: i915 0000:00:02.0: [drm] *ERROR* Link Training Unsuccessful i915 0000:00:02.0: [drm] *ERROR* CPU pipe A FIFO underrun [Fix] Patchset https://www.spinics.net/lists/intel-gfx/msg248700.html ("drm/i915: Add support for LTTPR non-transparent link training mode") is required to fix this issue. It has been landed to drm-tip and will only included to mainline in v5.11. Following patchsets were pulled to satisfy conflicts/link training basis: * Patchset https://patchwork.freedesktop.org/series/76993/ ("Plumb crtc state to link training code") * Patch https://patchwork.freedesktop.org/series/82277/ ("drm/i915: Fix TGL DKL PHY DP vswing handling") * Patchset https://patchwork.freedesktop.org/series/81083/ ("tgl/ehl: Update voltage swing table") * Patchset https://patchwork.freedesktop.org/series/80404/ ("drm/i915/tgl: Add new voltage swing table") * Patchset https://patchwork.freedesktop.org/series/79265/ ("drm/i915/display: Implement HOBL") * Patchset https://patchwork.freedesktop.org/series/79481/ ("drm/i915/ddi: Don't rewrite DDI_BUF_CTL reg during DP link training") * Patchset https://patchwork.freedesktop.org/series/77198/ ("drm/i915: DP vswing/preemph fixes") * Patch https://patchwork.freedesktop.org/patch/373469/ ("drm/i915/display: prefer dig_port to reference intel_digital_port") * Patch https://patchwork.freedesktop.org/series/76917/ ("drm/i915: HDCP: retry link integrity check on failure") * Patch https://patchwork.freedesktop.org/series/77934/ ("drm/i915/tgl: Add HBR and HBR2+ voltage swing table") * Patch https://patchwork.freedesktop.org/series/77806/ ("drm/i915/tgl: Update TC DP vswing table") [Test Case] On Dell OptiPlex and WD19 docking station, use following steps to verify: 1. disconnect WD19 from OptiPlex, disconnect OptiPlex's power 2. attach OptiPlex's power cord 3. attach WD19's power cord 4. attach DP to WD19 5. attach WD19 to OptiPlex 6. boot up and check if boot to GUI directly 7. `dmesg` and check if aforementioned DRM link training error appears [Regression Potential] The patchsets pulled for dependency are mostly about updating voltage swing tables, refactoring some translation functions, along with a few function fixes. Aside from those, HOBL (Hours of Battery Life) is also pulled. For the major part, LTTPR support, when LTTPR is either not detected or not supported, it will fall back to use transparent mode as it was. Otherwise, DP Standard recommends to use LTTPR non-transparent mode for link training, so this should be the right way to have best hardware support. Imre Deak (8): drm/i915/ddi: Don't frob the DP link scramble disabling flag drm/i915/ddi: Don't rewrite DDI_BUF_CTL reg during DP link training drm/i915: Fix DP link training pattern mask drm/i915: Simplify the link training functions drm/i915: Factor out a helper to disable the DPCD training pattern drm/dp: Add LTTPR helpers drm/i915: Switch to LTTPR transparent mode link training drm/i915: Switch to LTTPR non-transparent mode link training José Roberto de Souza (11): drm/i915/tgl: Update TC DP vswing table drm/i915/tgl: Add HBR and HBR2+ voltage swing table drm/i915/display: Replace drm_i915_private in voltage swing functions by intel_encoder drm/i915/display: Remove port and phy from voltage swing functions drm/i915/bios: Parse HOBL parameter drm/i915/display: Implement HOBL drm/i915/tgl: Set subplatforms drm/i915/tgl: Add new voltage swing table drm/i915/display/tgl: Use TGL DP tables for eDP ports without low power support drm/i915/display/ehl: Use EHL DP tables for eDP ports without low power support drm/i915/ehl: Update voltage swing table Lucas De Marchi (1): drm/i915/display: prefer dig_port to reference intel_digital_port Oliver Barta (1): drm/i915: HDCP: retry link integrity check on failure Ville Syrjälä (17): drm/i915: Fix cpt/ppt max pre-emphasis drm/i915: Fix ibx max vswing/preemph drm/i915: Fix ivb cpu edp vswing drm/i915: Add {preemph,voltage}_max() vfuncs drm/i915: Reverse preemph vs. voltage swing preference drm/i915: Replace some hand rolled max()s drm/i915: Fix DP_TRAIN_MAX_{PRE_EMPHASIS,SWING}_REACHED handling drm/i915: Fix TGL DKL PHY DP vswing handling drm/i915: s/old_crtc_state/crtc_state/ drm/i915: Make intel_dp_process_phy_request() static drm/i915: Shove the PHY test into the hotplug work drm/i915: Split ICL combo PHY buf trans per output type drm/i915: Split ICL MG PHY buf trans per output type drm/i915: Split EHL combo PHY buf trans per output type drm/i915: Split TGL combo PHY buf trans per output type drm/i915: Split TGL DKL PHY buf trans per output type drm/i915: Plumb crtc_state to link training drivers/gpu/drm/drm_dp_helper.c | 232 ++++- drivers/gpu/drm/i915/display/intel_bios.c | 3 + drivers/gpu/drm/i915/display/intel_ddi.c | 891 +++++++++++------- drivers/gpu/drm/i915/display/intel_ddi.h | 9 +- drivers/gpu/drm/i915/display/intel_display.c | 6 +- drivers/gpu/drm/i915/display/intel_display.h | 2 +- .../drm/i915/display/intel_display_debugfs.c | 12 +- .../drm/i915/display/intel_display_power.c | 4 +- .../drm/i915/display/intel_display_types.h | 63 +- drivers/gpu/drm/i915/display/intel_dp.c | 716 ++++++++------ drivers/gpu/drm/i915/display/intel_dp.h | 19 +- .../drm/i915/display/intel_dp_link_training.c | 594 ++++++++++-- .../drm/i915/display/intel_dp_link_training.h | 17 +- drivers/gpu/drm/i915/display/intel_dp_mst.c | 74 +- drivers/gpu/drm/i915/display/intel_dp_mst.h | 6 +- drivers/gpu/drm/i915/display/intel_dpio_phy.c | 61 +- drivers/gpu/drm/i915/display/intel_dpio_phy.h | 2 + drivers/gpu/drm/i915/display/intel_hdcp.c | 118 +-- drivers/gpu/drm/i915/display/intel_hdmi.c | 276 +++--- drivers/gpu/drm/i915/display/intel_hdmi.h | 4 +- drivers/gpu/drm/i915/display/intel_lspcon.c | 8 +- drivers/gpu/drm/i915/display/intel_lspcon.h | 2 +- drivers/gpu/drm/i915/display/intel_psr.c | 4 +- drivers/gpu/drm/i915/display/intel_vbt_defs.h | 1 + drivers/gpu/drm/i915/display/intel_vdsc.c | 8 +- drivers/gpu/drm/i915/i915_drv.h | 7 + drivers/gpu/drm/i915/i915_reg.h | 8 + drivers/gpu/drm/i915/intel_device_info.c | 19 + include/drm/drm_dp_helper.h | 62 ++ 29 files changed, 2148 insertions(+), 1080 deletions(-)