configure.ac | 2 src/via_fp.c | 171 ++++++++++------------------------------------------------ src/via_ums.h | 40 +++++++++++++ 3 files changed, 73 insertions(+), 140 deletions(-)
New commits: commit 2d217f9f1ca281b136c9ea1768554161aa0f17be Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jun 9 05:25:53 2017 -0700 Version bumped to 0.6.131 Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/configure.ac b/configure.ac index 2fac114..0710a36 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ(2.57) AC_INIT([xf86-video-openchrome], - [0.6.130], + [0.6.131], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/openchrome], [xf86-video-openchrome]) commit 6922b7f887cbad5916548e59b6785554cc31f7c7 Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jun 9 05:18:46 2017 -0700 Updated viaFPIOPadSetting Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/src/via_fp.c b/src/via_fp.c index 2788ada..400b866 100644 --- a/src/via_fp.c +++ b/src/via_fp.c @@ -402,111 +402,47 @@ viaLVDS2SetOutputFormat(ScrnInfoPtr pScrn, CARD8 outputFormat) } static void -viaFPIOPadSetting(ScrnInfoPtr pScrn, Bool ioPadOn) +viaFPIOPadSetting(ScrnInfoPtr pScrn, CARD8 diPort, Bool ioPadOn) { - vgaHWPtr hwp = VGAHWPTR(pScrn); - VIAPtr pVia = VIAPTR(pScrn); - CARD8 sr12, sr13, sr5a; - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Entered viaFPIOPadSetting.\n")); - if ((pVia->Chipset == VIA_CX700) - || (pVia->Chipset == VIA_VX800) - || (pVia->Chipset == VIA_VX855) - || (pVia->Chipset == VIA_VX900)) { - - sr5a = hwp->readSeq(hwp, 0x5A); - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "SR5A: 0x%02X\n", sr5a)); - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Setting 3C5.5A[0] to 0.\n")); - ViaSeqMask(hwp, 0x5A, sr5a & 0xFE, 0x01); - } - - sr12 = hwp->readSeq(hwp, 0x12); - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "SR12: 0x%02X\n", sr12)); - sr13 = hwp->readSeq(hwp, 0x13); - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "SR13: 0x%02X\n", sr13)); - - switch (pVia->Chipset) { - case VIA_CLE266: + switch(diPort) { + case VIA_DI_PORT_DVP0: + viaDVP0SetIOPadState(pScrn, ioPadOn ? 0x03 : 0x00); break; - case VIA_KM400: - case VIA_K8M800: - case VIA_PM800: - case VIA_P4M800PRO: + case VIA_DI_PORT_DVP1: + viaDVP1SetIOPadState(pScrn, ioPadOn ? 0x03 : 0x00); break; - case VIA_P4M890: - case VIA_K8M890: - case VIA_P4M900: - /* The tricky thing about VIA Technologies PCI Express based - * north bridge / south bridge 2 chip chipset is that - * it pin multiplexes DVP0 / DVP1 with north bridge's PCI - * Express x16 link. In particular, HP 2133 Mini-Note's WLAN - * is connected to north bridge's PCI Express Lane 0, but the - * Lane 0 is also pin multiplexed with DVP0. What this means is - * turning on DVP0 without probing the relevant strapping pin - * to determine the connected panel interface type will lead to - * the PCIe based WLAN to getting disabled by OpenChrome DDX - * when X.Org Server starts. - * The current remedy for this will be to turn on DVP0 - * only when an 18-bit / 24-bit interface flat panel is - * connected. */ - /* 3C5.12[4] - DVP0D4 pin strapping - * 0: Use DVP1 only for a flat panel. - * 1: Use DVP0 and DVP1 for a flat panel */ - if (sr12 & 0x10) { - /* Since an 18-bit / 24-bit flat panel is being used, actively - * control DVP0. */ - viaFPDPHighSetIOPadState(pScrn, ioPadOn ? 0x03 : 0x00); - } else { - /* Keep DVP0 powered down. Otherwise, it will interfere with - * PCIe Lane 0 through 7. */ - viaFPDPHighSetIOPadState(pScrn, 0x00); - } - - /* Control DVP1 for a flat panel. */ + case VIA_DI_PORT_FPDPLOW: viaFPDPLowSetIOPadState(pScrn, ioPadOn ? 0x03 : 0x00); break; - case VIA_CX700: - case VIA_VX800: - case VIA_VX855: - case VIA_VX900: - /* 3C5.13[7:6] - DVP1D15 and DVP1D14 pin strappings - * 00: LVDS1 + LVDS2 - * 01: DVI + LVDS2 - * 10: Dual LVDS (LVDS1 + LVDS2 used - * simultaneously) - * 11: DVI only */ - if ((((~(sr13 & 0x80)) && (~(sr13 & 0x40))) - || ((sr13 & 0x80) && (~(sr13 & 0x40)))) - && (!pVia->isVIANanoBook)) { - - viaLVDS1SetIOPadSetting(pScrn, ioPadOn ? 0x03 : 0x00); - } - - if (((~(sr13 & 0x80)) || (~(sr13 & 0x40))) - || (pVia->isVIANanoBook)) { - - viaLVDS2SetIOPadSetting(pScrn, ioPadOn ? 0x03 : 0x00); - } + case VIA_DI_PORT_FPDPHIGH: + viaFPDPHighSetIOPadState(pScrn, ioPadOn ? 0x03 : 0x00); + break; + case (VIA_DI_PORT_FPDPLOW | + VIA_DI_PORT_FPDPHIGH): + viaFPDPLowSetIOPadState(pScrn, ioPadOn ? 0x03 : 0x00); + viaFPDPHighSetIOPadState(pScrn, ioPadOn ? 0x03 : 0x00); + break; + case VIA_DI_PORT_LVDS1: + viaLVDS1SetIOPadSetting(pScrn, ioPadOn ? 0x03 : 0x00); + break; + case VIA_DI_PORT_LVDS2: + viaLVDS2SetIOPadSetting(pScrn, ioPadOn ? 0x03 : 0x00); + break; + case (VIA_DI_PORT_LVDS1 | + VIA_DI_PORT_LVDS2): + viaLVDS1SetIOPadSetting(pScrn, ioPadOn ? 0x03 : 0x00); + viaLVDS2SetIOPadSetting(pScrn, ioPadOn ? 0x03 : 0x00); break; default: break; } - if ((pVia->Chipset == VIA_CX700) - || (pVia->Chipset == VIA_VX800) - || (pVia->Chipset == VIA_VX855) - || (pVia->Chipset == VIA_VX900)) { - - hwp->writeSeq(hwp, 0x5A, sr5a); - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Restoring 3C5.5A[0].\n")); - } + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "FP I/O Pad: %s\n", + ioPadOn ? "On": "Off"); DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Exiting viaFPIOPadSetting.\n")); @@ -1064,6 +1000,7 @@ via_fp_dpms(xf86OutputPtr output, int mode) { ScrnInfoPtr pScrn = output->scrn; VIAPtr pVia = VIAPTR(pScrn); + VIAFPPtr pVIAFP = (VIAFPPtr) output->driver_private; DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Entered via_fp_dpms.\n")); @@ -1093,7 +1030,7 @@ via_fp_dpms(xf86OutputPtr output, int mode) break; } - viaFPIOPadSetting(pScrn, TRUE); + viaFPIOPadSetting(pScrn, pVIAFP->diPort, TRUE); break; case DPMSModeStandby: case DPMSModeSuspend: @@ -1121,7 +1058,7 @@ via_fp_dpms(xf86OutputPtr output, int mode) break; } - viaFPIOPadSetting(pScrn, FALSE); + viaFPIOPadSetting(pScrn, pVIAFP->diPort, FALSE); break; default: break; commit 043c88a17fbe9ba0ffe14a3e429a2e8d6452e9a3 Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jun 9 04:48:50 2017 -0700 Converting viaFPDPHighSetIOPadState to an inline function Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/src/via_fp.c b/src/via_fp.c index 2a25662..2788ada 100644 --- a/src/via_fp.c +++ b/src/via_fp.c @@ -401,34 +401,6 @@ viaLVDS2SetOutputFormat(ScrnInfoPtr pScrn, CARD8 outputFormat) "Exiting viaLVDS2SetOutputFormat.\n")); } -/* - * Sets FPDP (Flat Panel Display Port) High I/O pad state - */ -static void -viaFPDPHighSetIOPadState(ScrnInfoPtr pScrn, CARD8 ioPadState) -{ - vgaHWPtr hwp = VGAHWPTR(pScrn); - - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Entered viaFPDPHighSetIOPadState.\n")); - - /* 3C5.2A[3:2] - FPDP High Power Control - * 0x: Pad always off - * 10: Depend on the other control signal - * 11: Pad on/off according to the - * Power Management Status (PMS) */ - ViaSeqMask(hwp, 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")); - - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Exiting viaFPDPHighSetIOPadState.\n")); -} - static void viaFPIOPadSetting(ScrnInfoPtr pScrn, Bool ioPadOn) { diff --git a/src/via_ums.h b/src/via_ums.h index 0ff147c..66296a6 100644 --- a/src/via_ums.h +++ b/src/via_ums.h @@ -536,6 +536,26 @@ viaFPDPLowSetIOPadState(ScrnInfoPtr pScrn, CARD8 ioPadState) } /* + * Sets FPDP (Flat Panel Display Port) High I/O pad state + */ +static inline void +viaFPDPHighSetIOPadState(ScrnInfoPtr pScrn, CARD8 ioPadState) +{ + /* 3C5.2A[3:2] - FPDP High Power 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, + "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")); +} + +/* * Sets CX700 or later chipset's LVDS1 power state. */ static inline void commit a24b75c4582c131e0afee1c347b4843272e9e0df Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jun 9 04:25:15 2017 -0700 Changed viaDVP0PCIeSetIOPadSetting to viaFPDPHighSetIOPadState Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/src/via_fp.c b/src/via_fp.c index 779988b..2a25662 100644 --- a/src/via_fp.c +++ b/src/via_fp.c @@ -402,25 +402,31 @@ viaLVDS2SetOutputFormat(ScrnInfoPtr pScrn, CARD8 outputFormat) } /* - * Sets PCIe based 2 chip chipset's pin multiplexed DVP0 I/O pad state. + * Sets FPDP (Flat Panel Display Port) High I/O pad state */ static void -viaDVP0PCIeSetIOPadSetting(ScrnInfoPtr pScrn, CARD8 ioPadState) +viaFPDPHighSetIOPadState(ScrnInfoPtr pScrn, CARD8 ioPadState) { vgaHWPtr hwp = VGAHWPTR(pScrn); DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Entered viaDVP0PCIeSetIOPadSetting.\n")); - - /* Set pin multiplexed DVP1 I/O pad state. */ - /* 3C5.2A[3:2] - DVP0 I/O Pad Control */ - ViaSeqMask(hwp, 0x2A, ioPadState << 2, 0x0C); - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "DVP0 I/O Pad State: %d\n", - (ioPadState & 0x03)); + "Entered viaFPDPHighSetIOPadState.\n")); + + /* 3C5.2A[3:2] - FPDP High Power Control + * 0x: Pad always off + * 10: Depend on the other control signal + * 11: Pad on/off according to the + * Power Management Status (PMS) */ + ViaSeqMask(hwp, 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")); DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Exiting viaDVP0PCIeSetIOPadSetting.\n")); + "Exiting viaFPDPHighSetIOPadState.\n")); } static void @@ -483,11 +489,11 @@ viaFPIOPadSetting(ScrnInfoPtr pScrn, Bool ioPadOn) if (sr12 & 0x10) { /* Since an 18-bit / 24-bit flat panel is being used, actively * control DVP0. */ - viaDVP0PCIeSetIOPadSetting(pScrn, ioPadOn ? 0x03 : 0x00); + viaFPDPHighSetIOPadState(pScrn, ioPadOn ? 0x03 : 0x00); } else { /* Keep DVP0 powered down. Otherwise, it will interfere with * PCIe Lane 0 through 7. */ - viaDVP0PCIeSetIOPadSetting(pScrn, 0x00); + viaFPDPHighSetIOPadState(pScrn, 0x00); } /* Control DVP1 for a flat panel. */ commit d937936a84b80e9cf2c89d63fb1aa1481f0ccf92 Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jun 9 04:18:26 2017 -0700 Converting viaFPDPLowSetIOPadState to an inline function Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/src/via_fp.c b/src/via_fp.c index e18d81e..779988b 100644 --- a/src/via_fp.c +++ b/src/via_fp.c @@ -423,27 +423,6 @@ viaDVP0PCIeSetIOPadSetting(ScrnInfoPtr pScrn, CARD8 ioPadState) "Exiting viaDVP0PCIeSetIOPadSetting.\n")); } -/* - * Sets FPDP (Flat Panel Display Port) Low I/O pad state. - */ -static void -viaFPDPLowSetIOPadState(ScrnInfoPtr pScrn, CARD8 ioPadState) -{ - vgaHWPtr hwp = VGAHWPTR(pScrn); - - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Entered viaFPDPLowSetIOPadState.\n")); - - /* 3C5.2A[1:0] - DVP1 I/O Pad Control */ - ViaSeqMask(hwp, 0x2A, ioPadState, 0x03); - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "DVP1 I/O Pad State: %d\n", - (ioPadState & 0x03)); - - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Exiting viaFPDPLowSetIOPadState.\n")); -} - static void viaFPIOPadSetting(ScrnInfoPtr pScrn, Bool ioPadOn) { diff --git a/src/via_ums.h b/src/via_ums.h index d3e6f7e..0ff147c 100644 --- a/src/via_ums.h +++ b/src/via_ums.h @@ -516,6 +516,26 @@ viaFPSetPrimaryHardPower(ScrnInfoPtr pScrn, Bool powerState) } /* + * Sets FPDP (Flat Panel Display Port) Low I/O pad state. + */ +static inline void +viaFPDPLowSetIOPadState(ScrnInfoPtr pScrn, CARD8 ioPadState) +{ + /* 3C5.2A[1:0] - FPDP Low Power 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, + "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")); +} + +/* * Sets CX700 or later chipset's LVDS1 power state. */ static inline void commit dc697cf23b1ec77455bffe2188305a310648e746 Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Jun 9 04:06:28 2017 -0700 Changed viaDVP1PCIeSetIOPadSetting to viaFPDPLowSetIOPadState Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/src/via_fp.c b/src/via_fp.c index 813236e..e18d81e 100644 --- a/src/via_fp.c +++ b/src/via_fp.c @@ -424,17 +424,16 @@ viaDVP0PCIeSetIOPadSetting(ScrnInfoPtr pScrn, CARD8 ioPadState) } /* - * Sets PCIe based 2 chip chipset's pin multiplexed DVP1 I/O pad state. + * Sets FPDP (Flat Panel Display Port) Low I/O pad state. */ static void -viaDVP1PCIeSetIOPadSetting(ScrnInfoPtr pScrn, CARD8 ioPadState) +viaFPDPLowSetIOPadState(ScrnInfoPtr pScrn, CARD8 ioPadState) { vgaHWPtr hwp = VGAHWPTR(pScrn); DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Entered viaDVP1PCIeSetIOPadSetting.\n")); + "Entered viaFPDPLowSetIOPadState.\n")); - /* Set pin multiplexed DVP0 I/O pad state. */ /* 3C5.2A[1:0] - DVP1 I/O Pad Control */ ViaSeqMask(hwp, 0x2A, ioPadState, 0x03); xf86DrvMsg(pScrn->scrnIndex, X_INFO, @@ -442,7 +441,7 @@ viaDVP1PCIeSetIOPadSetting(ScrnInfoPtr pScrn, CARD8 ioPadState) (ioPadState & 0x03)); DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Exiting viaDVP1PCIeSetIOPadSetting.\n")); + "Exiting viaFPDPLowSetIOPadState.\n")); } static void @@ -513,7 +512,7 @@ viaFPIOPadSetting(ScrnInfoPtr pScrn, Bool ioPadOn) } /* Control DVP1 for a flat panel. */ - viaDVP1PCIeSetIOPadSetting(pScrn, ioPadOn ? 0x03 : 0x00); + viaFPDPLowSetIOPadState(pScrn, ioPadOn ? 0x03 : 0x00); break; case VIA_CX700: case VIA_VX800: _______________________________________________ Openchrome-devel mailing list Openchrome-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/openchrome-devel