/*
* 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_catalog.
+++++ * Unforunately this driver can not access hw catalog, so we have to
+++++ * hardcode them here.
*/
----- switch (readl_relaxed(msm_mdss->mmio + HW_REV)) {
+++++ switch (hw_rev) {
case DPU_HW_VER_500:
case DPU_HW_VER_501:
----- writel_relaxed(0x420, msm_mdss->mmio + UBWC_STATIC);
+++++ msm_mdss_setup_ubwc_dec_30(msm_mdss, UBWC_3_0, 0, 2, 0);
break;
case DPU_HW_VER_600:
----- /* TODO: 0x102e for LP_DDR4 */
----- writel_relaxed(0x103e, msm_mdss->mmio + UBWC_STATIC);
----- writel_relaxed(2, msm_mdss->mmio + UBWC_CTRL_2);
----- writel_relaxed(1, msm_mdss->mmio + UBWC_PREDICTION_MODE);
+++++ /* TODO: highest_bank_bit = 2 for LP_DDR4 */
+++++ msm_mdss_setup_ubwc_dec_40(msm_mdss, UBWC_4_0, 6, 1, 3, 1);
break;
case DPU_HW_VER_620:
----- writel_relaxed(0x1e, msm_mdss->mmio + UBWC_STATIC);
+++++ /* UBWC_2_0 */
+++++ msm_mdss_setup_ubwc_dec_20(msm_mdss, 0x1e);
++++ break;
+ ++++ case DPU_HW_VER_630:
+ ++++ /* UBWC_2_0 */
+ ++++ msm_mdss_setup_ubwc_dec_20(msm_mdss, 0x11f);
+ break;
case DPU_HW_VER_720:
----- writel_relaxed(0x101e, msm_mdss->mmio + UBWC_STATIC);
+++++ msm_mdss_setup_ubwc_dec_40(msm_mdss, UBWC_3_0, 6, 1, 1, 1);
break;
}