msm: kgsl: Make VBIF register dump more generic

Make VBIF register dump more generic to avoid adding new entry
for every VBIF revision. There will not be any change in register
mapping and address for new VBIF revision. AHB reads are permitted
throughout entire VBIF range. For all unoccupied registers read
values driven to 0 by HW but should not be relied upon.

CRs-Fixed: 1021711
Change-Id: I5aada474389e9189abcd38f1bc4854ada91dea87
Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
This commit is contained in:
Hareesh Gundu 2016-06-23 14:30:13 +05:30 committed by Carter Cooper
parent 956349c46c
commit 9d0f3261dc
4 changed files with 12 additions and 14 deletions

View file

@ -613,11 +613,13 @@ struct adreno_vbif_platform {
* struct adreno_vbif_snapshot_registers - Holds an array of vbif registers
* listed for snapshot dump for a particular core
* @version: vbif version
* @mask: vbif revision mask
* @registers: vbif registers listed for snapshot dump
* @count: count of vbif registers listed for snapshot
*/
struct adreno_vbif_snapshot_registers {
const unsigned int version;
const unsigned int mask;
const unsigned int *registers;
const int count;
};

View file

@ -168,15 +168,15 @@ static const unsigned int a4xx_vbif_ver_20050000_registers[] = {
static const struct adreno_vbif_snapshot_registers
a4xx_vbif_snapshot_registers[] = {
{ 0x20000000, a4xx_vbif_ver_20000000_registers,
{ 0x20000000, 0xFFFF0000, a4xx_vbif_ver_20000000_registers,
ARRAY_SIZE(a4xx_vbif_ver_20000000_registers)/2},
{ 0x20020000, a4xx_vbif_ver_20020000_registers,
{ 0x20020000, 0xFFFF0000, a4xx_vbif_ver_20020000_registers,
ARRAY_SIZE(a4xx_vbif_ver_20020000_registers)/2},
{ 0x20050000, a4xx_vbif_ver_20050000_registers,
{ 0x20050000, 0xFFFF0000, a4xx_vbif_ver_20050000_registers,
ARRAY_SIZE(a4xx_vbif_ver_20050000_registers)/2},
{ 0x20070000, a4xx_vbif_ver_20020000_registers,
{ 0x20070000, 0xFFFF0000, a4xx_vbif_ver_20020000_registers,
ARRAY_SIZE(a4xx_vbif_ver_20020000_registers)/2},
{ 0x20090000, a4xx_vbif_ver_20050000_registers,
{ 0x20090000, 0xFFFF0000, a4xx_vbif_ver_20050000_registers,
ARRAY_SIZE(a4xx_vbif_ver_20050000_registers)/2},
};

View file

@ -329,8 +329,7 @@ static void a5xx_snapshot_debugbus(struct kgsl_device *device,
}
}
static const unsigned int a5xx_vbif_ver_20040000_registers[] = {
/* VBIF version 0x20040000*/
static const unsigned int a5xx_vbif_ver_20xxxxxx_registers[] = {
0x3000, 0x3007, 0x300C, 0x3014, 0x3018, 0x302C, 0x3030, 0x3030,
0x3034, 0x3036, 0x3038, 0x3038, 0x303C, 0x303D, 0x3040, 0x3040,
0x3042, 0x3042, 0x3049, 0x3049, 0x3058, 0x3058, 0x305A, 0x3061,
@ -344,12 +343,8 @@ static const unsigned int a5xx_vbif_ver_20040000_registers[] = {
static const struct adreno_vbif_snapshot_registers
a5xx_vbif_snapshot_registers[] = {
{ 0x20040000, a5xx_vbif_ver_20040000_registers,
ARRAY_SIZE(a5xx_vbif_ver_20040000_registers)/2},
{ 0x20040001, a5xx_vbif_ver_20040000_registers,
ARRAY_SIZE(a5xx_vbif_ver_20040000_registers)/2},
{ 0x200A0000, a5xx_vbif_ver_20040000_registers,
ARRAY_SIZE(a5xx_vbif_ver_20040000_registers)/2},
{ 0x20000000, 0xFF000000, a5xx_vbif_ver_20xxxxxx_registers,
ARRAY_SIZE(a5xx_vbif_ver_20xxxxxx_registers)/2},
};
/*

View file

@ -1118,7 +1118,8 @@ static const struct adreno_vbif_snapshot_registers *vbif_registers(
adreno_readreg(adreno_dev, ADRENO_REG_VBIF_VERSION, &version);
for (i = 0; i < count; i++) {
if (list[i].version == version)
if ((list[i].version & list[i].mask) ==
(version & list[i].mask))
return &list[i];
}