On Fri, 20 Dec 2019 at 10:31, Zhihui Chen <chenzhih...@huawei.com> wrote:
> add DPMS function to turn on/off signal of monitor > > Signed-off-by: Zhihui Chen <chenzhih...@huawei.com> > Thanks for the patch. Acked-by: Xinliang Liu <xinliang....@linaro.org> Applied to drm-misc-next. > --- > drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c | 16 ++++++++++++++++ > drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_regs.h | 6 ++++++ > 2 files changed, 22 insertions(+) > > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c > b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c > index 722e369f30d4..24de937c1cb1 100644 > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c > @@ -189,6 +189,20 @@ static struct drm_plane *hibmc_plane_init(struct > hibmc_drm_private *priv) > return plane; > } > > +static void hibmc_crtc_dpms(struct drm_crtc *crtc, int dpms) > +{ > + struct hibmc_drm_private *priv = crtc->dev->dev_private; > + unsigned int reg; > + > + reg = readl(priv->mmio + HIBMC_CRT_DISP_CTL); > + reg &= ~HIBMC_CRT_DISP_CTL_DPMS_MASK; > + reg |= HIBMC_FIELD(HIBMC_CRT_DISP_CTL_DPMS, dpms); > + reg &= ~HIBMC_CRT_DISP_CTL_TIMING_MASK; > + if (dpms == HIBMC_CRT_DPMS_ON) > + reg |= HIBMC_CRT_DISP_CTL_TIMING(1); > + writel(reg, priv->mmio + HIBMC_CRT_DISP_CTL); > +} > + > static void hibmc_crtc_atomic_enable(struct drm_crtc *crtc, > struct drm_crtc_state *old_state) > { > @@ -205,6 +219,7 @@ static void hibmc_crtc_atomic_enable(struct drm_crtc > *crtc, > reg |= HIBMC_CURR_GATE_DISPLAY(1); > hibmc_set_current_gate(priv, reg); > drm_crtc_vblank_on(crtc); > + hibmc_crtc_dpms(crtc, HIBMC_CRT_DPMS_ON); > } > > static void hibmc_crtc_atomic_disable(struct drm_crtc *crtc, > @@ -213,6 +228,7 @@ static void hibmc_crtc_atomic_disable(struct drm_crtc > *crtc, > unsigned int reg; > struct hibmc_drm_private *priv = crtc->dev->dev_private; > > + hibmc_crtc_dpms(crtc, HIBMC_CRT_DPMS_OFF); > drm_crtc_vblank_off(crtc); > > hibmc_set_power_mode(priv, HIBMC_PW_MODE_CTL_MODE_SLEEP); > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_regs.h > b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_regs.h > index b63a1ee15ceb..b9e20cfcfb5a 100644 > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_regs.h > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_regs.h > @@ -68,6 +68,12 @@ > > #define HIBMC_CRT_DISP_CTL 0x80200 > > +#define HIBMC_CRT_DISP_CTL_DPMS(x) ((x) << 30) > +#define HIBMC_CRT_DISP_CTL_DPMS_MASK 0xc0000000 > + > +#define HIBMC_CRT_DPMS_ON 0 > +#define HIBMC_CRT_DPMS_OFF 3 > + > #define HIBMC_CRT_DISP_CTL_CRTSELECT(x) ((x) << 25) > #define HIBMC_CRT_DISP_CTL_CRTSELECT_MASK 0x2000000 > > -- > 2.20.1 > > >
_______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel