18b4cfe0bSFelipe Balbi=============================================================== 28b4cfe0bSFelipe BalbiSynopsys DesignWare Core SuperSpeed USB 3.0 Controller 38b4cfe0bSFelipe Balbi=============================================================== 48b4cfe0bSFelipe Balbi 58b4cfe0bSFelipe Balbi:Author: Felipe Balbi <felipe.balbi@linux.intel.com> 68b4cfe0bSFelipe Balbi:Date: April 2017 78b4cfe0bSFelipe Balbi 88b4cfe0bSFelipe BalbiIntroduction 98b4cfe0bSFelipe Balbi============ 108b4cfe0bSFelipe Balbi 118b4cfe0bSFelipe BalbiThe *Synopsys DesignWare Core SuperSpeed USB 3.0 Controller* 128b4cfe0bSFelipe Balbi(hereinafter referred to as *DWC3*) is a USB SuperSpeed compliant 138b4cfe0bSFelipe Balbicontroller which can be configured in one of 4 ways: 148b4cfe0bSFelipe Balbi 158b4cfe0bSFelipe Balbi 1. Peripheral-only configuration 168b4cfe0bSFelipe Balbi 2. Host-only configuration 178b4cfe0bSFelipe Balbi 3. Dual-Role configuration 188b4cfe0bSFelipe Balbi 4. Hub configuration 198b4cfe0bSFelipe Balbi 208b4cfe0bSFelipe BalbiLinux currently supports several versions of this controller. In all 21*7852fe3aSRandy Dunlaplikelihood, the version in your SoC is already supported. At the time 228b4cfe0bSFelipe Balbiof this writing, known tested versions range from 2.02a to 3.10a. As a 238b4cfe0bSFelipe Balbirule of thumb, anything above 2.02a should work reliably well. 248b4cfe0bSFelipe Balbi 258b4cfe0bSFelipe BalbiCurrently, we have many known users for this driver. In alphabetical 268b4cfe0bSFelipe Balbiorder: 278b4cfe0bSFelipe Balbi 288b4cfe0bSFelipe Balbi 1. Cavium 298b4cfe0bSFelipe Balbi 2. Intel Corporation 308b4cfe0bSFelipe Balbi 3. Qualcomm 318b4cfe0bSFelipe Balbi 4. Rockchip 328b4cfe0bSFelipe Balbi 5. ST 338b4cfe0bSFelipe Balbi 6. Samsung 348b4cfe0bSFelipe Balbi 7. Texas Instruments 358b4cfe0bSFelipe Balbi 8. Xilinx 368b4cfe0bSFelipe Balbi 378b4cfe0bSFelipe BalbiSummary of Features 388b4cfe0bSFelipe Balbi====================== 398b4cfe0bSFelipe Balbi 408b4cfe0bSFelipe BalbiFor details about features supported by your version of DWC3, consult 418b4cfe0bSFelipe Balbiyour IP team and/or *Synopsys DesignWare Core SuperSpeed USB 3.0 428b4cfe0bSFelipe BalbiController Databook*. Following is a list of features supported by the 438b4cfe0bSFelipe Balbidriver at the time of this writing: 448b4cfe0bSFelipe Balbi 458b4cfe0bSFelipe Balbi 1. Up to 16 bidirectional endpoints (including the control 468b4cfe0bSFelipe Balbi pipe - ep0) 478b4cfe0bSFelipe Balbi 2. Flexible endpoint configuration 488b4cfe0bSFelipe Balbi 3. Simultaneous IN and OUT transfer support 498b4cfe0bSFelipe Balbi 4. Scatter-list support 508b4cfe0bSFelipe Balbi 5. Up to 256 TRBs [#trb]_ per endpoint 518b4cfe0bSFelipe Balbi 6. Support for all transfer types (*Control*, *Bulk*, 528b4cfe0bSFelipe Balbi *Interrupt*, and *Isochronous*) 538b4cfe0bSFelipe Balbi 7. SuperSpeed Bulk Streams 548b4cfe0bSFelipe Balbi 8. Link Power Management 558b4cfe0bSFelipe Balbi 9. Trace Events for debugging 568b4cfe0bSFelipe Balbi 10. DebugFS [#debugfs]_ interface 578b4cfe0bSFelipe Balbi 588b4cfe0bSFelipe BalbiThese features have all been exercised with many of the **in-tree** 598b4cfe0bSFelipe Balbigadget drivers. We have verified both *ConfigFS* [#configfs]_ and 608b4cfe0bSFelipe Balbilegacy gadget drivers. 618b4cfe0bSFelipe Balbi 628b4cfe0bSFelipe BalbiDriver Design 638b4cfe0bSFelipe Balbi============== 648b4cfe0bSFelipe Balbi 658b4cfe0bSFelipe BalbiThe DWC3 driver sits on the *drivers/usb/dwc3/* directory. All files 668b4cfe0bSFelipe Balbirelated to this driver are in this one directory. This makes it easy 678b4cfe0bSFelipe Balbifor new-comers to read the code and understand how it behaves. 688b4cfe0bSFelipe Balbi 698b4cfe0bSFelipe BalbiBecause of DWC3's configuration flexibility, the driver is a little 708b4cfe0bSFelipe Balbicomplex in some places but it should be rather straightforward to 718b4cfe0bSFelipe Balbiunderstand. 728b4cfe0bSFelipe Balbi 738b4cfe0bSFelipe BalbiThe biggest part of the driver refers to the Gadget API. 748b4cfe0bSFelipe Balbi 758b4cfe0bSFelipe BalbiKnown Limitations 768b4cfe0bSFelipe Balbi=================== 778b4cfe0bSFelipe Balbi 788b4cfe0bSFelipe BalbiLike any other HW, DWC3 has its own set of limitations. To avoid 798b4cfe0bSFelipe Balbiconstant questions about such problems, we decided to document them 808b4cfe0bSFelipe Balbihere and have a single location to where we could point users. 818b4cfe0bSFelipe Balbi 828b4cfe0bSFelipe BalbiOUT Transfer Size Requirements 838b4cfe0bSFelipe Balbi--------------------------------- 848b4cfe0bSFelipe Balbi 858b4cfe0bSFelipe BalbiAccording to Synopsys Databook, all OUT transfer TRBs [#trb]_ must 868b4cfe0bSFelipe Balbihave their *size* field set to a value which is integer divisible by 878b4cfe0bSFelipe Balbithe endpoint's *wMaxPacketSize*. This means that *e.g.* in order to 888b4cfe0bSFelipe Balbireceive a Mass Storage *CBW* [#cbw]_, req->length must either be set 898b4cfe0bSFelipe Balbito a value that's divisible by *wMaxPacketSize* (1024 on SuperSpeed, 908b4cfe0bSFelipe Balbi512 on HighSpeed, etc), or DWC3 driver must add a Chained TRB pointing 918b4cfe0bSFelipe Balbito a throw-away buffer for the remaining length. Without this, OUT 928b4cfe0bSFelipe Balbitransfers will **NOT** start. 938b4cfe0bSFelipe Balbi 948b4cfe0bSFelipe BalbiNote that as of this writing, this won't be a problem because DWC3 is 958b4cfe0bSFelipe Balbifully capable of appending a chained TRB for the remaining length and 968b4cfe0bSFelipe Balbicompletely hide this detail from the gadget driver. It's still worth 978b4cfe0bSFelipe Balbimentioning because this seems to be the largest source of queries 988b4cfe0bSFelipe Balbiabout DWC3 and *non-working transfers*. 998b4cfe0bSFelipe Balbi 1008b4cfe0bSFelipe BalbiTRB Ring Size Limitation 1018b4cfe0bSFelipe Balbi------------------------- 1028b4cfe0bSFelipe Balbi 1038b4cfe0bSFelipe BalbiWe, currently, have a hard limit of 256 TRBs [#trb]_ per endpoint, 1048b4cfe0bSFelipe Balbiwith the last TRB being a Link TRB [#link_trb]_ pointing back to the 1058b4cfe0bSFelipe Balbifirst. This limit is arbitrary but it has the benefit of adding up to 1068b4cfe0bSFelipe Balbiexactly 4096 bytes, or 1 Page. 1078b4cfe0bSFelipe Balbi 1088b4cfe0bSFelipe BalbiDWC3 driver will try its best to cope with more than 255 requests and, 1098b4cfe0bSFelipe Balbifor the most part, it should work normally. However this is not 1108b4cfe0bSFelipe Balbisomething that has been exercised very frequently. If you experience 1118b4cfe0bSFelipe Balbiany problems, see section **Reporting Bugs** below. 1128b4cfe0bSFelipe Balbi 1138b4cfe0bSFelipe BalbiReporting Bugs 1148b4cfe0bSFelipe Balbi================ 1158b4cfe0bSFelipe Balbi 1168b4cfe0bSFelipe BalbiWhenever you encounter a problem with DWC3, first and foremost you 1178b4cfe0bSFelipe Balbishould make sure that: 1188b4cfe0bSFelipe Balbi 1198b4cfe0bSFelipe Balbi 1. You're running latest tag from `Linus' tree`_ 1208b4cfe0bSFelipe Balbi 2. You can reproduce the error without any out-of-tree changes 1218b4cfe0bSFelipe Balbi to DWC3 1228b4cfe0bSFelipe Balbi 3. You have checked that it's not a fault on the host machine 1238b4cfe0bSFelipe Balbi 1248b4cfe0bSFelipe BalbiAfter all these are verified, then here's how to capture enough 1258b4cfe0bSFelipe Balbiinformation so we can be of any help to you. 1268b4cfe0bSFelipe Balbi 1278b4cfe0bSFelipe BalbiRequired Information 1288b4cfe0bSFelipe Balbi--------------------- 1298b4cfe0bSFelipe Balbi 1308b4cfe0bSFelipe BalbiDWC3 relies exclusively on Trace Events for debugging. Everything is 1318b4cfe0bSFelipe Balbiexposed there, with some extra bits being exposed to DebugFS 1328b4cfe0bSFelipe Balbi[#debugfs]_. 1338b4cfe0bSFelipe Balbi 1348b4cfe0bSFelipe BalbiIn order to capture DWC3's Trace Events you should run the following 1358b4cfe0bSFelipe Balbicommands **before** plugging the USB cable to a host machine: 1368b4cfe0bSFelipe Balbi 1378b4cfe0bSFelipe Balbi.. code-block:: sh 1388b4cfe0bSFelipe Balbi 1398b4cfe0bSFelipe Balbi # mkdir -p /d 1408b4cfe0bSFelipe Balbi # mkdir -p /t 1418b4cfe0bSFelipe Balbi # mount -t debugfs none /d 1428b4cfe0bSFelipe Balbi # mount -t tracefs none /t 1438b4cfe0bSFelipe Balbi # echo 81920 > /t/buffer_size_kb 1448b4cfe0bSFelipe Balbi # echo 1 > /t/events/dwc3/enable 1458b4cfe0bSFelipe Balbi 1468b4cfe0bSFelipe BalbiAfter this is done, you can connect your USB cable and reproduce the 1478b4cfe0bSFelipe Balbiproblem. As soon as the fault is reproduced, make a copy of files 1488b4cfe0bSFelipe Balbi``trace`` and ``regdump``, like so: 1498b4cfe0bSFelipe Balbi 1508b4cfe0bSFelipe Balbi.. code-block:: sh 1518b4cfe0bSFelipe Balbi 1528b4cfe0bSFelipe Balbi # cp /t/trace /root/trace.txt 1538b4cfe0bSFelipe Balbi # cat /d/*dwc3*/regdump > /root/regdump.txt 1548b4cfe0bSFelipe Balbi 1558b4cfe0bSFelipe BalbiMake sure to compress ``trace.txt`` and ``regdump.txt`` in a tarball 1568b4cfe0bSFelipe Balbiand email it to `me`_ with `linux-usb`_ in Cc. If you want to be extra 1578b4cfe0bSFelipe Balbisure that I'll help you, write your subject line in the following 1588b4cfe0bSFelipe Balbiformat: 1598b4cfe0bSFelipe Balbi 1608b4cfe0bSFelipe Balbi **[BUG REPORT] usb: dwc3: Bug while doing XYZ** 1618b4cfe0bSFelipe Balbi 1628b4cfe0bSFelipe BalbiOn the email body, make sure to detail what you doing, which gadget 1638b4cfe0bSFelipe Balbidriver you were using, how to reproduce the problem, what SoC you're 1648b4cfe0bSFelipe Balbiusing, which OS (and its version) was running on the Host machine. 1658b4cfe0bSFelipe Balbi 1668b4cfe0bSFelipe BalbiWith all this information, we should be able to understand what's 1678b4cfe0bSFelipe Balbigoing on and be helpful to you. 1688b4cfe0bSFelipe Balbi 1698b4cfe0bSFelipe BalbiDebugging 1708b4cfe0bSFelipe Balbi=========== 1718b4cfe0bSFelipe Balbi 1728b4cfe0bSFelipe BalbiFirst and foremost a disclaimer:: 1738b4cfe0bSFelipe Balbi 1748b4cfe0bSFelipe Balbi DISCLAIMER: The information available on DebugFS and/or TraceFS can 1758b4cfe0bSFelipe Balbi change at any time at any Major Linux Kernel Release. If writing 1768b4cfe0bSFelipe Balbi scripts, do **NOT** assume information to be available in the 1778b4cfe0bSFelipe Balbi current format. 1788b4cfe0bSFelipe Balbi 1798b4cfe0bSFelipe BalbiWith that out of the way, let's carry on. 1808b4cfe0bSFelipe Balbi 1818b4cfe0bSFelipe BalbiIf you're willing to debug your own problem, you deserve a round of 1828b4cfe0bSFelipe Balbiapplause :-) 1838b4cfe0bSFelipe Balbi 1848b4cfe0bSFelipe BalbiAnyway, there isn't much to say here other than Trace Events will be 1858b4cfe0bSFelipe Balbireally helpful in figuring out issues with DWC3. Also, access to 1868b4cfe0bSFelipe BalbiSynopsys Databook will be **really** valuable in this case. 1878b4cfe0bSFelipe Balbi 1888b4cfe0bSFelipe BalbiA USB Sniffer can be helpful at times but it's not entirely required, 1898b4cfe0bSFelipe Balbithere's a lot that can be understood without looking at the wire. 1908b4cfe0bSFelipe Balbi 1918b4cfe0bSFelipe BalbiFeel free to email `me`_ and Cc `linux-usb`_ if you need any help. 1928b4cfe0bSFelipe Balbi 1938b4cfe0bSFelipe Balbi``DebugFS`` 1948b4cfe0bSFelipe Balbi------------- 1958b4cfe0bSFelipe Balbi 1968b4cfe0bSFelipe Balbi``DebugFS`` is very good for gathering snapshots of what's going on 1978b4cfe0bSFelipe Balbiwith DWC3 and/or any endpoint. 1988b4cfe0bSFelipe Balbi 1998b4cfe0bSFelipe BalbiOn DWC3's ``DebugFS`` directory, you will find the following files and 2008b4cfe0bSFelipe Balbidirectories: 2018b4cfe0bSFelipe Balbi 2028b4cfe0bSFelipe Balbi``ep[0..15]{in,out}/`` 2038b4cfe0bSFelipe Balbi``link_state`` 2048b4cfe0bSFelipe Balbi``regdump`` 2058b4cfe0bSFelipe Balbi``testmode`` 2068b4cfe0bSFelipe Balbi 2078b4cfe0bSFelipe Balbi``link_state`` 2088b4cfe0bSFelipe Balbi`````````````` 2098b4cfe0bSFelipe Balbi 2108b4cfe0bSFelipe BalbiWhen read, ``link_state`` will print out one of ``U0``, ``U1``, 2118b4cfe0bSFelipe Balbi``U2``, ``U3``, ``SS.Disabled``, ``RX.Detect``, ``SS.Inactive``, 2128b4cfe0bSFelipe Balbi``Polling``, ``Recovery``, ``Hot Reset``, ``Compliance``, 2138b4cfe0bSFelipe Balbi``Loopback``, ``Reset``, ``Resume`` or ``UNKNOWN link state``. 2148b4cfe0bSFelipe Balbi 2158b4cfe0bSFelipe BalbiThis file can also be written to in order to force link to one of the 2168b4cfe0bSFelipe Balbistates above. 2178b4cfe0bSFelipe Balbi 2188b4cfe0bSFelipe Balbi``regdump`` 2198b4cfe0bSFelipe Balbi````````````` 2208b4cfe0bSFelipe Balbi 2218b4cfe0bSFelipe BalbiFile name is self-explanatory. When read, ``regdump`` will print out a 2228b4cfe0bSFelipe Balbiregister dump of DWC3. Note that this file can be grepped to find the 2238b4cfe0bSFelipe Balbiinformation you want. 2248b4cfe0bSFelipe Balbi 2258b4cfe0bSFelipe Balbi``testmode`` 2268b4cfe0bSFelipe Balbi`````````````` 2278b4cfe0bSFelipe Balbi 2288b4cfe0bSFelipe BalbiWhen read, ``testmode`` will print out a name of one of the specified 2298b4cfe0bSFelipe BalbiUSB 2.0 Testmodes (``test_j``, ``test_k``, ``test_se0_nak``, 2308b4cfe0bSFelipe Balbi``test_packet``, ``test_force_enable``) or the string ``no test`` in 2318b4cfe0bSFelipe Balbicase no tests are currently being executed. 2328b4cfe0bSFelipe Balbi 2338b4cfe0bSFelipe BalbiIn order to start any of these test modes, the same strings can be 2348b4cfe0bSFelipe Balbiwritten to the file and DWC3 will enter the requested test mode. 2358b4cfe0bSFelipe Balbi 2368b4cfe0bSFelipe Balbi 2378b4cfe0bSFelipe Balbi``ep[0..15]{in,out}`` 2388b4cfe0bSFelipe Balbi`````````````````````` 2398b4cfe0bSFelipe Balbi 2408b4cfe0bSFelipe BalbiFor each endpoint we expose one directory following the naming 2418b4cfe0bSFelipe Balbiconvention ``ep$num$dir`` *(ep0in, ep0out, ep1in, ...)*. Inside each 2428b4cfe0bSFelipe Balbiof these directories you will find the following files: 2438b4cfe0bSFelipe Balbi 2448b4cfe0bSFelipe Balbi``descriptor_fetch_queue`` 2458b4cfe0bSFelipe Balbi``event_queue`` 2468b4cfe0bSFelipe Balbi``rx_fifo_queue`` 2478b4cfe0bSFelipe Balbi``rx_info_queue`` 2488b4cfe0bSFelipe Balbi``rx_request_queue`` 2498b4cfe0bSFelipe Balbi``transfer_type`` 2508b4cfe0bSFelipe Balbi``trb_ring`` 2518b4cfe0bSFelipe Balbi``tx_fifo_queue`` 2528b4cfe0bSFelipe Balbi``tx_request_queue`` 2538b4cfe0bSFelipe Balbi 2548b4cfe0bSFelipe BalbiWith access to Synopsys Databook, you can decode the information on 2558b4cfe0bSFelipe Balbithem. 2568b4cfe0bSFelipe Balbi 2578b4cfe0bSFelipe Balbi``transfer_type`` 2588b4cfe0bSFelipe Balbi~~~~~~~~~~~~~~~~~~ 2598b4cfe0bSFelipe Balbi 2608b4cfe0bSFelipe BalbiWhen read, ``transfer_type`` will print out one of ``control``, 2618b4cfe0bSFelipe Balbi``bulk``, ``interrupt`` or ``isochronous`` depending on what the 2628b4cfe0bSFelipe Balbiendpoint descriptor says. If the endpoint hasn't been enabled yet, it 2638b4cfe0bSFelipe Balbiwill print ``--``. 2648b4cfe0bSFelipe Balbi 2658b4cfe0bSFelipe Balbi``trb_ring`` 2668b4cfe0bSFelipe Balbi~~~~~~~~~~~~~ 2678b4cfe0bSFelipe Balbi 2688b4cfe0bSFelipe BalbiWhen read, ``trb_ring`` will print out details about all TRBs on the 2698b4cfe0bSFelipe Balbiring. It will also tell you where our enqueue and dequeue pointers are 2708b4cfe0bSFelipe Balbilocated in the ring: 2718b4cfe0bSFelipe Balbi 2728b4cfe0bSFelipe Balbi.. code-block:: sh 2738b4cfe0bSFelipe Balbi 2748b4cfe0bSFelipe Balbi buffer_addr,size,type,ioc,isp_imi,csp,chn,lst,hwo 2758b4cfe0bSFelipe Balbi 000000002c754000,481,normal,1,0,1,0,0,0 2768b4cfe0bSFelipe Balbi 000000002c75c000,481,normal,1,0,1,0,0,0 2778b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 2788b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 2798b4cfe0bSFelipe Balbi 000000002c78c000,481,normal,1,0,1,0,0,0 2808b4cfe0bSFelipe Balbi 000000002c754000,481,normal,1,0,1,0,0,0 2818b4cfe0bSFelipe Balbi 000000002c75c000,481,normal,1,0,1,0,0,0 2828b4cfe0bSFelipe Balbi 000000002c784000,481,normal,1,0,1,0,0,0 2838b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 2848b4cfe0bSFelipe Balbi 000000002c78c000,481,normal,1,0,1,0,0,0 2858b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 2868b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 2878b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 2888b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 2898b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 2908b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 2918b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 2928b4cfe0bSFelipe Balbi 000000002c784000,481,normal,1,0,1,0,0,0 2938b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 2948b4cfe0bSFelipe Balbi 000000002c78c000,481,normal,1,0,1,0,0,0 2958b4cfe0bSFelipe Balbi 000000002c754000,481,normal,1,0,1,0,0,0 2968b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 2978b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 2988b4cfe0bSFelipe Balbi 000000002c784000,481,normal,1,0,1,0,0,0 2998b4cfe0bSFelipe Balbi 000000002c78c000,481,normal,1,0,1,0,0,0 3008b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 3018b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3028b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3038b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 3048b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 3058b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3068b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3078b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 3088b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 3098b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3108b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3118b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 3128b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 3138b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3148b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3158b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 3168b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 3178b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3188b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3198b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 3208b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 3218b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3228b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3238b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 3248b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 3258b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3268b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3278b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 3288b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 3298b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3308b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3318b4cfe0bSFelipe Balbi 000000002c78c000,481,normal,1,0,1,0,0,0 3328b4cfe0bSFelipe Balbi 000000002c784000,481,normal,1,0,1,0,0,0 3338b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 3348b4cfe0bSFelipe Balbi 000000002c78c000,481,normal,1,0,1,0,0,0 3358b4cfe0bSFelipe Balbi 000000002c754000,481,normal,1,0,1,0,0,0 3368b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3378b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3388b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 3398b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 3408b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3418b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3428b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3438b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3448b4cfe0bSFelipe Balbi 000000002c78c000,481,normal,1,0,1,0,0,0 3458b4cfe0bSFelipe Balbi 000000002c75c000,481,normal,1,0,1,0,0,0 3468b4cfe0bSFelipe Balbi 000000002c78c000,481,normal,1,0,1,0,0,0 3478b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3488b4cfe0bSFelipe Balbi 000000002c754000,481,normal,1,0,1,0,0,0 3498b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 3508b4cfe0bSFelipe Balbi 000000002c754000,481,normal,1,0,1,0,0,0 3518b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3528b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 3538b4cfe0bSFelipe Balbi 000000002c78c000,481,normal,1,0,1,0,0,0 3548b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 3558b4cfe0bSFelipe Balbi 000000002c754000,481,normal,1,0,1,0,0,0 3568b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3578b4cfe0bSFelipe Balbi 000000002c75c000,481,normal,1,0,1,0,0,0 3588b4cfe0bSFelipe Balbi 000000002c780000,481,normal,1,0,1,0,0,0 3598b4cfe0bSFelipe Balbi 000000002c784000,481,normal,1,0,1,0,0,0 3608b4cfe0bSFelipe Balbi 000000002c788000,481,normal,1,0,1,0,0,0 3618b4cfe0bSFelipe Balbi 000000002c78c000,481,normal,1,0,1,0,0,0 3628b4cfe0bSFelipe Balbi 000000002c790000,481,normal,1,0,1,0,0,0 3638b4cfe0bSFelipe Balbi 000000002c754000,481,normal,1,0,1,0,0,0 3648b4cfe0bSFelipe Balbi 000000002c758000,481,normal,1,0,1,0,0,0 3658b4cfe0bSFelipe Balbi 000000002c75c000,512,normal,1,0,1,0,0,1 D 3668b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 E 3678b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3688b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3698b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3708b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3718b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3728b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3738b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3748b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3758b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3768b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3778b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3788b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3798b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3808b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3818b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3828b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3838b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3848b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3858b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3868b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3878b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3888b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3898b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3908b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3918b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3928b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3938b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3948b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3958b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3968b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3978b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3988b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 3998b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4008b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4018b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4028b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4038b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4048b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4058b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4068b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4078b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4088b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4098b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4108b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4118b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4128b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4138b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4148b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4158b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4168b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4178b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4188b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4198b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4208b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4218b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4228b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4238b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4248b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4258b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4268b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4278b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4288b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4298b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4308b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4318b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4328b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4338b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4348b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4358b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4368b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4378b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4388b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4398b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4408b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4418b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4428b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4438b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4448b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4458b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4468b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4478b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4488b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4498b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4508b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4518b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4528b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4538b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4548b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4558b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4568b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4578b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4588b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4598b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4608b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4618b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4628b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4638b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4648b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4658b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4668b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4678b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4688b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4698b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4708b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4718b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4728b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4738b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4748b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4758b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4768b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4778b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4788b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4798b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4808b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4818b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4828b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4838b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4848b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4858b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4868b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4878b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4888b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4898b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4908b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4918b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4928b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4938b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4948b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4958b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4968b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4978b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4988b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 4998b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5008b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5018b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5028b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5038b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5048b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5058b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5068b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5078b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5088b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5098b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5108b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5118b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5128b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5138b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5148b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5158b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5168b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5178b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5188b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5198b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5208b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5218b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5228b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5238b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5248b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5258b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5268b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5278b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5288b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5298b4cfe0bSFelipe Balbi 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 5308b4cfe0bSFelipe Balbi 00000000381ab000,0,link,0,0,0,0,0,1 5318b4cfe0bSFelipe Balbi 5328b4cfe0bSFelipe Balbi 5338b4cfe0bSFelipe BalbiTrace Events 5348b4cfe0bSFelipe Balbi------------- 5358b4cfe0bSFelipe Balbi 5368b4cfe0bSFelipe BalbiDWC3 also provides several trace events which help us gathering 5378b4cfe0bSFelipe Balbiinformation about the behavior of the driver during runtime. 5388b4cfe0bSFelipe Balbi 5398b4cfe0bSFelipe BalbiIn order to use these events, you must enable ``CONFIG_FTRACE`` in 5408b4cfe0bSFelipe Balbiyour kernel config. 5418b4cfe0bSFelipe Balbi 5428b4cfe0bSFelipe BalbiFor details about how enable DWC3 events, see section **Reporting 5438b4cfe0bSFelipe BalbiBugs**. 5448b4cfe0bSFelipe Balbi 5458b4cfe0bSFelipe BalbiThe following subsections will give details about each Event Class and 5468b4cfe0bSFelipe Balbieach Event defined by DWC3. 5478b4cfe0bSFelipe Balbi 5488b4cfe0bSFelipe BalbiMMIO 5498b4cfe0bSFelipe Balbi``````` 5508b4cfe0bSFelipe Balbi 5518b4cfe0bSFelipe BalbiIt is sometimes useful to look at every MMIO access when looking for 5528b4cfe0bSFelipe Balbibugs. Because of that, DWC3 offers two Trace Events (one for 5538b4cfe0bSFelipe Balbidwc3_readl() and one for dwc3_writel()). ``TP_printk`` follows:: 5548b4cfe0bSFelipe Balbi 5558b4cfe0bSFelipe Balbi TP_printk("addr %p value %08x", __entry->base + __entry->offset, 5568b4cfe0bSFelipe Balbi __entry->value) 5578b4cfe0bSFelipe Balbi 5588b4cfe0bSFelipe BalbiInterrupt Events 5598b4cfe0bSFelipe Balbi```````````````` 5608b4cfe0bSFelipe Balbi 5618b4cfe0bSFelipe BalbiEvery IRQ event can be logged and decoded into a human readable 5628b4cfe0bSFelipe Balbistring. Because every event will be different, we don't give an 5638b4cfe0bSFelipe Balbiexample other than the ``TP_printk`` format used:: 5648b4cfe0bSFelipe Balbi 5658b4cfe0bSFelipe Balbi TP_printk("event (%08x): %s", __entry->event, 5668b4cfe0bSFelipe Balbi dwc3_decode_event(__entry->event, __entry->ep0state)) 5678b4cfe0bSFelipe Balbi 5688b4cfe0bSFelipe BalbiControl Request 5698b4cfe0bSFelipe Balbi````````````````` 5708b4cfe0bSFelipe Balbi 5718b4cfe0bSFelipe BalbiEvery USB Control Request can be logged to the trace buffer. The 5728b4cfe0bSFelipe Balbioutput format is:: 5738b4cfe0bSFelipe Balbi 5748b4cfe0bSFelipe Balbi TP_printk("%s", dwc3_decode_ctrl(__entry->bRequestType, 5758b4cfe0bSFelipe Balbi __entry->bRequest, __entry->wValue, 5768b4cfe0bSFelipe Balbi __entry->wIndex, __entry->wLength) 5778b4cfe0bSFelipe Balbi ) 5788b4cfe0bSFelipe Balbi 5798b4cfe0bSFelipe BalbiNote that Standard Control Requests will be decoded into 5808b4cfe0bSFelipe Balbihuman-readable strings with their respective arguments. Class and 5818b4cfe0bSFelipe BalbiVendor requests will be printed out a sequence of 8 bytes in hex 5828b4cfe0bSFelipe Balbiformat. 5838b4cfe0bSFelipe Balbi 5848b4cfe0bSFelipe BalbiLifetime of a ``struct usb_request`` 5858b4cfe0bSFelipe Balbi``````````````````````````````````````` 5868b4cfe0bSFelipe Balbi 5878b4cfe0bSFelipe BalbiThe entire lifetime of a ``struct usb_request`` can be tracked on the 5888b4cfe0bSFelipe Balbitrace buffer. We have one event for each of allocation, free, 5898b4cfe0bSFelipe Balbiqueueing, dequeueing, and giveback. Output format is:: 5908b4cfe0bSFelipe Balbi 5918b4cfe0bSFelipe Balbi TP_printk("%s: req %p length %u/%u %s%s%s ==> %d", 5928b4cfe0bSFelipe Balbi __get_str(name), __entry->req, __entry->actual, __entry->length, 5938b4cfe0bSFelipe Balbi __entry->zero ? "Z" : "z", 5948b4cfe0bSFelipe Balbi __entry->short_not_ok ? "S" : "s", 5958b4cfe0bSFelipe Balbi __entry->no_interrupt ? "i" : "I", 5968b4cfe0bSFelipe Balbi __entry->status 5978b4cfe0bSFelipe Balbi ) 5988b4cfe0bSFelipe Balbi 5998b4cfe0bSFelipe BalbiGeneric Commands 6008b4cfe0bSFelipe Balbi```````````````````` 6018b4cfe0bSFelipe Balbi 6028b4cfe0bSFelipe BalbiWe can log and decode every Generic Command with its completion 6038b4cfe0bSFelipe Balbicode. Format is:: 6048b4cfe0bSFelipe Balbi 6058b4cfe0bSFelipe Balbi TP_printk("cmd '%s' [%x] param %08x --> status: %s", 6068b4cfe0bSFelipe Balbi dwc3_gadget_generic_cmd_string(__entry->cmd), 6078b4cfe0bSFelipe Balbi __entry->cmd, __entry->param, 6088b4cfe0bSFelipe Balbi dwc3_gadget_generic_cmd_status_string(__entry->status) 6098b4cfe0bSFelipe Balbi ) 6108b4cfe0bSFelipe Balbi 6118b4cfe0bSFelipe BalbiEndpoint Commands 6128b4cfe0bSFelipe Balbi```````````````````` 6138b4cfe0bSFelipe Balbi 6148b4cfe0bSFelipe BalbiEndpoints commands can also be logged together with completion 6158b4cfe0bSFelipe Balbicode. Format is:: 6168b4cfe0bSFelipe Balbi 6178b4cfe0bSFelipe Balbi TP_printk("%s: cmd '%s' [%d] params %08x %08x %08x --> status: %s", 6188b4cfe0bSFelipe Balbi __get_str(name), dwc3_gadget_ep_cmd_string(__entry->cmd), 6198b4cfe0bSFelipe Balbi __entry->cmd, __entry->param0, 6208b4cfe0bSFelipe Balbi __entry->param1, __entry->param2, 6218b4cfe0bSFelipe Balbi dwc3_ep_cmd_status_string(__entry->cmd_status) 6228b4cfe0bSFelipe Balbi ) 6238b4cfe0bSFelipe Balbi 6248b4cfe0bSFelipe BalbiLifetime of a ``TRB`` 6258b4cfe0bSFelipe Balbi`````````````````````` 6268b4cfe0bSFelipe Balbi 6278b4cfe0bSFelipe BalbiA ``TRB`` Lifetime is simple. We are either preparing a ``TRB`` or 6288b4cfe0bSFelipe Balbicompleting it. With these two events, we can see how a ``TRB`` changes 6298b4cfe0bSFelipe Balbiover time. Format is:: 6308b4cfe0bSFelipe Balbi 6318b4cfe0bSFelipe Balbi TP_printk("%s: %d/%d trb %p buf %08x%08x size %s%d ctrl %08x (%c%c%c%c:%c%c:%s)", 6328b4cfe0bSFelipe Balbi __get_str(name), __entry->queued, __entry->allocated, 6338b4cfe0bSFelipe Balbi __entry->trb, __entry->bph, __entry->bpl, 6348b4cfe0bSFelipe Balbi ({char *s; 6358b4cfe0bSFelipe Balbi int pcm = ((__entry->size >> 24) & 3) + 1; 6368b4cfe0bSFelipe Balbi switch (__entry->type) { 6378b4cfe0bSFelipe Balbi case USB_ENDPOINT_XFER_INT: 6388b4cfe0bSFelipe Balbi case USB_ENDPOINT_XFER_ISOC: 6398b4cfe0bSFelipe Balbi switch (pcm) { 6408b4cfe0bSFelipe Balbi case 1: 6418b4cfe0bSFelipe Balbi s = "1x "; 6428b4cfe0bSFelipe Balbi break; 6438b4cfe0bSFelipe Balbi case 2: 6448b4cfe0bSFelipe Balbi s = "2x "; 6458b4cfe0bSFelipe Balbi break; 6468b4cfe0bSFelipe Balbi case 3: 6478b4cfe0bSFelipe Balbi s = "3x "; 6488b4cfe0bSFelipe Balbi break; 6498b4cfe0bSFelipe Balbi } 6508b4cfe0bSFelipe Balbi default: 6518b4cfe0bSFelipe Balbi s = ""; 6528b4cfe0bSFelipe Balbi } s; }), 6538b4cfe0bSFelipe Balbi DWC3_TRB_SIZE_LENGTH(__entry->size), __entry->ctrl, 6548b4cfe0bSFelipe Balbi __entry->ctrl & DWC3_TRB_CTRL_HWO ? 'H' : 'h', 6558b4cfe0bSFelipe Balbi __entry->ctrl & DWC3_TRB_CTRL_LST ? 'L' : 'l', 6568b4cfe0bSFelipe Balbi __entry->ctrl & DWC3_TRB_CTRL_CHN ? 'C' : 'c', 6578b4cfe0bSFelipe Balbi __entry->ctrl & DWC3_TRB_CTRL_CSP ? 'S' : 's', 6588b4cfe0bSFelipe Balbi __entry->ctrl & DWC3_TRB_CTRL_ISP_IMI ? 'S' : 's', 6598b4cfe0bSFelipe Balbi __entry->ctrl & DWC3_TRB_CTRL_IOC ? 'C' : 'c', 6608b4cfe0bSFelipe Balbi dwc3_trb_type_string(DWC3_TRBCTL_TYPE(__entry->ctrl)) 6618b4cfe0bSFelipe Balbi ) 6628b4cfe0bSFelipe Balbi 6638b4cfe0bSFelipe BalbiLifetime of an Endpoint 6648b4cfe0bSFelipe Balbi``````````````````````` 6658b4cfe0bSFelipe Balbi 6668b4cfe0bSFelipe BalbiAnd endpoint's lifetime is summarized with enable and disable 6678b4cfe0bSFelipe Balbioperations, both of which can be traced. Format is:: 6688b4cfe0bSFelipe Balbi 6698b4cfe0bSFelipe Balbi TP_printk("%s: mps %d/%d streams %d burst %d ring %d/%d flags %c:%c%c%c%c%c:%c:%c", 6708b4cfe0bSFelipe Balbi __get_str(name), __entry->maxpacket, 6718b4cfe0bSFelipe Balbi __entry->maxpacket_limit, __entry->max_streams, 6728b4cfe0bSFelipe Balbi __entry->maxburst, __entry->trb_enqueue, 6738b4cfe0bSFelipe Balbi __entry->trb_dequeue, 6748b4cfe0bSFelipe Balbi __entry->flags & DWC3_EP_ENABLED ? 'E' : 'e', 6758b4cfe0bSFelipe Balbi __entry->flags & DWC3_EP_STALL ? 'S' : 's', 6768b4cfe0bSFelipe Balbi __entry->flags & DWC3_EP_WEDGE ? 'W' : 'w', 6775f2e7975SFelipe Balbi __entry->flags & DWC3_EP_TRANSFER_STARTED ? 'B' : 'b', 6788b4cfe0bSFelipe Balbi __entry->flags & DWC3_EP_PENDING_REQUEST ? 'P' : 'p', 6798b4cfe0bSFelipe Balbi __entry->flags & DWC3_EP_END_TRANSFER_PENDING ? 'E' : 'e', 6808b4cfe0bSFelipe Balbi __entry->direction ? '<' : '>' 6818b4cfe0bSFelipe Balbi ) 6828b4cfe0bSFelipe Balbi 6838b4cfe0bSFelipe Balbi 6848b4cfe0bSFelipe BalbiStructures, Methods and Definitions 6858b4cfe0bSFelipe Balbi==================================== 6868b4cfe0bSFelipe Balbi 6878b4cfe0bSFelipe Balbi.. kernel-doc:: drivers/usb/dwc3/core.h 6888b4cfe0bSFelipe Balbi :doc: main data structures 6898b4cfe0bSFelipe Balbi :internal: 6908b4cfe0bSFelipe Balbi 6918b4cfe0bSFelipe Balbi.. kernel-doc:: drivers/usb/dwc3/gadget.h 6928b4cfe0bSFelipe Balbi :doc: gadget-only helpers 6938b4cfe0bSFelipe Balbi :internal: 6948b4cfe0bSFelipe Balbi 6958b4cfe0bSFelipe Balbi.. kernel-doc:: drivers/usb/dwc3/gadget.c 6968b4cfe0bSFelipe Balbi :doc: gadget-side implementation 6978b4cfe0bSFelipe Balbi :internal: 6988b4cfe0bSFelipe Balbi 6998b4cfe0bSFelipe Balbi.. kernel-doc:: drivers/usb/dwc3/core.c 7008b4cfe0bSFelipe Balbi :doc: core driver (probe, PM, etc) 7018b4cfe0bSFelipe Balbi :internal: 7028b4cfe0bSFelipe Balbi 7038b4cfe0bSFelipe Balbi.. [#trb] Transfer Request Block 7048b4cfe0bSFelipe Balbi.. [#link_trb] Transfer Request Block pointing to another Transfer 7058b4cfe0bSFelipe Balbi Request Block. 7068b4cfe0bSFelipe Balbi.. [#debugfs] The Debug File System 7078b4cfe0bSFelipe Balbi.. [#configfs] The Config File System 7088b4cfe0bSFelipe Balbi.. [#cbw] Command Block Wrapper 7098b4cfe0bSFelipe Balbi.. _Linus' tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/ 7108b4cfe0bSFelipe Balbi.. _me: felipe.balbi@linux.intel.com 7118b4cfe0bSFelipe Balbi.. _linux-usb: linux-usb@vger.kernel.org 712