From b52b81454cb9bd2785f48b9fee1e05c1975ac420 Mon Sep 17 00:00:00 2001 From: Kevin Brace Date: Sun, 17 Jan 2016 01:10:40 -0600 Subject: [PATCH 7/7] Discontinuing the use of a predefined display output table This update will be a major one for OpenChrome. The internal predefined display output table previously used to initialize display outputs is no longer going to be used except for OLPC XO-1.5. This means that OpenChrome will go through scanning each I2C bus to determine what display output type is connected before initializing the display. This is a highly risky update that will likely break OpenChrome for some users. However, the general trend of computing industry has been going in the direction of automatically detecting and configuring connected display devices, and because of this, it is author's view that OpenChrome needs to stop relying on an outdated concept like the use of a predefined table to figure out which display output should be initialized. The compiled device driver was tested on the following computer. - Epic 1314 laptop (MSI VR321 laptop equivalent, VN896 chipset) with Lubuntu 12.04 i386 --- src/via_outputs.c | 47 +++++++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/src/via_outputs.c b/src/via_outputs.c index b5e76e6..03d3f5f 100644 --- a/src/via_outputs.c +++ b/src/via_outputs.c @@ -1152,47 +1152,42 @@ via_dvi_init(ScrnInfoPtr pScrn) return TRUE; } -/* - * - */ void ViaOutputsDetect(ScrnInfoPtr pScrn) { VIAPtr pVia = VIAPTR(pScrn); VIABIOSInfoPtr pBIOSInfo = pVia->pBIOSInfo; - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "ViaOutputsDetect\n")); + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Entered ViaOutputsDetect.\n")); pBIOSInfo->analog = NULL; - /* LVDS */ - via_lvds_init(pScrn); - /* VGA */ via_analog_init(pScrn); - /* - * FIXME: xf86I2CProbeAddress(pVia->pI2CBus3, 0x40) - * disables the panel on P4M900 - */ - /* TV encoder */ - if ((pVia->Chipset != VIA_P4M900) || (pVia->ActiveDevice & VIA_DEVICE_TV)) - via_tv_init(pScrn); + /* External LVDS transmitter for FP (Flat Panel)*/ + via_lvds_init(pScrn); - if (pVia->Chipset == VIA_P4M800PRO) { - via_dvi_init(pScrn); - } + /* External TMDS transmitter for DVI */ + via_dvi_init(pScrn); - if (pVia->ActiveDevice & VIA_DEVICE_DFP) { - switch (pVia->Chipset) { - case VIA_CX700: - case VIA_VX800: - case VIA_VX855: - case VIA_VX900: - via_dp_init(pScrn); - break; - } + /* External TV encoder */ + via_tv_init(pScrn); + + switch (pVia->Chipset) { + case VIA_CX700: + case VIA_VX800: + case VIA_VX855: + case VIA_VX900: + /* Integrated LVDS and TMDS transmitters + * for FP and DVI, respectively */ + via_dp_init(pScrn); + break; } + + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Exiting ViaOutputsDetect.\n")); } #ifdef HAVE_DEBUG -- 1.7.9.5