MLK-17490-1 drm/imx: dec400d: fix incorrect register base passed to context loader
authorFancy Fang <chen.fang@nxp.com>
Thu, 1 Feb 2018 11:19:34 +0000 (19:19 +0800)
committerLeonard Crestez <leonard.crestez@nxp.com>
Wed, 17 Apr 2019 23:51:34 +0000 (02:51 +0300)
The register base of DEC400D which is passed to context loader
should be the physical address but not the ioremaped virtual
address.

Signed-off-by: Fancy Fang <chen.fang@nxp.com>
drivers/gpu/imx/dcss/dcss-dec400d.c

index 874fd5f..acd1221 100644 (file)
@@ -39,6 +39,7 @@
 struct dcss_dec400d_priv {
        struct dcss_soc *dcss;
        void __iomem *dec400d_reg;
+       uint32_t dec400d_reg_base;
        uint64_t modifier[4];
        uint32_t pixel_format;
        uint32_t ctx_id;
@@ -53,7 +54,7 @@ static void dcss_dec400d_write(struct dcss_dec400d_priv *dec400d,
        dcss_writel(value, dec400d->dec400d_reg + offset);
 #else
        dcss_ctxld_write(dec400d->dcss, dec400d->ctx_id,
-                        value, dec400d->dec400d_reg + offset);
+                        value, dec400d->dec400d_reg_base + offset);
 #endif
 }
 
@@ -74,6 +75,8 @@ int dcss_dec400d_init(struct dcss_soc *dcss, unsigned long dec400d_base)
                return -ENOMEM;
        }
 
+       dec400d->dec400d_reg_base = dec400d_base;
+
 #if USE_CTXLD
        dec400d->ctx_id = CTX_SB_HP;
 #endif