From a868fd028b6fdb3ae06b71ba43cb2520256e591e Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Fri, 9 Feb 2024 16:42:42 +0100 Subject: [PATCH] xfree86: common: move non-public defs out of xf86platformBus.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/xf86Events.c | 1 + hw/xfree86/common/xf86Option.c | 2 +- hw/xfree86/common/xf86pciBus.c | 1 + hw/xfree86/common/xf86pciBus.h | 1 + hw/xfree86/common/xf86platformBus.c | 2 +- hw/xfree86/common/xf86platformBus.h | 102 ------------ hw/xfree86/common/xf86platformBus_priv.h | 158 +++++++++++++++++++ hw/xfree86/drivers/modesetting/driver.c | 1 + hw/xfree86/os-support/linux/systemd-logind.c | 2 +- hw/xfree86/os-support/shared/drm_platform.c | 2 +- 10 files changed, 166 insertions(+), 106 deletions(-) create mode 100644 hw/xfree86/common/xf86platformBus_priv.h diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c index 16d177b26..6dd714f46 100644 --- a/hw/xfree86/common/xf86Events.c +++ b/hw/xfree86/common/xf86Events.c @@ -89,6 +89,7 @@ #endif #include "xf86platformBus.h" +#include "xf86platformBus_priv.h" #include "../os-support/linux/systemd-logind.h" diff --git a/hw/xfree86/common/xf86Option.c b/hw/xfree86/common/xf86Option.c index b8bab3617..dc5cae698 100644 --- a/hw/xfree86/common/xf86Option.c +++ b/hw/xfree86/common/xf86Option.c @@ -44,7 +44,7 @@ #include "xf86Xinput.h" #include "xf86Optrec.h" #include "xf86Parser.h" -#include "xf86platformBus.h" /* For OutputClass functions */ +#include "xf86platformBus_priv.h" #include "optionstr.h" static Bool ParseOptionValue(int scrnIndex, XF86OptionPtr options, diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c index 952810bac..50e5b20cc 100644 --- a/hw/xfree86/common/xf86pciBus.c +++ b/hw/xfree86/common/xf86pciBus.c @@ -48,6 +48,7 @@ /* Bus-specific headers */ #include "xf86Bus.h" +#include "xf86sbusBus_priv.h" #include "xf86_OSproc.h" diff --git a/hw/xfree86/common/xf86pciBus.h b/hw/xfree86/common/xf86pciBus.h index 14ae9760e..286c34acd 100644 --- a/hw/xfree86/common/xf86pciBus.h +++ b/hw/xfree86/common/xf86pciBus.h @@ -34,6 +34,7 @@ #define _XF86_PCI_BUS_H #include "xf86MatchDrivers.h" +#include "xf86platformBus_priv.h" void xf86PciProbe(void); Bool xf86PciAddMatchingDev(DriverPtr drvp); diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c index 075143498..54f307a18 100644 --- a/hw/xfree86/common/xf86platformBus.c +++ b/hw/xfree86/common/xf86platformBus.c @@ -51,7 +51,7 @@ #include "xf86str.h" #include "xf86Bus.h" #include "Pci.h" -#include "xf86platformBus.h" +#include "xf86platformBus_priv.h" #include "xf86Config.h" #include "xf86Crtc.h" diff --git a/hw/xfree86/common/xf86platformBus.h b/hw/xfree86/common/xf86platformBus.h index 7d4852ee8..f4be036f2 100644 --- a/hw/xfree86/common/xf86platformBus.h +++ b/hw/xfree86/common/xf86platformBus.h @@ -31,109 +31,7 @@ struct xf86_platform_device { int flags; }; -/* xf86_platform_device flags */ -#define XF86_PDEV_UNOWNED 0x01 -#define XF86_PDEV_SERVER_FD 0x02 -#define XF86_PDEV_PAUSED 0x04 - -#ifdef XSERVER_PLATFORM_BUS -int xf86platformProbe(void); -int xf86platformProbeDev(DriverPtr drvp); -int xf86platformAddGPUDevices(DriverPtr drvp); -void xf86MergeOutputClassOptions(int entityIndex, void **options); -void xf86PlatformScanPciDev(void); -const char *xf86PlatformFindHotplugDriver(int dev_index); - -extern int xf86_num_platform_devices; -extern struct xf86_platform_device *xf86_platform_devices; - -extern int -xf86_add_platform_device(struct OdevAttributes *attribs, Bool unowned); -extern int -xf86_remove_platform_device(int dev_index); -extern Bool -xf86_get_platform_device_unowned(int index); - -extern int -xf86platformAddDevice(const char *driver_name, int index); -extern void -xf86platformRemoveDevice(int index); - -static inline struct OdevAttributes * -xf86_platform_device_odev_attributes(struct xf86_platform_device *device) -{ - return device->attribs; -} - -static inline struct OdevAttributes * -xf86_platform_odev_attributes(int index) -{ - struct xf86_platform_device *device = &xf86_platform_devices[index]; - - return device->attribs; -} - -/* - * Define the legacy API only for external builds - */ - -/* path to kernel device node - Linux e.g. /dev/dri/card0 */ -#define ODEV_ATTRIB_PATH 1 -/* system device path - Linux e.g. /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1 */ -#define ODEV_ATTRIB_SYSPATH 2 -/* DRI-style bus id */ -#define ODEV_ATTRIB_BUSID 3 -/* Server managed FD */ -#define ODEV_ATTRIB_FD 4 -/* Major number of the device node pointed to by ODEV_ATTRIB_PATH */ -#define ODEV_ATTRIB_MAJOR 5 -/* Minor number of the device node pointed to by ODEV_ATTRIB_PATH */ -#define ODEV_ATTRIB_MINOR 6 -/* kernel driver name */ -#define ODEV_ATTRIB_DRIVER 7 - -_X_EXPORT char * -_xf86_get_platform_device_attrib(struct xf86_platform_device *device, int attrib, int (*fake)[0]); - -_X_EXPORT int -_xf86_get_platform_device_int_attrib(struct xf86_platform_device *device, int attrib, int (*fake)[0]); - -#ifndef _XORG_CONFIG_H_ - -/* Protect against a mismatch attribute type by generating a compiler - * error using a negative array size when an incorrect attribute is - * passed - */ - -#define _ODEV_ATTRIB_IS_STRING(x) ((x) == ODEV_ATTRIB_PATH || \ - (x) == ODEV_ATTRIB_SYSPATH || \ - (x) == ODEV_ATTRIB_BUSID || \ - (x) == ODEV_ATTRIB_DRIVER) - -#define _ODEV_ATTRIB_STRING_CHECK(x) ((int (*)[_ODEV_ATTRIB_IS_STRING(x)-1]) 0) - -#define xf86_get_platform_device_attrib(device, attrib) _xf86_get_platform_device_attrib(device,attrib,_ODEV_ATTRIB_STRING_CHECK(attrib)) - -#define _ODEV_ATTRIB_IS_INT(x) ((x) == ODEV_ATTRIB_FD || (x) == ODEV_ATTRIB_MAJOR || (x) == ODEV_ATTRIB_MINOR) -#define _ODEV_ATTRIB_INT_DEFAULT(x) ((x) == ODEV_ATTRIB_FD ? -1 : 0) -#define _ODEV_ATTRIB_DEFAULT_CHECK(x,def) (_ODEV_ATTRIB_INT_DEFAULT(x) == (def)) -#define _ODEV_ATTRIB_INT_CHECK(x,def) ((int (*)[_ODEV_ATTRIB_IS_INT(x)*_ODEV_ATTRIB_DEFAULT_CHECK(x,def)-1]) 0) - -#define xf86_get_platform_device_int_attrib(device, attrib, def) _xf86_get_platform_device_int_attrib(device,attrib,_ODEV_ATTRIB_INT_CHECK(attrib,def)) - -#endif - extern _X_EXPORT Bool xf86PlatformDeviceCheckBusID(struct xf86_platform_device *device, const char *busid); -extern void xf86platformVTProbe(void); -extern void xf86platformPrimary(void); - -#else - -static inline int xf86platformAddGPUDevices(DriverPtr drvp) { return FALSE; } -static inline void xf86MergeOutputClassOptions(int index, void **options) {} - -#endif - #endif diff --git a/hw/xfree86/common/xf86platformBus_priv.h b/hw/xfree86/common/xf86platformBus_priv.h new file mode 100644 index 000000000..3cc5c5db3 --- /dev/null +++ b/hw/xfree86/common/xf86platformBus_priv.h @@ -0,0 +1,158 @@ +/* + * Copyright © 2012 Red Hat. + * + * 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 + * 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 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 NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS 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. + * + * Author: Dave Airlie + */ +#ifndef _XSERVER_XF86_PLATFORM_BUS_PRIV_H_ +#define _XSERVER_XF86_PLATFORM_BUS_PRIV_H_ + +#include "xf86platformBus.h" + +/* xf86_platform_device flags */ +#define XF86_PDEV_UNOWNED 0x01 +#define XF86_PDEV_SERVER_FD 0x02 +#define XF86_PDEV_PAUSED 0x04 + +#ifdef XSERVER_PLATFORM_BUS +int xf86platformProbe(void); +int xf86platformProbeDev(DriverPtr drvp); +int xf86platformAddGPUDevices(DriverPtr drvp); +void xf86MergeOutputClassOptions(int entityIndex, void **options); +void xf86PlatformScanPciDev(void); +const char *xf86PlatformFindHotplugDriver(int dev_index); + +extern int xf86_num_platform_devices; +extern struct xf86_platform_device *xf86_platform_devices; + +extern int +xf86_add_platform_device(struct OdevAttributes *attribs, Bool unowned); +extern int +xf86_remove_platform_device(int dev_index); +extern Bool +xf86_get_platform_device_unowned(int index); + +extern int +xf86platformAddDevice(const char *driver_name, int index); +extern void +xf86platformRemoveDevice(int index); + +static inline struct OdevAttributes * +xf86_platform_device_odev_attributes(struct xf86_platform_device *device) +{ + return device->attribs; +} + +static inline struct OdevAttributes * +xf86_platform_odev_attributes(int index) +{ + struct xf86_platform_device *device = &xf86_platform_devices[index]; + + return device->attribs; +} + +#ifndef _XORG_CONFIG_H_ +/* + * Define the legacy API only for external builds + */ + +/* path to kernel device node - Linux e.g. /dev/dri/card0 */ +#define ODEV_ATTRIB_PATH 1 +/* system device path - Linux e.g. /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1 */ +#define ODEV_ATTRIB_SYSPATH 2 +/* DRI-style bus id */ +#define ODEV_ATTRIB_BUSID 3 +/* Server managed FD */ +#define ODEV_ATTRIB_FD 4 +/* Major number of the device node pointed to by ODEV_ATTRIB_PATH */ +#define ODEV_ATTRIB_MAJOR 5 +/* Minor number of the device node pointed to by ODEV_ATTRIB_PATH */ +#define ODEV_ATTRIB_MINOR 6 +/* kernel driver name */ +#define ODEV_ATTRIB_DRIVER 7 + +/* Protect against a mismatch attribute type by generating a compiler + * error using a negative array size when an incorrect attribute is + * passed + */ + +#define _ODEV_ATTRIB_IS_STRING(x) ((x) == ODEV_ATTRIB_PATH || \ + (x) == ODEV_ATTRIB_SYSPATH || \ + (x) == ODEV_ATTRIB_BUSID || \ + (x) == ODEV_ATTRIB_DRIVER) + +#define _ODEV_ATTRIB_STRING_CHECK(x) ((int (*)[_ODEV_ATTRIB_IS_STRING(x)-1]) 0) + +static inline char * +_xf86_get_platform_device_attrib(struct xf86_platform_device *device, int attrib, int (*fake)[0]) +{ + switch (attrib) { + case ODEV_ATTRIB_PATH: + return xf86_platform_device_odev_attributes(device)->path; + case ODEV_ATTRIB_SYSPATH: + return xf86_platform_device_odev_attributes(device)->syspath; + case ODEV_ATTRIB_BUSID: + return xf86_platform_device_odev_attributes(device)->busid; + case ODEV_ATTRIB_DRIVER: + return xf86_platform_device_odev_attributes(device)->driver; + default: + assert(FALSE); + return NULL; + } +} + +#define xf86_get_platform_device_attrib(device, attrib) _xf86_get_platform_device_attrib(device,attrib,_ODEV_ATTRIB_STRING_CHECK(attrib)) + +#define _ODEV_ATTRIB_IS_INT(x) ((x) == ODEV_ATTRIB_FD || (x) == ODEV_ATTRIB_MAJOR || (x) == ODEV_ATTRIB_MINOR) +#define _ODEV_ATTRIB_INT_DEFAULT(x) ((x) == ODEV_ATTRIB_FD ? -1 : 0) +#define _ODEV_ATTRIB_DEFAULT_CHECK(x,def) (_ODEV_ATTRIB_INT_DEFAULT(x) == (def)) +#define _ODEV_ATTRIB_INT_CHECK(x,def) ((int (*)[_ODEV_ATTRIB_IS_INT(x)*_ODEV_ATTRIB_DEFAULT_CHECK(x,def)-1]) 0) + +static inline int +_xf86_get_platform_device_int_attrib(struct xf86_platform_device *device, int attrib, int (*fake)[0]) +{ + switch (attrib) { + case ODEV_ATTRIB_FD: + return xf86_platform_device_odev_attributes(device)->fd; + case ODEV_ATTRIB_MAJOR: + return xf86_platform_device_odev_attributes(device)->major; + case ODEV_ATTRIB_MINOR: + return xf86_platform_device_odev_attributes(device)->minor; + default: + assert(FALSE); + return 0; + } +} + +#define xf86_get_platform_device_int_attrib(device, attrib, def) _xf86_get_platform_device_int_attrib(device,attrib,_ODEV_ATTRIB_INT_CHECK(attrib,def)) + +#endif /* _XORG_CONFIG_H_ */ + +extern void xf86platformVTProbe(void); +extern void xf86platformPrimary(void); + +#else /* XSERVER_PLATFORM_BUS */ + +static inline int xf86platformAddGPUDevices(DriverPtr drvp) { return FALSE; } +static inline void xf86MergeOutputClassOptions(int index, void **options) {} + +#endif /* XSERVER_PLATFORM_BUS */ + +#endif /* _XSERVER_XF86_PLATFORM_BUS_PRIV_H_ */ diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c index 222073876..d860fabf9 100644 --- a/hw/xfree86/drivers/modesetting/driver.c +++ b/hw/xfree86/drivers/modesetting/driver.c @@ -67,6 +67,7 @@ #endif #include "driver.h" #include "hotplug_priv.h" +#include "xf86platformBus_priv.h" static void AdjustFrame(ScrnInfoPtr pScrn, int x, int y); static Bool CloseScreen(ScreenPtr pScreen); diff --git a/hw/xfree86/os-support/linux/systemd-logind.c b/hw/xfree86/os-support/linux/systemd-logind.c index 5902474d4..2e3bf1594 100644 --- a/hw/xfree86/os-support/linux/systemd-logind.c +++ b/hw/xfree86/os-support/linux/systemd-logind.c @@ -38,7 +38,7 @@ #include "os.h" #include "linux.h" #include "xf86.h" -#include "xf86platformBus.h" +#include "xf86platformBus_priv.h" #include "xf86Xinput_priv.h" #include "xf86Priv.h" #include "globals.h" diff --git a/hw/xfree86/os-support/shared/drm_platform.c b/hw/xfree86/os-support/shared/drm_platform.c index 2cbe53422..9bddb3822 100644 --- a/hw/xfree86/os-support/shared/drm_platform.c +++ b/hw/xfree86/os-support/shared/drm_platform.c @@ -17,7 +17,7 @@ #include "xf86.h" #include "xf86_os_support.h" -#include "xf86platformBus.h" +#include "xf86platformBus_priv.h" #include "xf86Bus.h" #include "../linux/systemd-logind.h"