Skip to content

Commit 526f81f

Browse files
povikmarcan
authored andcommitted
m1n1.hw.codecs: Add iMac codec
Signed-off-by: Martin Povišer <[email protected]>
1 parent d29df8e commit 526f81f

4 files changed

Lines changed: 75 additions & 1 deletion

File tree

proxyclient/hv/trace_codecs.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ class CS42L84Tracer(I2CRegMapTracer):
1818
REGMAP = CS42L84Regs
1919
ADDRESSING = (0, 2)
2020

21+
class SSM3515Tracer(I2CRegMapTracer):
22+
REGMAP = SSM3515Regs
23+
ADDRESSING = (0, 1)
24+
2125
i2c_tracers = {}
2226

2327
for node in hv.adt["/arm-io"]:
@@ -35,6 +39,7 @@ class CS42L84Tracer(I2CRegMapTracer):
3539
"audio-control,tas5770": TAS5770Tracer,
3640
"audio-control,sn012776": SN012776Tracer,
3741
"audio-control,cs42l84": CS42L84Tracer,
42+
"audio-control,ssm3515": SSM3515Tracer,
3843
}.get(devnode.compatible[0], None)
3944
if dcls:
4045
bus.add_device(

proxyclient/m1n1/hw/codecs/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from m1n1.utils import RegMap, Register8
22
from enum import IntEnum
33
from .cs42l84 import *
4+
from .ssm3515 import *
45

56
class E_PWR_MODE(IntEnum):
67
ACTIVE = 0
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
from m1n1.utils import Register8, RegMap
2+
from enum import IntEnum
3+
4+
class R_PWR(Register8):
5+
APWDN_EN = 7
6+
BSNS_PWDN = 6
7+
S_RST = 1
8+
SPWDN = 0
9+
10+
class R_GEC(Register8):
11+
EDGE = 4
12+
ANA_GAIN = 1, 0
13+
14+
class E_FS(IntEnum):
15+
FS_8_12 = 0b000
16+
FS_16_24 = 0b001
17+
FS_32_48 = 0b010
18+
FS_64_96 = 0b011
19+
FS_128_192 = 0b100
20+
FS_48_72 = 0b101
21+
22+
class R_DAC(Register8):
23+
HV = 7
24+
MUTE = 6
25+
HPF = 5
26+
LPM = 4
27+
FS = 1, 0, E_FS
28+
29+
class R_SAI1(Register8):
30+
DAC_POL = 7
31+
BCLK_POL = 6
32+
TDM_BCLKS = 5, 3
33+
FSYNC_MODE = 2
34+
SDATA_FMT = 1
35+
SAI_MODE = 0
36+
37+
class R_SAI2(Register8):
38+
DATA_WIDTH = 7
39+
AUTO_SLOT = 4
40+
TDM_SLOT = 3, 0
41+
42+
class R_STATUS(Register8):
43+
UVLO_VREG = 6
44+
LIM_EG = 5
45+
CLIP = 4
46+
AMP_OC = 3
47+
OTF = 2
48+
OTW = 1
49+
BAT_WARN = 0
50+
51+
class SSM3515Regs(RegMap):
52+
PWR = 0x00, R_PWR
53+
GEC = 0x01, R_GEC
54+
DAC = 0x02, R_DAC
55+
DAC_VOL = 0x03, Register8
56+
SAI1 = 0x04, R_SAI1
57+
SAI2 = 0x05, R_SAI2
58+
VBAT_OUT = 0x06, Register8
59+
LIM1 = 0x07, Register8
60+
LIM2 = 0x08, Register8
61+
LIM3 = 0x09, Register8
62+
STATUS = 0x0a, Register8
63+
FAULT = 0x0b, Register8

proxyclient/tools/codecshell.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ class CS42L84(I2CRegMapDev):
2828
REGMAP = CS42L84Regs
2929
ADDRESSING = (0, 2)
3030

31+
class SSM3515(I2CRegMapDev):
32+
REGMAP = SSM3515Regs
33+
ADDRESSING = (0, 1)
34+
3135
gpios = {}
3236
for node in u.adt["/arm-io"]:
3337
if node.name.endswith("gpio") or node.name.endswith("gpio0"):
@@ -49,6 +53,7 @@ class CS42L84(I2CRegMapDev):
4953
"audio-control,tas5770": TAS5770,
5054
"audio-control,sn012776": SN012776,
5155
"audio-control,cs42l84": CS42L84,
56+
"audio-control,ssm3515": SSM3515,
5257
}.get(devnode.compatible[0], None)
5358

5459
if not dcls:
@@ -58,7 +63,7 @@ class CS42L84(I2CRegMapDev):
5863
dev.node = devnode
5964
i2c[n].devs.append(dev)
6065

61-
if type(dev) in [TAS5770, SN012776]:
66+
if type(dev) in [TAS5770, SN012776, SSM3515]:
6267
spks.append(dev)
6368
else:
6469
hp = dev

0 commit comments

Comments
 (0)