Enable the CMM units through the display unit extensional function control
group register DEFR7.

Signed-off-by: Jacopo Mondi <jacopo+rene...@jmondi.org>
---
 drivers/gpu/drm/rcar-du/rcar_du_group.c | 8 ++++++++
 drivers/gpu/drm/rcar-du/rcar_du_regs.h  | 5 +++++
 2 files changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/rcar-du/rcar_du_group.c 
b/drivers/gpu/drm/rcar-du/rcar_du_group.c
index 9eee47969e77..d252c9bb9809 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_group.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_group.c
@@ -147,6 +147,14 @@ static void rcar_du_group_setup(struct rcar_du_group *rgrp)
 
        rcar_du_group_setup_pins(rgrp);
 
+       if (rcar_du_has(rcdu, RCAR_DU_FEATURE_CMM)) {
+               u32 defr7 = DEFR7_CODE |
+                           (rgrp->cmms_mask & BIT(1) ? DEFR7_CMME1 : 0) |
+                           (rgrp->cmms_mask & BIT(0) ? DEFR7_CMME0 : 0);
+
+               rcar_du_group_write(rgrp, DEFR7, defr7);
+       }
+
        if (rcdu->info->gen >= 2) {
                rcar_du_group_setup_defr8(rgrp);
                rcar_du_group_setup_didsr(rgrp);
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_regs.h 
b/drivers/gpu/drm/rcar-du/rcar_du_regs.h
index bc87f080b170..fb9964949368 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_regs.h
+++ b/drivers/gpu/drm/rcar-du/rcar_du_regs.h
@@ -197,6 +197,11 @@
 #define DEFR6_MLOS1            (1 << 2)
 #define DEFR6_DEFAULT          (DEFR6_CODE | DEFR6_TCNE1)
 
+#define DEFR7                  0x000ec
+#define DEFR7_CODE             (0x7779 << 16)
+#define DEFR7_CMME1            BIT(6)
+#define DEFR7_CMME0            BIT(4)
+
 /* 
-----------------------------------------------------------------------------
  * R8A7790-only Control Registers
  */
-- 
2.21.0

Reply via email to