From patchwork Thu Sep 10 05:27:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Hsuan-Yu Lin X-Patchwork-Id: 1361218 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 4Bn6pw2rxNz9sTK; Thu, 10 Sep 2020 15:27:51 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1kGF7Z-0000Mj-6u; Thu, 10 Sep 2020 05:27:45 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1kGF7X-0000MK-7C for kernel-team@lists.ubuntu.com; Thu, 10 Sep 2020 05:27:43 +0000 Received: from mail-pf1-f197.google.com ([209.85.210.197]) by youngberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1kGF7W-0002OO-R1 for kernel-team@lists.ubuntu.com; Thu, 10 Sep 2020 05:27:43 +0000 Received: by mail-pf1-f197.google.com with SMTP id c197so3706433pfb.23 for ; Wed, 09 Sep 2020 22:27:42 -0700 (PDT) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=Rf/d2gmIjmgD55LYpcKqAfaAEVDOnfxP8Uy8CUG2hOg=; b=CmfV1mnTxd9ByAz4eOlmQDab80kuM5K5ZhonBwyfhaAVep6VLYA/QSoBzvNttqaDMB rtPpYVgm1ntCFWx6hJ+d1qMTiEh7qrj8wu73uRCrczYIMIt9D1dJQufreyd3nT4YK7vU vb88FssNzqEWVxrWZQbISW7vEIfCn0aJ/pcvR1szLm6jM+aRK/y7DGHhydFhQ08qxXG6 exEuzz261jRS4aBJel4n/j5tlNaDxggc18wc9BH5PP8rh0p1sJLk0OiHLxw62kvB7PbH BX9oF1WePjXetZXcZumwFPgfqBTinEiis/S2L/1ppitLxe06Dp8tbkLFrt23EuD3HB9X pSBw== X-Gm-Message-State: AOAM530h9qMdPUjtmZ8Tqtzxm/3nAxG7bIRHfjrQjdP0aqwZZa153OCZ 6AEQOMYcq01m+Zsif+S9HPX5MzBkHkjd3Hou8dKQ5SSiHN/CiENUQDumXKI4XdjFhHjPjrmtVHK 42TY/PlUPwJdPYzTODmtLoc2buPAoIYs4FUKX3a/UeA== X-Received: by 2002:a63:ff4e:: with SMTP id s14mr3089271pgk.137.1599715661288; Wed, 09 Sep 2020 22:27:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx0Otw4MCsK2f6su86oYdeSbLvDB1qDDQPd6u/Pl6JT6fU5RvXj9RLoW8TQPWjC6LqyaabPnA== X-Received: by 2002:a63:ff4e:: with SMTP id s14mr3089256pgk.137.1599715660701; Wed, 09 Sep 2020 22:27:40 -0700 (PDT) Received: from dell.taipei.internal (61-220-137-37.HINET-IP.hinet.net. [61.220.137.37]) by smtp.gmail.com with ESMTPSA id y5sm4024569pge.62.2020.09.09.22.27.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Sep 2020 22:27:40 -0700 (PDT) From: Hsuan-Yu Lin To: kernel-team@lists.ubuntu.com Subject: [PATCH 1/2][SRU][G] drm/i915/tgl+: Use the correct DP_TP_* register instances in MST encoders Date: Thu, 10 Sep 2020 13:27:35 +0800 Message-Id: <20200910052736.314874-2-shane.lin@canonical.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200910052736.314874-1-shane.lin@canonical.com> References: <20200910052736.314874-1-shane.lin@canonical.com> MIME-Version: 1.0 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" From: Imre Deak BugLink: https://bugs.launchpad.net/bugs/1886165 MST encoders must use the master MST transcoder's DP_TP_STATUS and DP_TP_CONTROL registers. Atm, during the HW readout of an MST encoder connected to a slave transcoder we reset these register addresses in intel_dp::regs.dp_tp_* to the slave transcoder's DP_TP_* register addresses incorrectly; fix this. One example where the above overwite happens is the encoder HW state validation after enabling multiple streams; see intel_dp_mst_enc_get_config(). After that during disabling any stream we'll get a 'Timed out waiting for ACT sent when disabling' error, due to reading from the incorrect DP_TP_STATUS register. This change replaces https://patchwork.freedesktop.org/patch/369577/?series=78193&rev=1 which just papered over the problem. v2: - Correct the failure scenario in the commit log. (José) Cc: Ville Syrjälä Cc: José Roberto de Souza Signed-off-by: Imre Deak Reviewed-by: Ville Syrjälä Reviewed-by: José Roberto de Souza Link: https://patchwork.freedesktop.org/patch/msgid/20200616211146.23027-1-imre.deak@intel.com (cherry picked from commit f153478de4b259afb0a383de83e817b4c237401b) Signed-off-by: Hsuan-Yu Lin --- drivers/gpu/drm/i915/display/intel_ddi.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c index 0575a1eea2a1..898491a17b78 100644 --- a/drivers/gpu/drm/i915/display/intel_ddi.c +++ b/drivers/gpu/drm/i915/display/intel_ddi.c @@ -4155,11 +4155,6 @@ void intel_ddi_get_config(struct intel_encoder *encoder, if (drm_WARN_ON(&dev_priv->drm, transcoder_is_dsi(cpu_transcoder))) return; - if (INTEL_GEN(dev_priv) >= 12) { - intel_dp->regs.dp_tp_ctl = TGL_DP_TP_CTL(cpu_transcoder); - intel_dp->regs.dp_tp_status = TGL_DP_TP_STATUS(cpu_transcoder); - } - intel_dsc_get_config(encoder, pipe_config); temp = intel_de_read(dev_priv, TRANS_DDI_FUNC_CTL(cpu_transcoder)); @@ -4261,6 +4256,16 @@ void intel_ddi_get_config(struct intel_encoder *encoder, break; } + if (INTEL_GEN(dev_priv) >= 12) { + enum transcoder transcoder = + intel_dp_mst_is_slave_trans(pipe_config) ? + pipe_config->mst_master_transcoder : + pipe_config->cpu_transcoder; + + intel_dp->regs.dp_tp_ctl = TGL_DP_TP_CTL(transcoder); + intel_dp->regs.dp_tp_status = TGL_DP_TP_STATUS(transcoder); + } + pipe_config->has_audio = intel_ddi_is_audio_enabled(dev_priv, cpu_transcoder);