Lines Matching +full:pm +full:- +full:api

1 // SPDX-License-Identifier: GPL-2.0-only
3 // rt9123.c -- RT9123 (SW I2C Mode) ALSA SoC Codec driver
25 #include <sound/soc-dai.h>
26 #include <sound/soc-dapm.h>
57 struct snd_soc_component *comp = snd_soc_dapm_to_component(w->dapm); in rt9123_enable_event()
58 struct device *dev = comp->dev; in rt9123_enable_event()
70 return -EINVAL; in rt9123_enable_event()
96 static const DECLARE_TLV_DB_SCALE(dig_tlv, -10375, 25, 0);
98 0, 0, TLV_DB_SCALE_ITEM(-1200, 0, 0),
111 const char *kctlname = kcontrol->id.name; in rt9123_kcontrol_name_comp()
113 if (comp && comp->name_prefix) in rt9123_kcontrol_name_comp()
114 kctlname += strlen(comp->name_prefix) + 1; in rt9123_kcontrol_name_comp()
122 struct device *dev = comp->dev; in rt9123_xhandler_get()
131 * volatile RG address, special handling here with pm runtime API to guarantee RG read in rt9123_xhandler_get()
149 struct device *dev = comp->dev; in rt9123_xhandler_put()
158 * volatile RG address, special handling here with pm runtime API to guarantee RG write in rt9123_xhandler_put()
198 rt9123->dai_fmt = fmt; in rt9123_dai_set_format()
206 struct snd_soc_component *comp = dai->component; in rt9123_dai_set_tdm_slot()
207 struct device *dev = dai->dev; in rt9123_dai_set_tdm_slot()
216 return -EINVAL; in rt9123_dai_set_tdm_slot()
221 return -EINVAL; in rt9123_dai_set_tdm_slot()
225 rx_loc = (ffs(rx_mask) - 1) * slot_width / 8; in rt9123_dai_set_tdm_slot()
228 rt9123->tdm_slots = slots; in rt9123_dai_set_tdm_slot()
229 rt9123->tdm_slot_width = slot_width; in rt9123_dai_set_tdm_slot()
238 struct snd_soc_component *comp = dai->component; in rt9123_dai_hw_params()
240 struct device *dev = dai->dev; in rt9123_dai_hw_params()
243 fmtval = FIELD_GET(SND_SOC_DAIFMT_FORMAT_MASK, rt9123->dai_fmt); in rt9123_dai_hw_params()
244 if (rt9123->tdm_slots && fmtval != SND_SOC_DAIFMT_DSP_A && fmtval != SND_SOC_DAIFMT_DSP_B) { in rt9123_dai_hw_params()
246 return -EINVAL; in rt9123_dai_hw_params()
260 audfmt = rt9123->tdm_slots ? 4 : 3; in rt9123_dai_hw_params()
263 audfmt = rt9123->tdm_slots ? 12 : 11; in rt9123_dai_hw_params()
267 return -EINVAL; in rt9123_dai_hw_params()
288 return -EINVAL; in rt9123_dai_hw_params()
292 if (rt9123->tdm_slots && slot_width > rt9123->tdm_slot_width) { in rt9123_dai_hw_params()
294 return -EINVAL; in rt9123_dai_hw_params()
379 struct device *dev = &i2c->dev; in rt9123_i2c_probe()
388 return -ENOMEM; in rt9123_i2c_probe()
390 rt9123->enable = devm_gpiod_get_optional(dev, "enable", GPIOD_OUT_HIGH); in rt9123_i2c_probe()
391 if (IS_ERR(rt9123->enable)) in rt9123_i2c_probe()
392 return PTR_ERR(rt9123->enable); in rt9123_i2c_probe()
393 else if (rt9123->enable) in rt9123_i2c_probe()
401 return dev_err_probe(dev, ret, "Failed to read vendor-id\n"); in rt9123_i2c_probe()
405 return dev_err_probe(dev, -ENODEV, "Incorrect vendor-id 0x%04x\n", venid); in rt9123_i2c_probe()
427 return dev_err_probe(dev, ret, "Failed to enable pm runtime\n"); in rt9123_i2c_probe()
438 if (rt9123->enable) { in rt9123_runtime_suspend()
441 gpiod_set_value(rt9123->enable, 0); in rt9123_runtime_suspend()
453 if (rt9123->enable) { in rt9123_runtime_resume()
454 gpiod_set_value(rt9123->enable, 1); in rt9123_runtime_resume()
492 .pm = pm_ptr(&rt9123_dev_pm_ops),