[PATCH xf86-video-qxl 1/3] Add support for XSERVER_PLATFORM_BUS

Hans de Goede hdegoede at redhat.com
Thu Apr 24 02:27:02 PDT 2014


This is a preparation patch for adding support for server managed fds.

Signed-off-by: Hans de Goede <hdegoede at redhat.com>
---
 src/qxl.h        |  6 ++++++
 src/qxl_driver.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/src/qxl.h b/src/qxl.h
index a44875b..19555ba 100644
--- a/src/qxl.h
+++ b/src/qxl.h
@@ -50,6 +50,9 @@
 #ifdef XSERVER_PCIACCESS
 #include "pciaccess.h"
 #endif
+#ifdef XSERVER_PLATFORM_BUS
+#include "xf86platformBus.h"
+#endif
 #include "fb.h"
 #include "vgaHW.h"
 #endif /* XSPICE */
@@ -66,6 +69,8 @@ typedef struct list xorg_list_t;
 typedef struct xorg_list xorg_list_t;
 #endif
 
+struct xf86_platform_device;
+
 #include "compat-api.h"
 #define hidden _X_HIDDEN
 
@@ -271,6 +276,7 @@ struct _qxl_screen_t
     pciVideoPtr			pci;
     PCITAG			pci_tag;
 #endif
+    struct xf86_platform_device *platform_dev;
     vgaRegRec                   vgaRegs;
 #endif /* XSPICE */
 
diff --git a/src/qxl_driver.c b/src/qxl_driver.c
index aa969e8..8aef838 100644
--- a/src/qxl_driver.c
+++ b/src/qxl_driver.c
@@ -1387,6 +1387,41 @@ qxl_pci_probe (DriverPtr drv, int entity, struct pci_device *dev, intptr_t match
 #define qxl_probe NULL
 
 #endif
+
+#ifdef XSERVER_PLATFORM_BUS
+static Bool
+qxl_platform_probe(DriverPtr driver, int entity, int flags,
+                   struct xf86_platform_device *dev, intptr_t match_data)
+{
+    qxl_screen_t *qxl;
+    ScrnInfoPtr pScrn;
+    int scrnFlag = 0;
+
+    if (!dev->pdev)
+        return FALSE;
+
+    if (flags & PLATFORM_PROBE_GPU_SCREEN)
+        scrnFlag = XF86_ALLOCATE_GPU_SCREEN;
+
+    pScrn = xf86AllocateScreen(driver, scrnFlag);
+    if (!pScrn)
+	return FALSE;
+
+    if (xf86IsEntitySharable(entity))
+        xf86SetEntityShared(entity);
+
+    xf86AddEntityToScreen(pScrn, entity);
+
+    qxl = pScrn->driverPrivate = xnfcalloc (sizeof (qxl_screen_t), 1);
+    qxl->pci = dev->pdev;
+    qxl->platform_dev = dev;
+
+    qxl_init_scrn (pScrn, qxl_kernel_mode_enabled(pScrn, dev->pdev));
+
+    return TRUE;
+}
+#endif /* XSERVER_PLATFORM_BUS */
+
 #endif /* XSPICE */
 
 static DriverRec qxl_driver = {
@@ -1400,12 +1435,21 @@ static DriverRec qxl_driver = {
 #ifdef XSPICE
     qxl_driver_func,
     NULL,
-    NULL
+    NULL,
+    NULL,
 #else
     NULL,
 #ifdef XSERVER_LIBPCIACCESS
     qxl_device_match,
-    qxl_pci_probe
+    qxl_pci_probe,
+#else
+    NULL,
+    NULL,
+#endif
+#ifdef XSERVER_PLATFORM_BUS
+    qxl_platform_probe,
+#else
+    NULL,
 #endif
 #endif /* XSPICE */
 };
-- 
1.9.0



More information about the xorg-devel mailing list