mmio: refactor reg init/fini
authorBen Widawsky <ben@bwidawsk.net>
Thu, 26 Jan 2012 05:04:16 +0000 (21:04 -0800)
committerBen Widawsky <ben@bwidawsk.net>
Thu, 26 Jan 2012 05:04:16 +0000 (21:04 -0800)
Rearrange register access init and fini so that we properly accomodate
platforms without forcewake.

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
lib/intel_mmio.c

index d050e54..19ea6ad 100644 (file)
@@ -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--;
 }