Received: by 2002:a05:6500:1b8f:b0:1fa:5c73:8e2d with SMTP id df15csp1177486lqb; Thu, 30 May 2024 02:37:43 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVzG2XsKuM6ruf4TL6Z2wMxv8Cf9enXUM721qg9mcGTYgWKVeGpdUvlqdEwqs1cUg7XY3oaFqM1A82j58oCnbG65qT0tM4nYILfjsTmgQ== X-Google-Smtp-Source: AGHT+IGXvPAZ26brHDHJy/ATlcQsftCFLm0mNInGu9maamTnr28VQ8r8DNzahPmEBi0UtBj1CYA4 X-Received: by 2002:a17:902:cec1:b0:1e4:6519:816d with SMTP id d9443c01a7336-1f61993299dmr18991185ad.48.1717061863272; Thu, 30 May 2024 02:37:43 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717061863; cv=pass; d=google.com; s=arc-20160816; b=IiydizI/8fuCgDjEr1rroZrzINaCnHuLB+WWRzK3Mw/bdzFR39QaPny8AJr9oVdxmA SpQX8eJm0LF4oSkWurIu+0ZzyPHXd1MMVnoX3G+bjjZiL/dL9V0CZk0Ao1yi7q7thGG8 HAAqPalBEtBsFnwoe507mwSbXOOSVh1oXbJfG5UYhauujgiXt0leINC3gFnSkrYDYtS/ XGTgmHu+qbCcuLXZjqVSW2rc4HhvXJ2OKXiqVOjkuGVWbtpDcFhQ7yN0NYuMlrv+bRsL +KLidVj+6IdecVovCEigUcZAY9ItMj401kvZFDySfy22g/gB2H8LT4c/TQpKnDdgsJLt AcHA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from:dkim-signature; bh=UN1L18c2L70RVnj8ty7PuC8IR8Rs+mPpa5aDuyktMpg=; fh=fWFkqWhkEWu3rFwNeYdXbOcQQfbvrHCRIs7r20HyHeE=; b=jnk3UOlDpuz5s+2jtPdhwqpXz48PfY30x69lQhAkK9qT8ZTo4Hc8imlzpx0k9G+Ey3 fWBNc1WK6oRyULCTodNcqoxfpdR72o/lZMQvc3gIFI8JFvImwfl83qRKk4iQrKwiX5IJ /N5Gu7J8PaGN2OmEphFY3oAKRWYVZ+0Acqq4LeqB4fN5NUdrekFbvuLh/UAJ5OShOnAD u9MBWecTc229R/lFWN28jHBHlKmUdjMytW/0Wi9AK7yub4pRZY0PdOjZdwX7lH6q5L+b W3pbvtYLFcj4lQcgfuP5IEJh5417tADHIMzzrY0FiqO2+0B8V4IoE0svRA05aprm4NZP +nMA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=pClAn1Rj; arc=pass (i=1 spf=pass spfdomain=ti.com dkim=pass dkdomain=ti.com dmarc=pass fromdomain=ti.com); spf=pass (google.com: domain of linux-kernel+bounces-195196-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-195196-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id d9443c01a7336-1f44c9b5bd7si116362445ad.453.2024.05.30.02.37.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 May 2024 02:37:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-195196-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=pClAn1Rj; arc=pass (i=1 spf=pass spfdomain=ti.com dkim=pass dkdomain=ti.com dmarc=pass fromdomain=ti.com); spf=pass (google.com: domain of linux-kernel+bounces-195196-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-195196-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id DA69F284839 for ; Thu, 30 May 2024 09:37:42 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BB8E8176AC7; Thu, 30 May 2024 09:36:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="pClAn1Rj" Received: from fllv0016.ext.ti.com (fllv0016.ext.ti.com [198.47.19.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 124D8154BEC for ; Thu, 30 May 2024 09:36:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.47.19.142 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717061813; cv=none; b=YN1q3PiXuo6cEUiLP/iagG4C0n7r9BHxXXZdW6gUtzReOpFSnLJN7f6fm2INWXmZe19wDzazFylrD39K+toZBQzaA8rl9T4drdqK7mH+TWLgSztfkOin9oR5RezDCv2OatzT4FPnfLy4OqUGFQWTvdD6XQWr2krIcNBOeR6ED5E= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717061813; c=relaxed/simple; bh=Goo/GLlvEVziiEbgdvnzKfmodQaYvHd00ftIZodqFjU=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=UA8darF2IbptAeJkKNa1LtoTnvUsdiiTIu+fkB1U0IoGw6MvPLuvNwec6QTHOcIzBP2EMBWPGw8LzrRsa1IS+tjawyjPYHmi3qywejjJVRZehKEg30moG5QVIbL9cY3UVNqNdu4zD0/m0wTmUYjUlOzBB4GHkqkoj6ZOyNX/TuE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com; spf=pass smtp.mailfrom=ti.com; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b=pClAn1Rj; arc=none smtp.client-ip=198.47.19.142 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ti.com Received: from lelv0265.itg.ti.com ([10.180.67.224]) by fllv0016.ext.ti.com (8.15.2/8.15.2) with ESMTP id 44U9aMF2030955; Thu, 30 May 2024 04:36:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1717061782; bh=UN1L18c2L70RVnj8ty7PuC8IR8Rs+mPpa5aDuyktMpg=; h=From:To:CC:Subject:Date; b=pClAn1Rj4YALL0PcWoUPmG04wgM4LU9372Q64G+JzC6W4vU7sIoZGe30W4p8pHhI3 eCAcGCKZpccOd7McufbVRXRsBPCB9Fb6Jc8OY4ytbbqSxXhYdy0BJQqK9HnKUY/f28 8bMQgtTQrGkx5L4H1YvUx2rhFFND8hjPguY//Fuk= Received: from DLEE108.ent.ti.com (dlee108.ent.ti.com [157.170.170.38]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 44U9aMcZ020157 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 30 May 2024 04:36:22 -0500 Received: from DLEE101.ent.ti.com (157.170.170.31) by DLEE108.ent.ti.com (157.170.170.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23; Thu, 30 May 2024 04:36:22 -0500 Received: from lelvsmtp5.itg.ti.com (10.180.75.250) by DLEE101.ent.ti.com (157.170.170.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23 via Frontend Transport; Thu, 30 May 2024 04:36:22 -0500 Received: from localhost (uda0496377.dhcp.ti.com [172.24.227.31]) by lelvsmtp5.itg.ti.com (8.15.2/8.15.2) with ESMTP id 44U9aLSU000389; Thu, 30 May 2024 04:36:22 -0500 From: Aradhya Bhatia To: Tomi Valkeinen , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Jyri Sarha , Thomas Zimmermann , David Airlie , Daniel Vetter CC: DRI Development List , Linux Kernel List , Sam Ravnborg , Thierry Reding , Kieran Bingham , Nishanth Menon , Vignesh Raghavendra , Praneeth Bajjuri , Udit Kumar , Devarsh Thakkar , Jayesh Choudhary , Jai Luthra , Aradhya Bhatia Subject: [PATCH v2 0/9] drm/bridge: cdns-dsi: Fix the color-shift issue Date: Thu, 30 May 2024 15:06:12 +0530 Message-ID: <20240530093621.1925863-1-a-bhatia1@ti.com> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Hello all, This series provides some crucial fixes and improvements for the Cadence's DSI TX (cdns-dsi) controller found commonly in Texas Instruments' J7 family of SoCs as well as in AM62P. Along with that, this series aims to fix the color-shift issue that has been going on with the DSI controller. This controller requires to be enabled before the previous entity enables its stream[0]. It's a strict requirement which, if not followed, causes the colors to "shift" on the display. The fix happens in 2 steps. 1. The bridge pre_enable calls have been shifted before the crtc_enable and the bridge post_disable calls have been shifted after the crtc_disable. This has been done as per the definition of bridge pre_enable. "The display pipe (i.e. clocks and timing signals) feeding this bridge will not yet be running when this callback is called". Since CRTC is also a source feeding the bridge, it should not be enabled before the bridges in the pipeline are pre_enabled. The sequence of enable after this patch will look like: bridge[n]_pre_enable ... bridge[1]_pre_enable crtc_enable encoder_enable bridge[1]_enable ... bridge[n]_enable and vice-versa for the bridge chain disable sequence. 2. The cdns-dsi enable / disable sequences have now been moved to pre_enable and post_disable sequences. This is the only way to have cdns-dsi drivers be up and ready before the previous entity is enables its streaming. The DSI also spec requires the Clock and Data Lanes be ready before the DSI TX enables its stream[0]. A patch has been added to make the code wait for that to happen. Going ahead with further DSI (and DSS configuration), while the lanes are not ready, has been found to be another reason for shift in colors. All these patches have been tested on TI's vendor tree kernel with more devices, but for the mainline, these patches have been tested with J721E based BeagleboneAI64 along with a RaspberryPi 7" DSI panel. The extra patches can be found in the "next_dsi-v2-tests" branch of my github fork[1] for anyone who would like to test them. Thanks, Aradhya [0]: Section 12.6.5.7.3: "Start-up Procedure" [For DSI TX controller] in TDA4VM Technical Reference Manual https://www.ti.com/lit/zip/spruil1 [1]: https://github.com/aradhya07/linux-ab/tree/next_dsi-v2-tests Change Log: - Changes in v2: - Drop patch "drm/tidss: Add CRTC mode_fixup" - Split patch "drm/bridge: cdns-dsi: Fix minor bugs" into 4 separate ones - Drop support for early_enable/late_disable APIs and instead re-order the pre_enable / post_disable APIs to be called before / after crtc_enable / crtc_disable. - Drop support for early_enable/late_disable in cdns-dsi and use pre_enable/post_disable APIs instead to do bridge enable/disable. Previous versions: v1: https://lore.kernel.org/all/20240511153051.1355825-1-a-bhatia1@ti.com/ Aradhya Bhatia (9): drm/bridge: cdns-dsi: Fix OF node pointer drm/bridge: cdns-dsi: Fix the phy_initialized variable drm/bridge: cdns-dsi: Fix the link and phy init order drm/bridge: cdns-dsi: Fix the clock variable for mode_valid() drm/bridge: cdns-dsi: Wait for Clk and Data Lanes to be ready drm/bridge: cdns-dsi: Reset the DCS write FIFO drm/bridge: cdns-dsi: Support atomic bridge APIs drm/atomic-helper: Re-order bridge chain pre-enable and post-disable drm/bridge: cdns-dsi: Use pre_enable/post_disable to enable/disable .../gpu/drm/bridge/cadence/cdns-dsi-core.c | 91 ++++++++++++++----- drivers/gpu/drm/drm_atomic_helper.c | 70 +++++++++++++- 2 files changed, 135 insertions(+), 26 deletions(-) base-commit: 9d99040b1bc8dbf385a8aa535e9efcdf94466e19 -- 2.34.1