From 4c20525b7f50fa0c0bb5579d49f7bc4907698da0 Mon Sep 17 00:00:00 2001 From: Ben Widawsky Date: Wed, 25 Jan 2012 21:04:16 -0800 Subject: mmio: refactor reg init/fini Rearrange register access init and fini so that we properly accomodate platforms without forcewake. Signed-off-by: Ben Widawsky --- lib/intel_mmio.c | 17 +++++++++++------ 1 file 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--; } -- cgit v1.2.3