summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2012-07-22 17:24:08 +0300
committerAlon Levy <alevy@redhat.com>2012-10-23 18:46:58 +0200
commit80675313563b28158de8773cf2ca156ef573200d (patch)
tree62c9c467889eb2b53e6aaee02f1126ce465eab76
parent57a5f8167fb7c86722215ed1255ebfbd82a04318 (diff)
qxl: add cb reset_and_create_mem_slots
-rw-r--r--src/qxl.h2
-rw-r--r--src/qxl_driver.c45
2 files changed, 29 insertions, 18 deletions
diff --git a/src/qxl.h b/src/qxl.h
index 599f102..c0b5625 100644
--- a/src/qxl.h
+++ b/src/qxl.h
@@ -238,6 +238,8 @@ struct _qxl_screen_t
int drm_fd;
+ void (*reset_and_create_mem_slots)(qxl_screen_t *qxl);
+
#ifdef XSPICE
/* XSpice specific */
struct QXLRom shadow_rom; /* Parameter RAM */
diff --git a/src/qxl_driver.c b/src/qxl_driver.c
index 88156d0..976d9e0 100644
--- a/src/qxl_driver.c
+++ b/src/qxl_driver.c
@@ -806,8 +806,16 @@ setup_slot (qxl_screen_t *qxl, uint8_t slot_index_offset,
return slot_index;
}
+#ifndef XSPICE
+static void
+qxl_kms_reset_and_create_mem_slots (qxl_screen_t *qxl)
+{
+ // nop
+}
+#endif
+
static void
-qxl_reset_and_create_mem_slots (qxl_screen_t *qxl)
+qxl_ums_reset_and_create_mem_slots (qxl_screen_t *qxl)
{
ioport_write (qxl, QXL_IO_RESET, 0);
qxl->device_primary = QXL_DEVICE_PRIMARY_NONE;
@@ -892,8 +900,8 @@ qxl_close_screen (CLOSE_SCREEN_ARGS_DECL)
result = pScreen->CloseScreen (CLOSE_SCREEN_ARGS);
#ifndef XSPICE
- if (!xf86IsPrimaryPci (qxl->pci) && qxl->primary)
- qxl_reset_and_create_mem_slots (qxl);
+ if (!xf86IsPrimaryPci(qxl->pci) && qxl->primary)
+ qxl->reset_and_create_mem_slots(qxl);
#endif
if (pScrn->vtSema)
@@ -1799,9 +1807,9 @@ qxl_screen_init (SCREEN_INIT_ARGS_DECL)
qxl->uxa = uxa_driver_alloc ();
/* Set up resources */
- qxl_reset_and_create_mem_slots (qxl);
- ErrorF ("done reset\n");
-
+ qxl->reset_and_create_mem_slots(qxl);
+ ErrorF("done reset\n");
+
#ifndef XSPICE
qxl->io_pages = (void *)((unsigned long)qxl->ram);
qxl->io_pages_physical = (void *)((unsigned long)qxl->ram_physical);
@@ -1888,18 +1896,17 @@ qxl_enter_vt (VT_FUNC_ARGS_DECL)
{
SCRN_INFO_PTR (arg);
qxl_screen_t *qxl = pScrn->driverPrivate;
-
- qxl_save_state (pScrn);
-
- qxl_reset_and_create_mem_slots (qxl);
-
- if (!qxl_resize_primary_to_virtual (qxl))
- return FALSE;
-
- if (qxl->mem)
- {
- qxl_mem_free_all (qxl->mem);
- qxl_drop_image_cache (qxl);
+
+ qxl_save_state(pScrn);
+
+ qxl->reset_and_create_mem_slots(qxl);
+
+ if (!qxl_resize_primary_to_virtual(qxl))
+ return FALSE;
+
+ if (qxl->mem) {
+ qxl_mem_free_all(qxl->mem);
+ qxl_drop_image_cache(qxl);
}
if (qxl->surf_mem)
@@ -2382,12 +2389,14 @@ qxl_initialize_x_modes (qxl_screen_t *qxl, ScrnInfoPtr pScrn,
static void
set_callbacks_to_ums(qxl_screen_t *qxl)
{
+ qxl->reset_and_create_mem_slots = qxl_ums_reset_and_create_mem_slots;
}
#ifndef XSPICE
static void
set_callbacks_to_kms(qxl_screen_t *qxl)
{
+ qxl->reset_and_create_mem_slots = qxl_kms_reset_and_create_mem_slots;
}
#endif