From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5C48EEF99FF for ; Sat, 14 Feb 2026 10:52:12 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6649210E012; Sat, 14 Feb 2026 10:52:11 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="c+90pqhF"; dkim-atps=neutral Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) by gabe.freedesktop.org (Postfix) with ESMTPS id 44F4A10E012 for ; Sat, 14 Feb 2026 10:52:10 +0000 (UTC) Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-823081bb15fso964859b3a.3 for ; Sat, 14 Feb 2026 02:52:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771066330; x=1771671130; darn=lists.freedesktop.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=JKZRzgUme6pMax6EEp9xxfwcIn80zii3ZHbrvX9cB3c=; b=c+90pqhFzxaCTUWsRrtT1FRDXZght0MXoWhT/wMXvVLeEsbZbyDK7fCxlCPy1tozIY G7lBe92ifkOCsLOdXB8KzPfIotd/FljjtmkBSN6oYe78w5GfFvFKUuumlJBMEKYYospG BwuNsm7uAhGiWSL6zvhx0oZ+aNo/yWMYtng0VL9CkyKygSJmAy+G0WsQxDXcUsEs2wyn eR7CJxC5S9lucSHI7q6RHiuBOX2PJe5hWUX8/zk2nht2zEZ1vBI/vGCSHIeM4E4IRMoC LoOIS/gpTYwyfUC1Fb2qM3l8uPPRC1pqIQ7LTHU+FUus/d2j8lCymamqJ7/0Pqf+YHuv YTiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771066330; x=1771671130; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=JKZRzgUme6pMax6EEp9xxfwcIn80zii3ZHbrvX9cB3c=; b=wpuBHSi5JJojTB4yh3K3PJ1i0YRX4MZKJWYw1Ctog3N/SzDnFvELN7/EERZ820itGc h5HtK2fVS9rtAw6cQsL8eVHPz0BaV/PyfmxQa5ZMp4p9D1cNg4BDIsv+MiHa99EjiZ0v ur4eM04LOVsrtMZmrVfUi+azTFrbepJegElC/elyRzNymiFI+9dOvi2sdNhlcAnBEt+V 9jofGjwM/p6tm133JO8FO1+W4hZtKZnvFx2nkHHEma3pn37WtJEG0UFHoM7wkys2xZPC mFEKJ4/Ssjieo9/9MvlIliFtyTjVLwqYxh77Twdcqmbm9COmrtswVRVXGzzIpWJXM+/W 48AA== X-Forwarded-Encrypted: i=1; AJvYcCVlFRxtYliCPP1n07BuRPm312CHrZoHoCP4GGYwqCjtXb/+mZzOPYEHAlYLgbbI/bOGLc0xZCkt6Hs=@lists.freedesktop.org X-Gm-Message-State: AOJu0YzPIok6ODuDbasYtJD9Jh2zjBJIWMlY7LeKuXKoQpIRe0aFfFzX 51/CiiGeNo5kxfCS+QQJ37TDWxJscJmIRzxoz2APwO/fO7JVHh97UGjd X-Gm-Gg: AZuq6aJXzGfrX9ffeOL1K86My+YNBI/XfMixppcbQiJGAzVHag6dGp+asjaOr2XrqPC LmW2AC7i/Hev2nCyBVJZJHYX1WV6pfxDUll77u6x6jsoqOA7fM76WkEXMzqmwgXD2v1ig7APr5F ViZ1ZtHBPajpI/BzzR8Wuk17Vk+jvO9RAidriednOMvAT2kqBczESt52OOlnIJGepxh/kr1eNIV d3F8jc3+/DSTk9ynKz02PSAqRzax4fFlcQzTuxyPgOtU0SES0aEEckoya2Qql8qdVHu5XSe6n/Q emUgr2kcLu1uOkMNYWswM4Wn9AunLuubXKR9JiI/ymb5OPsWBnIvUt5ZL8KPNMmbX0Imh5WM2be dDPzEV4Emu6L7Lc8Uo63b//0tRDr84mBqeRHcc9jknaB9m+aPNR4PctCAjSAzIEFWW0yzopp41N dATEjaRa0eZZtkxopE X-Received: by 2002:a05:6a21:1798:b0:35d:5d40:6d79 with SMTP id adf61e73a8af0-3948376c311mr2406124637.12.1771066329667; Sat, 14 Feb 2026 02:52:09 -0800 (PST) Received: from nuvole.lan ([2408:824c:a13:29e0::c83]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ad1a6f9d34sm18436865ad.11.2026.02.14.02.52.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Feb 2026 02:52:09 -0800 (PST) From: Pengyu Luo To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: Pengyu Luo , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/msm/dsi: fix hdisplay calculation when programming dsi registers Date: Sat, 14 Feb 2026 18:51:28 +0800 Message-ID: <20260214105145.105308-1-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.53.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Recently, the hdisplay calculation is working for 3:1 compressed ratio only. If we have a video panel with DSC BPP = 8, and BPC = 10, we still use the default bits_per_pclk = 24, then we get the wrong hdisplay. We can draw the conclusion by cross-comparing the calculation with the calculation in dsi_adjust_pclk_for_compression(). Since CMD mode does not use this, we can remove !(msm_host->mode_flags & MIPI_DSI_MODE_VIDEO) safely. Fixes: efcbd6f9cdeb ("drm/msm/dsi: Enable widebus for DSI") Signed-off-by: Pengyu Luo --- drivers/gpu/drm/msm/dsi/dsi_host.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index e0de545d4..e8e83ee61 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -993,7 +993,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) if (msm_host->dsc) { struct drm_dsc_config *dsc = msm_host->dsc; - u32 bytes_per_pclk; + u32 bits_per_pclk; /* update dsc params with timing params */ if (!dsc || !mode->hdisplay || !mode->vdisplay) { @@ -1015,7 +1015,9 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) /* * DPU sends 3 bytes per pclk cycle to DSI. If widebus is - * enabled, bus width is extended to 6 bytes. + * enabled, MDP always sends out 48-bit compressed data per + * pclk and on average, DSI consumes an amount of compressed + * data equivalent to the uncompressed pixel depth per pclk. * * Calculate the number of pclks needed to transmit one line of * the compressed data. @@ -1027,12 +1029,12 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) * unused anyway. */ h_total -= hdisplay; - if (wide_bus_enabled && !(msm_host->mode_flags & MIPI_DSI_MODE_VIDEO)) - bytes_per_pclk = 6; + if (wide_bus_enabled) + bits_per_pclk = mipi_dsi_pixel_format_to_bpp(msm_host->format); else - bytes_per_pclk = 3; + bits_per_pclk = 24; - hdisplay = DIV_ROUND_UP(msm_dsc_get_bytes_per_line(msm_host->dsc), bytes_per_pclk); + hdisplay = DIV_ROUND_UP(msm_dsc_get_bytes_per_line(msm_host->dsc) * 8, bits_per_pclk); h_total += hdisplay; ha_end = ha_start + hdisplay; -- 2.53.0