drm/msm/dpu: enable PINGPONG TE operations only when supported by HW
The DPU_PINGPONG_TE bit is set for all PINGPONG blocks on DPU < 5.0. Rather than checking for the flag, check for the presense of the corresponding interrupt line. Reviewed-by: Marijn Suijten <marijn.suijten@somainline.org> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Patchwork: https://patchwork.freedesktop.org/patch/555541/ Link: https://lore.kernel.org/r/20230904020454.2945667-3-dmitry.baryshkov@linaro.org
This commit is contained in:
parent
8277a62082
commit
48d67e42bb
@ -282,7 +282,7 @@ static int dpu_hw_pp_setup_dsc(struct dpu_hw_pingpong *pp)
|
||||
}
|
||||
|
||||
struct dpu_hw_pingpong *dpu_hw_pingpong_init(const struct dpu_pingpong_cfg *cfg,
|
||||
void __iomem *addr)
|
||||
void __iomem *addr, const struct dpu_mdss_version *mdss_rev)
|
||||
{
|
||||
struct dpu_hw_pingpong *c;
|
||||
|
||||
@ -296,7 +296,9 @@ struct dpu_hw_pingpong *dpu_hw_pingpong_init(const struct dpu_pingpong_cfg *cfg,
|
||||
c->idx = cfg->id;
|
||||
c->caps = cfg;
|
||||
|
||||
if (test_bit(DPU_PINGPONG_TE, &cfg->features)) {
|
||||
if (mdss_rev->core_major_ver < 5) {
|
||||
WARN_ON(!cfg->intr_rdptr);
|
||||
|
||||
c->ops.enable_tearcheck = dpu_hw_pp_enable_te;
|
||||
c->ops.disable_tearcheck = dpu_hw_pp_disable_te;
|
||||
c->ops.connect_external_te = dpu_hw_pp_connect_external_te;
|
||||
|
@ -123,10 +123,11 @@ static inline struct dpu_hw_pingpong *to_dpu_hw_pingpong(struct dpu_hw_blk *hw)
|
||||
* pingpong catalog entry.
|
||||
* @cfg: Pingpong catalog entry for which driver object is required
|
||||
* @addr: Mapped register io address of MDP
|
||||
* @mdss_rev: dpu core's major and minor versions
|
||||
* Return: Error code or allocated dpu_hw_pingpong context
|
||||
*/
|
||||
struct dpu_hw_pingpong *dpu_hw_pingpong_init(const struct dpu_pingpong_cfg *cfg,
|
||||
void __iomem *addr);
|
||||
void __iomem *addr, const struct dpu_mdss_version *mdss_rev);
|
||||
|
||||
/**
|
||||
* dpu_hw_pingpong_destroy - destroys pingpong driver context
|
||||
|
@ -146,7 +146,7 @@ int dpu_rm_init(struct dpu_rm *rm,
|
||||
struct dpu_hw_pingpong *hw;
|
||||
const struct dpu_pingpong_cfg *pp = &cat->pingpong[i];
|
||||
|
||||
hw = dpu_hw_pingpong_init(pp, mmio);
|
||||
hw = dpu_hw_pingpong_init(pp, mmio, cat->mdss_ver);
|
||||
if (IS_ERR(hw)) {
|
||||
rc = PTR_ERR(hw);
|
||||
DPU_ERROR("failed pingpong object creation: err %d\n",
|
||||
|
Loading…
x
Reference in New Issue
Block a user