drm/msm: clarify downstream bus scaling
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / msm / adreno / adreno_gpu.c
index bbdcab0a56c1734d672457623d0eb071b881ceda..031579e1481fec41809e6ce7dd49a01f5df37d4b 100644 (file)
@@ -249,8 +249,13 @@ void adreno_show(struct msm_gpu *gpu, struct seq_file *m)
 }
 #endif
 
-/* would be nice to not have to duplicate the _show() stuff with printk(): */
-void adreno_dump(struct msm_gpu *gpu)
+/* Dump common gpu status and scratch registers on any hang, to make
+ * the hangcheck logs more useful.  The scratch registers seem always
+ * safe to read when GPU has hung (unlike some other regs, depending
+ * on how the GPU hung), and they are useful to match up to cmdstream
+ * dumps when debugging hangs:
+ */
+void adreno_dump_info(struct msm_gpu *gpu)
 {
        struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
        int i;
@@ -266,6 +271,18 @@ void adreno_dump(struct msm_gpu *gpu)
        printk("wptr:     %d\n", adreno_gpu->memptrs->wptr);
        printk("rb wptr:  %d\n", get_wptr(gpu->rb));
 
+       for (i = 0; i < 8; i++) {
+               printk("CP_SCRATCH_REG%d: %u\n", i,
+                       gpu_read(gpu, REG_AXXX_CP_SCRATCH_REG0 + i));
+       }
+}
+
+/* would be nice to not have to duplicate the _show() stuff with printk(): */
+void adreno_dump(struct msm_gpu *gpu)
+{
+       struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
+       int i;
+
        /* dump these out in a form that can be parsed by demsm: */
        printk("IO:region %s 00000000 00020000\n", gpu->name);
        for (i = 0; adreno_gpu->registers[i] != ~0; i += 2) {
@@ -317,7 +334,7 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
        gpu->fast_rate = config->fast_rate;
        gpu->slow_rate = config->slow_rate;
        gpu->bus_freq  = config->bus_freq;
-#ifdef CONFIG_MSM_BUS_SCALING
+#ifdef DOWNSTREAM_CONFIG_MSM_BUS_SCALING
        gpu->bus_scale_table = config->bus_scale_table;
 #endif