diff options
Diffstat (limited to 'tools/proxyclient/hv/trace_i2c.py')
| -rw-r--r-- | tools/proxyclient/hv/trace_i2c.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tools/proxyclient/hv/trace_i2c.py b/tools/proxyclient/hv/trace_i2c.py new file mode 100644 index 0000000..f64fd24 --- /dev/null +++ b/tools/proxyclient/hv/trace_i2c.py @@ -0,0 +1,41 @@ +# SPDX-License-Identifier: MIT + +from m1n1.trace.i2c import I2CTracer + +I2CTracer = I2CTracer._reloadcls() + +i2c_tracers = {} + +for node in hv.adt["/arm-io"]: + if node.name.startswith("i2c"): + n = int(node.name[3:]) + i2c_tracers[n] = I2CTracer(hv, f"/arm-io/i2c{n}", verbose=0) + i2c_tracers[n].stop() + i2c_tracers[n].start() + if hv.ctx: + for irq in getattr(node, "interrupts"): + hv.trace_irq(node.name, irq, 1, hv.IRQTRACE_IRQ) + +from m1n1.gpiola import GPIOLogicAnalyzer + +if not hv.started: + for cpu in list(hv.adt["cpus"]): + if cpu.name == "cpu3": + print(f"Removing ADT node {cpu._path}") + del hv.adt["cpus"][cpu.name] + +if not hv.started or hv.ctx is not None: + m = GPIOLogicAnalyzer(u, "arm-io/gpio", + pins={"scl": 0xc9, "sda": 0xc7}, + div=1, on_pin_change=True, cpu=3) + + m.load_regmap(list(i2c_tracers[1].regmaps.values())[0], + regs={"SMSTA", "XFSTA"}) + +def start_la(): + m.start(1000000, bufsize=0x80000) + hv.cont() + +def stop_la(): + m.complete() + m.show() |
