[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-openchrome: Changes to 'upstream-unstable'



 NEWS              |   46 
 README            |  260 +++-
 configure.ac      |    2 
 src/Makefile.am   |    1 
 src/via_display.c | 3092 ++++++++++++++++++++++++++++++++++++++++++------------
 src/via_driver.c  |  328 ++---
 src/via_driver.h  |   69 -
 src/via_id.c      |  273 ----
 src/via_kms.h     |    2 
 src/via_lvds.c    |  936 +++-------------
 src/via_memmgr.c  |    6 
 src/via_outputs.c |  629 ++++++----
 src/via_regs.h    |   26 
 src/via_ums.c     |  646 +++++++----
 src/via_ums.h     |   70 -
 src/via_vbe.c     |  419 -------
 src/via_vgahw.c   |  331 -----
 src/via_vgahw.h   |    3 
 src/via_vt1632.c  |   72 -
 src/via_vt1632.h  |    8 
 20 files changed, 3970 insertions(+), 3249 deletions(-)

New commits:
commit 72589af7b310fccb674d89f26b626dd4694a85af
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Wed Jul 6 01:25:39 2016 -0500

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

diff --git a/NEWS b/NEWS
index eb1b8f8..1e56e0c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,49 @@
+OpenChrome Version 0.5 (July 6th, 2016)
+---------------------------------------
+
+Based on OpenChrome Version 0.4.0 code, OpenChrome Version 0.5 fixes 
+several bugs while adding two new features. 
+
+- Major code cleanup
+- Removal of more manual options (BusWidth, ForcePanel, and AccelMethod)
+- Fix for runtime screen resolution change X.Org Server crash bug
+- Fix for CLE266 chipset not being able to function correctly if 
+  "CRT + TV" option was chosen in BIOS setup
+- Initial support for VIA Technologies VT1632A TMDS transmitter for DVI
+- Initial support for multiple display output (i.e., RandR)
+
+
+OpenChrome Version 0.4.0 (March 31st, 2016)
+-------------------------------------------
+
+OpenChrome Version 0.4.0 is a major break from the past versions where 
+configuring the display resources were done manually. Now the displays 
+are detected mostly automatically, although a few manual options still 
+remain. These will be retired in the near future. Besides that, two 
+alternative mode setting options were discontinued (VBE mode setting 
+and "legacy" mode setting), in order to simplify the code. A regression 
+affecting those with a DVI to VGA adapter, which appeared in OpenChrome 
+Version 0.3.x, is now fixed. More importantly, devices that were not 
+registered with a known device table (a large table that is located 
+internally inside the code) used to crash during boot time, but since 
+this table was removed completely, this bug does not appear anymore.
+
+- Removal of VBE (VESA BIOS Extension) mode setting
+  (removal of VBEModes and VbeSaveRestore options)
+- Removal of "legacy" mode setting
+  (removal of ModeSwitchMethod option)
+- Removal of ActiveDevice option
+- Removal of ForcePanel option
+- Removal of PanelSize option
+- Removal of a known device table internally
+- Mostly automatic display detection
+- Fix for a regression affecting those with DVI to VGA adapter
+- Fix for a boot time crash for devices that were not on the known 
+  device table
+- Fix for a possible OLPC XO-1.5 detection issue (untested)
+- Fix for various small compilation warnings / errors
+
+
 openchrome 0.3.3 (23/05/2013)
 -----------------------------
 
diff --git a/README b/README
index 32653e2..9742887 100644
--- a/README
+++ b/README
@@ -1,19 +1,20 @@
-OpenChrome Version 0.4.0 Release Note (March 30th, 2016)
---------------------------------------------------------
+OpenChrome Version 0.5 Release Note (July 6th, 2016)
+----------------------------------------------------
 
-OpenChrome is an open source implementation of x.org X Server 
+OpenChrome is an open source implementation of X.Org Server 
 DDX (Device Dependent X) graphics device driver for VIA Technologies 
-UniChrome and Chrome9 IGPs (Integrated Graphics Processor). 
+UniChrome and Chrome9 IGPs. (Integrated Graphics Processor)
 Please note that OpenChrome does not support VIA Technologies IGPs 
 that are related to Trident Microsystems (i.e., Apollo MVP4, PLE133, 
-and KLE133) or S3 Graphics (i.e., KM266).
-    Here is the project home page for OpenChrome.
+and KLE133) or S3 Graphics (i.e., KM266). Here is the project home 
+page for OpenChrome.
 
 http://www.freedesktop.org/wiki/Openchrome/
 
 Please note that VIA Technologies does not support OpenChrome in any way.
 
 
+
 Supported Chipsets
 ------------------
 
@@ -31,17 +32,19 @@ Supported Chipsets
 - VX900
 
 
+
 Supported Features
 ------------------
 
 - VGA
 - DVI from an integrated TMDS transmitter (CX700, VX700, and 
   VX900 chipsets)
+- DVI from VIA Technologies VT1632A TMDS transmitter
 - LVDS flat panel (i.e., laptop LCD flat panel)
 - EXA acceleration (RENDER acceleration)
 - Xv and XvMC
-- Dual screen (Screen clone mode only. No extended screen support at 
-  this point.)
+- Multiple display output (i.e., RandR)
+
 
 
 Unproven Features
@@ -54,14 +57,15 @@ Unproven Features
   OpenChrome Source Code" chapter for more details.)
 
 
+
 Unimplemented Features
 ----------------------
 
-- Extended screen support
 - Hardware cursor support for CLE266, KM400, KM400A, KN400, and 
   P4M800 chipsets
-- DVI via VT1632A TMDS transmitter (functionality is currently disabled)
-- DVI via Silicon Image SiI 164 TMDS transmitter
+- DVI via Silicon Image SiI 164 TMDS transmitter or Chrontel TMDS 
+  transmitter
+- LVDS via VT1631 / VT1636 LVDS transmitter
 - External HDMI transmitter (i.e., Jetway J7F5M-VHE-LF motherboard, 
   VIA Embedded EPIA-P720 motherboard, etc.)
 - DisplayPort and HDMI support for VX900 chipset (Might work with 
@@ -69,107 +73,33 @@ Unimplemented Features
   OpenChrome Source Code" chapter for more details.)
 
 
-What's New for OpenChrome Version 0.4.0
----------------------------------------
-
-OpenChrome Version 0.4.0 is a major break from the past versions where 
-configuring the display resources were done manually. Now the displays 
-are detected mostly automatically, although a few manual options still 
-remain. These will be retired in the near future. Besides that, two 
-alternative mode setting options were discontinued (VBE mode setting 
-and "legacy" mode setting), in order to simplify the code. A regression 
-affecting those with DVI to VGA adapter, which appeared in OpenChrome 
-Version 0.3.x, is fixed. More importantly, devices that were not 
-registered with a known device table (a table that is located 
-internally inside the code) used to crash at boot time, but since this 
-table was removed completely, this bug does not appear anymore.
-
-- Removal of VBE (VESA BIOS Extension) mode setting
-  (removal of VBEModes and VbeSaveRestore options)
-- Removal of "legacy" mode setting
-  (removal of ModeSwitchMethod option)
-- Removal of ActiveDevice option
-- Removal of ForcePanel option
-- Removal of PanelSize option
-- Removal of a known device table internally
-- Mostly automatic display detection
-- Fix for a regression affecting those with DVI to VGA adapter
-- Fix for a boot time crash for devices that were not on the known 
-  device table
-- Fix for a possible OLPC XO-1.5 detection issue (untested)
-- Fix for various small compilation warnings / errors
-
-
-Known Bugs for OpenChrome Version 0.4.0
----------------------------------------
-
-Please note that the developers are committed to fixing every one of 
-these bugs eventually, but due to time and resource issues, these bugs 
-remain in the code currently.
-
-
-* The computer will fail to boot if RCA composite Video is used
-
-This was observed with the following motherboard.
-
-- VIA Embedded EPIA-M motherboard (CLE266 chipset)
-
-
-* Resume from ACPI S3 State or Suspend to RAM (STR) will cause a hang
-
-This was observed with the following motherboards.
-
-- VIA Embedded EPIA-CL motherboard (CLE266 chipset)
-- VIA Embedded EPIA-M motherboard (CLE266 chipset)
-- Foxconn 400M01-G-6L motherboard (KM400 chipset)
-- VIA Embedded EPIA-M830 motherboard (VX800 chipset)
-- Quanta IL1 laptop (VX800 chipset)
-
-
-* Resume from ACPI S3 State or Suspend to RAM (STR) will not cause 
-  a hang, but LVDS flat panel screen is lost or gets messed up
 
-If VGA still works, you might still be able to partially operate the 
-computer. This was observed with the following computer.
+OS Support
+----------
 
-- Sylvania gnet 13001 netbook (VX700 chipset)
-- Epic Learning Epic 1314 laptop (MSI VR321 laptop equivalent, 
-  VN896 chipset)
+- X.Org Server Version 1.7 or later
+  (It might not work correctly if it is compiled against an older 
+  X.Org Server.)
+- Linux Version 2.6.32 or later
+  (Note: For Linux Version 4.5 or later, you may have to blacklist 
+  vesafb. This is a bug that has not been fixed so far.)
 
 
-* There is no cursor on the screen in Lubuntu 10.04
 
-This bug affects CLE266, KM400, KM400A, KN400, and P4M800 chipsets.
-It is related to the lack of hardware cursor support in OpenChrome 
-code for these chipsets at the present time. This bug does not affect 
-Ubuntu 10.04 LTS.
+What's New for OpenChrome Version 0.5
+-------------------------------------
 
+Based on OpenChrome Version 0.4.0 code, OpenChrome Version 0.5 fixes 
+several bugs while adding two new features. 
 
-* Window title for LXTerminal is not displayed correctly in 
-  Lubuntu 10.04
+- Major code cleanup
+- Removal of more manual options (BusWidth, ForcePanel, and AccelMethod)
+- Fix for runtime screen resolution change X.Org Server crash bug
+- Fix for CLE266 chipset not being able to function correctly if 
+  "CRT + TV" option was chosen in BIOS setup
+- Initial support for VIA Technologies VT1632A TMDS transmitter for DVI
+- Initial support for multiple display output (i.e., RandR)
 
-This bug likely affects every supported chipset.
-
-
-* DVI does not work
-
-DVI coming out of VT1632A DVI transmitter chip is currently broken, 
-so the code to initialize it is currently disabled. Another possibility 
-is that DVI is coming out of Silicon Image SiI 164 TMDS transmitter. 
-SiI 164 is not supported by OpenChrome at this time.
-
-
-* DVI and flat panel does not work simultaneously in clone mode
-
-This has been observed with Sylvania gnet 13001 netbook (i.e., laptops 
-based on VIA Technologies NanoBook reference design).
-
-
-* GUI screen will crash when the screen resolution is changed via a 
-  utility
-
-This bug has been observed in Lubuntu 12.04, but likely affects other 
-OSes.
 
 
 How to Contact OpenChrome Developers
@@ -180,10 +110,27 @@ Please visit these OpenChrome mailing lists.
 http://lists.freedesktop.org/mailman/listinfo/openchrome-users
 http://lists.freedesktop.org/mailman/listinfo/openchrome-devel
 
-openchrome-users mailing list is meant for casual, non-technical 
-users asking questions about how to use OpenChrome, etc. 
-openchrome-devel mailing list is for discussing OpenChrome development 
-issues.
+openchrome-users mailing list is meant for non-technical users asking 
+questions about how to use OpenChrome, etc. openchrome-devel mailing 
+list is for discussing OpenChrome development issues.
+
+
+
+Support for Older Versions
+--------------------------
+
+As a general rule, the older version OpenChrome will not be supported 
+once a new version is out. It is sometimes useful to try out the 
+older version, in order to see if a regression has occurred, but 
+generally speaking, there will be no fixes for the older versions.
+OpenChrome is written so that it can be compiled against X.Org Server 
+Version 1.7 or later and Linux Version 2.6.32 or later. We will likely 
+maintain this minimum platform requirement for the foreseeable future. 
+What this means is that if the user wanted to try the latest OpenChrome, 
+it can do so with an OS that was released around Year 2010. OpenChrome 
+might still compile for anything older than that, but it might not be 
+stable enough to be useful.
+
 
 
 Where to File a Bug Report
@@ -202,6 +149,7 @@ etc.) will likely be a waste of your time since the developers for those
 distributions do not directly work on developing OpenChrome.
 
 
+
 Where to Submit a Patch
 -----------------------
 
@@ -213,6 +161,7 @@ be sent to openchrome-devel mailing list, so that developers can be
 notified of the bug.
 
 
+
 Where to Obtain OpenChrome Source Code
 --------------------------------------
 
@@ -227,18 +176,21 @@ KMS (Kernel Mode Setting) is located at.
 https://cgit.freedesktop.org/openchrome/drm-openchrome/tree/drivers/gpu/drm/via
 
 
+
 If You See a Bug
 ----------------
 
 If you see a bug, please don't be surprised. OpenChrome has been in 
 development for more than 10 years. In that process, there were many 
-different developers that wrote the code in varying ways. Due to the fact 
-that OpenChrome is a unified graphics device driver that supports every 
-UniChrome and Chrome9 IGP (even the VIA Technoloiges in house unified 
-graphics device driver does not support the number of devices OpenChrome 
-does), and UniChrome and Chrome9 IGPs tend to rely heavily on many 
-different external encoders and transmitters. As a result, it is very 
-difficult to get the code right for every possible configuration.
+different developers that wrote the code in varying ways. OpenChrome 
+is a unified graphics device driver that supports 12 generations of 
+VIA Technologies IGP starting from CLE266 chipset all the way to 
+VX900 chipset. Even the VIA Technoloiges in house unified graphics 
+device driver does not support the number of devices OpenChrome does. 
+Furthermore, VIA Technologies IGPs tend to rely heavily on many 
+different kinds of external encoders and transmitters to get the 
+desired functionality. As a result, it is very difficult to get the 
+code right for every possible configuration you can think of.
     Starting with OpenChrome Version 0.4.0, the project is under new 
 management, and moving forward, the emphasis will be on device driver 
 reliability, and code maintainability.
diff --git a/configure.ac b/configure.ac
index 27fdfea..cca3305 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-openchrome],
-        [0.4.907],
+        [0.5.0],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/openchrome],
         [xf86-video-openchrome])
 

commit a4ad9caf72002b9ba53be85922342074837c5457
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 08:28:29 2016 -0500

    Version bumped to 0.4.907 (Version 0.5 RC8)
    
    Hopefully, this RC will be the Version 0.5 official release version.
    
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/configure.ac b/configure.ac
index 8097793..27fdfea 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-openchrome],
-        [0.4.906],
+        [0.4.907],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/openchrome],
         [xf86-video-openchrome])
 

commit 0cbd2c440e3cbad851934d0510ed66c5a0aac3e8
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 08:26:53 2016 -0500

    Making sure PM800 family can handle multi-monitor hardware cursor
    
    It appears that PM800 family was the first to support CME video
    display engine. This engine appears to support simultaneous display
    of hardware cursor on both monitors. PM800 family includes PM800,
    PN800, PM880, CN333, and CN400 chipsets.
    
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/src/via_display.c b/src/via_display.c
index 2736746..1ee8934 100644
--- a/src/via_display.c
+++ b/src/via_display.c
@@ -3048,6 +3048,7 @@ iga1_crtc_set_cursor_colors (xf86CrtcPtr crtc, int bg, int fg)
         return;
 
     switch(pVia->Chipset) {
+    case VIA_PM800:
     case VIA_CX700:
     case VIA_P4M890:
     case VIA_P4M900:
@@ -3090,6 +3091,7 @@ iga1_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
     }
 
     switch(pVia->Chipset) {
+    case VIA_PM800:
     case VIA_CX700:
     case VIA_P4M890:
     case VIA_P4M900:
@@ -3115,6 +3117,7 @@ iga1_crtc_show_cursor (xf86CrtcPtr crtc)
     VIAPtr pVia = VIAPTR(pScrn);
 
     switch(pVia->Chipset) {
+    case VIA_PM800:
     case VIA_CX700:
     case VIA_P4M890:
     case VIA_P4M900:
@@ -3141,6 +3144,7 @@ iga1_crtc_hide_cursor (xf86CrtcPtr crtc)
     CARD32 temp;
 
     switch(pVia->Chipset) {
+    case VIA_PM800:
     case VIA_CX700:
     case VIA_P4M890:
     case VIA_P4M900:
@@ -3509,6 +3513,7 @@ iga2_crtc_set_cursor_colors(xf86CrtcPtr crtc, int bg, int fg)
         return;
 
     switch(pVia->Chipset) {
+    case VIA_PM800:
     case VIA_CX700:
     case VIA_P4M890:
     case VIA_P4M900:
@@ -3558,6 +3563,7 @@ iga2_crtc_set_cursor_position(xf86CrtcPtr crtc, int x, int y)
     }
 
     switch(pVia->Chipset) {
+    case VIA_PM800:
     case VIA_CX700:
     case VIA_P4M890:
     case VIA_P4M900:
@@ -3583,6 +3589,7 @@ iga2_crtc_show_cursor(xf86CrtcPtr crtc)
     VIAPtr pVia = VIAPTR(pScrn);
 
     switch(pVia->Chipset) {
+    case VIA_PM800:
     case VIA_CX700:
     case VIA_P4M890:
     case VIA_P4M900:
@@ -3610,6 +3617,7 @@ iga2_crtc_hide_cursor(xf86CrtcPtr crtc)
     CARD32 temp;
 
     switch(pVia->Chipset) {
+    case VIA_PM800:
     case VIA_CX700:
     case VIA_P4M890:
     case VIA_P4M900:

commit fc1d71f9e086f23048e39e1ac8bc14e72bf2e50c
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 07:45:09 2016 -0500

    Made small tweaks to viaIGA1DPMSControl
    
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/src/via_display.c b/src/via_display.c
index 798927c..2736746 100644
--- a/src/via_display.c
+++ b/src/via_display.c
@@ -35,15 +35,19 @@
  * Controls IGA1 DPMS State.
  */
 void
-viaIGA1DPMSControl(ScrnInfoPtr pScrn, CARD8 DPMS_Control)
+viaIGA1DPMSControl(ScrnInfoPtr pScrn, CARD8 dpmsControl)
 {
     vgaHWPtr hwp = VGAHWPTR(pScrn);
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Entered viaIGA1DPMSControl.\n"));
 
-    /* 3X5.36[5:4]: DPMS Control */
-    ViaCrtcMask(hwp, 0x36, (DPMS_Control << 4) & 0x30, 0x30);
+    /* 3X5.36[5:4] - DPMS Control
+     *               00: On
+     *               01: Stand-by
+     *               10: Suspend
+     *               11: Off */
+    ViaCrtcMask(hwp, 0x36, dpmsControl << 4, 0x30);
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Exiting viaIGA1DPMSControl.\n"));
diff --git a/src/via_ums.h b/src/via_ums.h
index 300432f..c9551c2 100644
--- a/src/via_ums.h
+++ b/src/via_ums.h
@@ -205,7 +205,7 @@ void ViaSetSecondaryDotclock(ScrnInfoPtr pScrn, CARD32 clock);
 void ViaSetUseExternalClock(vgaHWPtr hwp);
 
 /* via_display.c */
-void viaIGA1DPMSControl(ScrnInfoPtr pScrn, CARD8 DPMS_Control);
+void viaIGA1DPMSControl(ScrnInfoPtr pScrn, CARD8 dpmsControl);
 void viaIGA2DisplayOutput(ScrnInfoPtr pScrn, Bool outputState);
 void viaIGA2DisplayChannel(ScrnInfoPtr pScrn, Bool channelState);
 void viaDisplayInit(ScrnInfoPtr pScrn);

commit 554e8b6b3da1243670a3dcdb8a597465aa8e3dde
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 07:37:27 2016 -0500

    ViaIGA2DisplayOutput will now log the display state
    
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/src/via_display.c b/src/via_display.c
index b95ef52..798927c 100644
--- a/src/via_display.c
+++ b/src/via_display.c
@@ -64,6 +64,9 @@ viaIGA2DisplayOutput(ScrnInfoPtr pScrn, Bool outputState)
      *             0: Screen on
      *             1: Screen off */
     ViaCrtcMask(hwp, 0x6B, outputState ? 0x00 : 0x04, 0x04);
+    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                "IGA2 Display Output: %s\n",
+                outputState ? "On" : "Off");
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Exiting viaIGA2DisplayOutput.\n"));

commit fe00a993997155aa42f3f65ea2d7aac41989c342
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 07:17:42 2016 -0500

    Accessing 3X5.47[2] to turn off analog VGA output DAC after all
    
    It was suggested that 3C5.01[5] does not turn off analog VGA
    output DAC, so the code is reverting back to what was committed in
    commit 85f99cf.
    
    Suggested-by: Luc Verhaegen <libv@skynet.be>
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/src/via_outputs.c b/src/via_outputs.c
index 93b329f..0ce87fd 100644
--- a/src/via_outputs.c
+++ b/src/via_outputs.c
@@ -521,10 +521,11 @@ viaAnalogOutput(ScrnInfoPtr pScrn, Bool outputState)
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Entered viaAnalogOutput.\n"));
 
-    /* 3C5.01[5] - DACOFF Register
+    /* This register controls analog VGA DAC output state. */
+    /* 3X5.47[2] - DACOFF Backdoor Register
      *             0: DAC on
      *             1: DAC off */
-    ViaSeqMask(hwp, 0x01, outputState ? 0x00 : 0x20, 0x20);
+    ViaCrtcMask(hwp, 0x47, outputState ? 0x00 : 0x04, 0x04);
     xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                 "Analog VGA Output: %s\n",
                 outputState ? "On" : "Off");

commit 8282c5adcadc3c8b91fef3bc3fcdabb493075ae8
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 07:06:20 2016 -0500

    Changing viaAnalogOutput input argument name
    
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/src/via_outputs.c b/src/via_outputs.c
index 5666942..93b329f 100644
--- a/src/via_outputs.c
+++ b/src/via_outputs.c
@@ -514,7 +514,7 @@ via_tv_init(ScrnInfoPtr pScrn)
  * (Digital to Analog Converter) output state.
  */
 static void
-viaAnalogOutput(ScrnInfoPtr pScrn, Bool displayState)
+viaAnalogOutput(ScrnInfoPtr pScrn, Bool outputState)
 {
     vgaHWPtr hwp = VGAHWPTR(pScrn);
 
@@ -524,10 +524,10 @@ viaAnalogOutput(ScrnInfoPtr pScrn, Bool displayState)
     /* 3C5.01[5] - DACOFF Register
      *             0: DAC on
      *             1: DAC off */
-    ViaSeqMask(hwp, 0x01, displayState ? 0x00 : 0x20, 0x20);
+    ViaSeqMask(hwp, 0x01, outputState ? 0x00 : 0x20, 0x20);
     xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                 "Analog VGA Output: %s\n",
-                displayState ? "On" : "Off");
+                outputState ? "On" : "Off");
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Exiting viaAnalogOutput.\n"));

commit 17fe5eb0250cc0aeca97e74a0cb088e25347af35
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 06:57:17 2016 -0500

    Changing viaIGA2DisplayOutput input argument name
    
    Suggested-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/src/via_display.c b/src/via_display.c
index 6f5fb73..b95ef52 100644
--- a/src/via_display.c
+++ b/src/via_display.c
@@ -53,7 +53,7 @@ viaIGA1DPMSControl(ScrnInfoPtr pScrn, CARD8 DPMS_Control)
  * Controls IGA2 display output on or off state.
  */
 void
-viaIGA2DisplayOutput(ScrnInfoPtr pScrn, Bool OutputEnable)
+viaIGA2DisplayOutput(ScrnInfoPtr pScrn, Bool outputState)
 {
     vgaHWPtr hwp = VGAHWPTR(pScrn);
 
@@ -63,7 +63,7 @@ viaIGA2DisplayOutput(ScrnInfoPtr pScrn, Bool OutputEnable)
     /* 3X5.6B[2] - IGA2 Screen Off
      *             0: Screen on
      *             1: Screen off */
-    ViaCrtcMask(hwp, 0x6B, OutputEnable ? 0x00 : 0x04, 0x04);
+    ViaCrtcMask(hwp, 0x6B, outputState ? 0x00 : 0x04, 0x04);
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Exiting viaIGA2DisplayOutput.\n"));
diff --git a/src/via_ums.h b/src/via_ums.h
index 1be1686..300432f 100644
--- a/src/via_ums.h
+++ b/src/via_ums.h
@@ -206,7 +206,7 @@ void ViaSetUseExternalClock(vgaHWPtr hwp);
 
 /* via_display.c */
 void viaIGA1DPMSControl(ScrnInfoPtr pScrn, CARD8 DPMS_Control);
-void viaIGA2DisplayOutput(ScrnInfoPtr pScrn, Bool OutputEnable);
+void viaIGA2DisplayOutput(ScrnInfoPtr pScrn, Bool outputState);
 void viaIGA2DisplayChannel(ScrnInfoPtr pScrn, Bool channelState);
 void viaDisplayInit(ScrnInfoPtr pScrn);
 void ViaGammaDisable(ScrnInfoPtr pScrn);

commit e83daea3a569f9f4c5dd595f23d14dca6922cbd0
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 06:51:25 2016 -0500

    Changing viaIGA2DisplayChannel input argument name
    
    Suggested-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/src/via_display.c b/src/via_display.c
index eeb9e50..6f5fb73 100644
--- a/src/via_display.c
+++ b/src/via_display.c
@@ -73,22 +73,22 @@ viaIGA2DisplayOutput(ScrnInfoPtr pScrn, Bool OutputEnable)
  * Controls IGA2 display channel state.
  */
 void
-viaIGA2DisplayChannel(ScrnInfoPtr pScrn, Bool Channel_State)
+viaIGA2DisplayChannel(ScrnInfoPtr pScrn, Bool channelState)
 {
     vgaHWPtr hwp = VGAHWPTR(pScrn);
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Entered viaIGA2DisplayChannel.\n"));
 
-    /* 3X5.6A[7]: Second Display Channel Enable
-     * 3X5.6A[6]: Second Display Channel Reset (0 for reset) */
+    /* 3X5.6A[7] - Second Display Channel Enable
+     * 3X5.6A[6] - Second Display Channel Reset (0 for reset) */
     ViaCrtcMask(hwp, 0x6A, 0x00, 0x40);
-    ViaCrtcMask(hwp, 0x6A, Channel_State ? 0x80 : 0x00, 0x80);
+    ViaCrtcMask(hwp, 0x6A, channelState ? 0x80 : 0x00, 0x80);
     ViaCrtcMask(hwp, 0x6A, 0x40, 0x40);
 
     xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                 "IGA2 Display Channel: %s\n",
-                Channel_State ? "On" : "Off");
+                channelState ? "On" : "Off");
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Exiting viaIGA2DisplayChannel.\n"));
diff --git a/src/via_ums.h b/src/via_ums.h
index 11ff0f8..1be1686 100644
--- a/src/via_ums.h
+++ b/src/via_ums.h
@@ -207,7 +207,7 @@ void ViaSetUseExternalClock(vgaHWPtr hwp);
 /* via_display.c */
 void viaIGA1DPMSControl(ScrnInfoPtr pScrn, CARD8 DPMS_Control);
 void viaIGA2DisplayOutput(ScrnInfoPtr pScrn, Bool OutputEnable);
-void viaIGA2DisplayChannel(ScrnInfoPtr pScrn, Bool Channel_State);
+void viaIGA2DisplayChannel(ScrnInfoPtr pScrn, Bool channelState);
 void viaDisplayInit(ScrnInfoPtr pScrn);
 void ViaGammaDisable(ScrnInfoPtr pScrn);
 void ViaCRTCInit(ScrnInfoPtr pScrn);

commit 6076e82ed0dafd7d4dd9522ab73124f76ada5ea3
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 06:22:19 2016 -0500

    Updating via_outputs.c copyright
    
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/src/via_outputs.c b/src/via_outputs.c
index c180d48..5666942 100644
--- a/src/via_outputs.c
+++ b/src/via_outputs.c
@@ -1,5 +1,6 @@
 /*
- * Copyright 2005-2015 The Openchrome Project
+ * Copyright 2016 Kevin Brace
+ * Copyright 2005-2016 The OpenChrome Project
  *                     [http://www.freedesktop.org/wiki/Openchrome]
  * Copyright 2004-2005 The Unichrome Project  [unichrome.sf.net]
  * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.

commit 0d7ebfe40617adba1f8564c476007c975b9f0087
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 05:16:31 2016 -0500

    Version bumped to 0.4.906 (Version 0.5 RC7)
    
    This seventh release candidate has many substantial VT1632A TMDS (DVI)
    transmitter related improvements.
    
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/configure.ac b/configure.ac
index 1b4f1f6..8097793 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-openchrome],
-        [0.4.905],
+        [0.4.906],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/openchrome],
         [xf86-video-openchrome])
 

commit 60c76462b4f0f7cd515677310aa5c03f398d70a7
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 05:15:03 2016 -0500

    Using DVI presence and the assigned I2C bus to obtain EDID
    
    Since VT1632A has hardware support to sense DVI presence, this,
    along with the assigned I2C bus, should be used to obtain EDID
    from the monitor.
    
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/src/via_outputs.c b/src/via_outputs.c
index 63cf6e2..c180d48 100644
--- a/src/via_outputs.c
+++ b/src/via_outputs.c
@@ -929,7 +929,30 @@ via_dvi_mode_set(xf86OutputPtr output, DisplayModePtr mode,
 static xf86OutputStatus
 via_dvi_detect(xf86OutputPtr output)
 {
-    return via_vt1632_detect(output);
+    xf86OutputStatus status = XF86OutputStatusDisconnected;
+    ScrnInfoPtr pScrn = output->scrn;
+    VIAPtr pVia = VIAPTR(pScrn);
+    ViaVT1632Ptr Private = output->driver_private;
+    xf86MonPtr mon;
+
+    /* Check for the DVI presence via VT1632A first before accessing
+     * I2C bus. */
+    status = via_vt1632_detect(output);
+    if (status == XF86OutputStatusConnected) {
+
+        /* Since DVI presence was established, access the I2C bus
+         * assigned to DVI. */
+        mon = xf86OutputGetEDID(output, Private->VT1632I2CDev->pI2CBus);
+
+        /* Is the interface type digital? */
+        if (mon && DIGITAL(mon->features.input_type)) {
+            xf86OutputSetEDID(output, mon);
+        } else {
+            status = XF86OutputStatusDisconnected;
+        }
+    }
+
+    return status;
 }
 
 static void
@@ -963,7 +986,7 @@ via_dvi_init(ScrnInfoPtr pScrn)
 {
     VIAPtr pVia = VIAPTR(pScrn);
     xf86OutputPtr output = NULL;
-    struct ViaVT1632PrivateData *private_data = NULL;
+    ViaVT1632Ptr private_data = NULL;
     I2CBusPtr pBus = NULL;
     I2CDevPtr pDev = NULL;
     I2CSlaveAddr addr = 0x10;
diff --git a/src/via_vt1632.c b/src/via_vt1632.c
index a278fd4..3cc6c83 100644
--- a/src/via_vt1632.c
+++ b/src/via_vt1632.c
@@ -67,7 +67,7 @@ via_vt1632_dump_registers(ScrnInfoPtr pScrn, I2CDevPtr pDev)
 void
 via_vt1632_power(xf86OutputPtr output, Bool powerState)
 {
-    struct ViaVT1632PrivateData * Private = output->driver_private;
+    ViaVT1632Ptr Private = output->driver_private;
     ScrnInfoPtr pScrn = output->scrn;
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
@@ -85,7 +85,7 @@ via_vt1632_power(xf86OutputPtr output, Bool powerState)
 void
 via_vt1632_save(xf86OutputPtr output)
 {
-    struct ViaVT1632PrivateData * Private = output->driver_private;
+    ViaVT1632Ptr Private = output->driver_private;
     ScrnInfoPtr pScrn = output->scrn;
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
@@ -106,7 +106,7 @@ via_vt1632_save(xf86OutputPtr output)
 void
 via_vt1632_restore(xf86OutputPtr output)
 {
-    struct ViaVT1632PrivateData * Private = output->driver_private;
+    ViaVT1632Ptr Private = output->driver_private;
     ScrnInfoPtr pScrn = output->scrn;
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
@@ -127,7 +127,7 @@ via_vt1632_restore(xf86OutputPtr output)
 int
 via_vt1632_mode_valid(xf86OutputPtr output, DisplayModePtr pMode)
 {
-    struct ViaVT1632PrivateData * Private = output->driver_private;
+    ViaVT1632Ptr Private = output->driver_private;
     ScrnInfoPtr pScrn = output->scrn;
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, 
@@ -154,7 +154,7 @@ void
 via_vt1632_mode_set(xf86OutputPtr output, DisplayModePtr mode,
                     DisplayModePtr adjusted_mode)
 {
-    struct ViaVT1632PrivateData * Private = output->driver_private;
+    ViaVT1632Ptr Private = output->driver_private;
     ScrnInfoPtr pScrn = output->scrn;
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, 
@@ -200,7 +200,7 @@ via_vt1632_mode_set(xf86OutputPtr output, DisplayModePtr mode,
 xf86OutputStatus
 via_vt1632_detect(xf86OutputPtr output)
 {
-    struct ViaVT1632PrivateData * Private = output->driver_private;
+    ViaVT1632Ptr Private = output->driver_private;
     xf86OutputStatus status;
     ScrnInfoPtr pScrn = output->scrn;
     CARD8 tmp;
@@ -262,17 +262,17 @@ via_vt1632_probe(ScrnInfoPtr pScrn, I2CDevPtr pDev) {
     return TRUE;
 }
 
-struct ViaVT1632PrivateData *
+ViaVT1632Ptr
 via_vt1632_init(ScrnInfoPtr pScrn, I2CDevPtr pDev)
 {
     VIAPtr pVia = VIAPTR(pScrn);
-    struct ViaVT1632PrivateData * Private = NULL;
+    ViaVT1632Ptr Private = NULL;
     CARD8 buf = 0;
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Entered via_vt1632_init.\n"));
 
-    Private = xnfcalloc(1, sizeof(struct ViaVT1632PrivateData));
+    Private = xnfcalloc(1, sizeof(ViaVT1632Rec));
     if (!Private) {
         xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
                     "Failed to allocate memory for DVI initialization.\n");
diff --git a/src/via_vt1632.h b/src/via_vt1632.h
index fa28dce..13f2c05 100644
--- a/src/via_vt1632.h
+++ b/src/via_vt1632.h
@@ -31,7 +31,7 @@
 #define VIA_VT1632_EDGE 0x02
 #define VIA_VT1632_PDB  0x01
 
-struct ViaVT1632PrivateData {
+typedef struct _ViaVT1632 {
 	I2CDevPtr VT1632I2CDev;
 
 	int DotclockMin;
@@ -40,7 +40,7 @@ struct ViaVT1632PrivateData {
 	CARD8 Register09;
 	CARD8 Register0A;
 	CARD8 Register0C;
-};
+} ViaVT1632Rec, *ViaVT1632Ptr;
 
 void via_vt1632_power(xf86OutputPtr output, Bool powerState);
 void via_vt1632_save(xf86OutputPtr output);
@@ -49,6 +49,6 @@ int via_vt1632_mode_valid(xf86OutputPtr output, DisplayModePtr pMode);
 void via_vt1632_mode_set(xf86OutputPtr output, DisplayModePtr mode, DisplayModePtr adjusted_mode);
 xf86OutputStatus via_vt1632_detect(xf86OutputPtr output);
 BOOL via_vt1632_probe(ScrnInfoPtr pScrn, I2CDevPtr pDev);
-struct ViaVT1632PrivateData * via_vt1632_init(ScrnInfoPtr pScrn, I2CDevPtr pDev);
+ViaVT1632Ptr via_vt1632_init(ScrnInfoPtr pScrn, I2CDevPtr pDev);
 
 #endif /* _VIA_VT1632_H_ */

commit 609ee95feeaf8d2a37536dab7fa020520c2b842b
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 02:37:01 2016 -0500

    Record a log message if VT1632A did not detect DVI presence
    
    Just to make it easier to understand, if VT1632A did not detect DVI
    presence, it will record it in the log message.
    
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/src/via_vt1632.c b/src/via_vt1632.c
index bed5c6e..a278fd4 100644
--- a/src/via_vt1632.c
+++ b/src/via_vt1632.c
@@ -201,7 +201,7 @@ xf86OutputStatus
 via_vt1632_detect(xf86OutputPtr output)
 {
     struct ViaVT1632PrivateData * Private = output->driver_private;
-    xf86OutputStatus status = XF86OutputStatusDisconnected;
+    xf86OutputStatus status;
     ScrnInfoPtr pScrn = output->scrn;
     CARD8 tmp;
 
@@ -213,6 +213,10 @@ via_vt1632_detect(xf86OutputPtr output)
         xf86DrvMsg(pScrn->scrnIndex, X_INFO, 
                     "VT1632A: DVI device is detected.\n");
         status = XF86OutputStatusConnected;
+    } else {
+        xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                    "VT1632A: DVI device was not detected.\n");
+        status = XF86OutputStatusDisconnected;
     }
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,

commit fbad6a979c5946d2479fd354ec3111f47b0e056e
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 02:03:42 2016 -0500

    Using VT1632A RSEN bit to detect presence, not HTPLG bit
    
    During testing, DVI detection failure in VT1632A was observed,
    and this was due to the code using HTPLG bit to determine DVI
    presence, not RSEN bit it should have been using.
    
    Signed-off-by: Kevin Brace <kevinbrace@gmx.com>

diff --git a/src/via_vt1632.c b/src/via_vt1632.c
index ff3e3e0..bed5c6e 100644
--- a/src/via_vt1632.c
+++ b/src/via_vt1632.c
@@ -209,7 +209,7 @@ via_vt1632_detect(xf86OutputPtr output)
                         "Entered via_vt1632_detect.\n"));
 
     xf86I2CReadByte(Private->VT1632I2CDev, 0x09, &tmp);
-    if (tmp & 0x02) {
+    if (tmp & 0x04) {
         xf86DrvMsg(pScrn->scrnIndex, X_INFO, 
                     "VT1632A: DVI device is detected.\n");
         status = XF86OutputStatusConnected;

commit 6c23391daeae6df66880d07b4e999535ce677ccf
Author: Kevin Brace <kevinbrace@gmx.com>
Date:   Sat Jul 2 02:01:13 2016 -0500

    Using VT1632A to detect DVI presence, not I2C bus


Reply to: