diff options
author | Ben Widawsky <ben@bwidawsk.net> | 2012-01-25 21:04:16 -0800 |
---|---|---|
committer | Ben Widawsky <ben@bwidawsk.net> | 2012-01-25 21:04:16 -0800 |
commit | 4c20525b7f50fa0c0bb5579d49f7bc4907698da0 (patch) | |
tree | 2239f0d4bed45e2d2c7c52ada481aa1b22eeb7cf | |
parent | 802bd74c5f9526faccfdf168b06c0c2c44237840 (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>
-rw-r--r-- | lib/intel_mmio.c | 17 |
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--; } |