diff options
-rw-r--r-- | src/driver.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/driver.c b/src/driver.c index f0529f5..5048f9c 100644 --- a/src/driver.c +++ b/src/driver.c @@ -53,6 +53,9 @@ #include "xf86xv.h" #include <X11/extensions/Xv.h> #include <xorg-server.h> +#ifdef XSERVER_PLATFORM_BUS +#include "xf86platformBus.h" +#endif #if XSERVER_LIBPCIACCESS #include <pciaccess.h> #endif @@ -89,6 +92,12 @@ static const struct pci_id_match ms_device_match[] = { }; #endif +#ifdef XSERVER_PLATFORM_BUS +static Bool ms_platform_probe(DriverPtr driver, + int entity_num, int flags, struct xf86_platform_device *device, + intptr_t match_data); +#endif + _X_EXPORT DriverRec modesetting = { 1, "modesetting", @@ -100,6 +109,9 @@ _X_EXPORT DriverRec modesetting = { NULL, ms_device_match, ms_pci_probe, +#ifdef XSERVER_PLATFORM_BUS + ms_platform_probe, +#endif }; static SymTabRec Chipsets[] = { @@ -278,6 +290,36 @@ ms_pci_probe(DriverPtr driver, } #endif +#ifdef XSERVER_PLATFORM_BUS +static Bool +ms_platform_probe(DriverPtr driver, + int entity_num, int flags, struct xf86_platform_device *dev, intptr_t match_data) +{ + ScrnInfoPtr scrn = NULL; + char *path = xf86_get_platform_device_attrib(dev, ODEV_ATTRIB_PATH); + + if (probe_hw(path)) { + scrn = xf86AllocateScreen(driver, 0); + xf86AddEntityToScreen(scrn, entity_num); + + scrn->driverName = "modesetting"; + scrn->name = "modesetting"; + scrn->PreInit = PreInit; + scrn->ScreenInit = ScreenInit; + scrn->SwitchMode = SwitchMode; + scrn->AdjustFrame = AdjustFrame; + scrn->EnterVT = EnterVT; + scrn->LeaveVT = LeaveVT; + scrn->FreeScreen = FreeScreen; + scrn->ValidMode = ValidMode; + xf86DrvMsg(scrn->scrnIndex, X_INFO, + "using drv %s\n", path ? path : "default device"); + } + + return scrn != NULL; +} +#endif + static Bool Probe(DriverPtr drv, int flags) { |