summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorBen Widawsky <ben@bwidawsk.net>2013-02-21 22:05:36 -0800
committerJesse Barnes <jbarnes@virtuousgeek.org>2013-04-16 14:06:02 -0700
commita59b0ee5d403630152fd720cd9dde2846424bd8a (patch)
tree1212d9b6d36dd3c482bcb6daf3192883eda9fca9 /tools
parent67ed990604254af6a2cb3aa4d128dabb7714f3e2 (diff)
reg_access: Forcewake as necessary
Don't try to be smart. Just poke all forcewake bits if it seems we need it. Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Diffstat (limited to 'tools')
-rw-r--r--tools/quick_dump/chipset.i2
-rwxr-xr-xtools/quick_dump/reg_access.py23
2 files changed, 25 insertions, 0 deletions
diff --git a/tools/quick_dump/chipset.i b/tools/quick_dump/chipset.i
index e1f262d4..36e7f4cd 100644
--- a/tools/quick_dump/chipset.i
+++ b/tools/quick_dump/chipset.i
@@ -12,6 +12,7 @@ extern int intel_register_access_init(struct pci_device *pci_dev, int safe);
extern uint32_t intel_register_read(uint32_t reg);
extern uint32_t intel_register_write(uint32_t reg, uint32_t val);
extern void intel_register_access_fini();
+extern int intel_register_access_needs_wake();
extern unsigned short pcidev_to_devid(struct pci_device *pci_dev);
%}
@@ -23,4 +24,5 @@ extern int intel_register_access_init(struct pci_device *pci_dev, int safe);
extern uint32_t intel_register_read(uint32_t reg);
extern uint32_t intel_register_write(uint32_t reg, uint32_t val);
extern void intel_register_access_fini();
+extern int intel_register_access_needs_wake();
extern unsigned short pcidev_to_devid(struct pci_device *pci_dev);
diff --git a/tools/quick_dump/reg_access.py b/tools/quick_dump/reg_access.py
index e064c99c..b7f3100d 100755
--- a/tools/quick_dump/reg_access.py
+++ b/tools/quick_dump/reg_access.py
@@ -9,12 +9,35 @@ def read(reg):
def write(reg, val):
chipset.intel_register_write(reg, val)
+def gen6_forcewake_get():
+ write(0xa18c, 0x1)
+ read("0xa180")
+
+def mt_forcewake_get():
+ write(0xa188, 0x10001)
+ read("0xa180")
+
+def vlv_forcewake_get():
+ write(0x1300b0, 0x10001)
+ read("0x1300b4")
+
+# don't be clever, just try all possibilities
+def get_wake():
+ gen6_forcewake_get()
+ mt_forcewake_get()
+ vlv_forcewake_get()
+
def init():
pci_dev = chipset.intel_get_pci_device()
ret = chipset.intel_register_access_init(pci_dev, 0)
if ret != 0:
print("Register access init failed");
return False
+
+ if chipset.intel_register_access_needs_wake():
+ print("Forcing forcewake. Don't expect your system to work after this.")
+ get_wake()
+
return True
if __name__ == "__main__":