forked from Minki/linux
dmaengine: ti: k3-udma: Implement custom dbg_summary_show for debugfs
With the custom dbg_summary_show the driver can show useful information about the used channels. dma0 (285c0000.dma-controller): number of channels: 24 dma1 (31150000.dma-controller): number of channels: 84 dma1chan0 | 2b00000.mcasp:tx (MEM_TO_DEV, tchan16 [0x1010 -> 0xc400], PDMA[ ACC32 BURST ], TR mode) dma1chan1 | 2b00000.mcasp:rx (DEV_TO_MEM, rchan16 [0x4400 -> 0x9010], PDMA[ ACC32 BURST ], TR mode) dma1chan2 | 2ba0000.mcasp:tx (MEM_TO_DEV, tchan17 [0x1011 -> 0xc507], PDMA[ ACC32 BURST ], TR mode) dma1chan3 | 2ba0000.mcasp:rx (DEV_TO_MEM, rchan17 [0x4507 -> 0x9011], PDMA[ ACC32 BURST ], TR mode) dma1chan4 | in-use (MEM_TO_MEM, chan0 pair [0x1000 -> 0x9000], PSI-L Native, TR mode) dma1chan5 | in-use (MEM_TO_MEM, chan1 pair [0x1001 -> 0x9001], PSI-L Native, TR mode) dma1chan6 | in-use (MEM_TO_MEM, chan4 pair [0x1004 -> 0x9004], PSI-L Native, TR mode) dma1chan7 | in-use (MEM_TO_MEM, chan5 pair [0x1005 -> 0x9005], PSI-L Native, TR mode) Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Link: https://lore.kernel.org/r/20200306142839.17910-3-peter.ujfalusi@ti.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
e937cc1dd7
commit
db8d9b4c9b
@ -3276,6 +3276,66 @@ static int udma_setup_resources(struct udma_dev *ud)
|
||||
return ch_count;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
static void udma_dbg_summary_show_chan(struct seq_file *s,
|
||||
struct dma_chan *chan)
|
||||
{
|
||||
struct udma_chan *uc = to_udma_chan(chan);
|
||||
struct udma_chan_config *ucc = &uc->config;
|
||||
|
||||
seq_printf(s, " %-13s| %s", dma_chan_name(chan),
|
||||
chan->dbg_client_name ?: "in-use");
|
||||
seq_printf(s, " (%s, ", dmaengine_get_direction_text(uc->config.dir));
|
||||
|
||||
switch (uc->config.dir) {
|
||||
case DMA_MEM_TO_MEM:
|
||||
seq_printf(s, "chan%d pair [0x%04x -> 0x%04x], ", uc->tchan->id,
|
||||
ucc->src_thread, ucc->dst_thread);
|
||||
break;
|
||||
case DMA_DEV_TO_MEM:
|
||||
seq_printf(s, "rchan%d [0x%04x -> 0x%04x], ", uc->rchan->id,
|
||||
ucc->src_thread, ucc->dst_thread);
|
||||
break;
|
||||
case DMA_MEM_TO_DEV:
|
||||
seq_printf(s, "tchan%d [0x%04x -> 0x%04x], ", uc->tchan->id,
|
||||
ucc->src_thread, ucc->dst_thread);
|
||||
break;
|
||||
default:
|
||||
seq_printf(s, ")\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (ucc->ep_type == PSIL_EP_NATIVE) {
|
||||
seq_printf(s, "PSI-L Native");
|
||||
if (ucc->metadata_size) {
|
||||
seq_printf(s, "[%s", ucc->needs_epib ? " EPIB" : "");
|
||||
if (ucc->psd_size)
|
||||
seq_printf(s, " PSDsize:%u", ucc->psd_size);
|
||||
seq_printf(s, " ]");
|
||||
}
|
||||
} else {
|
||||
seq_printf(s, "PDMA");
|
||||
if (ucc->enable_acc32 || ucc->enable_burst)
|
||||
seq_printf(s, "[%s%s ]",
|
||||
ucc->enable_acc32 ? " ACC32" : "",
|
||||
ucc->enable_burst ? " BURST" : "");
|
||||
}
|
||||
|
||||
seq_printf(s, ", %s)\n", ucc->pkt_mode ? "Packet mode" : "TR mode");
|
||||
}
|
||||
|
||||
static void udma_dbg_summary_show(struct seq_file *s,
|
||||
struct dma_device *dma_dev)
|
||||
{
|
||||
struct dma_chan *chan;
|
||||
|
||||
list_for_each_entry(chan, &dma_dev->channels, device_node) {
|
||||
if (chan->client_count)
|
||||
udma_dbg_summary_show_chan(s, chan);
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_DEBUG_FS */
|
||||
|
||||
#define TI_UDMAC_BUSWIDTHS (BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | \
|
||||
BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | \
|
||||
BIT(DMA_SLAVE_BUSWIDTH_3_BYTES) | \
|
||||
@ -3362,6 +3422,9 @@ static int udma_probe(struct platform_device *pdev)
|
||||
ud->ddev.device_resume = udma_resume;
|
||||
ud->ddev.device_terminate_all = udma_terminate_all;
|
||||
ud->ddev.device_synchronize = udma_synchronize;
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
ud->ddev.dbg_summary_show = udma_dbg_summary_show;
|
||||
#endif
|
||||
|
||||
ud->ddev.device_free_chan_resources = udma_free_chan_resources;
|
||||
ud->ddev.src_addr_widths = TI_UDMAC_BUSWIDTHS;
|
||||
|
Loading…
Reference in New Issue
Block a user