From nobody Tue Apr 7 18:02:52 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 68AB93876B0 for ; Thu, 12 Mar 2026 13:29:35 +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=1773322178; cv=none; b=cZ6A91K1G8lpolM2noWOm9FU6QL/b4TsT6wNxCaEc0cXWLYs3sX6Kuw4Xk1U5G1GEri6Sv6wJuGrQjUUaAiAX1dZL33s1m4qQcQQS392OdcetOSYWCCBLPrH0fL6s0BZk7Y1N9EuAwu+O8E0vSoVUWqpDYgT953Rn5M7RbxMgJA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773322178; c=relaxed/simple; bh=FcXX+QO0E2e2UbnHHDWvIWF4Nm+gAqQ21/54o+KGzd8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pbE1XoQNL5aWLXgkOEC8DMOjwZZAZaGTmPc01dFq6AZrK6BUeqoCOTfIyK4F2ftEhydirueJV9yMhhCYnp+aF7Cmoebj7K5VN9Tv38KT7SnBvysqwllKtKTr33ZCSx/7aojC/mPeUmWJ2q340eDgHbg6Besx6UOTpGuD7bYs9Oc= 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=d5dAh1qV; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=PGOGt83w; 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="d5dAh1qV"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="PGOGt83w" 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 62C99npD263416 for ; Thu, 12 Mar 2026 13:29:34 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= /2lO51oxWqRuqIMOMa1LT63isf0ox5oldYaFyA2HvGI=; b=d5dAh1qVWvXcYlzw 7TY6mbPMaRnyCfOjsNGXlEnX64c8RrE8ij29OyV4xIQdu6ruEYFbjpYvZ3plbMFl BAqx5Rc6qLAeZzy0y05YY8BXyI92DosUGbo1zrFKllDvLRCNQlWnU078ykqVYAnO z+4Ph2mwP+KiuKit8uO1blPiEWm2geLI1cAb+i6jawO0NC4D8fK/OUq0R4lUYf9l y77RQqYsYjkGFJ9/lRo9W4cZKoj2YdgBSb3p1TEpomI7u14VETUiQbl/9G/sIxxg sMFG7Kjx4EXl/7AGYcnbcy4X/DuCpepUAwCWGFP7GEGpsOvUd8lcAK4pgSaWmJCy No+LzQ== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cuh4yj62p-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 12 Mar 2026 13:29:34 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8cd7c4ab845so451336985a.1 for ; Thu, 12 Mar 2026 06:29:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773322174; x=1773926974; 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=/2lO51oxWqRuqIMOMa1LT63isf0ox5oldYaFyA2HvGI=; b=PGOGt83wELKJO8Tg1YRaJUBOlUTG4nNmvxZhmRNFDSoJDrwXGoHSTb5Zi1CH9d3g7y yhM4sd3Mi4mrtXgsl9hYi/D0GxduZcm8+ex6shfdNKZYGt1GV9QC78c5XLV5CiH76+dK hbTO4s/rHzXFKmjcDJMsmiMyD4fhdasOgq02DJZE/EDMlpzuJogN9rlP7wZ1YSDrRxsW AQAfTGL4lo1cWY68QftLFM0uhfyv9icj44Qu1LDm/T0wB64LpV/KK6dsEkrDbCLZCxMR B5fpvtVqnls4/E0ngduoMxOV+IK6n1vqwN8AQ9EBwhf1w7Jx+sUSYxOeTVwhgH2uqKH0 JoBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773322174; x=1773926974; 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=/2lO51oxWqRuqIMOMa1LT63isf0ox5oldYaFyA2HvGI=; b=lDT5EwRoZF2XQiFEtLs4eWfE5sDza64/D1snccVYe4hR+5x8ph6RToApJn7E18OdJP hg/EzLvZyXJhJSVUjGYIgSyUADEVinExInePmyj+ItrLsQ/Bmjk1aree26pQgOAT4rSu cok3ppKPwY+j+A/dCyorInmBXKKeoAIcq3ScQ3IA6fL2ye/8GikQtLCr8ptAm4nyuIzQ uAnURbrXnzfDtlEfJhMd2T+u5iU/w0qqdJtGan8bpNgTAjQvYA18sqBoPdtcyqhkIJ70 d/s2W8L1LtFMS9G+dwkAMTbyx9y6MA80pQ/YkBScPCInDTc7jQee27J7JanEpWkKYmMe owDA== X-Forwarded-Encrypted: i=1; AJvYcCXvTynRLZqk3yReV1BzGnC6URbLiT1ObhvrUTnvjjByO+wvDU4OZQx+GHRlBRuDBy13Pc4xf7cXtBobWjc=@vger.kernel.org X-Gm-Message-State: AOJu0YzgLBz/QhUCLvbSH2KhxQevSmAn0vHraKyXVn45P98x+0xfBW5q JSyIXZf37yZNIoFuqEIqmGMo83YO5kf1W/3cB23VrWK4pOtHQUHqEhDeBmxkqTu0XMDlAhKxju8 PsRVsXdr+lNa/Ej3szPcDD/6wL/qNK4VfolpClgBJuTXjB7HhOdTl4pB6m80uk6uAbGs= X-Gm-Gg: ATEYQzx4j1qAlWdIaasO54lzXVdLZpQHxJoBhN5ZAAizUnAy84YFPEVzU/1om81eiyy 9Yed1kpSSaoECD1QIUzm0vVbqc9FSIcJKHiGvf0LkU9S9ACh9maV+XJ1G694kMCwpxcuNBsiZjo BIw9Q/BwgyWnF/a1uHcBKT+XldLclD+OYepSWkvunTuYzZI8boX60g6G3/GwfqqNog2kDgct48/ oiRBGz5EHKYtq1zf+8TDOW5mDq2SqH5W5lIbh0bUiUWmIWwb6ji4tc5Wa9edy1PRT9EzmKXc9lw yvGT/EqJNhu6rsPoBLQWyC88Dhixssp6wxwas8aWRR1eYm3SANIX7moB8xMqgjTwABOrnCqLamE tVkHLYs3f4RTA+JhqE7k/9UE//wiwfrnzLtxE+bDIx7CNws0C1ZZq3Y2nIcBcUx4QFt2qtTlZcm PqdsHLlMA02bj+FivBcDexME8/aGcSsUkDO80= X-Received: by 2002:a05:620a:a3cb:b0:8cd:b317:a0b3 with SMTP id af79cd13be357-8cdb317ae33mr79320785a.24.1773322173801; Thu, 12 Mar 2026 06:29:33 -0700 (PDT) X-Received: by 2002:a05:620a:a3cb:b0:8cd:b317:a0b3 with SMTP id af79cd13be357-8cdb317ae33mr79318185a.24.1773322173216; Thu, 12 Mar 2026 06:29:33 -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-38a67d617e1sm8646671fa.9.2026.03.12.06.29.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Mar 2026 06:29:32 -0700 (PDT) From: Dmitry Baryshkov Date: Thu, 12 Mar 2026 15:29:22 +0200 Subject: [PATCH v3 01/27] 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: <20260312-ubwc-rework-v3-1-b7e8f800176a@oss.qualcomm.com> References: <20260312-ubwc-rework-v3-0-b7e8f800176a@oss.qualcomm.com> In-Reply-To: <20260312-ubwc-rework-v3-0-b7e8f800176a@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=6614; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=FcXX+QO0E2e2UbnHHDWvIWF4Nm+gAqQ21/54o+KGzd8=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpsr+0lEjFyOEH60Ac/jnZa9bs33g2Aqfq+Yj0Q Pwa09NPO72JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabK/tAAKCRCLPIo+Aiko 1WpoB/9VZxaclHZBWaXPVLeLx4Siy6u3v870jqaZoKW6oUPlJz4Qd/3CCRJovsYhcDTolDy5OJO +kMIzcHfsBP758n6gxunzEe3qyFeLoiNkfzzPnuGsLqmjSHXlaLKzYjvPAeWd77ApUe/oiFWinh bajw1AQPTrqFf62864QM8skUdsNyr/+nblqSKAJJLNayAE5kwb9hIojsypsQIbjfY2iFIxtRNEQ TOtSK/QG1ZFjxymqKb8pFbN56mdp1lG9lQBTF4yWCdJXIonQeotxxd2E2NK2j2EkojtvXWRAkP6 UKgFrmNcFO13o8JeVzQnF1UM1Z3CvAa0H6n82ivux0dXrLya X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEyMDEwNyBTYWx0ZWRfX5e9yd3Dj6ZIW U4njHA1NbnL3211hwopiq8deSU/cpB0YKemFQ0LUEBfSEtYV1KGZNaswFe202qRNnrXoFELUwdl WkmKVuhcS6HiA32llYqIUYGcI71N4Tzrlgk+jwIxQ0N2SbzIXP7vuHwiNnW8Pv3oPu1n0PWZ4Er ntfhe3CYr8NY+H6wNCsKwtomuTCEobE4NYy3JOXm2prk/6XcfMOO9d6CHiQenHy5aVLq0LPEVVh pM0929+dcVBPypB+x3fscqHAvK22rpJCVb+GHj4gTBiF4NQ7794Fq0gDOtA6sN5DbSbZEDY/zSd SWjzZnYRGhTF/pYToOcxguBNORidkjBTUlD7OlOR4XSBpTI5wdfr3oS0uMVKfq7MEzsEkOUUoj4 q4ANjUUOTLWqDhBRbgcG82jhOtviMH7kbQZ3odn+ywhTjM6XazSMjKRfqyrZS5xGGVG6+pW+rDX +/eZlRF9u8hd6V8nLrw== X-Proofpoint-ORIG-GUID: vBHBK9PdmbzWmEMjp5ucl8P-zWFo0BKh X-Authority-Analysis: v=2.4 cv=C+7kCAP+ c=1 sm=1 tr=0 ts=69b2bfbe cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==: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=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-GUID: vBHBK9PdmbzWmEMjp5ucl8P-zWFo0BKh 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-12_01,2026-03-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 phishscore=0 adultscore=0 suspectscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603120107 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 Reviewed-by: Konrad Dybcio --- drivers/gpu/drm/msm/msm_mdss.c | 115 +++++++++++++++----------------------= ---- 1 file changed, 41 insertions(+), 74 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_mdss.c b/drivers/gpu/drm/msm/msm_mdss.c index 9047e8d9ee89..7cb8aeaa7ecf 100644 --- a/drivers/gpu/drm/msm/msm_mdss.c +++ b/drivers/gpu/drm/msm/msm_mdss.c @@ -166,22 +166,19 @@ 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) | @@ -199,11 +196,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 +209,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 +270,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