diff options
author | Ben Widawsky <ben@bwidawsk.net> | 2013-02-21 22:05:36 -0800 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2013-04-16 14:06:02 -0700 |
commit | a59b0ee5d403630152fd720cd9dde2846424bd8a (patch) | |
tree | 1212d9b6d36dd3c482bcb6daf3192883eda9fca9 /tools/quick_dump | |
parent | 67ed990604254af6a2cb3aa4d128dabb7714f3e2 (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/quick_dump')
-rw-r--r-- | tools/quick_dump/chipset.i | 2 | ||||
-rwxr-xr-x | tools/quick_dump/reg_access.py | 23 |
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__": |