summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Brace <kevinbrace@gmx.com>2017-07-12 11:04:00 -0500
committerKevin Brace <kevinbrace@gmx.com>2017-07-12 11:04:00 -0500
commitee3110634db3d87ab527c582dff10f5fd6a4d1a6 (patch)
treedcb6b9e92c7ffd9f3a64709e4ad5700b91e06e69
parent0259543082a0fd8d7919dcf6eb0c8797eef42d98 (diff)
Added viaFPCastleRockSoftPowerSeq
This function is untested since the developer does not own a CLE266 chipset based computer with FP support. Signed-off-by: Kevin Brace <kevinbrace@gmx.com>
-rw-r--r--drivers/gpu/drm/via/via_fp.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/drivers/gpu/drm/via/via_fp.c b/drivers/gpu/drm/via/via_fp.c
index 9c1128e56750..7bfc56e73820 100644
--- a/drivers/gpu/drm/via/via_fp.c
+++ b/drivers/gpu/drm/via/via_fp.c
@@ -234,6 +234,59 @@ via_disable_internal_lvds(struct drm_encoder *encoder)
}
static void
+via_fp_castle_rock_soft_power_seq(struct via_device *dev_priv,
+ bool power_state)
+{
+ DRM_DEBUG_KMS("Entered via_fp_castle_rock_soft_power_seq.\n");
+
+ if (power_state) {
+ /* Wait for 25 ms. */
+ mdelay(25);
+
+ /* Turn on FP VDD rail. */
+ via_fp_set_primary_soft_vdd(VGABASE, true);
+
+ /* Wait for 510 ms. */
+ mdelay(510);
+
+ /* Turn on FP data transmission. */
+ via_fp_set_primary_soft_data(VGABASE, true);
+
+ /* Wait for 1 ms. */
+ mdelay(1);
+
+ /* Turn on FP VEE rail. */
+ via_fp_set_primary_soft_vee(VGABASE, true);
+
+ /* Turn on FP back light. */
+ via_fp_set_primary_soft_back_light(VGABASE, true);
+ } else {
+ /* Wait for 1 ms. */
+ mdelay(1);
+
+ /* Turn off FP back light. */
+ via_fp_set_primary_soft_back_light(VGABASE, false);
+
+ /* Turn off FP VEE rail. */
+ via_fp_set_primary_soft_vee(VGABASE, false);
+
+ /* Wait for 510 ms. */
+ mdelay(510);
+
+ /* Turn off FP data transmission. */
+ via_fp_set_primary_soft_data(VGABASE, false);
+
+ /* Wait for 25 ms. */
+ mdelay(25);
+
+ /* Turn off FP VDD rail. */
+ via_fp_set_primary_soft_vdd(VGABASE, false);
+ }
+
+ DRM_DEBUG_KMS("Exiting via_fp_castle_rock_soft_power_seq.\n");
+}
+
+static void
via_fp_primary_soft_power_seq(struct via_device *dev_priv, bool power_state)
{
DRM_DEBUG_KMS("Entered via_fp_primary_soft_power_seq.\n");
@@ -406,6 +459,8 @@ via_fp_power(struct via_device *dev_priv, unsigned short device,
switch (device) {
case PCI_DEVICE_ID_VIA_CLE266:
+ via_fp_castle_rock_soft_power_seq(dev_priv,
+ power_state);
break;
case PCI_DEVICE_ID_VIA_KM400:
case PCI_DEVICE_ID_VIA_CN700: