Commit d7de390b authored by Dave Airlie's avatar Dave Airlie

Merge branch 'drm-atmel-hlcdc-4.1-fixes' of git://github.com/bbrezillon/linux-at91 into drm-next

add PM fix.

* 'drm-atmel-hlcdc-4.1-fixes' of git://github.com/bbrezillon/linux-at91:
  drm: atmel-hlcdc: use appropriate enabled flag in suspend/resume
parents b1f389ec f026eb6e
...@@ -207,6 +207,27 @@ static void atmel_hlcdc_crtc_enable(struct drm_crtc *c) ...@@ -207,6 +207,27 @@ static void atmel_hlcdc_crtc_enable(struct drm_crtc *c)
crtc->enabled = true; crtc->enabled = true;
} }
void atmel_hlcdc_crtc_suspend(struct drm_crtc *c)
{
struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c);
if (crtc->enabled) {
atmel_hlcdc_crtc_disable(c);
/* save enable state for resume */
crtc->enabled = true;
}
}
void atmel_hlcdc_crtc_resume(struct drm_crtc *c)
{
struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c);
if (crtc->enabled) {
crtc->enabled = false;
atmel_hlcdc_crtc_enable(c);
}
}
static int atmel_hlcdc_crtc_atomic_check(struct drm_crtc *c, static int atmel_hlcdc_crtc_atomic_check(struct drm_crtc *c,
struct drm_crtc_state *s) struct drm_crtc_state *s)
{ {
......
...@@ -569,14 +569,8 @@ static int atmel_hlcdc_dc_drm_suspend(struct device *dev) ...@@ -569,14 +569,8 @@ static int atmel_hlcdc_dc_drm_suspend(struct device *dev)
return 0; return 0;
drm_modeset_lock_all(drm_dev); drm_modeset_lock_all(drm_dev);
list_for_each_entry(crtc, &drm_dev->mode_config.crtc_list, head) { list_for_each_entry(crtc, &drm_dev->mode_config.crtc_list, head)
struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private; atmel_hlcdc_crtc_suspend(crtc);
if (crtc->enabled) {
crtc_funcs->disable(crtc);
/* save enable state for resume */
crtc->enabled = true;
}
}
drm_modeset_unlock_all(drm_dev); drm_modeset_unlock_all(drm_dev);
return 0; return 0;
} }
...@@ -590,13 +584,8 @@ static int atmel_hlcdc_dc_drm_resume(struct device *dev) ...@@ -590,13 +584,8 @@ static int atmel_hlcdc_dc_drm_resume(struct device *dev)
return 0; return 0;
drm_modeset_lock_all(drm_dev); drm_modeset_lock_all(drm_dev);
list_for_each_entry(crtc, &drm_dev->mode_config.crtc_list, head) { list_for_each_entry(crtc, &drm_dev->mode_config.crtc_list, head)
struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private; atmel_hlcdc_crtc_resume(crtc);
if (crtc->enabled) {
crtc->enabled = false;
crtc_funcs->enable(crtc);
}
}
drm_modeset_unlock_all(drm_dev); drm_modeset_unlock_all(drm_dev);
return 0; return 0;
} }
......
...@@ -155,6 +155,9 @@ void atmel_hlcdc_crtc_irq(struct drm_crtc *c); ...@@ -155,6 +155,9 @@ void atmel_hlcdc_crtc_irq(struct drm_crtc *c);
void atmel_hlcdc_crtc_cancel_page_flip(struct drm_crtc *crtc, void atmel_hlcdc_crtc_cancel_page_flip(struct drm_crtc *crtc,
struct drm_file *file); struct drm_file *file);
void atmel_hlcdc_crtc_suspend(struct drm_crtc *crtc);
void atmel_hlcdc_crtc_resume(struct drm_crtc *crtc);
int atmel_hlcdc_crtc_create(struct drm_device *dev); int atmel_hlcdc_crtc_create(struct drm_device *dev);
int atmel_hlcdc_create_outputs(struct drm_device *dev); int atmel_hlcdc_create_outputs(struct drm_device *dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment