diff options
Diffstat (limited to 'user/xf86-video-r128/0001-Fix-output-detection-on-non-x86-and-allow-override.patch')
-rw-r--r-- | user/xf86-video-r128/0001-Fix-output-detection-on-non-x86-and-allow-override.patch | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/user/xf86-video-r128/0001-Fix-output-detection-on-non-x86-and-allow-override.patch b/user/xf86-video-r128/0001-Fix-output-detection-on-non-x86-and-allow-override.patch new file mode 100644 index 000000000..83f70bef6 --- /dev/null +++ b/user/xf86-video-r128/0001-Fix-output-detection-on-non-x86-and-allow-override.patch @@ -0,0 +1,197 @@ +From c0d6b63859c4ef67bc87cf2efae1d608db176286 Mon Sep 17 00:00:00 2001 +From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> +Date: Sat, 11 Nov 2023 21:15:29 -0600 +Subject: [PATCH 1/3] Fix output detection on non-x86 and allow override + +This exposes a new option, "ForceOutput", which is read when the VBIOS is +inaccessible. With this change, r128 is usable on at least PPC systems. + +Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com> +--- + man/r128.man | 4 ++++ + src/r128.h | 2 +- + src/r128_driver.c | 29 ++--------------------- + src/r128_options.h | 59 ++++++++++++++++++++++++++++++++++++++++++++++ + src/r128_output.c | 11 ++++++++- + 5 files changed, 76 insertions(+), 29 deletions(-) + create mode 100644 src/r128_options.h + +diff --git a/man/r128.man b/man/r128.man +index a93157a..c465531 100644 +--- a/man/r128.man ++++ b/man/r128.man +@@ -94,6 +94,10 @@ Beware that this may damage your panel, so use this + .B at your own risk. + The default depends on the device. + .TP ++.BI "Option \*qForceOutput\*q \*q" integer \*q ++Force a specific output layout. This option is only read when the video card BIOS is ++inaccessible (typically on non-x86 architectures). This allows you to override the ++default output layout, which is a single VGA output on port 0. + .BI "Option \*qPanelWidth\*q \*q" integer \*q + .TP + .BI "Option \*qPanelHeight\*q \*q" integer \*q +diff --git a/src/r128.h b/src/r128.h +index 6ab6beb..1ddb0f9 100644 +--- a/src/r128.h ++++ b/src/r128.h +@@ -66,7 +66,7 @@ + #undef R128DRI + #endif + +-#if R128DRI ++#ifdef R128DRI + #define _XF86DRI_SERVER_ + #include "r128_dripriv.h" + #include "dri.h" +diff --git a/src/r128_driver.c b/src/r128_driver.c +index 6791290..213b948 100644 +--- a/src/r128_driver.c ++++ b/src/r128_driver.c +@@ -67,6 +67,7 @@ + + /* Driver data structures */ + #include "r128.h" ++#include "r128_options.h" + #include "r128_probe.h" + #include "r128_reg.h" + #include "r128_version.h" +@@ -114,33 +115,6 @@ static Bool R128SaveScreen(ScreenPtr pScreen, int mode); + static void R128Save(ScrnInfoPtr pScrn); + static void R128Restore(ScrnInfoPtr pScrn); + +-typedef enum { +- OPTION_NOACCEL, +- OPTION_FBDEV, +- OPTION_DAC_6BIT, +- OPTION_VGA_ACCESS, +- OPTION_SHOW_CACHE, +- OPTION_SW_CURSOR, +- OPTION_VIDEO_KEY, +- OPTION_PANEL_WIDTH, +- OPTION_PANEL_HEIGHT, +- OPTION_PROG_FP_REGS, +-#ifdef R128DRI +- OPTION_XV_DMA, +- OPTION_IS_PCI, +- OPTION_CCE_PIO, +- OPTION_NO_SECURITY, +- OPTION_USEC_TIMEOUT, +- OPTION_AGP_MODE, +- OPTION_AGP_SIZE, +- OPTION_RING_SIZE, +- OPTION_BUFFER_SIZE, +- OPTION_PAGE_FLIP, +-#endif +- OPTION_ACCELMETHOD, +- OPTION_RENDERACCEL +-} R128Opts; +- + static const OptionInfoRec R128Options[] = { + { OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_FBDEV, "UseFBDev", OPTV_BOOLEAN, {0}, FALSE }, +@@ -166,6 +140,7 @@ static const OptionInfoRec R128Options[] = { + #endif + { OPTION_ACCELMETHOD, "AccelMethod", OPTV_STRING, {0}, FALSE }, + { OPTION_RENDERACCEL, "RenderAccel", OPTV_BOOLEAN, {0}, FALSE }, ++ { OPTION_FORCEOUTPUT, "ForceOutput", OPTV_INTEGER, {0}, FALSE }, + { -1, NULL, OPTV_NONE, {0}, FALSE } + }; + +diff --git a/src/r128_options.h b/src/r128_options.h +new file mode 100644 +index 0000000..cce765b +--- /dev/null ++++ b/src/r128_options.h +@@ -0,0 +1,59 @@ ++/* ++ * Copyright 2023 A. Wilcox, Tulsa, Oklahoma. ++ * ++ * All Rights Reserved. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining ++ * a copy of this software and associated documentation files (the ++ * "Software"), to deal in the Software without restriction, including ++ * without limitation on the rights to use, copy, modify, merge, ++ * publish, distribute, sublicense, and/or sell copies of the Software, ++ * and to permit persons to whom the Software is furnished to do so, ++ * subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the ++ * next paragraph) shall be included in all copies or substantial ++ * portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NON-INFRINGEMENT. IN NO EVENT SHALL ATI, VA LINUX SYSTEMS AND/OR ++ * THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ * DEALINGS IN THE SOFTWARE. ++ */ ++ ++#ifndef _R128_OPTIONS_H_ ++#define _R128_OPTIONS_H_ 1 ++ ++typedef enum { ++ OPTION_NOACCEL, ++ OPTION_FBDEV, ++ OPTION_DAC_6BIT, ++ OPTION_VGA_ACCESS, ++ OPTION_SHOW_CACHE, ++ OPTION_SW_CURSOR, ++ OPTION_VIDEO_KEY, ++ OPTION_PANEL_WIDTH, ++ OPTION_PANEL_HEIGHT, ++ OPTION_PROG_FP_REGS, ++#ifdef R128DRI ++ OPTION_XV_DMA, ++ OPTION_IS_PCI, ++ OPTION_CCE_PIO, ++ OPTION_NO_SECURITY, ++ OPTION_USEC_TIMEOUT, ++ OPTION_AGP_MODE, ++ OPTION_AGP_SIZE, ++ OPTION_RING_SIZE, ++ OPTION_BUFFER_SIZE, ++ OPTION_PAGE_FLIP, ++#endif ++ OPTION_ACCELMETHOD, ++ OPTION_RENDERACCEL, ++ OPTION_FORCEOUTPUT ++} R128Opts; ++ ++#endif /* _R128_OPTIONS_H_ */ +diff --git a/src/r128_output.c b/src/r128_output.c +index 1d98fb9..05b8c1f 100644 +--- a/src/r128_output.c ++++ b/src/r128_output.c +@@ -44,6 +44,7 @@ + #endif + + #include "r128.h" ++#include "r128_options.h" + #include "r128_probe.h" + #include "r128_reg.h" + +@@ -425,7 +426,15 @@ void R128GetConnectorInfoFromBIOS(ScrnInfoPtr pScrn, R128OutputType *otypes) + + /* non-x86 platform */ + if (!info->VBIOS) { +- otypes[0] = OUTPUT_VGA; ++ int outputs; ++ xf86GetOptValInteger(info->Options, OPTION_FORCEOUTPUT, &outputs); ++ if (outputs) { ++ otypes[0] = outputs & 0x3; ++ otypes[1] = (outputs >> 2) & 0x3; ++ } else { ++ otypes[0] = OUTPUT_VGA; ++ } ++ return; + } + + bios_header = R128_BIOS16(0x48); +-- +2.39.3 (Apple Git-145) + |