From nobody Mon Feb 9 17:57:46 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 0402C223DC0 for ; Sun, 28 Dec 2025 03:57:24 +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=1766894246; cv=none; b=AMy9CQQliA6o8kkH5Xii8LL6DzPXPPx4yk63Vh7k/luQM2d0qNeqaGYTf724OZTDjUmgSHi506/0xl5+JJW1Tqnqx1vK8fmqHLloKZ88wyx3CBIr06CrDSc0W12hu6NuFq2fqsHXWUwkbjQ5Ooe/Og1zj44QOvly/WZhdkEvQn0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766894246; c=relaxed/simple; bh=r9EPYKCxvuHAJXUnGuN/VCBndZ9RD6saAcTI/H8/eIs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NGtKJuozO64tAv/x0zQ/6zly4v29OmUmGyauFbl8U4WuMR2KFUmj/zwQYcgwhbDXhO/P12TZTDs7vuf8NAwJMkgPEa1b1TOKhCJqtukuRFrCI08+8ZAlbNdIYqAeEnQSLEhvrDwPdGGHMZqP+sovcXTn+lIALu31xSRrGYuzaKE= 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=SxQU7t5H; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=b67EclQY; 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="SxQU7t5H"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="b67EclQY" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BRKsLcu765244 for ; Sun, 28 Dec 2025 03:57:24 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= TgmpRwvrUbHmxLFWDS2Afnh71v9wqwGbfUtuXRPHvDo=; b=SxQU7t5H3i2uenlT bRsf5r4fTvPFvL97GIB1UQfXoLD/Kg2kaP7PrCK8A0QenZcZPmD0OZWDXxdimf+7 hXfQKMK2zmakKeOtFzDDvaDmfZn1pFpix4VytpA6lpOtdMLGwU4U0nU+DXuJXWyZ kwJ0Rh342/bfNHJf1IFCMuNvj85yLtIHgEbNjBli/qGxluJeMF+AEcK3IUusc38Q 8aI2lwNKY2Vv23s+Fs1T0DsGA8w8zhuji+5DKXt19C7a7mifqgVXqSZjROfltJar OK/ZCj6JfCBOTvsslxFRdKNIY3PVAXgj3/sk1MDH82IoMt8xskyKiWnNcQdDbxpk H6LsUA== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ba55e1twg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 28 Dec 2025 03:57:24 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4ee3dfe072dso219294551cf.2 for ; Sat, 27 Dec 2025 19:57:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1766894243; x=1767499043; 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=TgmpRwvrUbHmxLFWDS2Afnh71v9wqwGbfUtuXRPHvDo=; b=b67EclQYax4UeF/di96RFKiwUeWItB0IchTc0j9bvaVUBDChczQutolNpL3KQYiTW7 iBxLGongf7hTF6+rvJBKWZYfC5/J27zNUZLdecGVanDutmygl+FI+JjlvJYpMhgmkx4w YwhBVQx7dKj8JA6ZwLqfUgzx2auMKr+gno0vNvrmOb4/kJPtqqka76IJh9CiUkN9cUFv BTP5iwzpXvIilooZebU2TTbaVEeoMoJFqrJnfLUUshzMkflY2B/gTvAhqogmwBI/sQsh ES4mo1uJgg6f4Q4Ga2vm39hzds2pNITTkM6eh1JgMQSnyHCJ0i621tPaEulyBxYbX09f DcLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766894243; x=1767499043; 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=TgmpRwvrUbHmxLFWDS2Afnh71v9wqwGbfUtuXRPHvDo=; b=nVUqHsqHuhOBrbNBel95MO4W3w6y7omnNkCXs0YW4gwLErrKHpsyEBWbCsVRXZgjzs 91fEyKmu3UR+ri6OMHwFV9MbzzfM0pYTVJ17C45sJhNGNcWgwDWrF2DLt6oPCLFyqEYq BNRuzLOLJeRQWvyErGwJtp5wJlizSrMdiTW13KuwqGQ2nQMo3uHHNZDuhT7hQcFHRBIZ 6YEm6ph7Wn6QHqaLWYlNgqSFV0bBfhfFeiPTENmzOZTDO++S70z9mf7FVC05+tPB84eY Mdd+/jiqoyC0aIRo9dUVz4RrUokw4Ox49NU6XKZ/maeogt6qLcbX2jXgpBwJSK1aPnSw XqeA== X-Forwarded-Encrypted: i=1; AJvYcCW6VtuDHx82KnuhFXQhW4f8u4B9LW+aBv0l7QIHLCBoExhDmBcUVosKi6DrUnwyXU26C60ImQ99yXHoKyU=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+f7PKKjShQekmaTJlilPXqpynvuSj0SaKJPXcWAnoDONlc+Gp MU/V2QaWbE62Q0KI6ecxye9C8gil1LseUGHitjC4S5GwRUyI3HhbJOhttemczlnoMEKFL6+2InL z/EkjRbzilVrZ0bnDBJjKbUPSHSKGkMajYvhYSZWips87zt4NVL2qrbdC4dtKLXObvoU= X-Gm-Gg: AY/fxX6kjkRul4K/zCQAK8cVm9CmAdWhUZElAJft0IRcs2wqB2vCb7hPl+nemNJCB88 24OcIH62E2wJKpfhre0gOYCzFSLRgHF/Py8nT9C675SwEA66V5CrV4IW5Cqc/3eLZGfjAtigJCj TxL7TYptk8E6UMfEKiZNz7NqsmdYVopTsdVqPYHuQDHr6A6IX6vB+Hp1OGzX7sqtZnL/A9xiBrL moD0SN+6qLl6XAvgmUufCSqCRgWZ4Hyr8qhAO0eP6MERy3c11F1Det3U9wDQdWgYnnE4Qgsl7QY Q4M7XBEIeZhYgjji8RMswjEkc4imz724r+IlJrqtqQGoyp93R63fVXxmffT4vUf9WjnD2WymU+W 6xCOMBIvVjcslbEDykbmuOtYEOsXa5AuryekwvjYp8Bbwdn8tepPAHydBSyCmg3LKHFfST5pU8c ookoabolF/sNvZj4t6Vkd1A/4= X-Received: by 2002:a05:622a:1f91:b0:4ee:191e:ade2 with SMTP id d75a77b69052e-4f4abdaac32mr379248461cf.67.1766894243305; Sat, 27 Dec 2025 19:57:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IGxZaZkfGU4/BuqR+ShYBJeuScf4wzxq9rwMhDMYsGNrFOWaYIwakpEEcp/W8/DTX/UcIzrgw== X-Received: by 2002:a05:622a:1f91:b0:4ee:191e:ade2 with SMTP id d75a77b69052e-4f4abdaac32mr379248351cf.67.1766894242864; Sat, 27 Dec 2025 19:57:22 -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-59a185d5d37sm7883586e87.7.2025.12.27.19.57.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 19:57:22 -0800 (PST) From: Dmitry Baryshkov Date: Sun, 28 Dec 2025 05:57:12 +0200 Subject: [PATCH v5 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: <20251228-intf-fix-wd-v5-2-f6fce628e6f2@oss.qualcomm.com> References: <20251228-intf-fix-wd-v5-0-f6fce628e6f2@oss.qualcomm.com> In-Reply-To: <20251228-intf-fix-wd-v5-0-f6fce628e6f2@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=6979; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=r9EPYKCxvuHAJXUnGuN/VCBndZ9RD6saAcTI/H8/eIs=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpUKqahEU4fOnHtUSArqyElgaIl8PWufFXDUi4A DUD9MwXpsOJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaVCqmgAKCRCLPIo+Aiko 1eIuB/4zqMzsHaYhfnTpW3yD4HFqbdv2DHVbUcBIxgGO9NFULAFCdBa0Muhhc4nqibWuSRl0u31 x7BYo2Jba8QTicyve8/X/Xiw+fEJj3DFnphpqHfugXBaFllPT7fyTIuxLfqMuQY1Nq58xFono23 LvVbEuFNWt4xGDWMO8vtmgklcT/cyTF+dr7mp7MXzeOGZalMuPeOwIeBEwOUp7OyHvXW3AAPjje nVqd9d+mJqUTt0rXxznE6Op4dBtt7KBIBsnJC5QczdYAYAQRzVcnOmL2kvsIIo4pGVnBwz60IzZ z42vw3nunYyoP2wG2DhtODrDWvu02mc8p8QZm1bcL5EAxl6T X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjI4MDAzMyBTYWx0ZWRfX9mGUUKZSyxjH 7vpi7RfXagJNhJhiZSQ64cjBFNavMQJmY/476OBh0Yundv7dGWzmP3cSyfOFdNIrmO9yi6Ryfhg V/mkswZ6mf2Qd3MW5dOHFAJEpelKsxzvGFgqsG0zk1Rvfo03P7+FHKF/of14HddN+9vgAaL9dZm BS3Qt8I/uEVcT2yHs6B/tKdRWbgzb+tdcjHZa4hiY2AIbng2qgxcKRO/UyzMd4dBVkRAKkXw1oW LrYVtb4Ud9uSCEYKzeYA+UCmS+Ybb3XT4EjgHvbbLu904LqJJg1mPx69e4zFwi1cI88BpoYgwmK OEH1orWvdjTe0Z0cFT6fP0b1dOJo+mawubniYak5z8P++C46b+1la7oFej/eODaxmv3wt2wPnmf UYaAaEZWvHwotVmhiHcGsH8Ku3YJLgFxarCUdMBo+QvhTKsPATwpuk0zSVdAdmuTTachcM12XE+ zItk5g0mJNAJrWIHvdg== X-Authority-Analysis: v=2.4 cv=UMDQ3Sfy c=1 sm=1 tr=0 ts=6950aaa4 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==: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=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: YUvFppo_IMeHrzXvka6iC-cs8freZtqT X-Proofpoint-GUID: YUvFppo_IMeHrzXvka6iC-cs8freZtqT 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-28_01,2025-12-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 phishscore=0 adultscore=0 clxscore=1015 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512280033 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 tag points to the commit which removed register access to thos registers on DPU 8.x+ (and which also should have added proper support for WD timer on those devices). Fixes: 43e3293fc614 ("drm/msm/dpu: add support for MDP_TOP blackhole") Signed-off-by: Dmitry Baryshkov Reviewed-by: Marijn Suijten --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 4 +-- 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, 56 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/= msm/disp/dpu1/dpu_encoder.c index 3921c15aee98..058a7c8727f7 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -775,13 +775,13 @@ static void _dpu_encoder_update_vsync_source(struct d= pu_encoder_virt *dpu_enc, } =20 vsync_cfg.vsync_source =3D disp_info->vsync_source; + vsync_cfg.frame_rate =3D drm_mode_vrefresh(&dpu_enc->base.crtc->state->ad= justed_mode); =20 if (hw_mdptop->ops.setup_vsync_source) { for (i =3D 0; i < dpu_enc->num_phys_encs; i++) vsync_cfg.ppnumber[i] =3D dpu_enc->hw_pp[i]->idx; =20 vsync_cfg.pp_count =3D dpu_enc->num_phys_encs; - vsync_cfg.frame_rate =3D drm_mode_vrefresh(&dpu_enc->base.crtc->state->a= djusted_mode); =20 hw_mdptop->ops.setup_vsync_source(hw_mdptop, &vsync_cfg); } @@ -791,7 +791,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