From nobody Wed Apr 8 02:51:50 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 4237C3290C9 for ; Wed, 11 Mar 2026 03:23:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773199403; cv=none; b=KT03zxc8onApWHa5hlqrGfMHQQgpxTkqKUWpo0ZQW3YGXG3DymEUZAVOmVI2+Coci1OS1ym/Gce1lsovOQU6vR+sWUuHS2g07Ry8rdckW+Z2p57ymch68zz9tctXN9J33af9k5JBO4OvHE9GGqR8wgHNIYQ0qUqMTHS/eD/v8Fs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773199403; c=relaxed/simple; bh=uSnw+FGxAf1+lIyAZwtg2QGOswUDFmlVWOT07uiqNc4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nXSApJbR1sWPoyzgpJqEAOHpV/kbjMqxP+clK3PzwFxjN36wnojXZcdDMVhtfSJiFv7KUsQ7lW2NQzXQSOyeAg6n0acpUFAnNHqeip7p/K8/sAqnTS9WMmKWocUg2d6WWUnqjzHdhIci+2wWbBb3N3QXejmxBO+sdRUdhgldp7Q= 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=mBqQFKbb; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=H2caCwIB; arc=none smtp.client-ip=205.220.180.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="mBqQFKbb"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="H2caCwIB" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62B1ZcBN508675 for ; Wed, 11 Mar 2026 03:23:21 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= KDZZPG9DkNIoQAYC/ZQxpoKTbgw+/Pi/qUEgyBqUeUo=; b=mBqQFKbbO/V+Rc5G cz+jOpsOD1eQO79WD2MsOy7K3yJLqyYA8w/F2uzgvSdhBUtpxUHOHfeojxEujTr3 layt1dO05KYP5II5K6cZBXzD/y8yytThBo5I7CbHsYZdFaAyAL8I6vCi8rCjqo7F IvcuawqsFerOgv9H+kDf7Xt4R61lIcLlcuaM7M20c08Jx9J/puQ8fNFfaZICGisa g1RpAYHP4XuxBUFFNGI1Y+1t4UuXGTMce+GO/mMc/M5VMPf51mx+ofIgg/Q9gFJn wqWSp+67rb9dRUVkuOY1lzIUG3Y0OL4s9EEYpaDVB8grNY9AmDT/bSY+WwMnvFFN rds5IA== Received: from mail-vk1-f199.google.com (mail-vk1-f199.google.com [209.85.221.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ctppaj0yj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 03:23:20 +0000 (GMT) Received: by mail-vk1-f199.google.com with SMTP id 71dfb90a1353d-56afd606ff0so8770905e0c.3 for ; Tue, 10 Mar 2026 20:23:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773199400; x=1773804200; 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=KDZZPG9DkNIoQAYC/ZQxpoKTbgw+/Pi/qUEgyBqUeUo=; b=H2caCwIBUx3EynrSdyBk3ku1RllP/8jhWzFdwCnuzVGfsVcPTXI+uq7LoHbmObD/TG 1OrZ3nYg0VlZ5hlJGKMDqwC9OB/zIRoQCZtkfstdRmnRBYg4FbH0Ec2AItOG4pi2oRel JhkZF/dq1SwPfaNhMb+TkzKdH6/l/C4vcDEMcpYNxIHYid9O3YY3PdiEjdENn76isP/6 8GhWVEnJqfFb3mM6SizpjMBdxKb1lgcn9R51Afor174BXp5n9kQ5cv/NBkD9tGugJ7FW D+krc//tMmSMXGjUoEgPqucQooYgSA6qymhlCwBD93cfp9eraQjGjQRHcZcJW9PmAE5T oo/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773199400; x=1773804200; 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=KDZZPG9DkNIoQAYC/ZQxpoKTbgw+/Pi/qUEgyBqUeUo=; b=awKEuzsj5FYzvaIGIV5yBZ/wKac3X3EZvTgog5ZTLEOTLEVOlzrjLL6UfYLTlDHaIL CoBWa6zLIfCNOedgak9DxMIiA4CO+lJbH9FoeX1J+8HL6lZxZCHQcrgwCT9FSiNGcV+y KTv1/HFI8vudG6AsLD6+QWTx2SBijAgdkS/YU6oa/5cg7s8PZsU4/gREHmsnpviyYBo+ z9JgbsCVKEV7o92Ir1F0HXknLEMFd8ZbAwZG1xHdFlrpjlw+TINRp6xVaj+qw148kmsP hGjP0Z3ln8/S/mH0/UdTsMjvsvycB174kEmkW8ae3mDPKk8V4giV7wM0Nq+rRP6hJGon YH2A== X-Forwarded-Encrypted: i=1; AJvYcCVzRKw8kXoN1eH1IFsgQQ+R58wHt+LYQQ3rhPuBWzR1UgR40AAwxMSzF/oMWUEW9HwHZJBmkhlneRQO+go=@vger.kernel.org X-Gm-Message-State: AOJu0Yzq+sw9BQtKOz97/BgP9XvqLQrd9gkkdm5xXDRaI0juXG1IhAl6 wE8lBFuBU+ohdYe0Wllf6apxeZyDc09Pzg7/y4wqjlTHNJdPUZSzfxpsHJV1iG78GZh5bceF5Al 9pR4pf68RtPEhGes5L0alAsPjWshCGy4OcG1TTo63Do9SFGQYokOdWuB0yKDuEmBxy1Q= X-Gm-Gg: ATEYQzzS/jj8nsqzr6d/EEayxPfLeIc+UgaSKptxvbp2A5Md9hSGZZTlFkzMXOaBXgS sqM8ADcWOApwqKv73T3OS7SxCMJqqcivSVtyN3xfL1lE+Zu2HBGyxOccOeL8RGMxrT/NxRAeN50 8r3D+OABRbw8e3Tw5cN/8yvKGO7DXnGS4pv7QTYNkFAZ9T9mF4kk5pFPyPpf53ceZwm7FHm2LMJ iq3S01KS0DqYXggxO3PkazD85m7uAMyDAklA+zLLirEo7pG3PE7X/600Y+BWHG95Y91siOp/YtA nbv8m9dxd1d64OP5PkkIBmwZIVOWwIDaR6+0cP3KNK64wt9iICGlK7waBHKSdevO3ubn9NFQBGv ulKqUzvAItWJFPGftXbV2dvYokyLYjptZFcQQ1kbf0OHaVneKok1sq+tIfLx1L45sKeL3HAgK8y 3lJuoPNAZiL5GqHSzkOASI18rEjzCLlmEu6Kc= X-Received: by 2002:a05:6122:90b:b0:56a:fc35:9664 with SMTP id 71dfb90a1353d-56b47438bcfmr367674e0c.3.1773199400229; Tue, 10 Mar 2026 20:23:20 -0700 (PDT) X-Received: by 2002:a05:6122:90b:b0:56a:fc35:9664 with SMTP id 71dfb90a1353d-56b47438bcfmr367657e0c.3.1773199399783; Tue, 10 Mar 2026 20:23:19 -0700 (PDT) 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 38308e7fff4ca-38a67e5ed41sm1422721fa.25.2026.03.10.20.23.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 20:23:17 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 11 Mar 2026 05:22:55 +0200 Subject: [PATCH v2 01/25] drm/msm/mdss: correct UBWC programming sequences 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: <20260311-ubwc-rework-v2-1-69f718f2a1c9@oss.qualcomm.com> References: <20260311-ubwc-rework-v2-0-69f718f2a1c9@oss.qualcomm.com> In-Reply-To: <20260311-ubwc-rework-v2-0-69f718f2a1c9@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Bjorn Andersson , Konrad Dybcio , Akhil P Oommen 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=6916; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=uSnw+FGxAf1+lIyAZwtg2QGOswUDFmlVWOT07uiqNc4=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpsOAd1kg8HBo502twDi3RMzA/fa7vBmR7TiWDW tdDAL2OdBWJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabDgHQAKCRCLPIo+Aiko 1RfVB/wKZ1nWG1/vnjr7LfDjt7Y4o1OX2kv+6lepua9Tl2OeAtNUrdsR24baxlkBg1HBphtGhgl AZbi9JTmm1fmXcNXB6GJpqPY4anViI4CKqDfXujBKKoaqf/iFHrWWXJcsDZ7TRDBdsDdiBwibSQ f12jxT3pmItf60YWGOUU3keC3V2iPl2R3sumef0nCyMHQYjtPpNxRZ22GxuRtRnZ7wBjz0laAqD sjkgjumjo8Hw4BrDIQqRoCHz28u/WFUpRnx6ZULychiDnamOxLpZ+ZcF5Ybc7w4VtN5aa9qL1x8 y2Q7++zY1H+5ivL+SOrG3t8HRg0bFRJR6V2EaSHqreIxFwpV X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: ggeW53BSPqig51fq9sLVoZ_rHfZ6FSeA X-Authority-Analysis: v=2.4 cv=D7BK6/Rj c=1 sm=1 tr=0 ts=69b0e029 cx=c_pps a=+D9SDfe9YZWTjADjLiQY5g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=hQCg4X1xv2bm5S_WMKMA:9 a=QEXdDO2ut3YA:10 a=vmgOmaN-Xu0dpDh8OwbV:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDAyNiBTYWx0ZWRfX/iqPuceLVbRF nhFBZeEz2pPauQxJPp97yyXHVud4cSAsxfq3vt/gXHmvFRFFVQy1bGJhmDeG4lO910A6P1FAis+ kk4Hj60mVQ1dyO1ScIORGgP3dxfCRMKQrjtEoH01fCYuCH0mgtW3h9UxcUU2Hav1HvpbVEwg2+o HwASOaA42wBv3K3bSAv5OFUg4EDNkIUihggoqPMSDK/KoYNLxb0ugTc1/U5fpi7kEWNR0rdpTA5 UXQMJDEzhq1aDG5b+DAq1I8Wt14oAX/NUvnGtPS9K51leCFSYZER4/IYw5l47x8C+NBCIBOuFxR XcMK4Fjc3ZIkL2y5Snqo/3G2L1M2aTYa+yUvwhtggqUL7E/ydm4DqwnVtf6k3tZOuFGALI8Pnpm sjC2fjp5MEfcE5yjlKoLtmgB6Wsi/V9jrBwkDbK3DhUWEdu0eAzEjuLSN+juS7rv//iU+QDDOgB WkMwWWtNV4sPf5l1WgQ== X-Proofpoint-ORIG-GUID: ggeW53BSPqig51fq9sLVoZ_rHfZ6FSeA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_05,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 impostorscore=0 spamscore=0 bulkscore=0 malwarescore=0 priorityscore=1501 clxscore=1015 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110026 The UBWC registers in the MDSS region are not dependent on the UBWC version (it is an invalid assumption we inherited from the vendor SDE driver). Instead they are dependent only on the MDSS core revision. Rework UBWC programming to follow MDSS revision and to use required (aka encoder) UBWC version instead of the ubwc_dec_version. Fixes: d68db6069a8e ("drm/msm/mdss: convert UBWC setup to use match data") Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_mdss.c | 120 ++++++++++++++++---------------------= ---- 1 file changed, 45 insertions(+), 75 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_mdss.c b/drivers/gpu/drm/msm/msm_mdss.c index 9047e8d9ee89..d8b0288f0040 100644 --- a/drivers/gpu/drm/msm/msm_mdss.c +++ b/drivers/gpu/drm/msm/msm_mdss.c @@ -166,27 +166,27 @@ static int _msm_mdss_irq_domain_add(struct msm_mdss *= msm_mdss) return 0; } =20 -static void msm_mdss_setup_ubwc_dec_20(struct msm_mdss *msm_mdss) +static void msm_mdss_4x_setup_ubwc(struct msm_mdss *msm_mdss) { const struct qcom_ubwc_cfg_data *data =3D msm_mdss->mdss_data; - u32 value =3D MDSS_UBWC_STATIC_UBWC_SWIZZLE(data->ubwc_swizzle) | + u32 value =3D MDSS_UBWC_STATIC_UBWC_SWIZZLE(data->ubwc_swizzle & 0x1) | MDSS_UBWC_STATIC_HIGHEST_BANK_BIT(data->highest_bank_bit - 13); =20 - if (data->ubwc_bank_spread) - value |=3D MDSS_UBWC_STATIC_UBWC_BANK_SPREAD; - if (data->ubwc_enc_version =3D=3D UBWC_1_0) value |=3D MDSS_UBWC_STATIC_UBWC_MIN_ACC_LEN(1); =20 writel_relaxed(value, msm_mdss->mmio + REG_MDSS_UBWC_STATIC); } =20 -static void msm_mdss_setup_ubwc_dec_30(struct msm_mdss *msm_mdss) +static void msm_mdss_5x_setup_ubwc(struct msm_mdss *msm_mdss) { const struct qcom_ubwc_cfg_data *data =3D msm_mdss->mdss_data; - u32 value =3D MDSS_UBWC_STATIC_UBWC_SWIZZLE(data->ubwc_swizzle & 0x1) | + u32 value =3D MDSS_UBWC_STATIC_UBWC_SWIZZLE(data->ubwc_swizzle) | MDSS_UBWC_STATIC_HIGHEST_BANK_BIT(data->highest_bank_bit - 13); =20 + if (data->ubwc_bank_spread) + value |=3D MDSS_UBWC_STATIC_UBWC_BANK_SPREAD; + if (data->macrotile_mode) value |=3D MDSS_UBWC_STATIC_MACROTILE_MODE; =20 @@ -199,11 +199,12 @@ static void msm_mdss_setup_ubwc_dec_30(struct msm_mds= s *msm_mdss) writel_relaxed(value, msm_mdss->mmio + REG_MDSS_UBWC_STATIC); } =20 -static void msm_mdss_setup_ubwc_dec_40(struct msm_mdss *msm_mdss) +static void msm_mdss_6x_setup_ubwc(struct msm_mdss *msm_mdss) { const struct qcom_ubwc_cfg_data *data =3D msm_mdss->mdss_data; u32 value =3D MDSS_UBWC_STATIC_UBWC_SWIZZLE(data->ubwc_swizzle) | MDSS_UBWC_STATIC_HIGHEST_BANK_BIT(data->highest_bank_bit - 13); + u32 ver, prediction_mode; =20 if (data->ubwc_bank_spread) value |=3D MDSS_UBWC_STATIC_UBWC_BANK_SPREAD; @@ -211,45 +212,42 @@ static void msm_mdss_setup_ubwc_dec_40(struct msm_mds= s *msm_mdss) if (data->macrotile_mode) value |=3D MDSS_UBWC_STATIC_MACROTILE_MODE; =20 - writel_relaxed(value, msm_mdss->mmio + REG_MDSS_UBWC_STATIC); - - if (data->ubwc_enc_version =3D=3D UBWC_3_0) { - writel_relaxed(1, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2); - writel_relaxed(0, msm_mdss->mmio + REG_MDSS_UBWC_PREDICTION_MODE); - } else { - if (data->ubwc_dec_version =3D=3D UBWC_4_3) - writel_relaxed(3, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2); - else - writel_relaxed(2, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2); - writel_relaxed(1, msm_mdss->mmio + REG_MDSS_UBWC_PREDICTION_MODE); - } -} - -static void msm_mdss_setup_ubwc_dec_50(struct msm_mdss *msm_mdss) -{ - const struct qcom_ubwc_cfg_data *data =3D msm_mdss->mdss_data; - u32 value =3D MDSS_UBWC_STATIC_UBWC_SWIZZLE(data->ubwc_swizzle) | - MDSS_UBWC_STATIC_HIGHEST_BANK_BIT(data->highest_bank_bit - 13); - - if (data->ubwc_bank_spread) - value |=3D MDSS_UBWC_STATIC_UBWC_BANK_SPREAD; - - if (data->macrotile_mode) - value |=3D MDSS_UBWC_STATIC_MACROTILE_MODE; + if (data->ubwc_enc_version =3D=3D UBWC_1_0) + value |=3D MDSS_UBWC_STATIC_UBWC_MIN_ACC_LEN(1); =20 writel_relaxed(value, msm_mdss->mmio + REG_MDSS_UBWC_STATIC); =20 - if (data->ubwc_dec_version =3D=3D UBWC_6_0) - writel_relaxed(5, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2); + if (data->ubwc_enc_version < UBWC_4_0) + prediction_mode =3D 0; else - writel_relaxed(4, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2); - - writel_relaxed(1, msm_mdss->mmio + REG_MDSS_UBWC_PREDICTION_MODE); + prediction_mode =3D 1; + + if (data->ubwc_enc_version >=3D UBWC_6_0) + ver =3D 5; + else if (data->ubwc_enc_version >=3D UBWC_5_0) + ver =3D 4; + else if (data->ubwc_enc_version >=3D UBWC_4_3) + ver =3D 3; + else if (data->ubwc_enc_version >=3D UBWC_4_0) + ver =3D 2; + else if (data->ubwc_enc_version >=3D UBWC_3_0) + ver =3D 1; + else /* UBWC 1.0 and 2.0 */ + ver =3D 0; + + writel_relaxed(ver, msm_mdss->mmio + REG_MDSS_UBWC_CTRL_2); + writel_relaxed(prediction_mode, msm_mdss->mmio + REG_MDSS_UBWC_PREDICTION= _MODE); } =20 +#define MDSS_HW_VER(major, minor, step) \ + ((((major) & 0xf) << 28) | \ + (((minor) & 0xfff) << 16) | \ + ((step) & 0xffff)) + static int msm_mdss_enable(struct msm_mdss *msm_mdss) { int ret, i; + u32 hw_rev; =20 /* * Several components have AXI clocks that can only be turned on if @@ -275,43 +273,15 @@ static int msm_mdss_enable(struct msm_mdss *msm_mdss) if (msm_mdss->is_mdp5 || !msm_mdss->mdss_data) return 0; =20 - /* - * ubwc config is part of the "mdss" region which is not accessible - * from the rest of the driver. hardcode known configurations here - * - * Decoder version can be read from the UBWC_DEC_HW_VERSION reg, - * UBWC_n and the rest of params comes from hw data. - */ - switch (msm_mdss->mdss_data->ubwc_dec_version) { - case 0: /* no UBWC */ - case UBWC_1_0: - /* do nothing */ - break; - case UBWC_2_0: - msm_mdss_setup_ubwc_dec_20(msm_mdss); - break; - case UBWC_3_0: - msm_mdss_setup_ubwc_dec_30(msm_mdss); - break; - case UBWC_4_0: - case UBWC_4_3: - msm_mdss_setup_ubwc_dec_40(msm_mdss); - break; - case UBWC_5_0: - msm_mdss_setup_ubwc_dec_50(msm_mdss); - break; - case UBWC_6_0: - msm_mdss_setup_ubwc_dec_50(msm_mdss); - break; - default: - dev_err(msm_mdss->dev, "Unsupported UBWC decoder version %x\n", - msm_mdss->mdss_data->ubwc_dec_version); - dev_err(msm_mdss->dev, "HW_REV: 0x%x\n", - readl_relaxed(msm_mdss->mmio + REG_MDSS_HW_VERSION)); - dev_err(msm_mdss->dev, "UBWC_DEC_HW_VERSION: 0x%x\n", - readl_relaxed(msm_mdss->mmio + REG_MDSS_UBWC_DEC_HW_VERSION)); - break; - } + hw_rev =3D readl_relaxed(msm_mdss->mmio + REG_MDSS_HW_VERSION); + + if (hw_rev >=3D MDSS_HW_VER(6, 0, 0)) + msm_mdss_6x_setup_ubwc(msm_mdss); + else if (hw_rev >=3D MDSS_HW_VER(5, 0, 0)) + msm_mdss_5x_setup_ubwc(msm_mdss); + else if (hw_rev >=3D MDSS_HW_VER(4, 0, 0)) + msm_mdss_4x_setup_ubwc(msm_mdss); + /* else UBWC 1.0 or none, no params to program */ =20 return ret; } --=20 2.47.3