diff options
author | Liviu Dudau <Liviu.Dudau@arm.com> | 2016-05-17 11:06:54 +0200 |
---|---|---|
committer | Liviu Dudau <Liviu.Dudau@arm.com> | 2016-06-02 18:43:59 +0200 |
commit | a95acec16d932ac78c2f70dc95a83bd162595d6c (patch) | |
tree | c9144809601a1940ec951bb0a2779f23a4529f6b /drivers/gpu/drm/arm/hdlcd_drv.h | |
parent | Linux 4.7-rc1 (diff) | |
download | linux-a95acec16d932ac78c2f70dc95a83bd162595d6c.tar.xz linux-a95acec16d932ac78c2f70dc95a83bd162595d6c.zip |
drm: hdlcd: Revamp runtime power management
Because the HDLCD driver acts as a component master it can end
up enabling the runtime PM functionality before the encoders
are initialised. This can cause crashes if the component slave
never probes (missing module) or if the PM operations kick in
before the probe finishes.
Move the enabling of the runtime PM after the component master
has finished collecting the slave components and use the DRM
atomic helpers to suspend and resume the device.
Tested-by: Robin Murphy <Robin.Murphy@arm.com>
Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
Diffstat (limited to 'drivers/gpu/drm/arm/hdlcd_drv.h')
-rw-r--r-- | drivers/gpu/drm/arm/hdlcd_drv.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.h b/drivers/gpu/drm/arm/hdlcd_drv.h index aa234784f053..e7cea8233958 100644 --- a/drivers/gpu/drm/arm/hdlcd_drv.h +++ b/drivers/gpu/drm/arm/hdlcd_drv.h @@ -13,6 +13,7 @@ struct hdlcd_drm_private { struct list_head event_list; struct drm_crtc crtc; struct drm_plane *plane; + struct drm_atomic_state *state; #ifdef CONFIG_DEBUG_FS atomic_t buffer_underrun_count; atomic_t bus_error_count; @@ -36,7 +37,5 @@ static inline u32 hdlcd_read(struct hdlcd_drm_private *hdlcd, unsigned int reg) int hdlcd_setup_crtc(struct drm_device *dev); void hdlcd_set_scanout(struct hdlcd_drm_private *hdlcd); -void hdlcd_crtc_suspend(struct drm_crtc *crtc); -void hdlcd_crtc_resume(struct drm_crtc *crtc); #endif /* __HDLCD_DRV_H__ */ |