summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-06-05 14:43:21 +0100
committerDave Airlie <airlied@redhat.com>2012-06-05 14:43:55 +0100
commit84141ff69acfd17525e1eeeda28d9d5463f00352 (patch)
tree7b6bf2e89cf5bf6a4affea5224777c4057bd12ef
parent12c15dd838e9663ffd2f71460feea7b343a7b423 (diff)
modesetting: add platform bus supportplatform
-rw-r--r--src/driver.c42
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)
{