summaryrefslogtreecommitdiff
path: root/lib/intel_mmio.c
diff options
context:
space:
mode:
authorBen Widawsky <ben@bwidawsk.net>2012-01-25 21:04:16 -0800
committerBen Widawsky <ben@bwidawsk.net>2012-01-25 21:04:16 -0800
commit4c20525b7f50fa0c0bb5579d49f7bc4907698da0 (patch)
tree2239f0d4bed45e2d2c7c52ada481aa1b22eeb7cf /lib/intel_mmio.c
parent802bd74c5f9526faccfdf168b06c0c2c44237840 (diff)
mmio: refactor reg init/fini
Rearrange register access init and fini so that we properly accomodate platforms without forcewake. Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Diffstat (limited to 'lib/intel_mmio.c')
-rw-r--r--lib/intel_mmio.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/intel_mmio.c b/lib/intel_mmio.c
index d050e548..19ea6ad8 100644
--- a/lib/intel_mmio.c
+++ b/lib/intel_mmio.c
@@ -167,6 +167,13 @@ intel_register_access_init(struct pci_device *pci_dev, int safe)
return -1;
mmio_data.safe = safe != 0 ? true : false;
+ mmio_data.i915_devid = pci_dev->device_id;
+ if (mmio_data.safe)
+ mmio_data.map = intel_get_register_map(mmio_data.i915_devid);
+
+ if (!(IS_GEN6(pci_dev->device_id) ||
+ IS_GEN7(pci_dev->device_id)))
+ goto done;
/* Find where the forcewake lock is */
ret = find_debugfs_path("/sys/kernel/debug/dri");
@@ -177,12 +184,9 @@ intel_register_access_init(struct pci_device *pci_dev, int safe)
return ret;
}
}
-
- mmio_data.i915_devid = pci_dev->device_id;
- if (mmio_data.safe)
- mmio_data.map = intel_get_register_map(mmio_data.i915_devid);
-
mmio_data.key = get_forcewake_lock();
+
+done:
mmio_data.inited++;
return 0;
}
@@ -190,7 +194,8 @@ intel_register_access_init(struct pci_device *pci_dev, int safe)
void
intel_register_access_fini(void)
{
- release_forcewake_lock(mmio_data.key);
+ if (mmio_data.key)
+ release_forcewake_lock(mmio_data.key);
mmio_data.inited--;
}