From e5cfabc5a207285f17574abe255f2ee89ea62330 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Fri, 9 Feb 2024 19:12:42 +0100 Subject: [PATCH] (submit/cleanup-api-xfree86) xfree86: ddc: move private definitions from xf86DDC.h to xf86DDC_priv.h public server module API headers shouldn't be clobbered with non-exported definitions, so move them out to private header file. Signed-off-by: Enrico Weigelt, metux IT consult --- hw/xfree86/common/xf86Configure.c | 2 +- hw/xfree86/ddc/interpret_edid.c | 2 +- hw/xfree86/ddc/print_edid.c | 2 +- hw/xfree86/ddc/xf86DDC.h | 42 ------------------------ hw/xfree86/ddc/xf86DDC_priv.h | 53 +++++++++++++++++++++++++++++++ hw/xfree86/modes/xf86Crtc.c | 2 +- hw/xfree86/modes/xf86EdidModes.c | 2 +- 7 files changed, 58 insertions(+), 47 deletions(-) create mode 100644 hw/xfree86/ddc/xf86DDC_priv.h diff --git a/hw/xfree86/common/xf86Configure.c b/hw/xfree86/common/xf86Configure.c index 82ad736da..40089ad33 100644 --- a/hw/xfree86/common/xf86Configure.c +++ b/hw/xfree86/common/xf86Configure.c @@ -38,7 +38,7 @@ #include "xf86Priv.h" #define IN_XSERVER #include "Configint.h" -#include "xf86DDC.h" +#include "xf86DDC_priv.h" #include "xf86pciBus.h" #if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__) #include "xf86Bus.h" diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c index 0ded3ff71..28d7497f1 100644 --- a/hw/xfree86/ddc/interpret_edid.c +++ b/hw/xfree86/ddc/interpret_edid.c @@ -32,7 +32,7 @@ #include "xf86.h" #include "xf86_OSproc.h" #define _PARSE_EDID_ -#include "xf86DDC.h" +#include "xf86DDC_priv.h" #include static void get_vendor_section(Uchar *, struct vendor *); diff --git a/hw/xfree86/ddc/print_edid.c b/hw/xfree86/ddc/print_edid.c index f5215bd1c..464c11c5a 100644 --- a/hw/xfree86/ddc/print_edid.c +++ b/hw/xfree86/ddc/print_edid.c @@ -34,7 +34,7 @@ #include "misc.h" #include "xf86.h" #include "xf86_OSproc.h" -#include "xf86DDC.h" +#include "xf86DDC_priv.h" #include "edid.h" #define EDID_WIDTH 16 diff --git a/hw/xfree86/ddc/xf86DDC.h b/hw/xfree86/ddc/xf86DDC.h index 6eb2f0ba2..37ffb335d 100644 --- a/hw/xfree86/ddc/xf86DDC.h +++ b/hw/xfree86/ddc/xf86DDC.h @@ -56,46 +56,4 @@ FindDMTMode(int hsize, int vsize, int refresh, Bool rb); extern _X_EXPORT const DisplayModeRec DMTModes[]; -/* - * Quirks to work around broken EDID data from various monitors. - */ -typedef enum { - DDC_QUIRK_NONE = 0, - /* First detailed mode is bogus, prefer largest mode at 60hz */ - DDC_QUIRK_PREFER_LARGE_60 = 1 << 0, - /* 135MHz clock is too high, drop a bit */ - DDC_QUIRK_135_CLOCK_TOO_HIGH = 1 << 1, - /* Prefer the largest mode at 75 Hz */ - DDC_QUIRK_PREFER_LARGE_75 = 1 << 2, - /* Convert detailed timing's horizontal from units of cm to mm */ - DDC_QUIRK_DETAILED_H_IN_CM = 1 << 3, - /* Convert detailed timing's vertical from units of cm to mm */ - DDC_QUIRK_DETAILED_V_IN_CM = 1 << 4, - /* Detailed timing descriptors have bogus size values, so just take the - * maximum size and use that. - */ - DDC_QUIRK_DETAILED_USE_MAXIMUM_SIZE = 1 << 5, - /* Monitor forgot to set the first detailed is preferred bit. */ - DDC_QUIRK_FIRST_DETAILED_PREFERRED = 1 << 6, - /* use +hsync +vsync for detailed mode */ - DDC_QUIRK_DETAILED_SYNC_PP = 1 << 7, - /* Force single-link DVI bandwidth limit */ - DDC_QUIRK_DVI_SINGLE_LINK = 1 << 8, -} ddc_quirk_t; - -typedef void (*handle_detailed_fn) (struct detailed_monitor_section *, void *); - -void xf86ForEachDetailedBlock(xf86MonPtr mon, handle_detailed_fn, void *data); - -ddc_quirk_t xf86DDCDetectQuirks(int scrnIndex, xf86MonPtr DDC, Bool verbose); - -void xf86DetTimingApplyQuirks(struct detailed_monitor_section *det_mon, - ddc_quirk_t quirks, int hsize, int vsize); - -typedef void (*handle_video_fn) (struct cea_video_block *, void *); - -void xf86ForEachVideoBlock(xf86MonPtr, handle_video_fn, void *); - -struct cea_data_block *xf86MonitorFindHDMIBlock(xf86MonPtr mon); - #endif diff --git a/hw/xfree86/ddc/xf86DDC_priv.h b/hw/xfree86/ddc/xf86DDC_priv.h new file mode 100644 index 000000000..0eea134f3 --- /dev/null +++ b/hw/xfree86/ddc/xf86DDC_priv.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: MIT OR X11 + * + * Copyright © 2024 Enrico Weigelt, metux IT consult + * Copyright © 1998 by Egbert Eich + */ +#ifndef _XSERVER_XF86_DDC_PRIV_H +#define _XSERVER_XF86_DDC_PRIV_H + +#include "xf86DDC.h" + +/* + * Quirks to work around broken EDID data from various monitors. + */ +typedef enum { + DDC_QUIRK_NONE = 0, + /* First detailed mode is bogus, prefer largest mode at 60hz */ + DDC_QUIRK_PREFER_LARGE_60 = 1 << 0, + /* 135MHz clock is too high, drop a bit */ + DDC_QUIRK_135_CLOCK_TOO_HIGH = 1 << 1, + /* Prefer the largest mode at 75 Hz */ + DDC_QUIRK_PREFER_LARGE_75 = 1 << 2, + /* Convert detailed timing's horizontal from units of cm to mm */ + DDC_QUIRK_DETAILED_H_IN_CM = 1 << 3, + /* Convert detailed timing's vertical from units of cm to mm */ + DDC_QUIRK_DETAILED_V_IN_CM = 1 << 4, + /* Detailed timing descriptors have bogus size values, so just take the + * maximum size and use that. + */ + DDC_QUIRK_DETAILED_USE_MAXIMUM_SIZE = 1 << 5, + /* Monitor forgot to set the first detailed is preferred bit. */ + DDC_QUIRK_FIRST_DETAILED_PREFERRED = 1 << 6, + /* use +hsync +vsync for detailed mode */ + DDC_QUIRK_DETAILED_SYNC_PP = 1 << 7, + /* Force single-link DVI bandwidth limit */ + DDC_QUIRK_DVI_SINGLE_LINK = 1 << 8, +} ddc_quirk_t; + +typedef void (*handle_detailed_fn) (struct detailed_monitor_section *, void *); + +void xf86ForEachDetailedBlock(xf86MonPtr mon, handle_detailed_fn, void *data); + +ddc_quirk_t xf86DDCDetectQuirks(int scrnIndex, xf86MonPtr DDC, Bool verbose); + +void xf86DetTimingApplyQuirks(struct detailed_monitor_section *det_mon, + ddc_quirk_t quirks, int hsize, int vsize); + +typedef void (*handle_video_fn) (struct cea_video_block *, void *); + +void xf86ForEachVideoBlock(xf86MonPtr, handle_video_fn, void *); + +struct cea_data_block *xf86MonitorFindHDMIBlock(xf86MonPtr mon); + +#endif /* _XSERVER_XF86_DDC_PRIV_H */ diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index 902a39104..7b0401eae 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -30,7 +30,7 @@ #include #include "xf86.h" -#include "xf86DDC.h" +#include "xf86DDC_priv.h" #include "xf86Crtc.h" #include "xf86Modes.h" #include "xf86Priv.h" diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c index b0f93e2b7..c480657e1 100644 --- a/hw/xfree86/modes/xf86EdidModes.c +++ b/hw/xfree86/modes/xf86EdidModes.c @@ -33,7 +33,7 @@ #define _PARSE_EDID_ #include "xf86.h" -#include "xf86DDC.h" +#include "xf86DDC_priv.h" #include #include "property.h" #include "propertyst.h"