Lines Matching +full:comp +full:- +full:disable
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() local
78 return -EINVAL; in rtq9124_enable_event()
83 snd_soc_component_write(comp, RTQ9124_REG_ERR_INT_0 + i, 0xffff); in rtq9124_enable_event()
85 snd_soc_component_write_field(comp, RTQ9124_REG_STATE_CTRL, RTQ9124_MASK_CH_STATE, in rtq9124_enable_event()
102 static const DECLARE_TLV_DB_SCALE(dig_tlv, -10375, 25, 0);
104 0, 3, TLV_DB_SCALE_ITEM(-600, 600, 0),
124 static const char * const ulqm_dcvt_text[] = { "Disable", "DC", "VT", "DC+VT" };
141 static int rtq9124_comp_probe(struct snd_soc_component *comp) in rtq9124_comp_probe() argument
144 snd_soc_component_write_field(comp, RTQ9124_REG_SDO_SEL, RTQ9124_MASK_CS_DATA_INV, 1); in rtq9124_comp_probe()
147 snd_soc_component_write(comp, RTQ9124_REG_DCR_TH, 0x5e30); in rtq9124_comp_probe()
148 snd_soc_component_write(comp, RTQ9124_REG_ERR_TH, 0x3ff); in rtq9124_comp_probe()
149 snd_soc_component_write(comp, RTQ9124_REG_PROT_EN, 0x3fc); in rtq9124_comp_probe()
150 snd_soc_component_write(comp, RTQ9124_REG_ERR_MASK6, 0); in rtq9124_comp_probe()
171 rtq9124->dai_fmt = fmt; in rtq9124_dai_set_format()
179 struct snd_soc_component *comp = dai->component; in rtq9124_dai_set_tdm_slot() local
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()
204 snd_soc_component_write(comp, RTQ9124_REG_TDM_TX_CH0 + i, byte_loc); in rtq9124_dai_set_tdm_slot()
208 byte_loc = (ffs(rx_mask) - 1) * slot_width / 8; in rtq9124_dai_set_tdm_slot()
209 snd_soc_component_write(comp, RTQ9124_REG_TDM_RX_CH0, byte_loc); 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() local
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()
284 snd_soc_component_write_field(comp, RTQ9124_REG_I2S_OPT, RTQ9124_MASK_AUD_FMT, audfmt); in rtq9124_dai_hw_params()
285 snd_soc_component_write_field(comp, RTQ9124_REG_I2S_OPT, RTQ9124_MASK_AUD_BITS, audbit); 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()