Lines Matching +full:max +full:- +full:frame +full:- +full:size
1 // SPDX-License-Identifier: GPL-2.0+
6 /* this file is part of imx21-hcd.c */
26 static inline void debug_dmem_allocated(struct imx21 *imx21, int size) {} in debug_dmem_allocated() argument
27 static inline void debug_dmem_freed(struct imx21 *imx21, int size) {} in debug_dmem_freed() argument
29 int frame, struct td *td) {} in debug_isoc_submitted() argument
31 int frame, struct td *td, int cc, int len) {} in debug_isoc_completed() argument
60 return usb_pipeisoc(urb->pipe) ? in stats_for_urb()
61 &imx21->isoc_stats : &imx21->nonisoc_stats; in stats_for_urb()
66 stats_for_urb(imx21, urb)->submitted++; in debug_urb_submitted()
72 stats_for_urb(imx21, urb)->completed_failed++; in debug_urb_completed()
74 stats_for_urb(imx21, urb)->completed_ok++; in debug_urb_completed()
79 stats_for_urb(imx21, urb)->unlinked++; in debug_urb_unlinked()
84 stats_for_urb(imx21, urb)->queue_etd++; in debug_urb_queued_for_etd()
89 stats_for_urb(imx21, urb)->queue_dmem++; in debug_urb_queued_for_dmem()
94 imx21->etd_usage.maximum = max( in debug_etd_allocated()
95 ++(imx21->etd_usage.value), in debug_etd_allocated()
96 imx21->etd_usage.maximum); in debug_etd_allocated()
101 imx21->etd_usage.value--; in debug_etd_freed()
104 static inline void debug_dmem_allocated(struct imx21 *imx21, int size) in debug_dmem_allocated() argument
106 imx21->dmem_usage.value += size; in debug_dmem_allocated()
107 imx21->dmem_usage.maximum = max( in debug_dmem_allocated()
108 imx21->dmem_usage.value, in debug_dmem_allocated()
109 imx21->dmem_usage.maximum); in debug_dmem_allocated()
112 static inline void debug_dmem_freed(struct imx21 *imx21, int size) in debug_dmem_freed() argument
114 imx21->dmem_usage.value -= size; in debug_dmem_freed()
119 int frame, struct td *td) in debug_isoc_submitted() argument
121 struct debug_isoc_trace *trace = &imx21->isoc_trace[ in debug_isoc_submitted()
122 imx21->isoc_trace_index++]; in debug_isoc_submitted()
124 imx21->isoc_trace_index %= ARRAY_SIZE(imx21->isoc_trace); in debug_isoc_submitted()
125 trace->schedule_frame = td->frame; in debug_isoc_submitted()
126 trace->submit_frame = frame; in debug_isoc_submitted()
127 trace->request_len = td->len; in debug_isoc_submitted()
128 trace->td = td; in debug_isoc_submitted()
132 int frame, struct td *td, int cc, int len) in debug_isoc_completed() argument
138 trace = imx21->isoc_trace; in debug_isoc_completed()
139 for (i = 0; i < ARRAY_SIZE(imx21->isoc_trace); i++, trace++) { in debug_isoc_completed()
140 if (trace->td == td) { in debug_isoc_completed()
141 trace->done_frame = frame; in debug_isoc_completed()
142 trace->done_len = len; in debug_isoc_completed()
143 trace->cc = cc; in debug_isoc_completed()
144 trace->td = NULL; in debug_isoc_completed()
151 trace_failed = &imx21->isoc_trace_failed[ in debug_isoc_completed()
152 imx21->isoc_trace_index_failed++]; in debug_isoc_completed()
154 imx21->isoc_trace_index_failed %= ARRAY_SIZE( in debug_isoc_completed()
155 imx21->isoc_trace_failed); in debug_isoc_completed()
165 ep->desc.bEndpointAddress, in format_ep()
166 usb_endpoint_type(&ep->desc), in format_ep()
188 struct imx21 *imx21 = s->private; in debug_status_show()
203 spin_lock_irqsave(&imx21->lock, flags); in debug_status_show()
205 etd_enable_mask = readl(imx21->regs + USBH_ETDENSET); in debug_status_show()
206 for (i = 0, etd = imx21->etd; i < USB_NUM_ETD; i++, etd++) { in debug_status_show()
207 if (etd->alloc) in debug_status_show()
209 if (etd->urb) in debug_status_show()
215 list_for_each_entry(dmem, &imx21->dmem_list, list) { in debug_status_show()
216 dmem_bytes += dmem->size; in debug_status_show()
220 list_for_each_entry(ep_priv, &imx21->queue_for_etd, queue) in debug_status_show()
223 list_for_each_entry(etd, &imx21->queue_for_dmem, queue) in debug_status_show()
226 spin_unlock_irqrestore(&imx21->lock, flags); in debug_status_show()
229 "Frame: %d\n" in debug_status_show()
230 "ETDs allocated: %d/%d (max=%d)\n" in debug_status_show()
233 "DMEM allocated: %d/%d (max=%d)\n" in debug_status_show()
237 readl(imx21->regs + USBH_FRMNUB) & 0xFFFF, in debug_status_show()
238 etds_allocated, USB_NUM_ETD, imx21->etd_usage.maximum, in debug_status_show()
241 dmem_bytes, DMEM_SIZE, imx21->dmem_usage.maximum, in debug_status_show()
252 struct imx21 *imx21 = s->private; in debug_dmem_show()
257 spin_lock_irqsave(&imx21->lock, flags); in debug_dmem_show()
259 list_for_each_entry(dmem, &imx21->dmem_list, list) in debug_dmem_show()
261 "%04X: size=0x%X " in debug_dmem_show()
263 dmem->offset, dmem->size, in debug_dmem_show()
264 format_ep(dmem->ep, ep_text, sizeof(ep_text))); in debug_dmem_show()
266 spin_unlock_irqrestore(&imx21->lock, flags); in debug_dmem_show()
274 struct imx21 *imx21 = s->private; in debug_etd_show()
281 spin_lock_irqsave(&imx21->lock, flags); in debug_etd_show()
283 for (i = 0, etd = imx21->etd; i < USB_NUM_ETD; i++, etd++) { in debug_etd_show()
284 int state = -1; in debug_etd_show()
286 if (etd->urb) { in debug_etd_show()
287 urb_priv = etd->urb->hcpriv; in debug_etd_show()
289 state = urb_priv->state; in debug_etd_show()
303 format_ep(etd->ep, buf, sizeof(buf)), in debug_etd_show()
304 etd->alloc, in debug_etd_show()
305 etd->len, in debug_etd_show()
306 etd->urb != NULL, in debug_etd_show()
307 (readl(imx21->regs + USBH_ETDENSET) & (1 << i)) > 0, in debug_etd_show()
309 etd->urb); in debug_etd_show()
328 etd->submitted_dwords[j], in debug_etd_show()
335 spin_unlock_irqrestore(&imx21->lock, flags); in debug_etd_show()
352 stats->submitted, in debug_statistics_show_one()
353 stats->completed_ok, in debug_statistics_show_one()
354 stats->completed_failed, in debug_statistics_show_one()
355 stats->unlinked, in debug_statistics_show_one()
356 stats->queue_etd, in debug_statistics_show_one()
357 stats->queue_dmem); in debug_statistics_show_one()
362 struct imx21 *imx21 = s->private; in debug_statistics_show()
365 spin_lock_irqsave(&imx21->lock, flags); in debug_statistics_show()
367 debug_statistics_show_one(s, "nonisoc", &imx21->nonisoc_stats); in debug_statistics_show()
368 debug_statistics_show_one(s, "isoc", &imx21->isoc_stats); in debug_statistics_show()
369 seq_printf(s, "unblock kludge triggers: %lu\n", imx21->debug_unblocks); in debug_statistics_show()
370 spin_unlock_irqrestore(&imx21->lock, flags); in debug_statistics_show()
381 "scheduled frame %d (%d)\n" in debug_isoc_show_one()
382 "submitted frame %d (%d)\n" in debug_isoc_show_one()
383 "completed frame %d (%d)\n" in debug_isoc_show_one()
387 trace->cc, in debug_isoc_show_one()
388 trace->schedule_frame, trace->schedule_frame & 0xFFFF, in debug_isoc_show_one()
389 trace->submit_frame, trace->submit_frame & 0xFFFF, in debug_isoc_show_one()
390 trace->done_frame, trace->done_frame & 0xFFFF, in debug_isoc_show_one()
391 trace->request_len, in debug_isoc_show_one()
392 trace->done_len); in debug_isoc_show_one()
397 struct imx21 *imx21 = s->private; in debug_isoc_show()
402 spin_lock_irqsave(&imx21->lock, flags); in debug_isoc_show()
404 trace = imx21->isoc_trace_failed; in debug_isoc_show()
405 for (i = 0; i < ARRAY_SIZE(imx21->isoc_trace_failed); i++, trace++) in debug_isoc_show()
408 trace = imx21->isoc_trace; in debug_isoc_show()
409 for (i = 0; i < ARRAY_SIZE(imx21->isoc_trace); i++, trace++) in debug_isoc_show()
412 spin_unlock_irqrestore(&imx21->lock, flags); in debug_isoc_show()
422 root = debugfs_create_dir(dev_name(imx21->dev), usb_debug_root); in create_debug_files()
423 imx21->debug_root = root; in create_debug_files()
435 debugfs_remove_recursive(imx21->debug_root); in remove_debug_files()