Module Name: src
Committed By: riastradh
Date: Sun Sep 8 16:22:29 UTC 2013
Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [riastradh-drm2]: i915_dma.c
Log Message:
Use the cached mmio bar information to map the GTT.
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1.2.28 -r1.1.1.1.2.29 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.1.1.1.2.28 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.1.1.1.2.29
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.1.1.1.2.28 Sun Sep 8 16:03:21 2013
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c Sun Sep 8 16:22:29 2013
@@ -1599,23 +1599,21 @@ int i915_driver_load(struct drm_device *
mmio_size = 2*1024*1024;
#ifdef __NetBSD__
- /* XXX Maybe it would be better to just use pci_mapreg_map... */
- {
- bus_addr_t addr;
- bus_size_t size;
-
- if (pci_mapreg_info(dev->pdev->pd_pa.pa_pc,
- dev->pdev->pd_pa.pa_tag, PCI_BAR(mmio_bar),
- PCI_MAPREG_TYPE_MEM,
- &addr, &size, NULL /* XXX flags? */)) {
- ret = -EIO; /* XXX */
- goto put_gmch;
- }
+ if (dev->bus_maps[mmio_bar].bm_size < mmio_size) {
+ DRM_ERROR("MMIO BAR %d is too small"
+ ": %"PRIxMAX" < %"PRIxMAX"\n",
+ mmio_bar,
+ (uintmax_t)dev->bus_maps[mmio_bar].bm_size,
+ (uintmax_t)mmio_size);
+ ret = -EIO;
+ goto put_gmch;
+ }
- ret = drm_addmap(dev, addr, size, _DRM_REGISTERS,
- (_DRM_KERNEL | _DRM_DRIVER), &dev_priv->regs_map);
- if (ret)
- goto put_gmch;
+ ret = drm_addmap(dev, dev->bus_maps[mmio_bar].bm_base, mmio_size,
+ _DRM_REGISTERS, (_DRM_KERNEL | _DRM_DRIVER), &dev_priv->regs_map);
+ if (ret) {
+ DRM_ERROR("Failed to map MMIO BAR %d: %d\n", mmio_bar, ret);
+ goto put_gmch;
}
#else
dev_priv->regs = pci_iomap(dev->pdev, mmio_bar, mmio_size);