summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Brace <kevinbrace@gmx.com>2017-07-07 14:14:53 -0500
committerKevin Brace <kevinbrace@gmx.com>2017-07-07 14:14:53 -0500
commitd1a10f7cf55bcf09f2515258cc8bd4a1ff1cf056 (patch)
treea53cb4f6952cb71226bfa1736343712cae842135
parentf6925580b54bb258d0e19501012de41052e993ca (diff)
Added via_fp_secondary_soft_power_seq
Signed-off-by: Kevin Brace <kevinbrace@gmx.com>
-rw-r--r--drivers/gpu/drm/via/via_fp.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/drivers/gpu/drm/via/via_fp.c b/drivers/gpu/drm/via/via_fp.c
index cbe9a0389773..20b494234c55 100644
--- a/drivers/gpu/drm/via/via_fp.c
+++ b/drivers/gpu/drm/via/via_fp.c
@@ -297,6 +297,73 @@ via_fp_primary_soft_power_seq(struct via_device *dev_priv, bool power_state)
DRM_DEBUG_KMS("Exiting via_fp_primary_soft_power_seq.\n");
}
+static void
+via_fp_secondary_soft_power_seq(struct via_device *dev_priv, bool power_state)
+{
+ DRM_DEBUG_KMS("Entered via_fp_secondary_soft_power_seq.\n");
+
+ /* Turn off FP hardware power sequence. */
+ via_fp_set_secondary_hard_power(VGABASE, false);
+
+ /* Use software FP power sequence control. */
+ via_fp_set_secondary_power_seq_type(VGABASE, false);
+
+ if (power_state) {
+ /* Turn on FP Display Period. */
+ via_fp_set_secondary_direct_display_period(VGABASE, true);
+
+ /* Wait for TD0 ms. */
+ mdelay(TD0);
+
+ /* Turn on FP VDD rail. */
+ via_fp_set_secondary_soft_vdd(VGABASE, true);
+
+ /* Wait for TD1 ms. */
+ mdelay(TD1);
+
+ /* Turn on FP data transmission. */
+ via_fp_set_secondary_soft_data(VGABASE, true);
+
+ /* Wait for TD2 ms. */
+ mdelay(TD2);
+
+ /* Turn on FP VEE rail. */
+ via_fp_set_secondary_soft_vee(VGABASE, true);
+
+ /* Wait for TD3 ms. */
+ mdelay(TD3);
+
+ /* Turn on FP back light. */
+ via_fp_set_secondary_soft_back_light(VGABASE, true);
+ } else {
+ /* Turn off FP back light. */
+ via_fp_set_secondary_soft_back_light(VGABASE, false);
+
+ /* Wait for TD3 ms. */
+ mdelay(TD3);
+
+ /* Turn off FP VEE rail. */
+ via_fp_set_secondary_soft_vee(VGABASE, false);
+
+ /* Wait for TD2 ms. */
+ mdelay(TD2);
+
+ /* Turn off FP data transmission. */
+ via_fp_set_secondary_soft_data(VGABASE, false);
+
+ /* Wait for TD1 ms. */
+ mdelay(TD1);
+
+ /* Turn off FP VDD rail. */
+ via_fp_set_secondary_soft_vdd(VGABASE, false);
+
+ /* Turn off FP Display Period. */
+ via_fp_set_secondary_direct_display_period(VGABASE, false);
+ }
+
+ DRM_DEBUG_KMS("Exiting via_fp_secondary_soft_power_seq.\n");
+}
+
/*
* Sets flat panel I/O pad state.
*/