From nobody Mon Feb 9 09:43:27 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 5D2682DA76A for ; Wed, 24 Dec 2025 15:33:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766590442; cv=none; b=orEzNhOuJ4LsyB2UtmAByPilnlwxNreIiOxXhT2NsnEM2WjBjC83+RF8eY7nS1UcftH4CDGmdmq6kLcJLqfObvbZxLq0P/NVc2581mcwyV8gWT6skGz+q32vqnnKEUyStxiOCYtW9YsWQw1oTKfZBDIHAXCO41Ho5rrOpq5zF0Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766590442; c=relaxed/simple; bh=KHeJcguGLGLj/H9CNx6XTMl2RY9vGrzpZXAk6Sk28pE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OEqHSt7DPkWYvUbjF++20l1OJHSgNnc6HJkCVrwU8u+vQ280cefaUfdbfFhMyCTmQfmJo961qebrZcJBbLTqS6WGu8iJktpF85llAYvUb4/2V9Cyx+cr4OaKb6pf5Q/jgRXOIhagXEpDJzLz1Cq3EpsiLuBwjdk9dbKQQIIodXw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=XKYNX0AA; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=OyPKgY7L; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="XKYNX0AA"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="OyPKgY7L" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BO7qpuK1056218 for ; Wed, 24 Dec 2025 15:33:56 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= NVYEvHPpjNPnJ/97y4IcMdENVkXk7RwKRB3tv1Ziw6M=; b=XKYNX0AANqzaR5GG A8ixyJSGTEFHwviuSWXkHY50HabiLuXY8P7tOZ3ITgqgbK4vK/DUNjNcQg0vl/Vc jVDdjYy9T/xEuj0VLj1bIzrrMN5/BMIkCWQrqyJZzZk6EyDc9Hzvv1LnoeHF3Jz0 hoO00chezQwrD/mvHLQKeKd2Ncbgw4ogFoSfmubteVhJqnPKpS0tq0kt6/W21NYX Snxp/8g7Vyk7zWj/XHJ5LPKmt3VvwHXJYCIl9pdmgM8WXwtWULeFaceF3Ujk0Foz B1E4DQUamjqmW4XeGjn2t+xFnhWLBV4lDX/ZsWbBo0f0k7+QHJZhIYXNvBtcVGg+ NZd4/g== Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4b811v2tb0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 24 Dec 2025 15:33:56 +0000 (GMT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-88a2d8b7ea5so78353056d6.0 for ; Wed, 24 Dec 2025 07:33:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1766590435; x=1767195235; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=NVYEvHPpjNPnJ/97y4IcMdENVkXk7RwKRB3tv1Ziw6M=; b=OyPKgY7LNSdH1/8Qa7KeJQdEhqk901UYkSF9gkPaYFc/0zEeh+QspO7Hej0ZZahmGR 1L6he2KgiBdU+PAhQSQoVqgPtPSKdmbe7WNFKhJmWZOfpvPMkJbMg4+DI8gUwjb1Xw7D XYXHqL2nNOBhTJxDh+AABJcQ81/xkYJ/pC1GGvRjX7nVzARlgVUpIqPskyTJIH1eMioL zSnLcg/k7iJVvkrVt3KJhncsOEVjr8EoTrgpvOmkULdhWAoL+Q8YnBkIkZGWDIKGhcjh a6K9a/0gqDFw6L9F05JhaW2TtQ7tFK+ZIKI1aW85jRnM8ybookoPhJyfeMly/7wae0An VKkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766590435; x=1767195235; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=NVYEvHPpjNPnJ/97y4IcMdENVkXk7RwKRB3tv1Ziw6M=; b=eEmWvObEtLK5X1YL8itu+qj+7odb6EcEJN0/QjNk7xbyKSPvBj8HYMqtFhSu14l+Yj XXm2s+BVIkfH30fVdIT6XdHGByqJi2/XeKZwbEIcsequc+u2On3VxFl8DAkqHH5/UJxu YwJwOLaAHHdTWcVqgF7+Pz12smnUwtAW4KEHYj+qdEeiCHZWZpLLbbDoZO/LWmoR1kR4 wa08MtbezdsmZU+e9gHy8ZEiKvmqo5yfP71GH/vOGykm0Mc82hnyWfR4wCAd5ZCcAE6w rnpzhLiND65Cu0wA1I319Y+M4iQzqlxX+Lj00KSQ0/Jvqr/ZA3HNXKWiFZT7bqy/Ug/+ OEGg== X-Forwarded-Encrypted: i=1; AJvYcCWjDf+GM6n5+s8DBeAZAv2v8sibIZ2wuaUibkFqVQnX+C+uUE0jz0ScmTvDHQYvtaeYq8x4oOW9DqSUh8s=@vger.kernel.org X-Gm-Message-State: AOJu0Ywkg0sh6DmCZStRa7DMU1/Pb4oY1H8xRMjthx2XWx6pQlODdXvT h9307tjB964G84K5hnLL/ixpdEDX545r4SXzo1LgIFKd+THX+/5MAbcMP2uFs4CpAgMoWkCOlHh /zFRrySwe8PPo4KE1dBgadcRl8djCjjKhIjZt/NK/UkSkM9ZWliWHJanMz4XlYYMbU/Y6C4JvqZ U= X-Gm-Gg: AY/fxX7FzuqKSbpGEJBjNAdK1D0J/vCP2a08ROOvFHaiMnynGy8aKsNqP+vgKFBvCaE zqGjHILYzUqq2rq9sNRkG/jz+o+ReLoeFYOfDsIlJE/JpOT/vaiGxAYyOFqDK6ePzlU/DbZDYFO 3auo380bqrcFfHQST0X57S839xZohSMCdZ6Q+RWffUF+dwmgiQjpuhPQfKSeaxD9K0fC+cjn/Zj Cy7lyPfX6n7cUjlz9S9dMBxH0MTn/m6zx1uUylUZuHZ+iSkonsZW0HbcnYWifH94/GBXGhJFDBw 3dDWdY8QEpvWpGuI88CF7LHc0QLc2fWepmumvvFvM9zEx/4S1TqjUbjajiLIIpM9sgoSaclwdJE YoQonYQ4UVGaIq7lskcxBNxbKPhE9Inkw2HjIVGCOcQRcfwegUuNDGZncegN4vAkUmoLWVnxS/w IZSiPurO0XO/NgZv4TjurrDnA= X-Received: by 2002:a05:622a:230a:b0:4ee:1365:ba71 with SMTP id d75a77b69052e-4f4abca88f1mr239988731cf.9.1766590434546; Wed, 24 Dec 2025 07:33:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IHMh2InLsBJ3PDwAeyZtMXndummWGCICu2ZS5MEZy6n7Ac/XW5cgl9CPHDP+OhV1ueiCjZqAg== X-Received: by 2002:a05:622a:230a:b0:4ee:1365:ba71 with SMTP id d75a77b69052e-4f4abca88f1mr239988291cf.9.1766590434076; Wed, 24 Dec 2025 07:33:54 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-59a18618cf9sm5115105e87.57.2025.12.24.07.33.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Dec 2025 07:33:53 -0800 (PST) From: Dmitry Baryshkov Date: Wed, 24 Dec 2025 17:33:50 +0200 Subject: [PATCH v4 2/2] drm/msm/dpu: fix WD timer handling on DPU 8.x Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251224-intf-fix-wd-v4-2-07a0926fafd2@oss.qualcomm.com> References: <20251224-intf-fix-wd-v4-0-07a0926fafd2@oss.qualcomm.com> In-Reply-To: <20251224-intf-fix-wd-v4-0-07a0926fafd2@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Teguh Sobirin Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=6200; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=KHeJcguGLGLj/H9CNx6XTMl2RY9vGrzpZXAk6Sk28pE=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpTAfenWlB7mdbgojSTyWi3tFT8QYSIuFvaDcg7 tHGGZlZHECJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaUwH3gAKCRCLPIo+Aiko 1WfcCACUSMTTvSD22f+YQotsH8vlks67I2zAzR65rWSDr4eS0L7CEW6MGsjI32Tzq1phjac4SM0 q7P0lM8H55Y4+uN1cBquSzeKZ7uUjs6TnL0ZgB9LmWvMvZjLAODv1LnTNgYq7SczqeecOS30+DD 1ijP3beQNJsdvjG4wZwZ0BN3QpyTDyRpCOgvStt5QWglACM2zsbT4/fyILMizRO8M+LZrJtMecp Vfk3EJjK3/jTISo2FPX23/xZuroN2jHRABOhH8fT8IPTjxmnKbgg6NmPaNgtlMO7PENGfxvUJ7b 0Jgfjij/vhmZJHUpIUPqBt893DBcNBUCE+CzyiWlCzo3pJnQ X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjI0MDEzNyBTYWx0ZWRfX0jZvVDCqYs+P 0ufEBzCe8SfBzss7IQMbXja2hWCCB9lmZ2eMT1Yf48eDFAfCdEga08Ujq+mlLw4SfciVLBHHMZN iHL6lWtDc9sJAPpntFCq2ndFWI3caB6yXgal+xfzL2jfhofTM4Q1oaY1ydsB1KFs6ocNv1Kd2hU IqBLFPnAxPh2jmr9oVbnul1RFfQS5LOU8E6sLxdHRbustVOW1lO+A8ITKf3rhcXVhvn7+GROwPo pQe+cGXRjmswlRKwx+08Aw/kIDT0V3dQ9f98JtY9AeLX6+W8eJya5Qud6k/Agrad8qVuXTmdr85 TpyRFo/O8Wc3HRCVZqnJquGGesv0b/7WV0o/HBe+5z8c0NUGW2GrlMS3e8KHZGyjD8mgKLPwfj/ 9tXyGLZpI1DF9T6/VEGv3pC3NjOemEJknhGoe3mRp9vqdcgytpavc9bNdhN7CyL4NRqMYzXcCdx LqKFNHKQyixkenH4TqA== X-Proofpoint-ORIG-GUID: Yr6p1oBFqjN4hEwxbK8t0qnbrmNIuZde X-Authority-Analysis: v=2.4 cv=WegBqkhX c=1 sm=1 tr=0 ts=694c07e4 cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=EGfW19dKLGIg-ZbO5EIA:9 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-GUID: Yr6p1oBFqjN4hEwxbK8t0qnbrmNIuZde X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-24_04,2025-12-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 impostorscore=0 bulkscore=0 adultscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512240137 Since DPU 8.x Watchdog timer settings were moved from the TOP to the INTF block. Support programming the timer in the INTF block. Fixes: e955a3f0d86e ("drm/msm/dpu: Implement tearcheck support on INTF bloc= k") Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 2 +- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c | 48 +++++++++++++++++++++++++= ++-- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h | 3 +- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c | 7 ----- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h | 7 +++++ 5 files changed, 55 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/= msm/disp/dpu1/dpu_encoder.c index 0482b2bb5a9e..0e53d9869ae9 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -792,7 +792,7 @@ static void _dpu_encoder_update_vsync_source(struct dpu= _encoder_virt *dpu_enc, =20 if (phys_enc->has_intf_te && phys_enc->hw_intf->ops.vsync_sel) phys_enc->hw_intf->ops.vsync_sel(phys_enc->hw_intf, - vsync_cfg.vsync_source); + &vsync_cfg); } } =20 diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c b/drivers/gpu/drm/= msm/disp/dpu1/dpu_hw_intf.c index a80ac82a9625..7967d9bd2f44 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c @@ -67,6 +67,10 @@ #define INTF_MISR_CTRL 0x180 #define INTF_MISR_SIGNATURE 0x184 =20 +#define INTF_WD_TIMER_0_CTL 0x230 +#define INTF_WD_TIMER_0_CTL2 0x234 +#define INTF_WD_TIMER_0_LOAD_VALUE 0x238 + #define INTF_MUX 0x25C #define INTF_STATUS 0x26C #define INTF_AVR_CONTROL 0x270 @@ -475,7 +479,7 @@ static int dpu_hw_intf_get_vsync_info(struct dpu_hw_int= f *intf, } =20 static void dpu_hw_intf_vsync_sel(struct dpu_hw_intf *intf, - enum dpu_vsync_source vsync_source) + struct dpu_vsync_source_cfg *cfg) { struct dpu_hw_blk_reg_map *c; =20 @@ -484,7 +488,42 @@ static void dpu_hw_intf_vsync_sel(struct dpu_hw_intf *= intf, =20 c =3D &intf->hw; =20 - DPU_REG_WRITE(c, INTF_TEAR_MDP_VSYNC_SEL, (vsync_source & 0xf)); + DPU_REG_WRITE(c, INTF_TEAR_MDP_VSYNC_SEL, (cfg->vsync_source & 0xf)); +} + +static void dpu_hw_intf_vsync_sel_v8(struct dpu_hw_intf *intf, + struct dpu_vsync_source_cfg *cfg) +{ + struct dpu_hw_blk_reg_map *c; + + if (!intf) + return; + + c =3D &intf->hw; + + if (cfg->vsync_source >=3D DPU_VSYNC_SOURCE_WD_TIMER_4 && + cfg->vsync_source <=3D DPU_VSYNC_SOURCE_WD_TIMER_1) { + pr_warn_once("DPU 8.x supports only GPIOs and timer0 as TE sources\n"); + return; + } + + if (cfg->vsync_source =3D=3D DPU_VSYNC_SOURCE_WD_TIMER_0) { + u32 reg; + + DPU_REG_WRITE(c, INTF_WD_TIMER_0_LOAD_VALUE, + CALCULATE_WD_LOAD_VALUE(cfg->frame_rate)); + + DPU_REG_WRITE(c, INTF_WD_TIMER_0_CTL, BIT(0)); /* clear timer */ + reg =3D DPU_REG_READ(c, INTF_WD_TIMER_0_CTL2); + reg |=3D BIT(8); /* enable heartbeat timer */ + reg |=3D BIT(0); /* enable WD timer */ + DPU_REG_WRITE(c, INTF_WD_TIMER_0_CTL2, reg); + + /* make sure that timers are enabled/disabled for vsync state */ + wmb(); + } + + dpu_hw_intf_vsync_sel(intf, cfg); } =20 static void dpu_hw_intf_disable_autorefresh(struct dpu_hw_intf *intf, @@ -598,7 +637,10 @@ struct dpu_hw_intf *dpu_hw_intf_init(struct drm_device= *dev, c->ops.enable_tearcheck =3D dpu_hw_intf_enable_te; c->ops.disable_tearcheck =3D dpu_hw_intf_disable_te; c->ops.connect_external_te =3D dpu_hw_intf_connect_external_te; - c->ops.vsync_sel =3D dpu_hw_intf_vsync_sel; + if (mdss_rev->core_major_ver >=3D 8) + c->ops.vsync_sel =3D dpu_hw_intf_vsync_sel_v8; + else + c->ops.vsync_sel =3D dpu_hw_intf_vsync_sel; c->ops.disable_autorefresh =3D dpu_hw_intf_disable_autorefresh; } =20 diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h b/drivers/gpu/drm/= msm/disp/dpu1/dpu_hw_intf.h index f31067a9aaf1..e84ab849d71a 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h @@ -12,6 +12,7 @@ #include "dpu_hw_util.h" =20 struct dpu_hw_intf; +struct dpu_vsync_source_cfg; =20 /* intf timing settings */ struct dpu_hw_intf_timing_params { @@ -107,7 +108,7 @@ struct dpu_hw_intf_ops { =20 int (*connect_external_te)(struct dpu_hw_intf *intf, bool enable_external= _te); =20 - void (*vsync_sel)(struct dpu_hw_intf *intf, enum dpu_vsync_source vsync_s= ource); + void (*vsync_sel)(struct dpu_hw_intf *intf, struct dpu_vsync_source_cfg *= cfg); =20 /** * Disable autorefresh if enabled diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c b/drivers/gpu/drm/m= sm/disp/dpu1/dpu_hw_top.c index 96dc10589bee..1ebd75d4f9be 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c @@ -22,13 +22,6 @@ #define TRAFFIC_SHAPER_WR_CLIENT(num) (0x060 + (num * 4)) #define TRAFFIC_SHAPER_FIXPOINT_FACTOR 4 =20 -#define MDP_TICK_COUNT 16 -#define XO_CLK_RATE 19200 -#define MS_TICKS_IN_SEC 1000 - -#define CALCULATE_WD_LOAD_VALUE(fps) \ - ((uint32_t)((MS_TICKS_IN_SEC * XO_CLK_RATE)/(MDP_TICK_COUNT * fps))) - static void dpu_hw_setup_split_pipe(struct dpu_hw_mdp *mdp, struct split_pipe_cfg *cfg) { diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h b/drivers/gpu/drm/= msm/disp/dpu1/dpu_hw_util.h index 67b08e99335d..6fe65bc3bff4 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h @@ -21,6 +21,13 @@ =20 #define TO_S15D16(_x_)((_x_) << 7) =20 +#define MDP_TICK_COUNT 16 +#define XO_CLK_RATE 19200 +#define MS_TICKS_IN_SEC 1000 + +#define CALCULATE_WD_LOAD_VALUE(fps) \ + ((uint32_t)((MS_TICKS_IN_SEC * XO_CLK_RATE)/(MDP_TICK_COUNT * fps))) + extern const struct dpu_csc_cfg dpu_csc_YUV2RGB_601L; extern const struct dpu_csc_cfg dpu_csc10_YUV2RGB_601L; extern const struct dpu_csc_cfg dpu_csc10_rgb2yuv_601l; --=20 2.47.3