summaryrefslogtreecommitdiff
path: root/tools/proxyclient/hv/trace_codecs.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/proxyclient/hv/trace_codecs.py')
-rw-r--r--tools/proxyclient/hv/trace_codecs.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/tools/proxyclient/hv/trace_codecs.py b/tools/proxyclient/hv/trace_codecs.py
new file mode 100644
index 0000000..4cd9730
--- /dev/null
+++ b/tools/proxyclient/hv/trace_codecs.py
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: MIT
+
+from m1n1.utils import RegMap
+from m1n1.trace.i2c import I2CTracer, I2CRegMapTracer
+from m1n1.hw.codecs import *
+
+hv.p.hv_set_time_stealing(0, 1)
+
+class SN012776Tracer(I2CRegMapTracer):
+ REGMAP = SN012776Regs
+ ADDRESSING = (1, 1)
+
+class TAS5770Tracer(I2CRegMapTracer):
+ REGMAP = TAS5770Regs
+ ADDRESSING = (1, 1)
+
+class CS42L84Tracer(I2CRegMapTracer):
+ REGMAP = CS42L84Regs
+ ADDRESSING = (0, 2)
+
+i2c_tracers = {}
+
+for node in hv.adt["/arm-io"]:
+ if not node.name.startswith("i2c"):
+ continue
+
+ n = int(node.name[3:])
+ i2c_tracers[n] = bus = I2CTracer(hv, f"/arm-io/{node.name}")
+
+ for devnode in node:
+ if "compatible" not in devnode._properties: # thanks Apple
+ continue
+
+ dcls = {
+ "audio-control,tas5770": TAS5770Tracer,
+ "audio-control,sn012776": SN012776Tracer,
+ "audio-control,cs42l84": CS42L84Tracer,
+ }.get(devnode.compatible[0], None)
+ if dcls:
+ bus.add_device(
+ devnode.reg[0] & 0xff,
+ dcls(name=devnode.name)
+ )
+
+ bus.start()