mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	dmaengine: tegra: add tracepoints to driver
Add some trace-points to the driver to allow for debuging via the trace pipe. Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
		
							parent
							
								
									65c383c780
								
							
						
					
					
						commit
						95f295f9fe
					
				
					 2 changed files with 68 additions and 0 deletions
				
			
		|  | @ -38,6 +38,9 @@ | |||
| 
 | ||||
| #include "dmaengine.h" | ||||
| 
 | ||||
| #define CREATE_TRACE_POINTS | ||||
| #include <trace/events/tegra_apb_dma.h> | ||||
| 
 | ||||
| #define TEGRA_APBDMA_GENERAL			0x0 | ||||
| #define TEGRA_APBDMA_GENERAL_ENABLE		BIT(31) | ||||
| 
 | ||||
|  | @ -672,6 +675,8 @@ static void tegra_dma_tasklet(unsigned long data) | |||
| 		dmaengine_desc_get_callback(&dma_desc->txd, &cb); | ||||
| 		cb_count = dma_desc->cb_count; | ||||
| 		dma_desc->cb_count = 0; | ||||
| 		trace_tegra_dma_complete_cb(&tdc->dma_chan, cb_count, | ||||
| 					    cb.callback); | ||||
| 		spin_unlock_irqrestore(&tdc->lock, flags); | ||||
| 		while (cb_count--) | ||||
| 			dmaengine_desc_callback_invoke(&cb, NULL); | ||||
|  | @ -688,6 +693,7 @@ static irqreturn_t tegra_dma_isr(int irq, void *dev_id) | |||
| 
 | ||||
| 	spin_lock_irqsave(&tdc->lock, flags); | ||||
| 
 | ||||
| 	trace_tegra_dma_isr(&tdc->dma_chan, irq); | ||||
| 	status = tdc_read(tdc, TEGRA_APBDMA_CHAN_STATUS); | ||||
| 	if (status & TEGRA_APBDMA_STATUS_ISE_EOC) { | ||||
| 		tdc_write(tdc, TEGRA_APBDMA_CHAN_STATUS, status); | ||||
|  | @ -846,6 +852,7 @@ found: | |||
| 		dma_set_residue(txstate, residual); | ||||
| 	} | ||||
| 
 | ||||
| 	trace_tegra_dma_tx_status(&tdc->dma_chan, cookie, txstate); | ||||
| 	spin_unlock_irqrestore(&tdc->lock, flags); | ||||
| 	return ret; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										61
									
								
								include/trace/events/tegra_apb_dma.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								include/trace/events/tegra_apb_dma.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,61 @@ | |||
| #if !defined(_TRACE_TEGRA_APB_DMA_H) || defined(TRACE_HEADER_MULTI_READ) | ||||
| #define _TRACE_TEGRA_APM_DMA_H | ||||
| 
 | ||||
| #include <linux/tracepoint.h> | ||||
| #include <linux/dmaengine.h> | ||||
| 
 | ||||
| #undef TRACE_SYSTEM | ||||
| #define TRACE_SYSTEM tegra_apb_dma | ||||
| 
 | ||||
| TRACE_EVENT(tegra_dma_tx_status, | ||||
| 	TP_PROTO(struct dma_chan *dc, dma_cookie_t cookie, struct dma_tx_state *state), | ||||
| 	TP_ARGS(dc, cookie, state), | ||||
| 	TP_STRUCT__entry( | ||||
| 		__string(chan,	dev_name(&dc->dev->device)) | ||||
| 		__field(dma_cookie_t, cookie) | ||||
| 		__field(__u32,	residue) | ||||
| 	), | ||||
| 	TP_fast_assign( | ||||
| 		__assign_str(chan, dev_name(&dc->dev->device)); | ||||
| 		__entry->cookie = cookie; | ||||
| 		__entry->residue = state ? state->residue : (u32)-1; | ||||
| 	), | ||||
| 	TP_printk("channel %s: dma cookie %d, residue %u", | ||||
| 		  __get_str(chan), __entry->cookie, __entry->residue) | ||||
| ); | ||||
| 
 | ||||
| TRACE_EVENT(tegra_dma_complete_cb, | ||||
| 	TP_PROTO(struct dma_chan *dc, int count, void *ptr), | ||||
| 	TP_ARGS(dc, count, ptr), | ||||
| 	TP_STRUCT__entry( | ||||
| 		__string(chan,	dev_name(&dc->dev->device)) | ||||
| 		__field(int,	count) | ||||
| 		__field(void *,	ptr) | ||||
| 		), | ||||
| 	TP_fast_assign( | ||||
| 		__assign_str(chan, dev_name(&dc->dev->device)); | ||||
| 		__entry->count = count; | ||||
| 		__entry->ptr = ptr; | ||||
| 		), | ||||
| 	TP_printk("channel %s: done %d, ptr %p", | ||||
| 		  __get_str(chan), __entry->count, __entry->ptr) | ||||
| ); | ||||
| 
 | ||||
| TRACE_EVENT(tegra_dma_isr, | ||||
| 	TP_PROTO(struct dma_chan *dc, int irq), | ||||
| 	TP_ARGS(dc, irq), | ||||
| 	TP_STRUCT__entry( | ||||
| 		__string(chan,	dev_name(&dc->dev->device)) | ||||
| 		__field(int,	irq) | ||||
| 	), | ||||
| 	TP_fast_assign( | ||||
| 		__assign_str(chan, dev_name(&dc->dev->device)); | ||||
| 		__entry->irq = irq; | ||||
| 	), | ||||
| 	TP_printk("%s: irq %d\n",  __get_str(chan), __entry->irq) | ||||
| ); | ||||
| 
 | ||||
| #endif /*  _TRACE_TEGRADMA_H */ | ||||
| 
 | ||||
| /* This part must be outside protection */ | ||||
| #include <trace/define_trace.h> | ||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Ben Dooks
						Ben Dooks