mirror of
https://github.com/AsahiLinux/m1n1
synced 2024-12-29 06:23:05 +00:00
526f81f51e
Signed-off-by: Martin Povišer <povik@cutebit.org>
50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
# 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)
|
|
|
|
class SSM3515Tracer(I2CRegMapTracer):
|
|
REGMAP = SSM3515Regs
|
|
ADDRESSING = (0, 1)
|
|
|
|
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,
|
|
"audio-control,ssm3515": SSM3515Tracer,
|
|
}.get(devnode.compatible[0], None)
|
|
if dcls:
|
|
bus.add_device(
|
|
devnode.reg[0] & 0xff,
|
|
dcls(name=devnode.name)
|
|
)
|
|
|
|
bus.start()
|