in rk_vop_dpms() set or unset the VOP_STANDBY_EN bit in VOP_SYS_CTRL

depending on the dpms mode requested.

this makes pinebook pro display actually turn off when dpms asks.
This commit is contained in:
mrg 2020-01-05 12:14:35 +00:00
parent 05e54a628c
commit 43ac7a59e5

View File

@ -1,4 +1,4 @@
/* $NetBSD: rk_vop.c,v 1.5 2019/12/17 18:30:51 jakllsch Exp $ */
/* $NetBSD: rk_vop.c,v 1.6 2020/01/05 12:14:35 mrg Exp $ */
/*-
* Copyright (c) 2019 Jared D. McNeill <jmcneill@invisible.ca>
@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: rk_vop.c,v 1.5 2019/12/17 18:30:51 jakllsch Exp $");
__KERNEL_RCSID(0, "$NetBSD: rk_vop.c,v 1.6 2020/01/05 12:14:35 mrg Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@ -265,6 +265,27 @@ static const struct drm_crtc_funcs rk_vop_crtc_funcs = {
static void
rk_vop_dpms(struct drm_crtc *crtc, int mode)
{
struct rk_vop_crtc *mixer_crtc = to_rk_vop_crtc(crtc);
struct rk_vop_softc * const sc = mixer_crtc->sc;
uint32_t val;
val = RD4(sc, VOP_SYS_CTRL);
switch (mode) {
case DRM_MODE_DPMS_ON:
val &= ~VOP_STANDBY_EN;
break;
case DRM_MODE_DPMS_STANDBY:
case DRM_MODE_DPMS_SUSPEND:
case DRM_MODE_DPMS_OFF:
val |= VOP_STANDBY_EN;
break;
}
WR4(sc, VOP_SYS_CTRL, val);
/* Commit settings */
WR4(sc, VOP_REG_CFG_DONE, REG_LOAD_EN);
}
static bool