Lines Matching +full:spk +full:- +full:fmt

1 // SPDX-License-Identifier: GPL-2.0-only
3 // rtq9124.c -- RTQ9124 ALSA SoC Codec driver
24 #include <sound/soc-dai.h>
25 #include <sound/soc-dapm.h>
65 struct snd_soc_component *comp = snd_soc_dapm_to_component(w->dapm); in rtq9124_enable_event()
78 return -EINVAL; in rtq9124_enable_event()
92 SND_SOC_DAPM_OUTPUT("SPK"),
99 { "SPK", NULL, "Amp Drv" },
102 static const DECLARE_TLV_DB_SCALE(dig_tlv, -10375, 25, 0);
104 0, 3, TLV_DB_SCALE_ITEM(-600, 600, 0),
167 static int rtq9124_dai_set_format(struct snd_soc_dai *dai, unsigned int fmt) in rtq9124_dai_set_format() argument
171 rtq9124->dai_fmt = fmt; in rtq9124_dai_set_format()
179 struct snd_soc_component *comp = dai->component; in rtq9124_dai_set_tdm_slot()
180 struct device *dev = dai->dev; in rtq9124_dai_set_tdm_slot()
188 return -EINVAL; in rtq9124_dai_set_tdm_slot()
193 return -EINVAL; in rtq9124_dai_set_tdm_slot()
198 return -EINVAL; in rtq9124_dai_set_tdm_slot()
202 for (i = 0; tx_mask; i++, tx_mask ^= BIT(ffs(tx_mask) - 1)) { in rtq9124_dai_set_tdm_slot()
203 byte_loc = (ffs(tx_mask) - 1) * slot_width / 8; in rtq9124_dai_set_tdm_slot()
208 byte_loc = (ffs(rx_mask) - 1) * slot_width / 8; in rtq9124_dai_set_tdm_slot()
211 rtq9124->tdm_slots = slots; in rtq9124_dai_set_tdm_slot()
212 rtq9124->tdm_slot_width = slot_width; in rtq9124_dai_set_tdm_slot()
221 struct snd_soc_component *comp = dai->component; in rtq9124_dai_hw_params()
223 struct device *dev = dai->dev; in rtq9124_dai_hw_params()
226 fmtval = FIELD_GET(SND_SOC_DAIFMT_FORMAT_MASK, rtq9124->dai_fmt); in rtq9124_dai_hw_params()
227 if (rtq9124->tdm_slots && fmtval != SND_SOC_DAIFMT_DSP_A && in rtq9124_dai_hw_params()
230 return -EINVAL; in rtq9124_dai_hw_params()
244 audfmt = rtq9124->tdm_slots ? 7 : 3; in rtq9124_dai_hw_params()
247 audfmt = rtq9124->tdm_slots ? 15 : 11; in rtq9124_dai_hw_params()
251 return -EINVAL; in rtq9124_dai_hw_params()
267 return -EINVAL; in rtq9124_dai_hw_params()
270 if (rtq9124->tdm_slots) { in rtq9124_dai_hw_params()
272 if (slot_width > rtq9124->tdm_slot_width) { in rtq9124_dai_hw_params()
274 return -EINVAL; in rtq9124_dai_hw_params()
277 bitrate = rtq9124->tdm_slots * rtq9124->tdm_slot_width * params_rate(param); in rtq9124_dai_hw_params()
280 return -EINVAL; in rtq9124_dai_hw_params()
390 return -EIO; in rtq9124_regmap_read()
432 struct device *dev = &i2c->dev; in rtq9124_probe()
439 return -ENOMEM; in rtq9124_probe()
441 rtq9124->enable = devm_gpiod_get_optional(dev, "enable", GPIOD_OUT_HIGH); in rtq9124_probe()
442 if (IS_ERR(rtq9124->enable)) in rtq9124_probe()
443 return PTR_ERR(rtq9124->enable); in rtq9124_probe()
444 else if (rtq9124->enable) in rtq9124_probe()
454 return dev_err_probe(dev, -ENODEV, "Incorrect project-code 0x%04x\n", ret); in rtq9124_probe()
490 if (rtq9124->enable) { in rtq9124_runtime_suspend()
493 gpiod_set_value(rtq9124->enable, 0); in rtq9124_runtime_suspend()
505 if (rtq9124->enable) { in rtq9124_runtime_resume()
506 gpiod_set_value(rtq9124->enable, 1); in rtq9124_runtime_resume()