[PATCH] drm/hisilicon/hibmc: add DPMS on/off function
Xinliang Liu
xinliang.liu at linaro.org
Thu Feb 13 10:11:00 UTC 2020
On Fri, 20 Dec 2019 at 10:31, Zhihui Chen <chenzhihui4 at huawei.com> wrote:
> add DPMS function to turn on/off signal of monitor
>
> Signed-off-by: Zhihui Chen <chenzhihui4 at huawei.com>
>
Thanks for the patch.
Acked-by: Xinliang Liu <xinliang.liu at 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
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20200213/dd0da80d/attachment.htm>
More information about the dri-devel
mailing list