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 ---