|
@@ -1,5 +1,6 @@
|
|
|
// SPDX-License-Identifier: GPL-2.0-only
|
|
|
/*
|
|
|
+ * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
|
|
|
*/
|
|
|
|
|
@@ -312,7 +313,8 @@ static void sde_hw_setup_vsync_source_v1(struct sde_hw_mdp *mdp,
|
|
|
void sde_hw_reset_ubwc(struct sde_hw_mdp *mdp, struct sde_mdss_cfg *m)
|
|
|
{
|
|
|
struct sde_hw_blk_reg_map c;
|
|
|
- u32 ubwc_rev;
|
|
|
+ u32 ubwc_dec_version;
|
|
|
+ u32 ubwc_enc_version;
|
|
|
|
|
|
if (!mdp || !m)
|
|
|
return;
|
|
@@ -320,17 +322,18 @@ void sde_hw_reset_ubwc(struct sde_hw_mdp *mdp, struct sde_mdss_cfg *m)
|
|
|
/* force blk offset to zero to access beginning of register region */
|
|
|
c = mdp->hw;
|
|
|
c.blk_off = 0x0;
|
|
|
- ubwc_rev = SDE_REG_READ(&c, UBWC_DEC_HW_VERSION);
|
|
|
+ ubwc_dec_version = SDE_REG_READ(&c, UBWC_DEC_HW_VERSION);
|
|
|
+ ubwc_enc_version = m->ubwc_rev;
|
|
|
|
|
|
- if (IS_UBWC_40_SUPPORTED(ubwc_rev)) {
|
|
|
- u32 ver = 2;
|
|
|
+ if (IS_UBWC_40_SUPPORTED(ubwc_dec_version) || IS_UBWC_43_SUPPORTED(ubwc_dec_version)) {
|
|
|
+ u32 ver = IS_UBWC_43_SUPPORTED(ubwc_dec_version) ? 3 : 2;
|
|
|
u32 mode = 1;
|
|
|
u32 reg = (m->mdp[0].ubwc_swizzle & 0x7) |
|
|
|
((m->mdp[0].ubwc_static & 0x1) << 3) |
|
|
|
((m->mdp[0].highest_bank_bit & 0x7) << 4) |
|
|
|
((m->macrotile_mode & 0x1) << 12);
|
|
|
|
|
|
- if (IS_UBWC_30_SUPPORTED(m->ubwc_rev)) {
|
|
|
+ if (IS_UBWC_30_SUPPORTED(ubwc_enc_version)) {
|
|
|
ver = 1;
|
|
|
mode = 0;
|
|
|
}
|
|
@@ -338,22 +341,22 @@ void sde_hw_reset_ubwc(struct sde_hw_mdp *mdp, struct sde_mdss_cfg *m)
|
|
|
SDE_REG_WRITE(&c, UBWC_STATIC, reg);
|
|
|
SDE_REG_WRITE(&c, UBWC_CTRL_2, ver);
|
|
|
SDE_REG_WRITE(&c, UBWC_PREDICTION_MODE, mode);
|
|
|
- } else if (IS_UBWC_20_SUPPORTED(ubwc_rev)) {
|
|
|
+ } else if (IS_UBWC_20_SUPPORTED(ubwc_dec_version)) {
|
|
|
SDE_REG_WRITE(&c, UBWC_STATIC, m->mdp[0].ubwc_static);
|
|
|
- } else if (IS_UBWC_30_SUPPORTED(ubwc_rev)) {
|
|
|
+ } else if (IS_UBWC_30_SUPPORTED(ubwc_dec_version)) {
|
|
|
u32 reg = m->mdp[0].ubwc_static |
|
|
|
(m->mdp[0].ubwc_swizzle & 0x1) |
|
|
|
((m->mdp[0].highest_bank_bit & 0x3) << 4) |
|
|
|
((m->macrotile_mode & 0x1) << 12);
|
|
|
|
|
|
- if (IS_UBWC_30_SUPPORTED(m->ubwc_rev))
|
|
|
+ if (IS_UBWC_30_SUPPORTED(ubwc_enc_version))
|
|
|
reg |= BIT(10);
|
|
|
- if (IS_UBWC_10_SUPPORTED(m->ubwc_rev))
|
|
|
+ if (IS_UBWC_10_SUPPORTED(ubwc_enc_version))
|
|
|
reg |= BIT(8);
|
|
|
|
|
|
SDE_REG_WRITE(&c, UBWC_STATIC, reg);
|
|
|
} else {
|
|
|
- SDE_ERROR("Unsupported UBWC version 0x%08x\n", ubwc_rev);
|
|
|
+ SDE_ERROR("unsupported ubwc decoder version 0x%08x\n", ubwc_dec_version);
|
|
|
}
|
|
|
}
|
|
|
|