Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp2924373rwd; Fri, 19 May 2023 12:06:24 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5s0Byveu+8cbaDZG39pg9rILwoyZiWT3YqHLRIsPm29zfEpnhDTIcEA5HTOxpf3YZjV13M X-Received: by 2002:a05:6a21:8dc4:b0:101:5743:fd01 with SMTP id ti4-20020a056a218dc400b001015743fd01mr2453094pzb.25.1684523184730; Fri, 19 May 2023 12:06:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684523184; cv=none; d=google.com; s=arc-20160816; b=yWQCzSKwq7lxqm1Up7cfYUfD/UwJc2VY3a5JIDX0uVJU9aUNe+jymKYVnmN6kVr2Yt njbY8YpHhcuJU8G1ujcq69GbOLckp9nPiSg2+w1Iv73VOdzGArVMT/A2WNo6EEI1nlc7 ZloiUuHWs7/GNKhoaZkb28Y+0D42bmue+NACv26wTvpiiqpUiAM1HHdad1vmRi2aij6f 94Y9KbqmRgulS1UNDaItbOLLaHAVGKhvIkhx8kOcSyxAE2OBDhp33yTRhvNBlDMfzPSt pL3QrEawvquhxmlHvfKEi0YCZVTOYuj6LdFANKLTzPKf7/vvhU28lnMZbNJoR2smTwCs tQbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=opzbwkDTgm8cg905fbiHB+IaDqvTINH0S8yzfdIVucQ=; b=JEsaSIoYRN3h0i8yMl6J7jFv2PyiFoeA1ACVTSNmvzNGutJoq63TI6GDoMIM2ow6Tu xy0OyGg/12SESM3Mlksgu3a+1B5CdIHTs0pBUCiAf00FJRbtVpqr43pVDKVZP8ULn8ql 0TEomZ/v8duAq/nBmeGTnrPvkxhXowtVbiqGzTIOHxY/TXwILrB/Sx/H2/n7nw+vnbBA lMCOt33cQHYDTrTC6XLg3oANsNd6zcKRQefQAjG4W8zGyhYfgmLRMc9kje6bQO4QPS22 5w6RvNOQmZE1g3OTirSV4s+niKUjo1QoAjs89d9VxcXA/3pf8eTiVunCOMvqnwYrQiSE Kn5A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=R4oCqG6w; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v22-20020a63b956000000b0052c37cb5116si69190pgo.435.2023.05.19.12.06.10; Fri, 19 May 2023 12:06:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=R4oCqG6w; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230127AbjESTES (ORCPT + 99 others); Fri, 19 May 2023 15:04:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50074 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229683AbjESTEQ (ORCPT ); Fri, 19 May 2023 15:04:16 -0400 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8E7B3E5E; Fri, 19 May 2023 12:04:10 -0700 (PDT) Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 34JCaN2l026842; Fri, 19 May 2023 19:04:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=message-id : date : mime-version : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding; s=qcppdkim1; bh=opzbwkDTgm8cg905fbiHB+IaDqvTINH0S8yzfdIVucQ=; b=R4oCqG6wi4UYwFirTgVkLs2JG8ahGHALBvJZkPEX37G3R5nOxzcHE8oTr/NwTSKUzzTP eGNDIo1BUKYt22wRuFhM/FJCrbaJ6Z+plHLUhXJnf1Voiv7LhmD9RRDRWx42AdmPcnlL 1e0pjNe2VHag5KIQZT6aVYpIPUvkvS7+9/M6ucDG8y2cuCLGBkGcHyACQMJJm7hyUFPM JOIchT+moBYJhU9xtXCQ8Z5JGhmC5zFKN98nxkXcTgF8jdleKD2+vu5WJJlpn11dsEe7 P22108ziN1dcq1HCMtY3ua8muSu2EUbMrjUTad5XPACfDD+X7OzQE3Drg74F0SFiiY1w kg== Received: from nasanppmta04.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3qp69u1d63-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 19 May 2023 19:04:03 +0000 Received: from nasanex01b.na.qualcomm.com (nasanex01b.na.qualcomm.com [10.46.141.250]) by NASANPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 34JJ41Sp030712 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 19 May 2023 19:04:02 GMT Received: from [10.71.110.193] (10.80.80.8) by nasanex01b.na.qualcomm.com (10.46.141.250) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.42; Fri, 19 May 2023 12:04:01 -0700 Message-ID: Date: Fri, 19 May 2023 12:04:00 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Subject: Re: [PATCH v2 1/4] drm/msm/dsi: Adjust pclk rate for compression Content-Language: en-US To: Marijn Suijten CC: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , David Airlie , Daniel Vetter , Konrad Dybcio , , , , References: <20230405-add-dsc-support-v2-0-1072c70e9786@quicinc.com> <20230405-add-dsc-support-v2-1-1072c70e9786@quicinc.com> <79b468f5-8f2e-175b-5bce-1b3ea5127628@quicinc.com> From: Jessica Zhang In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nasanex01b.na.qualcomm.com (10.46.141.250) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: yEaxfN0UFLSebcIDduIl4fL_-QJC5pzL X-Proofpoint-GUID: yEaxfN0UFLSebcIDduIl4fL_-QJC5pzL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-05-19_14,2023-05-17_02,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 malwarescore=0 bulkscore=0 adultscore=0 mlxlogscore=999 spamscore=0 suspectscore=0 impostorscore=0 priorityscore=1501 clxscore=1015 mlxscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2304280000 definitions=main-2305190163 X-Spam-Status: No, score=-3.6 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 5/8/2023 2:56 PM, Marijn Suijten wrote: > On 2023-05-05 14:49:08, Jessica Zhang wrote: >> On 5/5/2023 2:23 PM, Jessica Zhang wrote: >>> Adjust the pclk rate to divide hdisplay by the compression ratio when DSC >>> is enabled. >>> >>> Changes in v2: >>> - Adjusted pclk_rate math to divide only the hdisplay value by >>> compression ratio >>> >>> Signed-off-by: Jessica Zhang >>> --- >>> drivers/gpu/drm/msm/dsi/dsi_host.c | 17 +++++++++++++---- >>> 1 file changed, 13 insertions(+), 4 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c >>> index 43a5ec33eee8..0e5778e8091f 100644 >>> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c >>> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c >>> @@ -561,7 +561,8 @@ void dsi_link_clk_disable_v2(struct msm_dsi_host *msm_host) >>> clk_disable_unprepare(msm_host->byte_clk); >>> } >>> >>> -static unsigned long dsi_get_pclk_rate(const struct drm_display_mode *mode, bool is_bonded_dsi) >>> +static unsigned long dsi_get_pclk_rate(const struct drm_display_mode *mode, >>> + struct drm_dsc_config *dsc, bool is_bonded_dsi) >>> { >>> unsigned long pclk_rate; >>> >>> @@ -576,6 +577,14 @@ static unsigned long dsi_get_pclk_rate(const struct drm_display_mode *mode, bool >>> if (is_bonded_dsi) >>> pclk_rate /= 2; >>> >>> + /* If DSC is enabled, divide hdisplay by compression ratio */ >>> + if (dsc) { >>> + int new_hdisplay = DIV_ROUND_UP(mode->hdisplay * msm_dsc_get_bpp_int(dsc), >>> + dsc->bits_per_component * 3); >>> + int fps = DIV_ROUND_UP(pclk_rate, mode->htotal * mode->vtotal); >> >> Should've used drm_mode_vrefresh() here... Will spin a v3 with that >> change (along with any additional comments) > > Perhaps unsigned long on some of these? Overall the computations and > multi-lines look rather cluttered, perhaps (parts of) this is/are a > prime candidate to go into the new helpers? Hi Marijn, Sorry for the late reply, wanted to get the MSM DSC helpers series settled first before addressing these changes. Sounds good, I'll put these calculations in a separate dsi_adjust_compressed_pclk() helper. > > Note that I cannot get the 4k mode working at 60Hz on one of my panels > (30Hz works with minor corruption), regardless of this patch. See also: > https://gitlab.freedesktop.org/drm/msm/-/issues/24#note_1900031 As discussed elsewhere, we suspect that this is unrelated to DSC specifically and might be an issue with the upstream driver not taking transfer time into account with calculating pclk_rate. We will look into this as a separate issue. > >>> + pclk_rate = (new_hdisplay + (mode->htotal - mode->hdisplay)) * mode->vtotal * fps; >>> + } >>> + >>> return pclk_rate; >>> } >>> >>> @@ -585,7 +594,7 @@ unsigned long dsi_byte_clk_get_rate(struct mipi_dsi_host *host, bool is_bonded_d >>> struct msm_dsi_host *msm_host = to_msm_dsi_host(host); >>> u8 lanes = msm_host->lanes; >>> u32 bpp = dsi_get_bpp(msm_host->format); >>> - unsigned long pclk_rate = dsi_get_pclk_rate(mode, is_bonded_dsi); >>> + unsigned long pclk_rate = dsi_get_pclk_rate(mode, msm_host->dsc, is_bonded_dsi); >>> u64 pclk_bpp = (u64)pclk_rate * bpp; >>> >>> if (lanes == 0) { >>> @@ -604,7 +613,7 @@ unsigned long dsi_byte_clk_get_rate(struct mipi_dsi_host *host, bool is_bonded_d >>> >>> static void dsi_calc_pclk(struct msm_dsi_host *msm_host, bool is_bonded_dsi) >>> { >>> - msm_host->pixel_clk_rate = dsi_get_pclk_rate(msm_host->mode, is_bonded_dsi); >>> + msm_host->pixel_clk_rate = dsi_get_pclk_rate(msm_host->mode, msm_host->dsc, is_bonded_dsi); >>> msm_host->byte_clk_rate = dsi_byte_clk_get_rate(&msm_host->base, is_bonded_dsi, >>> msm_host->mode); >>> >>> @@ -634,7 +643,7 @@ int dsi_calc_clk_rate_v2(struct msm_dsi_host *msm_host, bool is_bonded_dsi) >>> >>> dsi_calc_pclk(msm_host, is_bonded_dsi); >>> >>> - pclk_bpp = (u64)dsi_get_pclk_rate(msm_host->mode, is_bonded_dsi) * bpp; >>> + pclk_bpp = (u64)dsi_get_pclk_rate(msm_host->mode, msm_host->dsc, is_bonded_dsi) * bpp; > > Let's rebase on top of "drm/msm/dsi: simplify pixel clk rate handling" > [1] to clean this up. > > [1]: https://lore.kernel.org/linux-arm-msm/20230118130031.2345941-1-dmitry.baryshkov@linaro.org/ I've looked into this patch and have made a comment on it. Just have some reservations about it as it changes the functionality of a clk handler op. I will hold off on rebasing and wait for that thread to resolve first. Thanks, Jessica Zhang > > - Marijn > >>> do_div(pclk_bpp, 8); >>> msm_host->src_clk_rate = pclk_bpp; >>> >>> >>> -- >>> 2.40.1 >>>