disp: msm: update debug dump for ltm block

Local tone mapping hardware block has defined test points for debug bus.
Change updates the missing test points and enables dumping of the
registers in case of DPU hang.

Change-Id: I5bb5419255e84427c0a1393f8e9322b981eea084
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
This commit is contained in:
Gopikrishnaiah Anandan 2019-09-30 12:15:33 -07:00 committed by Gerrit - the friendly Code Review server
parent 03af5b7083
commit 62e17c125b

View File

@ -45,6 +45,8 @@
#define DBGBUS_PERIPH 0x418
#define TEST_MASK(id, tp) ((id << 4) | (tp << 1) | BIT(0))
#define TEST_EXT_MASK(id, tp) (((tp >> 3) << 24) | (id << 4) \
| ((tp & 0x7) << 1) | BIT(0))
/* following offsets are with respect to MDP VBIF base for DBG BUS access */
#define MMSS_VBIF_CLKON 0x4
@ -271,6 +273,13 @@ static void _sde_debug_bus_ppb0_dump(void __iomem *mem_base,
entry->wr_addr, entry->block_id, entry->test_id, val);
}
static void _sde_debug_bus_ltm_dump(void __iomem *mem_base,
struct sde_debug_bus_entry *entry, u32 val)
{
dev_info(sde_dbg_base.dev, "ltm 0x%x %d %d 0x%x\n",
entry->wr_addr, entry->block_id, entry->test_id, val);
}
static void _sde_debug_bus_ppb1_dump(void __iomem *mem_base,
struct sde_debug_bus_entry *entry, u32 val)
{
@ -1997,23 +2006,47 @@ static struct sde_debug_bus_entry dbg_bus_sde_kona[] = {
{ DBGBUS_DSPP, 9, 0},
/* ltm */
{ DBGBUS_DSPP, 45, 0},
{ DBGBUS_DSPP, 45, 1},
{ DBGBUS_DSPP, 45, 2},
{ DBGBUS_DSPP, 45, 3},
{ DBGBUS_DSPP, 45, 4},
{ DBGBUS_DSPP, 45, 5},
{ DBGBUS_DSPP, 45, 6},
{ DBGBUS_DSPP, 45, 7},
{ DBGBUS_DSPP, 45, 0, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 1, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 2, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 3, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 4, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 5, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 6, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 7, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 8, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 9, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 10, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 11, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 12, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 13, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 14, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 15, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 16, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 17, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 18, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 45, 31, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 0},
{ DBGBUS_DSPP, 46, 1},
{ DBGBUS_DSPP, 46, 2},
{ DBGBUS_DSPP, 46, 3},
{ DBGBUS_DSPP, 46, 4},
{ DBGBUS_DSPP, 46, 5},
{ DBGBUS_DSPP, 46, 6},
{ DBGBUS_DSPP, 46, 7},
{ DBGBUS_DSPP, 46, 0, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 1, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 2, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 3, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 4, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 5, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 6, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 7, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 8, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 9, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 10, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 11, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 12, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 13, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 14, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 15, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 16, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 17, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 18, _sde_debug_bus_ltm_dump},
{ DBGBUS_DSPP, 46, 31, _sde_debug_bus_ltm_dump},
/* blend */
/* LM0 */
@ -3216,7 +3249,11 @@ static void _sde_dbg_dump_sde_dbg_bus(struct sde_dbg_sde_debug_bus *bus)
for (i = 0; i < bus->cmn.entries_size; i++) {
head = bus->entries + i;
writel_relaxed(TEST_MASK(head->block_id, head->test_id),
if (head->test_id > 0x7)
writel_relaxed(TEST_EXT_MASK(head->block_id,
head->test_id), mem_base + head->wr_addr);
else
writel_relaxed(TEST_MASK(head->block_id, head->test_id),
mem_base + head->wr_addr);
wmb(); /* make sure test bits were written */