|
30 | 30 | * ASP1_RX_WL = 24 bits per sample
|
31 | 31 | * ASP1_TX_WL = 24 bits per sample
|
32 | 32 | * ASP1_RXn_EN 1..3 and ASP1_TXn_EN 1..4 disabled
|
| 33 | + * |
| 34 | + * Override any Windows-specific mixer settings applied by the firmware. |
33 | 35 | */
|
34 | 36 | static const struct reg_sequence cs35l56_hda_dai_config[] = {
|
35 | 37 | { CS35L56_ASP1_CONTROL1, 0x00000021 },
|
36 | 38 | { CS35L56_ASP1_CONTROL2, 0x20200200 },
|
37 | 39 | { CS35L56_ASP1_CONTROL3, 0x00000003 },
|
| 40 | + { CS35L56_ASP1_FRAME_CONTROL1, 0x03020100 }, |
| 41 | + { CS35L56_ASP1_FRAME_CONTROL5, 0x00020100 }, |
38 | 42 | { CS35L56_ASP1_DATA_CONTROL5, 0x00000018 },
|
39 | 43 | { CS35L56_ASP1_DATA_CONTROL1, 0x00000018 },
|
40 | 44 | { CS35L56_ASP1_ENABLES1, 0x00000000 },
|
| 45 | + { CS35L56_ASP1TX1_INPUT, 0x00000018 }, |
| 46 | + { CS35L56_ASP1TX2_INPUT, 0x00000019 }, |
| 47 | + { CS35L56_ASP1TX3_INPUT, 0x00000020 }, |
| 48 | + { CS35L56_ASP1TX4_INPUT, 0x00000028 }, |
| 49 | + |
41 | 50 | };
|
42 | 51 |
|
43 | 52 | static void cs35l56_hda_play(struct cs35l56_hda *cs35l56)
|
@@ -133,6 +142,10 @@ static int cs35l56_hda_runtime_resume(struct device *dev)
|
133 | 142 | }
|
134 | 143 | }
|
135 | 144 |
|
| 145 | + ret = cs35l56_force_sync_asp1_registers_from_cache(&cs35l56->base); |
| 146 | + if (ret) |
| 147 | + goto err; |
| 148 | + |
136 | 149 | return 0;
|
137 | 150 |
|
138 | 151 | err:
|
@@ -976,6 +989,9 @@ int cs35l56_hda_common_probe(struct cs35l56_hda *cs35l56, int id)
|
976 | 989 |
|
977 | 990 | regmap_multi_reg_write(cs35l56->base.regmap, cs35l56_hda_dai_config,
|
978 | 991 | ARRAY_SIZE(cs35l56_hda_dai_config));
|
| 992 | + ret = cs35l56_force_sync_asp1_registers_from_cache(&cs35l56->base); |
| 993 | + if (ret) |
| 994 | + goto err; |
979 | 995 |
|
980 | 996 | /*
|
981 | 997 | * By default only enable one ASP1TXn, where n=amplifier index,
|
|
0 commit comments