gfx: pvr: add sgx_save_registers_no_pwron
authorImre Deak <imre.deak@intel.com>
Fri, 18 Nov 2011 14:38:03 +0000 (16:38 +0200)
committerMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Tue, 3 Jul 2012 09:28:39 +0000 (12:28 +0300)
Needed by the upcoming patch.

Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
drivers/staging/mrst/pvr/pvr_debug_core.c
drivers/staging/mrst/pvr/pvr_debug_core.h

index 511fdf0..6914901 100644 (file)
@@ -113,3 +113,31 @@ int sgx_trigger_reset(PVRSRV_DEVICE_NODE *dev_node)
 
        return r;
 }
+
+void sgx_save_registers_no_pwron(PVRSRV_DEVICE_NODE *dev_node,
+                                struct sgx_registers *regs)
+{
+       int reg;
+
+       for (reg = 0; reg < ARRAY_SIZE(regs->v); reg++)
+               regs->v[reg] = sgx_read_reg(dev_node, reg * 4);
+}
+
+int sgx_save_registers(PVRSRV_DEVICE_NODE *dev_node, struct sgx_registers *regs)
+{
+       PVRSRV_ERROR err;
+
+       err = PVRSRVSetDevicePowerStateKM(dev_node->sDevId.ui32DeviceIndex,
+                                         PVRSRV_DEV_POWER_STATE_ON,
+                                         KERNEL_ID, IMG_TRUE);
+       if (err != PVRSRV_OK)
+               return -EIO;
+
+       sgx_save_registers_no_pwron(dev_node, regs);
+
+       PVRSRVPowerUnlock(KERNEL_ID);
+       /* power down if no activity */
+       SGXTestActivePowerEvent(dev_node, KERNEL_ID);
+
+       return 0;
+}
index db399fd..4117056 100644 (file)
@@ -20,5 +20,9 @@ int sgx_print_fw_trace_rec(char *buf, size_t buf_size,
 int sgx_save_fw_state(PVRSRV_DEVICE_NODE *dev_node, struct sgx_fw_state *state);
 void sgx_dump_fw_state(PVRSRV_DEVICE_NODE *dev_node);
 int sgx_trigger_reset(PVRSRV_DEVICE_NODE *dev_node);
+void sgx_save_registers_no_pwron(PVRSRV_DEVICE_NODE *dev_node,
+                                struct sgx_registers *regs);
+int sgx_save_registers(PVRSRV_DEVICE_NODE *dev_node,
+                       struct sgx_registers *regs);
 
 #endif