hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/drivers/usb/dwc3/debug.h
....@@ -1,8 +1,8 @@
1
-// SPDX-License-Identifier: GPL-2.0
1
+/* SPDX-License-Identifier: GPL-2.0 */
22 /**
33 * debug.h - DesignWare USB3 DRD Controller Debug Header
44 *
5
- * Copyright (C) 2010-2011 Texas Instruments Incorporated - http://www.ti.com
5
+ * Copyright (C) 2010-2011 Texas Instruments Incorporated - https://www.ti.com
66 *
77 * Authors: Felipe Balbi <balbi@ti.com>,
88 * Sebastian Andrzej Siewior <bigeasy@linutronix.de>
....@@ -68,6 +68,8 @@
6868 return "All FIFO Flush";
6969 case DWC3_DGCMD_SET_ENDPOINT_NRDY:
7070 return "Set Endpoint NRDY";
71
+ case DWC3_DGCMD_SET_ENDPOINT_PRIME:
72
+ return "Set Endpoint Prime";
7173 case DWC3_DGCMD_RUN_SOC_BUS_LOOPBACK:
7274 return "Run SoC Bus Loopback Test";
7375 default:
....@@ -112,7 +114,7 @@
112114 case DWC3_LINK_STATE_RESUME:
113115 return "Resume";
114116 default:
115
- return "UNKNOWN link state\n";
117
+ return "UNKNOWN link state";
116118 }
117119 }
118120
....@@ -141,7 +143,7 @@
141143 case DWC3_LINK_STATE_RESUME:
142144 return "Resume";
143145 default:
144
- return "UNKNOWN link state\n";
146
+ return "UNKNOWN link state";
145147 }
146148 }
147149
....@@ -219,8 +221,8 @@
219221 snprintf(str, size, "WakeUp [%s]",
220222 dwc3_gadget_link_string(state));
221223 break;
222
- case DWC3_DEVICE_EVENT_EOPF:
223
- snprintf(str, size, "End-Of-Frame [%s]",
224
+ case DWC3_DEVICE_EVENT_SUSPEND:
225
+ snprintf(str, size, "Suspend [%s]",
224226 dwc3_gadget_link_string(state));
225227 break;
226228 case DWC3_DEVICE_EVENT_SOF:
....@@ -246,258 +248,6 @@
246248 return str;
247249 }
248250
249
-static inline void dwc3_decode_get_status(__u8 t, __u16 i, __u16 l, char *str,
250
- size_t size)
251
-{
252
- switch (t & USB_RECIP_MASK) {
253
- case USB_RECIP_DEVICE:
254
- snprintf(str, size, "Get Device Status(Length = %d)", l);
255
- break;
256
- case USB_RECIP_INTERFACE:
257
- snprintf(str, size, "Get Interface Status(Intf = %d, Length = %d)",
258
- i, l);
259
- break;
260
- case USB_RECIP_ENDPOINT:
261
- snprintf(str, size, "Get Endpoint Status(ep%d%s)",
262
- i & ~USB_DIR_IN,
263
- i & USB_DIR_IN ? "in" : "out");
264
- break;
265
- }
266
-}
267
-
268
-static inline void dwc3_decode_set_clear_feature(__u8 t, __u8 b, __u16 v,
269
- __u16 i, char *str, size_t size)
270
-{
271
- switch (t & USB_RECIP_MASK) {
272
- case USB_RECIP_DEVICE:
273
- snprintf(str, size, "%s Device Feature(%s%s)",
274
- b == USB_REQ_CLEAR_FEATURE ? "Clear" : "Set",
275
- ({char *s;
276
- switch (v) {
277
- case USB_DEVICE_SELF_POWERED:
278
- s = "Self Powered";
279
- break;
280
- case USB_DEVICE_REMOTE_WAKEUP:
281
- s = "Remote Wakeup";
282
- break;
283
- case USB_DEVICE_TEST_MODE:
284
- s = "Test Mode";
285
- break;
286
- case USB_DEVICE_U1_ENABLE:
287
- s = "U1 Enable";
288
- break;
289
- case USB_DEVICE_U2_ENABLE:
290
- s = "U2 Enable";
291
- break;
292
- case USB_DEVICE_LTM_ENABLE:
293
- s = "LTM Enable";
294
- break;
295
- default:
296
- s = "UNKNOWN";
297
- } s; }),
298
- v == USB_DEVICE_TEST_MODE ?
299
- ({ char *s;
300
- switch (i) {
301
- case TEST_J:
302
- s = ": TEST_J";
303
- break;
304
- case TEST_K:
305
- s = ": TEST_K";
306
- break;
307
- case TEST_SE0_NAK:
308
- s = ": TEST_SE0_NAK";
309
- break;
310
- case TEST_PACKET:
311
- s = ": TEST_PACKET";
312
- break;
313
- case TEST_FORCE_EN:
314
- s = ": TEST_FORCE_EN";
315
- break;
316
- default:
317
- s = ": UNKNOWN";
318
- } s; }) : "");
319
- break;
320
- case USB_RECIP_INTERFACE:
321
- snprintf(str, size, "%s Interface Feature(%s)",
322
- b == USB_REQ_CLEAR_FEATURE ? "Clear" : "Set",
323
- v == USB_INTRF_FUNC_SUSPEND ?
324
- "Function Suspend" : "UNKNOWN");
325
- break;
326
- case USB_RECIP_ENDPOINT:
327
- snprintf(str, size, "%s Endpoint Feature(%s ep%d%s)",
328
- b == USB_REQ_CLEAR_FEATURE ? "Clear" : "Set",
329
- v == USB_ENDPOINT_HALT ? "Halt" : "UNKNOWN",
330
- i & ~USB_DIR_IN,
331
- i & USB_DIR_IN ? "in" : "out");
332
- break;
333
- }
334
-}
335
-
336
-static inline void dwc3_decode_set_address(__u16 v, char *str, size_t size)
337
-{
338
- snprintf(str, size, "Set Address(Addr = %02x)", v);
339
-}
340
-
341
-static inline void dwc3_decode_get_set_descriptor(__u8 t, __u8 b, __u16 v,
342
- __u16 i, __u16 l, char *str, size_t size)
343
-{
344
- snprintf(str, size, "%s %s Descriptor(Index = %d, Length = %d)",
345
- b == USB_REQ_GET_DESCRIPTOR ? "Get" : "Set",
346
- ({ char *s;
347
- switch (v >> 8) {
348
- case USB_DT_DEVICE:
349
- s = "Device";
350
- break;
351
- case USB_DT_CONFIG:
352
- s = "Configuration";
353
- break;
354
- case USB_DT_STRING:
355
- s = "String";
356
- break;
357
- case USB_DT_INTERFACE:
358
- s = "Interface";
359
- break;
360
- case USB_DT_ENDPOINT:
361
- s = "Endpoint";
362
- break;
363
- case USB_DT_DEVICE_QUALIFIER:
364
- s = "Device Qualifier";
365
- break;
366
- case USB_DT_OTHER_SPEED_CONFIG:
367
- s = "Other Speed Config";
368
- break;
369
- case USB_DT_INTERFACE_POWER:
370
- s = "Interface Power";
371
- break;
372
- case USB_DT_OTG:
373
- s = "OTG";
374
- break;
375
- case USB_DT_DEBUG:
376
- s = "Debug";
377
- break;
378
- case USB_DT_INTERFACE_ASSOCIATION:
379
- s = "Interface Association";
380
- break;
381
- case USB_DT_BOS:
382
- s = "BOS";
383
- break;
384
- case USB_DT_DEVICE_CAPABILITY:
385
- s = "Device Capability";
386
- break;
387
- case USB_DT_PIPE_USAGE:
388
- s = "Pipe Usage";
389
- break;
390
- case USB_DT_SS_ENDPOINT_COMP:
391
- s = "SS Endpoint Companion";
392
- break;
393
- case USB_DT_SSP_ISOC_ENDPOINT_COMP:
394
- s = "SSP Isochronous Endpoint Companion";
395
- break;
396
- default:
397
- s = "UNKNOWN";
398
- break;
399
- } s; }), v & 0xff, l);
400
-}
401
-
402
-
403
-static inline void dwc3_decode_get_configuration(__u16 l, char *str,
404
- size_t size)
405
-{
406
- snprintf(str, size, "Get Configuration(Length = %d)", l);
407
-}
408
-
409
-static inline void dwc3_decode_set_configuration(__u8 v, char *str, size_t size)
410
-{
411
- snprintf(str, size, "Set Configuration(Config = %d)", v);
412
-}
413
-
414
-static inline void dwc3_decode_get_intf(__u16 i, __u16 l, char *str,
415
- size_t size)
416
-{
417
- snprintf(str, size, "Get Interface(Intf = %d, Length = %d)", i, l);
418
-}
419
-
420
-static inline void dwc3_decode_set_intf(__u8 v, __u16 i, char *str, size_t size)
421
-{
422
- snprintf(str, size, "Set Interface(Intf = %d, Alt.Setting = %d)", i, v);
423
-}
424
-
425
-static inline void dwc3_decode_synch_frame(__u16 i, __u16 l, char *str,
426
- size_t size)
427
-{
428
- snprintf(str, size, "Synch Frame(Endpoint = %d, Length = %d)", i, l);
429
-}
430
-
431
-static inline void dwc3_decode_set_sel(__u16 l, char *str, size_t size)
432
-{
433
- snprintf(str, size, "Set SEL(Length = %d)", l);
434
-}
435
-
436
-static inline void dwc3_decode_set_isoch_delay(__u8 v, char *str, size_t size)
437
-{
438
- snprintf(str, size, "Set Isochronous Delay(Delay = %d ns)", v);
439
-}
440
-
441
-/**
442
- * dwc3_decode_ctrl - returns a string represetion of ctrl request
443
- */
444
-static inline const char *dwc3_decode_ctrl(char *str, size_t size,
445
- __u8 bRequestType, __u8 bRequest, __u16 wValue, __u16 wIndex,
446
- __u16 wLength)
447
-{
448
- switch (bRequest) {
449
- case USB_REQ_GET_STATUS:
450
- dwc3_decode_get_status(bRequestType, wIndex, wLength, str,
451
- size);
452
- break;
453
- case USB_REQ_CLEAR_FEATURE:
454
- case USB_REQ_SET_FEATURE:
455
- dwc3_decode_set_clear_feature(bRequestType, bRequest, wValue,
456
- wIndex, str, size);
457
- break;
458
- case USB_REQ_SET_ADDRESS:
459
- dwc3_decode_set_address(wValue, str, size);
460
- break;
461
- case USB_REQ_GET_DESCRIPTOR:
462
- case USB_REQ_SET_DESCRIPTOR:
463
- dwc3_decode_get_set_descriptor(bRequestType, bRequest, wValue,
464
- wIndex, wLength, str, size);
465
- break;
466
- case USB_REQ_GET_CONFIGURATION:
467
- dwc3_decode_get_configuration(wLength, str, size);
468
- break;
469
- case USB_REQ_SET_CONFIGURATION:
470
- dwc3_decode_set_configuration(wValue, str, size);
471
- break;
472
- case USB_REQ_GET_INTERFACE:
473
- dwc3_decode_get_intf(wIndex, wLength, str, size);
474
- break;
475
- case USB_REQ_SET_INTERFACE:
476
- dwc3_decode_set_intf(wValue, wIndex, str, size);
477
- break;
478
- case USB_REQ_SYNCH_FRAME:
479
- dwc3_decode_synch_frame(wIndex, wLength, str, size);
480
- break;
481
- case USB_REQ_SET_SEL:
482
- dwc3_decode_set_sel(wLength, str, size);
483
- break;
484
- case USB_REQ_SET_ISOCH_DELAY:
485
- dwc3_decode_set_isoch_delay(wValue, str, size);
486
- break;
487
- default:
488
- snprintf(str, size, "%02x %02x %02x %02x %02x %02x %02x %02x",
489
- bRequestType, bRequest,
490
- cpu_to_le16(wValue) & 0xff,
491
- cpu_to_le16(wValue) >> 8,
492
- cpu_to_le16(wIndex) & 0xff,
493
- cpu_to_le16(wIndex) >> 8,
494
- cpu_to_le16(wLength) & 0xff,
495
- cpu_to_le16(wLength) >> 8);
496
- }
497
-
498
- return str;
499
-}
500
-
501251 /**
502252 * dwc3_ep_event_string - returns event name
503253 * @event: then event code
....@@ -508,47 +258,38 @@
508258 u8 epnum = event->endpoint_number;
509259 size_t len;
510260 int status;
511
- int ret;
512261
513
- ret = snprintf(str, size, "ep%d%s: ", epnum >> 1,
262
+ len = scnprintf(str, size, "ep%d%s: ", epnum >> 1,
514263 (epnum & 1) ? "in" : "out");
515
- if (ret < 0)
516
- return "UNKNOWN";
517264
518265 status = event->status;
519266
520267 switch (event->endpoint_event) {
521268 case DWC3_DEPEVT_XFERCOMPLETE:
522
- len = strlen(str);
523
- snprintf(str + len, size - len, "Transfer Complete (%c%c%c)",
269
+ len += scnprintf(str + len, size - len,
270
+ "Transfer Complete (%c%c%c)",
524271 status & DEPEVT_STATUS_SHORT ? 'S' : 's',
525272 status & DEPEVT_STATUS_IOC ? 'I' : 'i',
526273 status & DEPEVT_STATUS_LST ? 'L' : 'l');
527274
528
- len = strlen(str);
529
-
530275 if (epnum <= 1)
531
- snprintf(str + len, size - len, " [%s]",
276
+ scnprintf(str + len, size - len, " [%s]",
532277 dwc3_ep0_state_string(ep0state));
533278 break;
534279 case DWC3_DEPEVT_XFERINPROGRESS:
535
- len = strlen(str);
536
-
537
- snprintf(str + len, size - len, "Transfer In Progress [%d] (%c%c%c)",
280
+ scnprintf(str + len, size - len,
281
+ "Transfer In Progress [%d] (%c%c%c)",
538282 event->parameters,
539283 status & DEPEVT_STATUS_SHORT ? 'S' : 's',
540284 status & DEPEVT_STATUS_IOC ? 'I' : 'i',
541285 status & DEPEVT_STATUS_LST ? 'M' : 'm');
542286 break;
543287 case DWC3_DEPEVT_XFERNOTREADY:
544
- len = strlen(str);
545
-
546
- snprintf(str + len, size - len, "Transfer Not Ready [%d]%s",
288
+ len += scnprintf(str + len, size - len,
289
+ "Transfer Not Ready [%d]%s",
547290 event->parameters,
548291 status & DEPEVT_STATUS_TRANSFER_ACTIVE ?
549292 " (Active)" : " (Not Active)");
550
-
551
- len = strlen(str);
552293
553294 /* Control Endpoints */
554295 if (epnum <= 1) {
....@@ -556,38 +297,38 @@
556297
557298 switch (phase) {
558299 case DEPEVT_STATUS_CONTROL_DATA:
559
- snprintf(str + ret, size - ret,
300
+ scnprintf(str + len, size - len,
560301 " [Data Phase]");
561302 break;
562303 case DEPEVT_STATUS_CONTROL_STATUS:
563
- snprintf(str + ret, size - ret,
304
+ scnprintf(str + len, size - len,
564305 " [Status Phase]");
565306 }
566307 }
567308 break;
568309 case DWC3_DEPEVT_RXTXFIFOEVT:
569
- snprintf(str + ret, size - ret, "FIFO");
310
+ scnprintf(str + len, size - len, "FIFO");
570311 break;
571312 case DWC3_DEPEVT_STREAMEVT:
572313 status = event->status;
573314
574315 switch (status) {
575316 case DEPEVT_STREAMEVT_FOUND:
576
- snprintf(str + ret, size - ret, " Stream %d Found",
317
+ scnprintf(str + len, size - len, " Stream %d Found",
577318 event->parameters);
578319 break;
579320 case DEPEVT_STREAMEVT_NOTFOUND:
580321 default:
581
- snprintf(str + ret, size - ret, " Stream Not Found");
322
+ scnprintf(str + len, size - len, " Stream Not Found");
582323 break;
583324 }
584325
585326 break;
586327 case DWC3_DEPEVT_EPCMDCMPLT:
587
- snprintf(str + ret, size - ret, "Endpoint Command Complete");
328
+ scnprintf(str + len, size - len, "Endpoint Command Complete");
588329 break;
589330 default:
590
- snprintf(str, size, "UNKNOWN");
331
+ scnprintf(str + len, size - len, "UNKNOWN");
591332 }
592333
593334 return str;
....@@ -612,8 +353,8 @@
612353 return "Wake-Up";
613354 case DWC3_DEVICE_EVENT_HIBER_REQ:
614355 return "Hibernation";
615
- case DWC3_DEVICE_EVENT_EOPF:
616
- return "End of Periodic Frame";
356
+ case DWC3_DEVICE_EVENT_SUSPEND:
357
+ return "Suspend";
617358 case DWC3_DEVICE_EVENT_SOF:
618359 return "Start of Frame";
619360 case DWC3_DEVICE_EVENT_ERRATIC_ERROR:
....@@ -630,7 +371,9 @@
630371 static inline const char *dwc3_decode_event(char *str, size_t size, u32 event,
631372 u32 ep0state)
632373 {
633
- const union dwc3_event evt = (union dwc3_event) event;
374
+ union dwc3_event evt;
375
+
376
+ memcpy(&evt, &event, sizeof(event));
634377
635378 if (evt.type.is_devspec)
636379 return dwc3_gadget_event_string(str, size, &evt.devt);
....@@ -671,8 +414,8 @@
671414
672415 #ifdef CONFIG_DEBUG_FS
673416 extern void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep);
674
-extern void dwc3_debugfs_init(struct dwc3 *);
675
-extern void dwc3_debugfs_exit(struct dwc3 *);
417
+extern void dwc3_debugfs_init(struct dwc3 *d);
418
+extern void dwc3_debugfs_exit(struct dwc3 *d);
676419 #else
677420 static inline void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep)
678421 { }