Merge "msm: kgsl: Dump the A6XX SQE firmware version in the snapshot" into msm-4.9
diff --git a/drivers/gpu/msm/adreno_a6xx_snapshot.c b/drivers/gpu/msm/adreno_a6xx_snapshot.c
index f2a7963..e501a68 100644
--- a/drivers/gpu/msm/adreno_a6xx_snapshot.c
+++ b/drivers/gpu/msm/adreno_a6xx_snapshot.c
@@ -1166,6 +1166,28 @@
snapshot, a6xx_snapshot_dump_gmu_registers, &gmu_regs);
}
+/* a6xx_snapshot_sqe() - Dump SQE data in snapshot */
+static size_t a6xx_snapshot_sqe(struct kgsl_device *device, u8 *buf,
+ size_t remain, void *priv)
+{
+ struct adreno_device *adreno_dev = ADRENO_DEVICE(device);
+ struct kgsl_snapshot_debug *header = (struct kgsl_snapshot_debug *)buf;
+ unsigned int *data = (unsigned int *)(buf + sizeof(*header));
+ struct adreno_firmware *fw = ADRENO_FW(adreno_dev, ADRENO_FW_SQE);
+
+ if (remain < DEBUG_SECTION_SZ(1)) {
+ SNAPSHOT_ERR_NOMEM(device, "SQE VERSION DEBUG");
+ return 0;
+ }
+
+ /* Dump the SQE firmware version */
+ header->type = SNAPSHOT_DEBUG_SQE_VERSION;
+ header->size = 1;
+ *data = fw->version;
+
+ return DEBUG_SECTION_SZ(1);
+}
+
static void _a6xx_do_crashdump(struct kgsl_device *device)
{
unsigned long wait_time;
@@ -1255,6 +1277,10 @@
snapshot, adreno_snapshot_cp_roq,
&snap_data->sect_sizes->roq);
+ /* SQE Firmware */
+ kgsl_snapshot_add_section(device, KGSL_SNAPSHOT_SECTION_DEBUG,
+ snapshot, a6xx_snapshot_sqe, NULL);
+
/* Mempool debug data */
a6xx_snapshot_mempool(device, snapshot);
diff --git a/drivers/gpu/msm/kgsl_snapshot.h b/drivers/gpu/msm/kgsl_snapshot.h
index d2ff8f1..340a7db 100644
--- a/drivers/gpu/msm/kgsl_snapshot.h
+++ b/drivers/gpu/msm/kgsl_snapshot.h
@@ -225,6 +225,7 @@
#define SNAPSHOT_DEBUG_CP_ROQ 10
#define SNAPSHOT_DEBUG_SHADER_MEMORY 11
#define SNAPSHOT_DEBUG_CP_MERCIU 12
+#define SNAPSHOT_DEBUG_SQE_VERSION 14
struct kgsl_snapshot_debug {
int type; /* Type identifier for the attached tata */