summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/host/t30/3dctx_t30.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2011-11-04 14:00:13 +0200
committerVarun Colbert <vcolbert@nvidia.com>2011-11-15 11:52:34 -0800
commit2385bc45ef8fb58def46c116673cb11f3ba38c91 (patch)
treefd391de854ba489faf85257c0b2ea94fadd7ba5b /drivers/video/tegra/host/t30/3dctx_t30.c
parenta9d747c7601d7fbb16658746395717be36b34ef3 (diff)
video: tegra: host: Enhance FIFO/GATHER debug_dumptegra-l4t-er-2011-11-16
Enhance nvhost_debug_dump() output, as follows: - Swap FIFO and GATHER dump so that even if GATHER dump blows out seq_printf 1k buffer, we still have FIFO information; - Write FIFO signature pattern (0xd???d???) to indirect save input data to help pinpoint FIFO position within debug dumps; - Prevent long data sequences from blowing out the seq_printf 1k buffer, by limiting such sequences to 64 words. Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/62424 (cherry picked from commit cb37e4212b78546411b33b32044f30feb0579b86) Change-Id: Ia2695c502fa0c7b755ef2ae51260650c7d67bf86 Reviewed-on: http://git-master/r/64061 Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com>
Diffstat (limited to 'drivers/video/tegra/host/t30/3dctx_t30.c')
-rw-r--r--drivers/video/tegra/host/t30/3dctx_t30.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/drivers/video/tegra/host/t30/3dctx_t30.c b/drivers/video/tegra/host/t30/3dctx_t30.c
index 614d079e904e..1678cf91ef4f 100644
--- a/drivers/video/tegra/host/t30/3dctx_t30.c
+++ b/drivers/video/tegra/host/t30/3dctx_t30.c
@@ -85,6 +85,7 @@ static const struct hwctx_reginfo ctxsave_regs_3d_perset[] = {
};
static unsigned int restore_set1_offset;
+
/* the same context save command sequence is used for all contexts. */
static phys_addr_t save_phys;
static unsigned int save_size;
@@ -151,8 +152,8 @@ static void save_push_v1(struct nvhost_cdma *cdma,
ctx->restore_phys);
/* gather the save buffer */
nvhost_cdma_push_gather(cdma,
- cdma_to_channel(cdma)->dev->nvmap,
- nvmap_ref_to_handle(nvhost_3dctx_save_buf),
+ (void *)NVHOST_CDMA_PUSH_GATHER_CTXSAVE,
+ (void *)NVHOST_CDMA_PUSH_GATHER_CTXSAVE,
nvhost_opcode_gather(save_size),
save_phys);
}
@@ -272,7 +273,17 @@ static void __init setup_save_regs(struct save_info *info,
break;
}
if (ptr) {
- memset(ptr, 0, count * 4);
+ /* SAVE cases only: reserve room for incoming data */
+ u32 k = 0;
+ /*
+ * Create a signature pattern for indirect data (which
+ * will be overwritten by true incoming data) for
+ * better deducing where we are in a long command
+ * sequence, when given only a FIFO snapshot for debug
+ * purposes.
+ */
+ for (k = 0; k < count; k++)
+ *(ptr + k) = 0xd000d000 | (offset << 16) | k;
ptr += count;
}
save_count += count;
@@ -402,8 +413,6 @@ static struct nvhost_hwctx *ctx3d_alloc_v1(struct nvhost_channel *ch)
return nvhost_3dctx_alloc_common(ch, false);
}
-/*** savers ***/
-
int __init t30_nvhost_3dctx_handler_init(struct nvhost_hwctx_handler *h)
{
struct nvhost_channel *ch;