58 lines
1.8 KiB
Diff
58 lines
1.8 KiB
Diff
From 9fa9e790eb301bade8fe4ea0fd9ecb72617f0928 Mon Sep 17 00:00:00 2001
|
|
From: Francisco Jerez <currojerez@riseup.net>
|
|
Date: Thu, 5 Aug 2010 22:57:08 +0200
|
|
Subject: [PATCH 3/5] drm-i2c-ch7006-fix
|
|
|
|
drm/i2c/ch7006: Don't use POWER_LEVEL_FULL_POWER_OFF on early chip versions.
|
|
|
|
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
|
|
---
|
|
drivers/gpu/drm/i2c/ch7006_drv.c | 1 +
|
|
drivers/gpu/drm/i2c/ch7006_mode.c | 5 ++++-
|
|
drivers/gpu/drm/i2c/ch7006_priv.h | 1 +
|
|
3 files changed, 6 insertions(+), 1 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/i2c/ch7006_drv.c b/drivers/gpu/drm/i2c/ch7006_drv.c
|
|
index 81681a0..8c760c7 100644
|
|
--- a/drivers/gpu/drm/i2c/ch7006_drv.c
|
|
+++ b/drivers/gpu/drm/i2c/ch7006_drv.c
|
|
@@ -454,6 +454,7 @@ static int ch7006_encoder_init(struct i2c_client *client,
|
|
priv->hmargin = 50;
|
|
priv->vmargin = 50;
|
|
priv->last_dpms = -1;
|
|
+ priv->chip_version = ch7006_read(client, CH7006_VERSION_ID);
|
|
|
|
if (ch7006_tv_norm) {
|
|
for (i = 0; i < NUM_TV_NORMS; i++) {
|
|
diff --git a/drivers/gpu/drm/i2c/ch7006_mode.c b/drivers/gpu/drm/i2c/ch7006_mode.c
|
|
index e447dfb..c860f24 100644
|
|
--- a/drivers/gpu/drm/i2c/ch7006_mode.c
|
|
+++ b/drivers/gpu/drm/i2c/ch7006_mode.c
|
|
@@ -316,7 +316,10 @@ void ch7006_setup_power_state(struct drm_encoder *encoder)
|
|
}
|
|
|
|
} else {
|
|
- *power |= bitfs(CH7006_POWER_LEVEL, FULL_POWER_OFF);
|
|
+ if (priv->chip_version >= 0x20)
|
|
+ *power |= bitfs(CH7006_POWER_LEVEL, FULL_POWER_OFF);
|
|
+ else
|
|
+ *power |= bitfs(CH7006_POWER_LEVEL, POWER_OFF);
|
|
}
|
|
}
|
|
|
|
diff --git a/drivers/gpu/drm/i2c/ch7006_priv.h b/drivers/gpu/drm/i2c/ch7006_priv.h
|
|
index b06d3d9..9487123 100644
|
|
--- a/drivers/gpu/drm/i2c/ch7006_priv.h
|
|
+++ b/drivers/gpu/drm/i2c/ch7006_priv.h
|
|
@@ -95,6 +95,7 @@ struct ch7006_priv {
|
|
int flicker;
|
|
int scale;
|
|
|
|
+ int chip_version;
|
|
int last_dpms;
|
|
};
|
|
|
|
--
|
|
1.7.2
|
|
|