diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c index 404c37e46..596a32ea1 100644 --- a/hw/xfree86/common/xf86Events.c +++ b/hw/xfree86/common/xf86Events.c @@ -84,7 +84,7 @@ #include "dpmsproc.h" #endif -#include "xf86platformBus.h" +#include "xf86platformBus_priv.h" #include "systemd-logind.h" extern void (*xf86OSPMClose) (void); diff --git a/hw/xfree86/common/xf86Option.c b/hw/xfree86/common/xf86Option.c index ca538cc57..3126b22bd 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 aeeed8be6..51d2111d6 100644 --- a/hw/xfree86/common/xf86pciBus.c +++ b/hw/xfree86/common/xf86pciBus.c @@ -45,6 +45,7 @@ /* Bus-specific headers */ #include "xf86Bus.h" +#include "xf86sbusBus_priv.h" #define XF86_OS_PRIVS #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 b7fdb4dd6..47a905ee3 100644 --- a/hw/xfree86/common/xf86platformBus.c +++ b/hw/xfree86/common/xf86platformBus.c @@ -47,7 +47,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 9979106a1..3ee36e4b4 100644 --- a/hw/xfree86/common/xf86platformBus.h +++ b/hw/xfree86/common/xf86platformBus.h @@ -34,139 +34,10 @@ 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; -} - -#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 - extern _X_EXPORT Bool xf86PlatformDeviceCheckBusID(struct xf86_platform_device *device, const char *busid); extern _X_EXPORT void xf86PlatformMatchDriver(XF86MatchedDrivers *); -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..619e15789 --- /dev/null +++ b/hw/xfree86/common/xf86platformBus_priv.h @@ -0,0 +1,137 @@ +/* SPDX-License-Identifier: MIT OR X11 + * + * Copyright © 2024 Enrico Weigelt, metux IT consult + * Copyright © 2012 Red Hat. + */ +#ifndef _XSERVER_XF86_PLATFORM_BUS_PRIV_H_ +#define _XSERVER_XF86_PLATFORM_BUS_PRIV_H_ + +#include + +#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; + +int xf86_add_platform_device(struct OdevAttributes *attribs, Bool unowned); +int xf86_remove_platform_device(int dev_index); +Bool xf86_get_platform_device_unowned(int index); + +int xf86platformAddDevice(const char *driver_name, int index); +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 cf2d4cfe4..efa1b103d 100644 --- a/hw/xfree86/drivers/modesetting/driver.c +++ b/hw/xfree86/drivers/modesetting/driver.c @@ -63,6 +63,7 @@ #include #endif #include "driver.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 16a9df675..9a6434d31 100644 --- a/hw/xfree86/os-support/linux/systemd-logind.c +++ b/hw/xfree86/os-support/linux/systemd-logind.c @@ -36,7 +36,7 @@ #include "dbus-core.h" #include "linux.h" #include "xf86.h" -#include "xf86platformBus.h" +#include "xf86platformBus_priv.h" #include "xf86Xinput.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 90013573c..83805fffe 100644 --- a/hw/xfree86/os-support/shared/drm_platform.c +++ b/hw/xfree86/os-support/shared/drm_platform.c @@ -14,7 +14,7 @@ #include "xf86_OSproc.h" #include "xf86.h" -#include "xf86platformBus.h" +#include "xf86platformBus_priv.h" #include "xf86Bus.h" #include "hotplug.h"