Commit fed02893 authored by Thierry Reding's avatar Thierry Reding
Browse files

gpu: host1x: debug: Dump DMASTART and DMAEND register



Show the values of the DMASTART and DMAEND registers when dumping status
to help with failure analysis.

Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent afa770fe
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -16,10 +16,13 @@ static void host1x_debug_show_channel_cdma(struct host1x *host,
					   struct output *o)
{
	struct host1x_cdma *cdma = &ch->cdma;
	dma_addr_t dmastart, dmaend;
	u32 dmaput, dmaget, dmactrl;
	u32 cbstat, cbread;
	u32 val, base, baseval;

	dmastart = host1x_ch_readl(ch, HOST1X_CHANNEL_DMASTART);
	dmaend = host1x_ch_readl(ch, HOST1X_CHANNEL_DMAEND);
	dmaput = host1x_ch_readl(ch, HOST1X_CHANNEL_DMAPUT);
	dmaget = host1x_ch_readl(ch, HOST1X_CHANNEL_DMAGET);
	dmactrl = host1x_ch_readl(ch, HOST1X_CHANNEL_DMACTRL);
@@ -56,9 +59,10 @@ static void host1x_debug_show_channel_cdma(struct host1x *host,
				    HOST1X_SYNC_CBSTAT_CBOFFSET_V(cbstat),
				    cbread);

	host1x_debug_output(o, "DMAPUT %08x, DMAGET %08x, DMACTL %08x\n",
	host1x_debug_output(o, "DMASTART %pad, DMAEND %pad\n", &dmastart, &dmaend);
	host1x_debug_output(o, "DMAPUT %08x DMAGET %08x DMACTL %08x\n",
			    dmaput, dmaget, dmactrl);
	host1x_debug_output(o, "CBREAD %08x, CBSTAT %08x\n", cbread, cbstat);
	host1x_debug_output(o, "CBREAD %08x CBSTAT %08x\n", cbread, cbstat);

	show_channel_gathers(o, cdma);
	host1x_debug_output(o, "\n");
+15 −1
Original line number Diff line number Diff line
@@ -16,10 +16,23 @@ static void host1x_debug_show_channel_cdma(struct host1x *host,
					   struct output *o)
{
	struct host1x_cdma *cdma = &ch->cdma;
	dma_addr_t dmastart = 0, dmaend = 0;
	u32 dmaput, dmaget, dmactrl;
	u32 offset, class;
	u32 ch_stat;

#if defined(CONFIG_ARCH_DMA_ADDR_T_64BIT) && HOST1X_HW >= 6
	dmastart = host1x_ch_readl(ch, HOST1X_CHANNEL_DMASTART_HI);
	dmastart <<= 32;
#endif
	dmastart |= host1x_ch_readl(ch, HOST1X_CHANNEL_DMASTART);

#if defined(CONFIG_ARCH_DMA_ADDR_T_64BIT) && HOST1X_HW >= 6
	dmaend = host1x_ch_readl(ch, HOST1X_CHANNEL_DMAEND_HI);
	dmaend <<= 32;
#endif
	dmaend |= host1x_ch_readl(ch, HOST1X_CHANNEL_DMAEND);

	dmaput = host1x_ch_readl(ch, HOST1X_CHANNEL_DMAPUT);
	dmaget = host1x_ch_readl(ch, HOST1X_CHANNEL_DMAGET);
	dmactrl = host1x_ch_readl(ch, HOST1X_CHANNEL_DMACTRL);
@@ -41,7 +54,8 @@ static void host1x_debug_show_channel_cdma(struct host1x *host,
		host1x_debug_output(o, "active class %02x, offset %04x\n",
				    class, offset);

	host1x_debug_output(o, "DMAPUT %08x, DMAGET %08x, DMACTL %08x\n",
	host1x_debug_output(o, "DMASTART %pad, DMAEND %pad\n", &dmastart, &dmaend);
	host1x_debug_output(o, "DMAPUT %08x DMAGET %08x DMACTL %08x\n",
			    dmaput, dmaget, dmactrl);
	host1x_debug_output(o, "CHANNELSTAT %02x\n", ch_stat);