Skip to content

Commit db8d9b4

Browse files
Peter Ujfalusivinodkoul
authored andcommitted
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 <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
1 parent e937cc1 commit db8d9b4

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

drivers/dma/ti/k3-udma.c

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3276,6 +3276,66 @@ static int udma_setup_resources(struct udma_dev *ud)
32763276
return ch_count;
32773277
}
32783278

3279+
#ifdef CONFIG_DEBUG_FS
3280+
static void udma_dbg_summary_show_chan(struct seq_file *s,
3281+
struct dma_chan *chan)
3282+
{
3283+
struct udma_chan *uc = to_udma_chan(chan);
3284+
struct udma_chan_config *ucc = &uc->config;
3285+
3286+
seq_printf(s, " %-13s| %s", dma_chan_name(chan),
3287+
chan->dbg_client_name ?: "in-use");
3288+
seq_printf(s, " (%s, ", dmaengine_get_direction_text(uc->config.dir));
3289+
3290+
switch (uc->config.dir) {
3291+
case DMA_MEM_TO_MEM:
3292+
seq_printf(s, "chan%d pair [0x%04x -> 0x%04x], ", uc->tchan->id,
3293+
ucc->src_thread, ucc->dst_thread);
3294+
break;
3295+
case DMA_DEV_TO_MEM:
3296+
seq_printf(s, "rchan%d [0x%04x -> 0x%04x], ", uc->rchan->id,
3297+
ucc->src_thread, ucc->dst_thread);
3298+
break;
3299+
case DMA_MEM_TO_DEV:
3300+
seq_printf(s, "tchan%d [0x%04x -> 0x%04x], ", uc->tchan->id,
3301+
ucc->src_thread, ucc->dst_thread);
3302+
break;
3303+
default:
3304+
seq_printf(s, ")\n");
3305+
return;
3306+
}
3307+
3308+
if (ucc->ep_type == PSIL_EP_NATIVE) {
3309+
seq_printf(s, "PSI-L Native");
3310+
if (ucc->metadata_size) {
3311+
seq_printf(s, "[%s", ucc->needs_epib ? " EPIB" : "");
3312+
if (ucc->psd_size)
3313+
seq_printf(s, " PSDsize:%u", ucc->psd_size);
3314+
seq_printf(s, " ]");
3315+
}
3316+
} else {
3317+
seq_printf(s, "PDMA");
3318+
if (ucc->enable_acc32 || ucc->enable_burst)
3319+
seq_printf(s, "[%s%s ]",
3320+
ucc->enable_acc32 ? " ACC32" : "",
3321+
ucc->enable_burst ? " BURST" : "");
3322+
}
3323+
3324+
seq_printf(s, ", %s)\n", ucc->pkt_mode ? "Packet mode" : "TR mode");
3325+
}
3326+
3327+
static void udma_dbg_summary_show(struct seq_file *s,
3328+
struct dma_device *dma_dev)
3329+
{
3330+
struct dma_chan *chan;
3331+
3332+
list_for_each_entry(chan, &dma_dev->channels, device_node) {
3333+
if (chan->client_count)
3334+
udma_dbg_summary_show_chan(s, chan);
3335+
}
3336+
}
3337+
#endif /* CONFIG_DEBUG_FS */
3338+
32793339
#define TI_UDMAC_BUSWIDTHS (BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | \
32803340
BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | \
32813341
BIT(DMA_SLAVE_BUSWIDTH_3_BYTES) | \
@@ -3362,6 +3422,9 @@ static int udma_probe(struct platform_device *pdev)
33623422
ud->ddev.device_resume = udma_resume;
33633423
ud->ddev.device_terminate_all = udma_terminate_all;
33643424
ud->ddev.device_synchronize = udma_synchronize;
3425+
#ifdef CONFIG_DEBUG_FS
3426+
ud->ddev.dbg_summary_show = udma_dbg_summary_show;
3427+
#endif
33653428

33663429
ud->ddev.device_free_chan_resources = udma_free_chan_resources;
33673430
ud->ddev.src_addr_widths = TI_UDMAC_BUSWIDTHS;

0 commit comments

Comments
 (0)