aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>2020-09-16 11:46:46 +0300
committerDmitry Baryshkov <dmitry.baryshkov@linaro.org>2020-09-19 22:24:40 +0300
commited3da883fee55edf7f56d8026dfa650f8fa388f3 (patch)
tree892ddbdffca52128a6074a40ab09c04f13e756b2
parent40e0a439f7ee4c19581e5d21426e7a655cb11fc3 (diff)
drm/msm/dpu: setup merge modes in merge_3d block
Handle setting up merge mode in merge_3d hardware block. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_hw_merge3d.c17
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_hw_merge3d.h4
2 files changed, 21 insertions, 0 deletions
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_merge3d.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_merge3d.c
index cf33c8bbbae5..bf63bfbcdec2 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_merge3d.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_merge3d.c
@@ -11,6 +11,9 @@
#include "dpu_kms.h"
#include "dpu_trace.h"
+#define MERGE_3D_MUX 0x000
+#define MERGE_3D_MODE 0x004
+
static const struct dpu_merge_3d_cfg *_merge_3d_offset(enum dpu_merge_3d pp,
const struct dpu_mdss_cfg *m,
void __iomem *addr,
@@ -32,9 +35,23 @@ static const struct dpu_merge_3d_cfg *_merge_3d_offset(enum dpu_merge_3d pp,
return ERR_PTR(-EINVAL);
}
+static void dpu_hw_merge_3d_setup_3d_mode(struct dpu_hw_merge_3d *merge_3d,
+ enum dpu_3d_blend_mode mode_3d)
+{
+ struct dpu_hw_blk_reg_map *c;
+ u32 data;
+
+
+ c = &merge_3d->hw;
+ data = BIT(0) | ((mode_3d - 1) << 1);
+ pr_info("MERGE 3D MODE %d %d %x\n", merge_3d->base.id, mode_3d, data);
+ DPU_REG_WRITE(c, MERGE_3D_MODE, data);
+}
+
static void _setup_merge_3d_ops(struct dpu_hw_merge_3d *c,
unsigned long features)
{
+ c->ops.setup_3d_mode = dpu_hw_merge_3d_setup_3d_mode;
};
static struct dpu_hw_blk_ops dpu_hw_ops;
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_merge3d.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_merge3d.h
index aaad7c90cfb0..870bdb14613e 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_merge3d.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_merge3d.h
@@ -16,8 +16,12 @@ struct dpu_hw_merge_3d;
*
* struct dpu_hw_merge_3d_ops : Interface to the merge_3d Hw driver functions
* Assumption is these functions will be called after clocks are enabled
+ * @setup_3d_mode : enable 3D merge
*/
struct dpu_hw_merge_3d_ops {
+ void (*setup_3d_mode)(struct dpu_hw_merge_3d *merge_3d,
+ enum dpu_3d_blend_mode mode_3d);
+
};
struct dpu_hw_merge_3d {