mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-12 02:16:17 +00:00
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>
This commit is contained in:
parent
67ed990604
commit
a59b0ee5d4
@ -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_read(uint32_t reg);
|
||||||
extern uint32_t intel_register_write(uint32_t reg, uint32_t val);
|
extern uint32_t intel_register_write(uint32_t reg, uint32_t val);
|
||||||
extern void intel_register_access_fini();
|
extern void intel_register_access_fini();
|
||||||
|
extern int intel_register_access_needs_wake();
|
||||||
extern unsigned short pcidev_to_devid(struct pci_device *pci_dev);
|
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_read(uint32_t reg);
|
||||||
extern uint32_t intel_register_write(uint32_t reg, uint32_t val);
|
extern uint32_t intel_register_write(uint32_t reg, uint32_t val);
|
||||||
extern void intel_register_access_fini();
|
extern void intel_register_access_fini();
|
||||||
|
extern int intel_register_access_needs_wake();
|
||||||
extern unsigned short pcidev_to_devid(struct pci_device *pci_dev);
|
extern unsigned short pcidev_to_devid(struct pci_device *pci_dev);
|
||||||
|
@ -9,12 +9,35 @@ def read(reg):
|
|||||||
def write(reg, val):
|
def write(reg, val):
|
||||||
chipset.intel_register_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():
|
def init():
|
||||||
pci_dev = chipset.intel_get_pci_device()
|
pci_dev = chipset.intel_get_pci_device()
|
||||||
ret = chipset.intel_register_access_init(pci_dev, 0)
|
ret = chipset.intel_register_access_init(pci_dev, 0)
|
||||||
if ret != 0:
|
if ret != 0:
|
||||||
print("Register access init failed");
|
print("Register access init failed");
|
||||||
return False
|
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
|
return True
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user