Module Name: xsrc
Committed By: macallan
Date: Wed Jan 4 23:55:43 UTC 2017
Modified Files:
xsrc/external/mit/xf86-video-chips/dist/src: ct_driver.c
Log Message:
pci_device_map_legacy() doesn't help us when we need to map VL ranges - just
call mmap() directly on consoleFd for those. Now this works again on shark.
To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 \
xsrc/external/mit/xf86-video-chips/dist/src/ct_driver.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: xsrc/external/mit/xf86-video-chips/dist/src/ct_driver.c
diff -u xsrc/external/mit/xf86-video-chips/dist/src/ct_driver.c:1.24 xsrc/external/mit/xf86-video-chips/dist/src/ct_driver.c:1.25
--- xsrc/external/mit/xf86-video-chips/dist/src/ct_driver.c:1.24 Wed Nov 2 15:56:01 2016
+++ xsrc/external/mit/xf86-video-chips/dist/src/ct_driver.c Wed Jan 4 23:55:43 2017
@@ -77,6 +77,10 @@
#include "xf86_OSproc.h"
#include "xf86Priv.h"
+#if defined(HAVE_ISA)
+#include <sys/mman.h>
+#endif
+
/* Everything using inb/outb, etc needs "compiler.h" */
#include "compiler.h"
@@ -770,8 +774,10 @@ CHIPSAvailableOptions(int chipid, int bu
#ifdef HAVE_ISA
if (busid == BUS_ISA) {
- if ((chip == CHIPS_CT64200) || (chip == CHIPS_CT64300))
+ if ((chip == CHIPS_CT64200) || (chip == CHIPS_CT64300)) {
return ChipsWingineOptions;
+ } else if ((chip >= CHIPS_CT65550) && (chip <= CHIPS_CT69030))
+ return ChipsHiQVOptions;
}
#endif
if (busid == BUS_PCI) {
@@ -4062,7 +4068,7 @@ CHIPSScreenInit(SCREEN_INIT_ARGS_DECL)
miDCInitialize (pScreen, xf86GetPointerScreenFuncs());
} else
-#endif /* HAVE_ISA */
+#endif /* USE_MIBANK */
{
/* !!! Only support linear addressing for now. This might change */
/* Setup pointers to free space in video ram */
@@ -6861,14 +6867,16 @@ chipsMapMem(ScrnInfoPtr pScrn)
PCI_DEV_MAP_FLAG_WRITABLE,
result);
} else {
- err = pci_device_map_legacy(cPtr->PciInfo,
- cPtr->IOAddress,
- 0x00020000U,
- PCI_DEV_MAP_FLAG_WRITABLE,
- result);
+ *result = mmap(NULL,
+ 0x00020000U,
+ PROT_READ | PROT_WRITE,
+ MAP_SHARED,
+ xf86Info.consoleFd,
+ cPtr->IOAddress);
+ err = (*result == MAP_FAILED);
}
if (err) {
- xf86Msg(X_ERROR, "PCI mmap failed\n");
+ xf86Msg(X_ERROR, "PCI mmap registers failed\n");
return FALSE;
}
}
@@ -6894,11 +6902,13 @@ chipsMapMem(ScrnInfoPtr pScrn)
PCI_DEV_MAP_FLAG_WRITABLE,
result);
} else {
- err = pci_device_map_legacy(cPtr->PciInfo,
- cPtr->IOAddress,
- 0x00010000U,
- PCI_DEV_MAP_FLAG_WRITABLE,
- result);
+ *result = mmap(NULL,
+ 0x00010000U,
+ PROT_READ | PROT_WRITE,
+ MAP_SHARED,
+ xf86Info.consoleFd,
+ cPtr->IOAddress);
+ err = (*result == MAP_FAILED);
}
if (err) {
xf86Msg(X_ERROR, "PCI mmap failed\n");
@@ -6950,12 +6960,13 @@ chipsMapMem(ScrnInfoPtr pScrn)
PCI_DEV_MAP_FLAG_WRITE_COMBINE,
result);
} else
- err = pci_device_map_legacy(cPtr->PciInfo,
- Addr,
- Map,
- PCI_DEV_MAP_FLAG_WRITABLE |
- PCI_DEV_MAP_FLAG_WRITE_COMBINE,
- result);
+ *result = mmap(NULL,
+ Map,
+ PROT_READ | PROT_WRITE,
+ MAP_SHARED,
+ xf86Info.consoleFd,
+ Addr);
+ err = (*result == MAP_FAILED);
if (err) {
xf86Msg(X_ERROR, "PCI mmap fb failed\n");
return FALSE;