[Openchrome-devel] xf86-video-openchrome: 11 commits - configure.ac src/via_fp.c src/via_ums.h

Kevin Brace kevinbrace at kemper.freedesktop.org
Wed Jul 5 23:41:04 UTC 2017


 configure.ac  |    2 
 src/via_fp.c  |   87 +++++++++------
 src/via_ums.h |  321 ++++++++++++++++++++++++++++++++++++++++++----------------
 3 files changed, 289 insertions(+), 121 deletions(-)

New commits:
commit 431b751ae3efa1397d45995ee71242193899901e
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Wed Jul 5 18:36:46 2017 -0500

    Version bumped to 0.6.148
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/configure.ac b/configure.ac
index 7c40151..6119222 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-openchrome],
-        [0.6.147],
+        [0.6.148],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/openchrome],
         [xf86-video-openchrome])
 
commit 8518bd8aed7374f938a3302d1ca4f7425d07f92f
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Wed Jul 5 18:35:07 2017 -0500

    Cleanup of viaFPSecondarySoftPowerSeq
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_fp.c b/src/via_fp.c
index ba45ecf..b16f672 100644
--- a/src/via_fp.c
+++ b/src/via_fp.c
@@ -382,32 +382,52 @@ viaFPSecondarySoftPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
     viaFPSetSecondaryPowerSeqType(pScrn, FALSE);
 
     if (powerState) {
-        /* Turn off hardware power sequence. */
+        /* Turn off FP hardware power sequence. */
         viaFPSetSecondaryHardPower(pScrn, FALSE);
 
+        /* Wait for TD0 ms. */
         usleep(TD0);
+
+        /* Turn on FP VDD rail. */
         viaFPSetSecondarySoftVDD(pScrn, TRUE);
 
+        /* Wait for TD1 ms. */
         usleep(TD1);
+
+        /* Turn on FP data transmission. */
         viaFPSetSecondarySoftData(pScrn, TRUE);
 
+        /* Wait for TD2 ms. */
         usleep(TD2);
+
+        /* Turn on FP VEE rail. */
         viaFPSetSecondarySoftVEE(pScrn, TRUE);
 
+        /* Wait for TD3 ms. */
         usleep(TD3);
+
+        /* Turn on FP back light. */
         viaFPSetSecondarySoftBackLight(pScrn, TRUE);
     } else {
+        /* Turn off FP back light. */
         viaFPSetSecondarySoftBackLight(pScrn, FALSE);
 
+        /* Wait for TD3 ms. */
         usleep(TD3);
+
+        /* Turn off FP VEE rail. */
         viaFPSetSecondarySoftVEE(pScrn, FALSE);
 
-        /* Delay TD2 msec. */
+        /* Wait for TD2 ms. */
         usleep(TD2);
+
+        /* Turn off FP data transmission. */
         viaFPSetSecondarySoftData(pScrn, FALSE);
 
-        /* Delay TD1 msec. */
+        /* Wait for TD1 ms. */
         usleep(TD1);
+
+        /* Turn off FP VDD rail. */
         viaFPSetSecondarySoftVDD(pScrn, FALSE);
     }
 
commit f6df89408915584c23461a6460c6a78d490d732e
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jul 4 19:54:46 2017 -0500

    Added viaFPSetSecondaryDirectBackLightCtrl
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_fp.c b/src/via_fp.c
index 0fe63b5..ba45ecf 100644
--- a/src/via_fp.c
+++ b/src/via_fp.c
@@ -461,17 +461,19 @@ viaFPSecondaryHardPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
 
     if (powerState) {
         /* Turn on back light. */
-        hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) & 0x3F);
+        viaFPSetSecondaryDirectBackLightCtrl(pScrn, TRUE);
 
         /* Turn on hardware power sequence. */
         viaFPSetSecondaryHardPower(pScrn, TRUE);
     } else {
+        /* Make sure display period is turned off. */
+        viaFPSetSecondaryDirectDisplayPeriod(pScrn, FALSE);
+
+        /* Make sure back light is turned off. */
+        viaFPSetSecondaryDirectBackLightCtrl(pScrn, FALSE);
+
         /* Turn off hardware power sequence. */
         viaFPSetSecondaryHardPower(pScrn, FALSE);
-
-        usleep(1);
-        /* Turn off back light. */
-        hwp->writeCrtc(hwp, 0xD3, 0xC0);
     }
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
diff --git a/src/via_ums.h b/src/via_ums.h
index c410c79..6ed01f0 100644
--- a/src/via_ums.h
+++ b/src/via_ums.h
@@ -808,6 +808,23 @@ viaFPSetSecondarySoftVDD(ScrnInfoPtr pScrn, Bool softOn)
 }
 
 /*
+ * Sets CX700 / VX700 or later chipset's FP secondary direct back
+ * light control.
+ */
+static inline void
+viaFPSetSecondaryDirectBackLightCtrl(ScrnInfoPtr pScrn, Bool directOn)
+{
+    /* 3X5.D3[6] - FP Secondary Direct Back Light Control
+     *             0: On
+     *             1: Off */
+    ViaCrtcMask(VGAHWPTR(pScrn), 0xD3,
+                directOn ? 0x00 : BIT(6), BIT(6));
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "FP Secondary Direct Back Light "
+                        "Control: %s\n", directOn ? "On" : "Off"));
+}
+
+/*
  * Sets FP secondary hardware controlled power sequence enable bit.
  */
 static inline void
commit e7a18d77419ca862502dd9ddb29b8bacba274905
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jul 4 19:44:29 2017 -0500

    Added viaFPSetSecondarySoftBackLight
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_fp.c b/src/via_fp.c
index 5e6cf4e..0fe63b5 100644
--- a/src/via_fp.c
+++ b/src/via_fp.c
@@ -395,12 +395,9 @@ viaFPSecondarySoftPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
         viaFPSetSecondarySoftVEE(pScrn, TRUE);
 
         usleep(TD3);
-
-        /* Back-Light ON */
-        hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) | 0x02);
+        viaFPSetSecondarySoftBackLight(pScrn, TRUE);
     } else {
-        /* Back-Light OFF */
-        hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) & 0xFD);
+        viaFPSetSecondarySoftBackLight(pScrn, FALSE);
 
         usleep(TD3);
         viaFPSetSecondarySoftVEE(pScrn, FALSE);
diff --git a/src/via_ums.h b/src/via_ums.h
index 9315471..c410c79 100644
--- a/src/via_ums.h
+++ b/src/via_ums.h
@@ -740,6 +740,23 @@ viaFPSetSecondaryPowerSeqType(ScrnInfoPtr pScrn, Bool ctrlType)
 }
 
 /*
+ * Sets CX700 / VX700 or later chipset's FP secondary
+ * software controlled back light.
+ */
+static inline void
+viaFPSetSecondarySoftBackLight(ScrnInfoPtr pScrn, Bool softOn)
+{
+    /* 3X5.D3[1] - FP Secondary Software Back Light On
+     *             0: On
+     *             1: Off */
+    ViaCrtcMask(VGAHWPTR(pScrn), 0xD3,
+                softOn ? 0x00 : BIT(1), BIT(1));
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "FP Secondary Software Controlled "
+                        "Back Light: %s\n", softOn ? "On" : "Off"));
+}
+
+/*
  * Sets CX700 / VX700 or later chipset's FP secondary software
  * controlled VEE.
  */
commit 7add6ca3663402ff45e4e7877927617c099fd8f0
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jul 4 19:38:57 2017 -0500

    Added viaFPSetSecondarySoftVEE
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_fp.c b/src/via_fp.c
index d00b7e7..5e6cf4e 100644
--- a/src/via_fp.c
+++ b/src/via_fp.c
@@ -392,9 +392,8 @@ viaFPSecondarySoftPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
         viaFPSetSecondarySoftData(pScrn, TRUE);
 
         usleep(TD2);
+        viaFPSetSecondarySoftVEE(pScrn, TRUE);
 
-        /* VEE ON (unused on vt3353)*/
-        hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) | 0x04);
         usleep(TD3);
 
         /* Back-Light ON */
@@ -402,10 +401,9 @@ viaFPSecondarySoftPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
     } else {
         /* Back-Light OFF */
         hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) & 0xFD);
-        usleep(TD3);
 
-        /* VEE OFF */
-        hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) & 0xFB);
+        usleep(TD3);
+        viaFPSetSecondarySoftVEE(pScrn, FALSE);
 
         /* Delay TD2 msec. */
         usleep(TD2);
diff --git a/src/via_ums.h b/src/via_ums.h
index dfcc3f4..9315471 100644
--- a/src/via_ums.h
+++ b/src/via_ums.h
@@ -741,6 +741,23 @@ viaFPSetSecondaryPowerSeqType(ScrnInfoPtr pScrn, Bool ctrlType)
 
 /*
  * Sets CX700 / VX700 or later chipset's FP secondary software
+ * controlled VEE.
+ */
+static inline void
+viaFPSetSecondarySoftVEE(ScrnInfoPtr pScrn, Bool softOn)
+{
+    /* 3X5.D3[2] - FP Secondary Software VEE On
+     *             0: On
+     *             1: Off */
+    ViaCrtcMask(VGAHWPTR(pScrn), 0xD3,
+                softOn ? 0x00 : BIT(2), BIT(2));
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "FP Secondary Software Controlled VEE: %s\n",
+                        softOn ? "On" : "Off"));
+}
+
+/*
+ * Sets CX700 / VX700 or later chipset's FP secondary software
  * controlled data.
  */
 static inline void
commit 8f5997486df0d3f14d3498ba94d0cdabd8d43c25
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jul 4 15:58:36 2017 -0500

    Added viaFPSetSecondarySoftData
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_fp.c b/src/via_fp.c
index 5ef1976..d00b7e7 100644
--- a/src/via_fp.c
+++ b/src/via_fp.c
@@ -389,9 +389,8 @@ viaFPSecondarySoftPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
         viaFPSetSecondarySoftVDD(pScrn, TRUE);
 
         usleep(TD1);
+        viaFPSetSecondarySoftData(pScrn, TRUE);
 
-        /* DATA ON */
-        hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) | 0x08);
         usleep(TD2);
 
         /* VEE ON (unused on vt3353)*/
@@ -407,11 +406,10 @@ viaFPSecondarySoftPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
 
         /* VEE OFF */
         hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) & 0xFB);
+
         /* Delay TD2 msec. */
         usleep(TD2);
-
-        /* DATA OFF */
-        hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) & 0xF7);
+        viaFPSetSecondarySoftData(pScrn, FALSE);
 
         /* Delay TD1 msec. */
         usleep(TD1);
diff --git a/src/via_ums.h b/src/via_ums.h
index e2e796b..dfcc3f4 100644
--- a/src/via_ums.h
+++ b/src/via_ums.h
@@ -741,6 +741,23 @@ viaFPSetSecondaryPowerSeqType(ScrnInfoPtr pScrn, Bool ctrlType)
 
 /*
  * Sets CX700 / VX700 or later chipset's FP secondary software
+ * controlled data.
+ */
+static inline void
+viaFPSetSecondarySoftData(ScrnInfoPtr pScrn, Bool softOn)
+{
+    /* 3X5.D3[3] - FP Secondary Software Data On
+     *             0: On
+     *             1: Off */
+    ViaCrtcMask(VGAHWPTR(pScrn), 0xD3,
+                softOn ? 0x00 : BIT(3), BIT(3));
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "FP Secondary Software Controlled Data: %s\n",
+                        softOn ? "On" : "Off"));
+}
+
+/*
+ * Sets CX700 / VX700 or later chipset's FP secondary software
  * controlled VDD.
  */
 static inline void
commit 72fa65ffd0bf72d152d02b50460f415e3dedc8ce
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jul 4 15:55:08 2017 -0500

    Added viaFPSetSecondarySoftVDD
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_fp.c b/src/via_fp.c
index 408ce84..5ef1976 100644
--- a/src/via_fp.c
+++ b/src/via_fp.c
@@ -386,9 +386,8 @@ viaFPSecondarySoftPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
         viaFPSetSecondaryHardPower(pScrn, FALSE);
 
         usleep(TD0);
+        viaFPSetSecondarySoftVDD(pScrn, TRUE);
 
-        /* VDD ON*/
-        hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) | 0x10);
         usleep(TD1);
 
         /* DATA ON */
@@ -413,11 +412,10 @@ viaFPSecondarySoftPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
 
         /* DATA OFF */
         hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) & 0xF7);
+
         /* Delay TD1 msec. */
         usleep(TD1);
-
-        /* VDD OFF */
-        hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) & 0xEF);
+        viaFPSetSecondarySoftVDD(pScrn, FALSE);
     }
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
diff --git a/src/via_ums.h b/src/via_ums.h
index 62a6ba4..e2e796b 100644
--- a/src/via_ums.h
+++ b/src/via_ums.h
@@ -740,6 +740,23 @@ viaFPSetSecondaryPowerSeqType(ScrnInfoPtr pScrn, Bool ctrlType)
 }
 
 /*
+ * Sets CX700 / VX700 or later chipset's FP secondary software
+ * controlled VDD.
+ */
+static inline void
+viaFPSetSecondarySoftVDD(ScrnInfoPtr pScrn, Bool softOn)
+{
+    /* 3X5.D3[4] - FP Secondary Software VDD On
+     *             0: On
+     *             1: Off */
+    ViaCrtcMask(VGAHWPTR(pScrn), 0xD3,
+                softOn ? 0x00 : BIT(4), BIT(4));
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "FP Secondary Software Controlled VDD: %s\n",
+                        softOn ? "On" : "Off"));
+}
+
+/*
  * Sets FP secondary hardware controlled power sequence enable bit.
  */
 static inline void
commit 100eae8db145bb7778fbb33e7fb0308b892c90a3
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jul 4 15:50:48 2017 -0500

    Use viaFPSetSecondaryPowerSeqType inside viaFPSecondarySoftPowerSeq
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_fp.c b/src/via_fp.c
index 8fc622c..408ce84 100644
--- a/src/via_fp.c
+++ b/src/via_fp.c
@@ -378,12 +378,13 @@ viaFPSecondarySoftPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Entered viaFPSecondarySoftPowerSeq.\n"));
 
+    /* Use software FP power sequence control. */
+    viaFPSetSecondaryPowerSeqType(pScrn, FALSE);
+
     if (powerState) {
         /* Turn off hardware power sequence. */
         viaFPSetSecondaryHardPower(pScrn, FALSE);
 
-        /* Software control power sequence ON */
-        hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) | 0x01);
         usleep(TD0);
 
         /* VDD ON*/
commit c4c6272607aa82e20f9d5c081f021e69cf5ccc03
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jul 4 14:41:39 2017 -0500

    Stylistic clean up of inline functions inside via_ums.h
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_ums.h b/src/via_ums.h
index 1cc8ab2..62a6ba4 100644
--- a/src/via_ums.h
+++ b/src/via_ums.h
@@ -480,6 +480,39 @@ viaDVP1SetDisplaySource(ScrnInfoPtr pScrn, CARD8 displaySource)
 }
 
 /*
+ * Sets analog (VGA) DAC power.
+ */
+static inline void
+viaAnalogSetPower(ScrnInfoPtr pScrn, Bool outputState)
+{
+    /* 3X5.47[2] - DACOFF Backdoor Register
+     *             0: DAC on
+     *             1: DAC off */
+    ViaCrtcMask(VGAHWPTR(pScrn), 0x47,
+                outputState ? 0x00 : BIT(2), BIT(2));
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "Analog (VGA) Power: %s\n",
+                        outputState ? "On" : "Off"));
+}
+
+/*
+ * Sets analog (VGA) DAC off setting.
+ * Only available in CX700 / VX700, VX800, VX855, and VX900 chipsets.
+ */
+static inline void
+viaAnalogSetDACOff(ScrnInfoPtr pScrn, Bool dacOff)
+{
+    /* 3C5.5E[0] - CRT DACOFF Setting
+     *             0: Disabled
+     *             1: DAC is controlled by 3C5.01[5] */
+    ViaSeqMask(VGAHWPTR(pScrn), 0x5E,
+                dacOff ? BIT(0) : 0x00, BIT(0));
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "Analog (VGA) DAC Off Setting: %s\n",
+                        dacOff ? "On" : "Off"));
+}
+
+/*
  * Sets analog (VGA) DPMS State.
  */
 static inline void
@@ -490,36 +523,25 @@ viaAnalogSetDPMSControl(ScrnInfoPtr pScrn, CARD8 dpmsControl)
      *               01: Stand-by
      *               10: Suspend
      *               11: Off */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0x36, dpmsControl << 4,
-                BIT(5) | BIT(4));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0x36,
+                    dpmsControl << 4, BIT(5) | BIT(4));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Analog (VGA) DPMS: %s\n",
-                        ((dpmsControl & (BIT(1) | BIT(0))) == 0x03) ? "Off" :
-                        ((dpmsControl & (BIT(1) | BIT(0))) == 0x02) ? "Suspend" :
-                        ((dpmsControl & (BIT(1) | BIT(0))) == 0x01) ? "Standby" :
-                                                                      "On"));
+                        ((dpmsControl & (BIT(1) | BIT(0))) == 0x03) ?
+                            "Off" :
+                        ((dpmsControl & (BIT(1) | BIT(0))) == 0x02) ?
+                            "Suspend" :
+                        ((dpmsControl & (BIT(1) | BIT(0))) == 0x01) ?
+                            "Standby" :
+                            "On"));
 }
 
 /*
- * Sets analog (VGA) power.
+ * Sets analog (VGA) sync polarity.
  */
 static inline void
-viaAnalogSetPower(ScrnInfoPtr pScrn, Bool outputState)
-{
-    /* 3X5.47[2] - DACOFF Backdoor Register
-     *             0: DAC on
-     *             1: DAC off */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0x47, outputState ? 0x00 : BIT(2),
-                BIT(2));
-    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
-                        "Analog (VGA) Power: %s\n",
-                        outputState ? "On" : "Off"));
-}
-
-static inline void
 viaAnalogSetSyncPolarity(ScrnInfoPtr pScrn, CARD8 syncPolarity)
 {
-    /* Set analog (VGA) sync polarity. */
     /* 3C2[7] - Analog Vertical Sync Polarity
      *          0: Positive
      *          1: Negative
@@ -544,33 +566,17 @@ viaAnalogSetSyncPolarity(ScrnInfoPtr pScrn, CARD8 syncPolarity)
 static inline void
 viaAnalogSetDisplaySource(ScrnInfoPtr pScrn, CARD8 displaySource)
 {
-    /* Set analog (VGA) display source. */
     /* 3C5.16[6] - CRT Display Source
      *             0: Primary Display Stream (IGA1)
      *             1: Secondary Display Stream (IGA2) */
-    ViaSeqMask(VGAHWPTR(pScrn), 0x16, displaySource << 6, BIT(6));
+    ViaSeqMask(VGAHWPTR(pScrn), 0x16,
+                displaySource << 6, BIT(6));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Analog (VGA) Display Source: IGA%d\n",
                         (displaySource & 0x01) + 1));
 }
 
 /*
- * Sets analog (VGA) DAC off setting.
- * Only available in CX700 / VX700, VX800, VX855, and VX900 chipsets.
- */
-static inline void
-viaAnalogSetDACOff(ScrnInfoPtr pScrn, Bool dacOff)
-{
-    /* 3C5.5E[0] - CRT DACOFF Setting
-     *             0: Disabled
-     *             1: DAC is controlled by 3C5.01[5] */
-    ViaSeqMask(VGAHWPTR(pScrn), 0x5E, dacOff ? BIT(0) : 0x00, BIT(0));
-    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
-                        "Analog (VGA) DAC Off Setting: %s\n",
-                        dacOff ? "On" : "Off"));
-}
-
-/*
  * Sets KM400 or later chipset's FP primary power sequence control
  * type.
  */
@@ -761,13 +767,17 @@ viaFPDPLowSetIOPadState(ScrnInfoPtr pScrn, CARD8 ioPadState)
      *               10: Depend on the other control signal
      *               11: Pad on/off according to the
      *                   Power Management Status (PMS) */
-    ViaSeqMask(VGAHWPTR(pScrn), 0x2A, ioPadState, BIT(1) | BIT(0));
+    ViaSeqMask(VGAHWPTR(pScrn), 0x2A,
+                ioPadState, BIT(1) | BIT(0));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "FPDP Low I/O Pad State: %s\n",
-                        ((ioPadState & (BIT(1) | BIT(0))) == 0x03) ? "On" :
-                        ((ioPadState & (BIT(1) | BIT(0))) == 0x02) ? "Conditional" :
-                        ((ioPadState & (BIT(1) | BIT(0))) == 0x01) ? "Off" :
-                                                                     "Off"));
+                        ((ioPadState & (BIT(1) | BIT(0))) == 0x03) ?
+                            "On" :
+                        ((ioPadState & (BIT(1) | BIT(0))) == 0x02) ?
+                            "Conditional" :
+                        ((ioPadState & (BIT(1) | BIT(0))) == 0x01) ?
+                            "Off" :
+                            "Off"));
 }
 
 /*
@@ -777,8 +787,8 @@ static inline void
 viaFPDPLowSetDelayTap(ScrnInfoPtr pScrn, CARD8 delayTap)
 {
     /* 3X5.99[3:0] - FPDP Low Delay Tap */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0x99, delayTap,
-                BIT(3) | BIT(2) | BIT(1) | BIT(0));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0x99,
+                delayTap, BIT(3) | BIT(2) | BIT(1) | BIT(0));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "FPDP Low Delay Tap: %d\n",
                         (delayTap & (BIT(3) | BIT(2) |
@@ -794,14 +804,15 @@ viaFPDPLowSetDisplaySource(ScrnInfoPtr pScrn, CARD8 displaySource)
     /* 3X5.99[4] - FPDP Low Data Source Selection
      *             0: Primary Display
      *             1: Secondary Display */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0x99, displaySource << 4, BIT(4));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0x99,
+                displaySource << 4, BIT(4));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "FPDP Low Display Source: IGA%d\n",
                         (displaySource & 0x01) + 1));
 }
 
 /*
- * Sets FPDP (Flat Panel Display Port) High I/O pad state
+ * Sets FPDP (Flat Panel Display Port) High I/O pad state.
  */
 static inline void
 viaFPDPHighSetIOPadState(ScrnInfoPtr pScrn, CARD8 ioPadState)
@@ -811,13 +822,17 @@ viaFPDPHighSetIOPadState(ScrnInfoPtr pScrn, CARD8 ioPadState)
      *               10: Depend on the other control signal
      *               11: Pad on/off according to the
      *                   Power Management Status (PMS) */
-    ViaSeqMask(VGAHWPTR(pScrn), 0x2A, ioPadState << 2, BIT(3) | BIT(2));
+    ViaSeqMask(VGAHWPTR(pScrn), 0x2A,
+                ioPadState << 2, BIT(3) | BIT(2));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "FPDP High I/O Pad State: %s\n",
-                        ((ioPadState & (BIT(1) | BIT(0))) == 0x03) ? "On" :
-                        ((ioPadState & (BIT(1) | BIT(0))) == 0x02) ? "Conditional" :
-                        ((ioPadState & (BIT(1) | BIT(0))) == 0x01) ? "Off" :
-                                                                     "Off"));
+                        ((ioPadState & (BIT(1) | BIT(0))) == 0x03) ?
+                            "On" :
+                        ((ioPadState & (BIT(1) | BIT(0))) == 0x02) ?
+                            "Conditional" :
+                        ((ioPadState & (BIT(1) | BIT(0))) == 0x01) ?
+                            "Off" :
+                            "Off"));
 }
 
 /*
@@ -844,24 +859,24 @@ viaFPDPHighSetDisplaySource(ScrnInfoPtr pScrn, CARD8 displaySource)
     /* 3X5.97[4] - FPDP High Data Source Selection
      *             0: Primary Display
      *             1: Secondary Display */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0x97, displaySource << 4, BIT(4));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0x97,
+                displaySource << 4, BIT(4));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "FPDP High Display Source: IGA%d\n",
                         (displaySource & 0x01) + 1));
 }
 
 /*
- * Sets CX700 or later chipset's LVDS1 power state.
+ * Sets LVDS1 power state.
  */
 static inline void
 viaLVDS1SetPower(ScrnInfoPtr pScrn, Bool powerState)
 {
-    /* Set LVDS1 power state. */
     /* 3X5.D2[7] - Power Down (Active High) for Channel 1 LVDS
      *             0: LVDS1 power on
      *             1: LVDS1 power down */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0xD2, powerState ? 0x00 : BIT(7),
-                BIT(7));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0xD2,
+                powerState ? 0x00 : BIT(7), BIT(7));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "LVDS1 Power State: %s\n",
                         powerState ? "On" : "Off"));
@@ -902,16 +917,27 @@ viaLVDS1SetSoftVdd(ScrnInfoPtr pScrn, Bool softOn)
 }
 
 /*
- * Sets CX700 or later single chipset's LVDS1 I/O pad state.
+ * Sets LVDS1 I/O pad state.
  */
 static inline void
 viaLVDS1SetIOPadSetting(ScrnInfoPtr pScrn, CARD8 ioPadState)
 {
-    /* 3C5.2A[1:0] - LVDS1 I/O Pad Control */
-    ViaSeqMask(VGAHWPTR(pScrn), 0x2A, ioPadState, BIT(1) | BIT(0));
+    /* 3C5.2A[1:0] - LVDS1 I/O Pad Control
+     *               0x: Pad always off
+     *               10: Depend on the other control signal
+     *               11: Pad on/off according to the
+     *                   Power Management Status (PMS) */
+    ViaSeqMask(VGAHWPTR(pScrn), 0x2A,
+                ioPadState, BIT(1) | BIT(0));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
-                        "LVDS1 I/O Pad State: %d\n",
-                        (ioPadState & (BIT(1) | BIT(0)))));
+                        "LVDS1 I/O Pad State: %s\n",
+            ((ioPadState & (BIT(1) | BIT(0))) == 0x03) ?
+                "On" :
+            ((ioPadState & (BIT(1) | BIT(0))) == 0x02) ?
+                "Conditional" :
+            ((ioPadState & (BIT(1) | BIT(0))) == 0x01) ?
+                "Off" :
+                "Off"));
 }
 
 /*
@@ -923,7 +949,8 @@ viaLVDS1SetFormat(ScrnInfoPtr pScrn, CARD8 format)
     /* 3X5.D2[1] - LVDS Channel 1 Format Selection
      *             0: SPWG Mode
      *             1: OPENLDI Mode */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0xD2, format << 1, BIT(1));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0xD2,
+                format << 1, BIT(1));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "LVDS1 Format: %s\n",
                         (format & BIT(0)) ? "OPENLDI" : "SPWG"));
@@ -938,10 +965,12 @@ viaLVDS1SetOutputFormat(ScrnInfoPtr pScrn, CARD8 outputFormat)
     /* 3X5.88[6] - LVDS Channel 1 Output Format
      *             0: Rotation
      *             1: Sequential */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0x88, outputFormat << 6, BIT(6));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0x88,
+                outputFormat << 6, BIT(6));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "LVDS1 Output Format: %s\n",
-                        (outputFormat & BIT(0)) ? "Sequential" : "Rotation"));
+                        (outputFormat & BIT(0)) ?
+                        "Sequential" : "Rotation"));
 }
 
 /*
@@ -954,54 +983,68 @@ viaLVDS1SetDithering(ScrnInfoPtr pScrn, Bool dithering)
     /* 3X5.88[0] - LVDS Channel 1 Output Bits
      *             0: 24 bits (dithering off)
      *             1: 18 bits (dithering on) */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0x88, dithering ? BIT(0) : 0x00, BIT(0));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0x88,
+                dithering ? BIT(0) : 0x00, BIT(0));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "LVDS1 Color Dithering: %s\n",
-                        dithering ? "On (18 bit color)" : "Off (24 bit color)"));
+                        dithering ?
+                        "On (18 bit color)" : "Off (24 bit color)"));
 }
 
-/* Sets CX700 or later single chipset's LVDS1 display source. */
+/*
+ * Sets LVDS1 display source.
+ */
 static inline void
 viaLVDS1SetDisplaySource(ScrnInfoPtr pScrn, CARD8 displaySource)
 {
     /* 3X5.99[4] - LVDS Channel 1 Data Source Selection
      *             0: Primary Display
      *             1: Secondary Display */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0x99, displaySource << 4, BIT(4));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0x99,
+                displaySource << 4, BIT(4));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "LVDS1 Display Source: IGA%d\n",
                         (displaySource & 0x01) + 1));
 }
 
 /*
- * Sets CX700 / VX700 and VX800 chipsets' LVDS2 power state.
+ * Sets LVDS2 power state.
  */
 static inline void
 viaLVDS2SetPower(ScrnInfoPtr pScrn, Bool powerState)
 {
-    /* Set LVDS2 power state. */
     /* 3X5.D2[6] - Power Down (Active High) for Channel 2 LVDS
      *             0: LVDS2 power on
      *             1: LVDS2 power down */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0xD2, powerState ? 0x00 : BIT(6),
-                BIT(6));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0xD2,
+                powerState ? 0x00 : BIT(6), BIT(6));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "LVDS2 Power State: %s\n",
                         powerState ? "On" : "Off"));
 }
 
 /*
- * Sets CX700 or later single chipset's LVDS2 I/O pad state.
+ * Sets LVDS2 I/O pad state.
  */
 static inline void
 viaLVDS2SetIOPadSetting(ScrnInfoPtr pScrn, CARD8 ioPadState)
 {
-    /* Set LVDS2 I/O pad state. */
-    /* 3C5.2A[3:2] - LVDS2 I/O Pad Control */
-    ViaSeqMask(VGAHWPTR(pScrn), 0x2A, ioPadState << 2, 0x0C);
+    /* 3C5.2A[3:2] - LVDS2 I/O Pad Control
+     *               0x: Pad always off
+     *               10: Depend on the other control signal
+     *               11: Pad on/off according to the
+     *                   Power Management Status (PMS) */
+    ViaSeqMask(VGAHWPTR(pScrn), 0x2A,
+                ioPadState << 2, BIT(3) | BIT(2));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
-                        "LVDS2 I/O Pad State: %d\n",
-                        (ioPadState & 0x03)));
+                        "LVDS2 I/O Pad State: %s\n",
+                        ((ioPadState & (BIT(1) | BIT(0))) == 0x03) ?
+                            "On" :
+                        ((ioPadState & (BIT(1) | BIT(0))) == 0x02) ?
+                            "Conditional" :
+                        ((ioPadState & (BIT(1) | BIT(0))) == 0x01) ?
+                            "Off" :
+                            "Off"));
 }
 
 /*
@@ -1051,7 +1094,7 @@ viaLVDS2SetDithering(ScrnInfoPtr pScrn, Bool dithering)
 }
 
 /*
- * Sets CX700 or later single chipset's LVDS2 display source.
+ * Sets LVDS2 display source.
  */
 static inline void
 viaLVDS2SetDisplaySource(ScrnInfoPtr pScrn, CARD8 displaySource)
@@ -1059,7 +1102,8 @@ viaLVDS2SetDisplaySource(ScrnInfoPtr pScrn, CARD8 displaySource)
     /* 3X5.97[4] - LVDS Channel 2 Data Source Selection
      *             0: Primary Display
      *             1: Secondary Display */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0x97, displaySource << 4, BIT(4));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0x97,
+                displaySource << 4, BIT(4));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "LVDS2 Display Source: IGA%d\n",
                         (displaySource & 0x01) + 1));
@@ -1071,12 +1115,11 @@ viaLVDS2SetDisplaySource(ScrnInfoPtr pScrn, CARD8 displaySource)
 static inline void
 viaTMDSSetPower(ScrnInfoPtr pScrn, Bool powerState)
 {
-    /* Set TMDS (DVI) power state. */
     /* 3X5.D2[3] - Power Down (Active High) for DVI
      *             0: TMDS power on
      *             1: TMDS power down */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0xD2, powerState ? 0 : BIT(3),
-                BIT(3));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0xD2,
+                powerState ? 0x00 : BIT(3), BIT(3));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "TMDS (DVI) Power State: %s\n",
                         powerState ? "On" : "Off"));
@@ -1095,7 +1138,8 @@ viaTMDSSetSyncPolarity(ScrnInfoPtr pScrn, CARD8 syncPolarity)
      * 3X5.97[5] - DVI (TMDS) HSYNC Polarity
      *             0: Positive
      *             1: Negative */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0x97, syncPolarity << 5, BIT(6) | BIT(5));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0x97,
+                syncPolarity << 5, BIT(6) | BIT(5));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "TMDS (DVI) Horizontal Sync Polarity: %s\n",
                         (syncPolarity & BIT(0)) ? "-" : "+"));
@@ -1116,7 +1160,8 @@ viaTMDSSetDisplaySource(ScrnInfoPtr pScrn, CARD8 displaySource)
     /* 3X5.99[4] - LVDS Channel1 Data Source Selection
      *             0: Primary Display
      *             1: Secondary Display */
-    ViaCrtcMask(VGAHWPTR(pScrn), 0x99, displaySource << 4, BIT(4));
+    ViaCrtcMask(VGAHWPTR(pScrn), 0x99,
+                displaySource << 4, BIT(4));
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "TMDS (DVI) Display Source: IGA%d\n",
                         (displaySource & 0x01) + 1));
commit 2278ac20b6e5ad716d92771520880940a59b3e04
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jul 4 11:08:25 2017 -0500

    Added viaFPSetSecondaryHardPower
    
    This is an inline function.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_fp.c b/src/via_fp.c
index a65f9d7..8fc622c 100644
--- a/src/via_fp.c
+++ b/src/via_fp.c
@@ -379,8 +379,8 @@ viaFPSecondarySoftPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
                         "Entered viaFPSecondarySoftPowerSeq.\n"));
 
     if (powerState) {
-        /* Secondary power hardware power sequence enable 0:off 1: on */
-        hwp->writeCrtc(hwp, 0xD4, hwp->readCrtc(hwp, 0xD4) & 0xFD);
+        /* Turn off hardware power sequence. */
+        viaFPSetSecondaryHardPower(pScrn, FALSE);
 
         /* Software control power sequence ON */
         hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) | 0x01);
@@ -470,11 +470,13 @@ viaFPSecondaryHardPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
     if (powerState) {
         /* Turn on back light. */
         hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) & 0x3F);
+
         /* Turn on hardware power sequence. */
-        hwp->writeCrtc(hwp, 0xD4, hwp->readCrtc(hwp, 0xD4) | 0x02);
+        viaFPSetSecondaryHardPower(pScrn, TRUE);
     } else {
-        /* Turn off power sequence. */
-        hwp->writeCrtc(hwp, 0xD4, hwp->readCrtc(hwp, 0xD4) & 0xFD);
+        /* Turn off hardware power sequence. */
+        viaFPSetSecondaryHardPower(pScrn, FALSE);
+
         usleep(1);
         /* Turn off back light. */
         hwp->writeCrtc(hwp, 0xD3, 0xC0);
diff --git a/src/via_ums.h b/src/via_ums.h
index 9f623fd..1cc8ab2 100644
--- a/src/via_ums.h
+++ b/src/via_ums.h
@@ -734,6 +734,23 @@ viaFPSetSecondaryPowerSeqType(ScrnInfoPtr pScrn, Bool ctrlType)
 }
 
 /*
+ * Sets FP secondary hardware controlled power sequence enable bit.
+ */
+static inline void
+viaFPSetSecondaryHardPower(ScrnInfoPtr pScrn, Bool powerState)
+{
+    /* 3X5.D4[1] - Secondary Power Hardware Power Sequence Enable
+     *             0: Off
+     *             1: On */
+    ViaCrtcMask(VGAHWPTR(pScrn), 0xD4,
+                powerState ? BIT(1) : 0x00, BIT(1));
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "FP Secondary Hardware Controlled Power "
+                        "Sequence: %s\n",
+                        powerState ? "On" : "Off"));
+}
+
+/*
  * Sets FPDP (Flat Panel Display Port) Low I/O pad state.
  */
 static inline void
commit d999b78048431517c2d09310f58bada897be45f4
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jul 4 11:06:02 2017 -0500

    Renamed ViaLVDSSoftwarePowerSecondSequence
    
    The new name is viaFPSecondarySoftPowerSeq.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_fp.c b/src/via_fp.c
index e9186bf..a65f9d7 100644
--- a/src/via_fp.c
+++ b/src/via_fp.c
@@ -371,12 +371,14 @@ viaFPPrimarySoftPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
 }
 
 static void
-ViaLVDSSoftwarePowerSecondSequence(ScrnInfoPtr pScrn, Bool on)
+viaFPSecondarySoftPowerSeq(ScrnInfoPtr pScrn, Bool powerState)
 {
     vgaHWPtr hwp = VGAHWPTR(pScrn);
 
-    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "ViaLVDSSoftwarePowerSecondSequence: %d\n", on));
-    if (on) {
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "Entered viaFPSecondarySoftPowerSeq.\n"));
+
+    if (powerState) {
         /* Secondary power hardware power sequence enable 0:off 1: on */
         hwp->writeCrtc(hwp, 0xD4, hwp->readCrtc(hwp, 0xD4) & 0xFD);
 
@@ -416,6 +418,9 @@ ViaLVDSSoftwarePowerSecondSequence(ScrnInfoPtr pScrn, Bool on)
         /* VDD OFF */
         hwp->writeCrtc(hwp, 0xD3, hwp->readCrtc(hwp, 0xD3) & 0xEF);
     }
+
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "Exiting viaFPSecondarySoftPowerSeq.\n"));
 }
 
 static void
@@ -510,7 +515,7 @@ viaFPPower(ScrnInfoPtr pScrn, int Chipset, CARD16 diPort, Bool powerState)
         }
 
         if (diPort & VIA_DI_PORT_LVDS2) {
-            ViaLVDSSoftwarePowerSecondSequence(pScrn, powerState);
+            viaFPSecondarySoftPowerSeq(pScrn, powerState);
             viaLVDS2SetPower(pScrn, powerState);
         }
 


More information about the Openchrome-devel mailing list