Message ID | 9ef213208e27b6f45b74a77b1c7902fa3910bf46.1424961754.git.jsarha@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 26/02/15 16:55, Jyri Sarha wrote: > Force crtc dpms off before destroying the crtc instead of just > checking the dpms state. This fixes warning message and frozen picture > after tilcdc module unloading. > > Signed-off-by: Jyri Sarha <jsarha@ti.com> > --- > drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c > index c735884..c2d5980 100644 > --- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c > +++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c > @@ -135,11 +135,12 @@ static void stop(struct drm_crtc *crtc) > tilcdc_clear(dev, LCDC_RASTER_CTRL_REG, LCDC_RASTER_ENABLE); > } > > +static void tilcdc_crtc_dpms(struct drm_crtc *crtc, int mode); > static void tilcdc_crtc_destroy(struct drm_crtc *crtc) > { > struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); > > - WARN_ON(tilcdc_crtc->dpms == DRM_MODE_DPMS_ON); > + tilcdc_crtc_dpms(crtc, DRM_MODE_DPMS_OFF); > > drm_crtc_cleanup(crtc); > drm_flip_work_cleanup(&tilcdc_crtc->unref_work); > Looks fine to me, but makes me wonder what is the proper way to handle this. I would presume that every DRM driver needs to shut down the display HW when it's being unloaded. And the current WARN_ON suggests that something is supposed to turn the crtc off before it is destroyed. So either the tilcdc module unload has never worked, or something has changed in the drm framework (or maybe tilcdc). Tomi
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c index c735884..c2d5980 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c @@ -135,11 +135,12 @@ static void stop(struct drm_crtc *crtc) tilcdc_clear(dev, LCDC_RASTER_CTRL_REG, LCDC_RASTER_ENABLE); } +static void tilcdc_crtc_dpms(struct drm_crtc *crtc, int mode); static void tilcdc_crtc_destroy(struct drm_crtc *crtc) { struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); - WARN_ON(tilcdc_crtc->dpms == DRM_MODE_DPMS_ON); + tilcdc_crtc_dpms(crtc, DRM_MODE_DPMS_OFF); drm_crtc_cleanup(crtc); drm_flip_work_cleanup(&tilcdc_crtc->unref_work);
Force crtc dpms off before destroying the crtc instead of just checking the dpms state. This fixes warning message and frozen picture after tilcdc module unloading. Signed-off-by: Jyri Sarha <jsarha@ti.com> --- drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)