-
Notifications
You must be signed in to change notification settings - Fork 215
/
Copy pathtrace_atc.py
298 lines (237 loc) · 6.56 KB
/
trace_atc.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
# SPDX-License-Identifier: MIT
from construct.core import Int16ul, Int32ul, Int64ul, Int8ub, Int8ul
# from proxyclient.m1n1.utils import RegMap
import struct
from enum import IntEnum
from m1n1.hv import TraceMode
from m1n1.utils import *
from m1n1.trace import ADTDevTracer
from m1n1.proxyutils import RegMonitor
from m1n1.utils import *
from m1n1.trace.dart import DARTTracer
from m1n1.trace.asc import ASCTracer, ASCRegs, EP, EPState, msg, msg_log, DIR
class R_ATCPHY_USB2PHY_USBCTL(Register32):
MODE_HOST = 1
MODE_ISOLATION = 2
class R_ATCPHY_USB2PHY_CTL(Register32):
RESET = 0
PORT_RESET = 1
APB_RESETN = 2
SIDDQ = 3
class R_ATCPHY_USB2PHY_SIG(Register32):
VBUSDET_FORCE_VAL = 0
VBUSDET_FORCE_EN = 1
VBUSVLDEXT_FORCE_VAL = 2
VBUSVLDEXT_FORCE_EN = 3
MODE_HOST = 12 + 7, 12
class R_ATCPHY_USB2PHY_MISCTUNE(Register32):
APBCLK_GATE_OFF = 29
REFCLK_GATE_OFF = 30
class PhyRegs(RegMap):
USB2PHY_USBCTL = 0x00, R_ATCPHY_USB2PHY_USBCTL
USB2PHY_CTL = 0x04, R_ATCPHY_USB2PHY_CTL
USB2PHY_SIG = 0x08, R_ATCPHY_USB2PHY_SIG
USB2PHY_MISCTUNE = 0x1C, R_ATCPHY_USB2PHY_MISCTUNE
class PhyTracer(ADTDevTracer):
DEFAULT_MODE = TraceMode.SYNC
REGMAPS = [PhyRegs]
NAMES = ["usb-phy"]
ENDPOINTS = {}
def init_state(self):
self.state.ep = {}
def start(self):
self.cmd_cache = {}
super().start()
class R_XHCI_USBCMD(Register32):
EU3S = 11
EWE = 10
CRS = 9
CSS = 8
LHCRST = 7
HSEE = 3
INTE = 2
HCRST = 1
RS = 0
class R_XHCI_USBSTS(Register32):
HCE = 12
CNR = 11
SRE = 10
RSS = 9
SSS = 8
PCD = 4
EINT = 3
HSE = 2
HCH = 0
class R_XHCI_CRCR_LO(Register32):
CRP = 31, 6
CRR = 3
CA = 2
CS = 1
RCS = 0
class R_XHCI_DNCTRL(Register32):
N0_N15 = 15, 0
class R_XHCI_DOORBELL(Register32):
TASK_ID = 31, 16
RSVD = 15, 8
TARGET = 7, 0
class R_XHCI_PORTSC(Register32):
CCS = 0
PED = 1
OCA = 3
RESET = 4
PLS = 8, 5
PP = 9
SPEED = 13, 10
PIC = 15, 14
LWS = 16
CSC = 17
PEC = 18
WRC = 19
OCC = 20
PRC = 21
PLC = 22
CEC = 23
CAS = 24
WCE = 25
WDE = 26
WOE = 27
DR = 30
WPR = 31
class R_XHCI_PORTLI(Register32):
ERROR_CNT = 15, 0
RLC = 19, 16
TLC = 23, 20
RSV = 31, 24
class R_XHCI_IMAN(Register32):
IP = 0
IE = 1
class XhciRegs(RegMap):
HCSPARAMS1 = 0x04, Register32
HCSPARAMS2 = 0x08, Register32
HCSPARAMS3 = 0x0C, Register32
HCCPARAMS1 = 0x10, Register32
DBOFF = 0x14, Register32
RTSOFF = 0x18, Register32
HCCPARAMS2 = 0x1C, Register32
USBCMD = 0x20, R_XHCI_USBCMD
USBSTS = 0x24, R_XHCI_USBSTS
DNCTRL = 0x34, R_XHCI_DNCTRL
CRCR_LO = 0x38, R_XHCI_CRCR_LO
CRCR_HI = 0x3C, Register32
DCBAAP_LO = 0x50, Register32
DCBAAP_HI = 0x54, Register32
PORTSC0 = 0x420, R_XHCI_PORTSC
PORTPMSC0 = 0x424, Register32
PORTLI0 = 0x428, R_XHCI_PORTLI
PORTHLPMC0 = 0x42C, Register32
PORTSC1 = 0x430, R_XHCI_PORTSC
PORTPMSC1 = 0x434, Register32
PORTLI1 = 0x438, R_XHCI_PORTLI
PORTHLPMC1 = 0x43C, Register32
MFINDEX = 0x440, Register32
IMAN0 = 0x460 + 0x00, R_XHCI_IMAN
IMOD0 = 0x460 + 0x04, Register32
ERSTSZ0 = 0x460 + 0x08, Register32
RSVD0 = 0x460 + 0x0C, Register32
ERSTBA0 = 0x460 + 0x10, Register64
ERDP0 = 0x460 + 0x18, Register64
IMAN1 = 0x480 + 0x00, R_XHCI_IMAN
IMOD1 = 0x480 + 0x04, Register32
ERSTSZ1 = 0x480 + 0x08, Register32
RSVD1 = 0x480 + 0x0C, Register32
ERSTBA1 = 0x480 + 0x10, Register64
ERDP1 = 0x480 + 0x18, Register64
IMAN2 = 0x4A0 + 0x00, R_XHCI_IMAN
IMOD2 = 0x4A0 + 0x04, Register32
ERSTSZ2 = 0x4A0 + 0x08, Register32
RSVD0 = 0x4A0 + 0x0C, Register32
ERSTBA2 = 0x4A0 + 0x10, Register64
ERDP2 = 0x4A0 + 0x18, Register64
IMAN3 = 0x4C0 + 0x00, R_XHCI_IMAN
IMOD3 = 0x4C0 + 0x04, Register32
ERSTSZ3 = 0x4C0 + 0x08, Register32
RSVD0 = 0x4C0 + 0x0C, Register32
ERSTBA3 = 0x4C0 + 0x10, Register64
ERDP3 = 0x4C0 + 0x18, Register64
DOORBELL = irange(0x4E0, 256, 4), R_XHCI_DOORBELL
class R_GUSB3PIPECTL(Register32):
PHYSOFTRST = 31
U2SSINP3OK = 29
DISRXDETINP3 = 28
UX_EXIT_PX = 27
REQP1P2P3 = 24
DEPOCHANGE = 18
SUSPHY = 17
LFPSFILT = 9
RX_DETOPOLL = 8
class R_GUSB2PHYCFG(Register32):
PHYSOFTRST = 31
U2_FREECLK_EXISTS = 30
SUSPHY = 6
ULPI_UTMI = 4
ENBLSLPM = 8
class R_GCTL(Register32):
U2RSTECN = 16
PRTCAP = 14, 12
CORESOFTRESET = 11
SOFITPSYNC = 10
SCALEDOWN = 6, 4
DISSCRAMBLE = 3
U2EXIT_LFPS = 2
GBLHIBERNATIONEN = 1
DSBLCLKGTNG = 0
class Dwc3CoreRegs(RegMap):
GSBUSCFG0 = 0x100, Register32
GSBUSCFG1 = 0x104, Register32
GTXTHRCFG = 0x108, Register32
GRXTHRCFG = 0x10C, Register32
GCTL = 0x110, R_GCTL
GEVTEN = 0x114, Register32
GSTS = 0x118, Register32
GUCTL1 = 0x11C, Register32
GSNPSID = 0x120, Register32
GGPIO = 0x124, Register32
GUID = 0x128, Register32
GUCTL = 0x12C, Register32
GBUSERRADDR0 = 0x130, Register32
GBUSERRADDR1 = 0x134, Register32
GPRTBIMAP0 = 0x138, Register32
GPRTBIMAP1 = 0x13C, Register32
GHWPARAMS0 = 0x140, Register32
GHWPARAMS1 = 0x144, Register32
GHWPARAMS2 = 0x148, Register32
GHWPARAMS3 = 0x14C, Register32
GHWPARAMS4 = 0x150, Register32
GHWPARAMS5 = 0x154, Register32
GHWPARAMS6 = 0x158, Register32
GHWPARAMS7 = 0x15C, Register32
GDBGFIFOSPACE = 0x160, Register32
GDBGLTSSM = 0x164, Register32
GDBGBMU = 0x16C, Register32
GDBGLSPMUX = 0x170, Register32
GDBGLSP = 0x174, Register32
GDBGEPINFO0 = 0x178, Register32
GDBGEPINFO1 = 0x17C, Register32
GPRTBIMAP_HS0 = 0x180, Register32
GPRTBIMAP_HS1 = 0x184, Register32
GPRTBIMAP_FS0 = 0x188, Register32
GPRTBIMAP_FS1 = 0x18C, Register32
GUCTL2 = 0x19C, Register32
GUSB2PHYCFG = 0x200, R_GUSB2PHYCFG
GUSB2I2CCTL = 0x240, Register32
GUSB2PHYACC = 0x280, Register32
GUSB3PIPECTL = 0x2C0, R_GUSB3PIPECTL
DWC3_GHWPARAMS8 = 0x600, Register32
DWC3_GUCTL3 = 0x60C, Register32
DWC3_GFLADJ = 0x630, Register32
DWC3_GHWPARAMS9 = 0x680, Register32
class Dwc3Tracer(ADTDevTracer):
DEFAULT_MODE = TraceMode.SYNC
REGMAPS = [XhciRegs, None, Dwc3CoreRegs]
NAMES = ["xhci", None, "dwc-core"]
PhyTracer = PhyTracer._reloadcls()
phy_tracer = PhyTracer(hv, "/arm-io/atc-phy1", verbose=2)
phy_tracer.start()
Dwc3Tracer = Dwc3Tracer._reloadcls()
dwc3_tracer = Dwc3Tracer(hv, "/arm-io/usb-drd1", verbose=2)
dwc3_tracer.start()