cpcap.c (c13aca79ff3c4af5fd31a5b2743a90eba6e36a26) | cpcap.c (54b5927067dd79b58032a4938ee13b233f1a368c) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * ALSA SoC CPCAP codec driver 4 * 5 * Copyright (C) 2017 - 2018 Sebastian Reichel <sre@kernel.org> 6 * 7 * Very loosely based on original driver from Motorola: 8 * Copyright (C) 2007 - 2009 Motorola, Inc. --- 1202 unchanged lines hidden (view full) --- 1211 val |= BIT(CPCAP_BIT_ST_L_TIMESLOT0); 1212 break; 1213 } 1214 1215 dev_dbg(dev, "HiFi dai format: val=%04x", val); 1216 return regmap_update_bits(cpcap->regmap, reg, mask, val); 1217} 1218 | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * ALSA SoC CPCAP codec driver 4 * 5 * Copyright (C) 2017 - 2018 Sebastian Reichel <sre@kernel.org> 6 * 7 * Very loosely based on original driver from Motorola: 8 * Copyright (C) 2007 - 2009 Motorola, Inc. --- 1202 unchanged lines hidden (view full) --- 1211 val |= BIT(CPCAP_BIT_ST_L_TIMESLOT0); 1212 break; 1213 } 1214 1215 dev_dbg(dev, "HiFi dai format: val=%04x", val); 1216 return regmap_update_bits(cpcap->regmap, reg, mask, val); 1217} 1218 |
1219static int cpcap_hifi_set_mute(struct snd_soc_dai *dai, int mute) | 1219static int cpcap_hifi_set_mute(struct snd_soc_dai *dai, int mute, int direction) |
1220{ 1221 struct snd_soc_component *component = dai->component; 1222 struct cpcap_audio *cpcap = snd_soc_component_get_drvdata(component); 1223 static const u16 reg = CPCAP_REG_RXSDOA; 1224 static const u16 mask = BIT(CPCAP_BIT_ST_DAC_SW); 1225 u16 val; 1226 1227 if (mute) --- 4 unchanged lines hidden (view full) --- 1232 dev_dbg(component->dev, "HiFi mute: %d", mute); 1233 return regmap_update_bits(cpcap->regmap, reg, mask, val); 1234} 1235 1236static const struct snd_soc_dai_ops cpcap_dai_hifi_ops = { 1237 .hw_params = cpcap_hifi_hw_params, 1238 .set_sysclk = cpcap_hifi_set_dai_sysclk, 1239 .set_fmt = cpcap_hifi_set_dai_fmt, | 1220{ 1221 struct snd_soc_component *component = dai->component; 1222 struct cpcap_audio *cpcap = snd_soc_component_get_drvdata(component); 1223 static const u16 reg = CPCAP_REG_RXSDOA; 1224 static const u16 mask = BIT(CPCAP_BIT_ST_DAC_SW); 1225 u16 val; 1226 1227 if (mute) --- 4 unchanged lines hidden (view full) --- 1232 dev_dbg(component->dev, "HiFi mute: %d", mute); 1233 return regmap_update_bits(cpcap->regmap, reg, mask, val); 1234} 1235 1236static const struct snd_soc_dai_ops cpcap_dai_hifi_ops = { 1237 .hw_params = cpcap_hifi_hw_params, 1238 .set_sysclk = cpcap_hifi_set_dai_sysclk, 1239 .set_fmt = cpcap_hifi_set_dai_fmt, |
1240 .digital_mute = cpcap_hifi_set_mute, | 1240 .mute_stream = cpcap_hifi_set_mute, 1241 .no_capture_mute = 1, |
1241}; 1242 1243static int cpcap_voice_hw_params(struct snd_pcm_substream *substream, 1244 struct snd_pcm_hw_params *params, 1245 struct snd_soc_dai *dai) 1246{ 1247 struct snd_soc_component *component = dai->component; 1248 struct device *dev = component->dev; --- 116 unchanged lines hidden (view full) --- 1365 err = regmap_update_bits(cpcap->regmap, CPCAP_REG_CDI, mask, val); 1366 if (err) 1367 return err; 1368 1369 cpcap->codec_format = val; 1370 return 0; 1371} 1372 | 1242}; 1243 1244static int cpcap_voice_hw_params(struct snd_pcm_substream *substream, 1245 struct snd_pcm_hw_params *params, 1246 struct snd_soc_dai *dai) 1247{ 1248 struct snd_soc_component *component = dai->component; 1249 struct device *dev = component->dev; --- 116 unchanged lines hidden (view full) --- 1366 err = regmap_update_bits(cpcap->regmap, CPCAP_REG_CDI, mask, val); 1367 if (err) 1368 return err; 1369 1370 cpcap->codec_format = val; 1371 return 0; 1372} 1373 |
1373static int cpcap_voice_set_mute(struct snd_soc_dai *dai, int mute) | 1374static int cpcap_voice_set_mute(struct snd_soc_dai *dai, 1375 int mute, int direction) |
1374{ 1375 struct snd_soc_component *component = dai->component; 1376 struct cpcap_audio *cpcap = snd_soc_component_get_drvdata(component); 1377 static const u16 reg = CPCAP_REG_RXCOA; 1378 static const u16 mask = BIT(CPCAP_BIT_CDC_SW); 1379 u16 val; 1380 1381 if (mute) --- 4 unchanged lines hidden (view full) --- 1386 dev_dbg(component->dev, "Voice mute: %d", mute); 1387 return regmap_update_bits(cpcap->regmap, reg, mask, val); 1388}; 1389 1390static const struct snd_soc_dai_ops cpcap_dai_voice_ops = { 1391 .hw_params = cpcap_voice_hw_params, 1392 .set_sysclk = cpcap_voice_set_dai_sysclk, 1393 .set_fmt = cpcap_voice_set_dai_fmt, | 1376{ 1377 struct snd_soc_component *component = dai->component; 1378 struct cpcap_audio *cpcap = snd_soc_component_get_drvdata(component); 1379 static const u16 reg = CPCAP_REG_RXCOA; 1380 static const u16 mask = BIT(CPCAP_BIT_CDC_SW); 1381 u16 val; 1382 1383 if (mute) --- 4 unchanged lines hidden (view full) --- 1388 dev_dbg(component->dev, "Voice mute: %d", mute); 1389 return regmap_update_bits(cpcap->regmap, reg, mask, val); 1390}; 1391 1392static const struct snd_soc_dai_ops cpcap_dai_voice_ops = { 1393 .hw_params = cpcap_voice_hw_params, 1394 .set_sysclk = cpcap_voice_set_dai_sysclk, 1395 .set_fmt = cpcap_voice_set_dai_fmt, |
1394 .digital_mute = cpcap_voice_set_mute, | 1396 .mute_stream = cpcap_voice_set_mute, 1397 .no_capture_mute = 1, |
1395}; 1396 1397static struct snd_soc_dai_driver cpcap_dai[] = { 1398{ 1399 .id = 0, 1400 .name = "cpcap-hifi", 1401 .playback = { 1402 .stream_name = "HiFi Playback", --- 160 unchanged lines hidden --- | 1398}; 1399 1400static struct snd_soc_dai_driver cpcap_dai[] = { 1401{ 1402 .id = 0, 1403 .name = "cpcap-hifi", 1404 .playback = { 1405 .stream_name = "HiFi Playback", --- 160 unchanged lines hidden --- |