summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrik Jakobsson <patrik.r.jakobsson@gmail.com>2013-08-15 00:54:44 +0200
committerPatrik Jakobsson <patrik.r.jakobsson@gmail.com>2013-08-15 00:54:44 +0200
commit75346fe9bc4c9b366c760200a665a2c55b789389 (patch)
tree32b8f2a91b1f3987aa958fe180146490f1903b3d
parent28a8194c12f8c8bb46aecd4cb1f36bac716714c4 (diff)
drm/gma500/cdv: Add and hook up chip op for disabling sr
Add a callback hook to the chip ops struct to allow chips to have their specific self-refresh function. Currently only used by cdv. Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
-rw-r--r--drivers/gpu/drm/gma500/cdv_device.c1
-rw-r--r--drivers/gpu/drm/gma500/cdv_device.h1
-rw-r--r--drivers/gpu/drm/gma500/cdv_intel_display.c6
-rw-r--r--drivers/gpu/drm/gma500/gma_display.c2
-rw-r--r--drivers/gpu/drm/gma500/gma_display.h3
-rw-r--r--drivers/gpu/drm/gma500/psb_drv.h1
6 files changed, 7 insertions, 7 deletions
diff --git a/drivers/gpu/drm/gma500/cdv_device.c b/drivers/gpu/drm/gma500/cdv_device.c
index 747d903fe49f..162f686c532d 100644
--- a/drivers/gpu/drm/gma500/cdv_device.c
+++ b/drivers/gpu/drm/gma500/cdv_device.c
@@ -657,4 +657,5 @@ const struct psb_ops cdv_chip_ops = {
657 .power_down = cdv_power_down, 657 .power_down = cdv_power_down,
658 .power_up = cdv_power_up, 658 .power_up = cdv_power_up,
659 .update_wm = cdv_update_wm, 659 .update_wm = cdv_update_wm,
660 .disable_sr = cdv_disable_sr,
660}; 661};
diff --git a/drivers/gpu/drm/gma500/cdv_device.h b/drivers/gpu/drm/gma500/cdv_device.h
index 9e4805627450..705c11d47d45 100644
--- a/drivers/gpu/drm/gma500/cdv_device.h
+++ b/drivers/gpu/drm/gma500/cdv_device.h
@@ -27,3 +27,4 @@ extern void cdv_hdmi_init(struct drm_device *dev, struct psb_intel_mode_device *
27extern struct drm_display_mode *cdv_intel_crtc_mode_get(struct drm_device *dev, 27extern struct drm_display_mode *cdv_intel_crtc_mode_get(struct drm_device *dev,
28 struct drm_crtc *crtc); 28 struct drm_crtc *crtc);
29extern void cdv_update_wm(struct drm_device *dev, struct drm_crtc *crtc); 29extern void cdv_update_wm(struct drm_device *dev, struct drm_crtc *crtc);
30extern void cdv_disable_sr(struct drm_device *dev);
diff --git a/drivers/gpu/drm/gma500/cdv_intel_display.c b/drivers/gpu/drm/gma500/cdv_intel_display.c
index feacbbaabf14..8fbfa06da62d 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_display.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_display.c
@@ -511,7 +511,7 @@ static bool is_pipeb_lvds(struct drm_device *dev, struct drm_crtc *crtc)
511 return false; 511 return false;
512} 512}
513 513
514void cdv_intel_disable_self_refresh(struct drm_device *dev) 514void cdv_disable_sr(struct drm_device *dev)
515{ 515{
516 if (REG_READ(FW_BLC_SELF) & FW_BLC_SELF_EN) { 516 if (REG_READ(FW_BLC_SELF) & FW_BLC_SELF_EN) {
517 517
@@ -534,6 +534,7 @@ void cdv_intel_disable_self_refresh(struct drm_device *dev)
534 534
535void cdv_update_wm(struct drm_device *dev, struct drm_crtc *crtc) 535void cdv_update_wm(struct drm_device *dev, struct drm_crtc *crtc)
536{ 536{
537 struct drm_psb_private *dev_priv = dev->dev_private;
537 538
538 if (cdv_intel_single_pipe_active(dev)) { 539 if (cdv_intel_single_pipe_active(dev)) {
539 u32 fw; 540 u32 fw;
@@ -587,8 +588,7 @@ void cdv_update_wm(struct drm_device *dev, struct drm_crtc *crtc)
587 588
588 gma_wait_for_vblank(dev); 589 gma_wait_for_vblank(dev);
589 590
590 cdv_intel_disable_self_refresh(dev); 591 dev_priv->ops->disable_sr(dev);
591
592 } 592 }
593} 593}
594 594
diff --git a/drivers/gpu/drm/gma500/gma_display.c b/drivers/gpu/drm/gma500/gma_display.c
index fe972c930c2c..24e8af3d22bf 100644
--- a/drivers/gpu/drm/gma500/gma_display.c
+++ b/drivers/gpu/drm/gma500/gma_display.c
@@ -211,7 +211,7 @@ void gma_crtc_dpms(struct drm_crtc *crtc, int mode)
211 */ 211 */
212 212
213 if (IS_CDV(dev)) 213 if (IS_CDV(dev))
214 cdv_intel_disable_self_refresh(dev); 214 dev_priv->ops->disable_sr(dev);
215 215
216 switch (mode) { 216 switch (mode) {
217 case DRM_MODE_DPMS_ON: 217 case DRM_MODE_DPMS_ON:
diff --git a/drivers/gpu/drm/gma500/gma_display.h b/drivers/gpu/drm/gma500/gma_display.h
index 9a4e8941bd25..78b9f986a6e5 100644
--- a/drivers/gpu/drm/gma500/gma_display.h
+++ b/drivers/gpu/drm/gma500/gma_display.h
@@ -100,7 +100,4 @@ extern bool gma_pll_is_valid(struct drm_crtc *crtc,
100extern bool gma_find_best_pll(const struct gma_limit_t *limit, 100extern bool gma_find_best_pll(const struct gma_limit_t *limit,
101 struct drm_crtc *crtc, int target, int refclk, 101 struct drm_crtc *crtc, int target, int refclk,
102 struct gma_clock_t *best_clock); 102 struct gma_clock_t *best_clock);
103
104/* Cedarview specific functions */
105extern void cdv_intel_disable_self_refresh(struct drm_device *dev);
106#endif 103#endif
diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/psb_drv.h
index effd69502be5..b7221f3c40b9 100644
--- a/drivers/gpu/drm/gma500/psb_drv.h
+++ b/drivers/gpu/drm/gma500/psb_drv.h
@@ -696,6 +696,7 @@ struct psb_ops {
696 int (*power_up)(struct drm_device *dev); 696 int (*power_up)(struct drm_device *dev);
697 int (*power_down)(struct drm_device *dev); 697 int (*power_down)(struct drm_device *dev);
698 void (*update_wm)(struct drm_device *dev, struct drm_crtc *crtc); 698 void (*update_wm)(struct drm_device *dev, struct drm_crtc *crtc);
699 void (*disable_sr)(struct drm_device *dev);
699 700
700 void (*lvds_bl_power)(struct drm_device *dev, bool on); 701 void (*lvds_bl_power)(struct drm_device *dev, bool on);
701#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE 702#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE