Symbol: dmic
drivers/pinctrl/nomadik/pinctrl-ab8500.c
324
AB8500_FUNC_GROUPS(dmic, "dmic12_d_1", "dmic34_d_1", "dmic56_d_1");
drivers/pinctrl/nomadik/pinctrl-ab8500.c
346
FUNCTION(dmic),
drivers/pinctrl/qcom/pinctrl-shikra.c
1114
[96] = PINGROUP(96, dmic, cam_mclk, i2s1, jitter_bist, atest_gpsadc, atest_usb, _, _, _,
drivers/pinctrl/qcom/pinctrl-shikra.c
1116
[97] = PINGROUP(97, dmic, i2s1, dac_calib, _, _, _, _, _, _, _, _),
drivers/pinctrl/qcom/pinctrl-shikra.c
1117
[98] = PINGROUP(98, dmic, cam_mclk, i2s1, _, sdc_cdc, atest_usb, ddr_pxi, _, _, _, _),
drivers/pinctrl/qcom/pinctrl-shikra.c
1118
[99] = PINGROUP(99, dmic, i2s1, jitter_bist, sdc_cdc, atest_usb, ddr_pxi, _, _, _, _, _),
drivers/pinctrl/qcom/pinctrl-shikra.c
937
MSM_PIN_FUNCTION(dmic),
include/sound/sof/dai.h
112
struct sof_ipc_dai_dmic_params dmic;
sound/soc/codecs/dmic.c
110
struct dmic *dmic;
sound/soc/codecs/dmic.c
112
dmic = devm_kzalloc(component->dev, sizeof(*dmic), GFP_KERNEL);
sound/soc/codecs/dmic.c
113
if (!dmic)
sound/soc/codecs/dmic.c
116
dmic->vref = devm_regulator_get_optional(component->dev, "vref");
sound/soc/codecs/dmic.c
117
if (IS_ERR(dmic->vref)) {
sound/soc/codecs/dmic.c
118
if (PTR_ERR(dmic->vref) != -ENODEV)
sound/soc/codecs/dmic.c
119
return dev_err_probe(component->dev, PTR_ERR(dmic->vref),
sound/soc/codecs/dmic.c
121
dmic->vref = NULL;
sound/soc/codecs/dmic.c
124
dmic->gpio_en = devm_gpiod_get_optional(component->dev,
sound/soc/codecs/dmic.c
126
if (IS_ERR(dmic->gpio_en))
sound/soc/codecs/dmic.c
127
return PTR_ERR(dmic->gpio_en);
sound/soc/codecs/dmic.c
130
&dmic->wakeup_delay);
sound/soc/codecs/dmic.c
132
&dmic->modeswitch_delay);
sound/soc/codecs/dmic.c
134
dmic->wakeup_delay = wakeup_delay;
sound/soc/codecs/dmic.c
136
dmic->modeswitch_delay = modeswitch_delay;
sound/soc/codecs/dmic.c
138
if (dmic->modeswitch_delay > MAX_MODESWITCH_DELAY)
sound/soc/codecs/dmic.c
139
dmic->modeswitch_delay = MAX_MODESWITCH_DELAY;
sound/soc/codecs/dmic.c
141
snd_soc_component_set_drvdata(component, dmic);
sound/soc/codecs/dmic.c
39
struct dmic *dmic = snd_soc_component_get_drvdata(component);
sound/soc/codecs/dmic.c
43
if (dmic->modeswitch_delay)
sound/soc/codecs/dmic.c
44
mdelay(dmic->modeswitch_delay);
sound/soc/codecs/dmic.c
59
struct dmic *dmic = snd_soc_component_get_drvdata(component);
sound/soc/codecs/dmic.c
64
if (dmic->gpio_en)
sound/soc/codecs/dmic.c
65
gpiod_set_value_cansleep(dmic->gpio_en, 1);
sound/soc/codecs/dmic.c
67
if (dmic->vref) {
sound/soc/codecs/dmic.c
68
ret = regulator_enable(dmic->vref);
sound/soc/codecs/dmic.c
73
if (dmic->wakeup_delay)
sound/soc/codecs/dmic.c
74
msleep(dmic->wakeup_delay);
sound/soc/codecs/dmic.c
77
if (dmic->gpio_en)
sound/soc/codecs/dmic.c
78
gpiod_set_value_cansleep(dmic->gpio_en, 0);
sound/soc/codecs/dmic.c
80
if (dmic->vref)
sound/soc/codecs/dmic.c
81
ret = regulator_disable(dmic->vref);
sound/soc/codecs/es8375.c
266
static inline int get_coeff(u8 vddd, u8 dmic, int mclk, int rate)
sound/soc/codecs/es8375.c
274
dmic_det = ~(coeff_div[i].dmic_sel ^ dmic) & 0x01;
sound/soc/codecs/es8389.c
466
static inline int get_coeff(u8 vddd, u8 dmic, int mclk, int rate)
sound/soc/codecs/es8389.c
474
dmic_det = ~(coeff_div[i].dmic_sel ^ dmic) & 0x01;
sound/soc/codecs/lpass-tx-macro.c
759
unsigned int dmic;
sound/soc/codecs/lpass-tx-macro.c
768
dmic = TX_ADC_TO_DMIC(val);
sound/soc/codecs/lpass-tx-macro.c
769
dmic_clk_reg = CDC_TX_TOP_CSR_SWR_DMICn_CTL(dmic);
sound/soc/codecs/lpass-tx-macro.c
781
unsigned int dmic;
sound/soc/codecs/lpass-tx-macro.c
789
dmic = TX_ADC_TO_DMIC(val);
sound/soc/codecs/lpass-tx-macro.c
790
dmic_clk_reg = CDC_TX_TOP_CSR_SWR_DMICn_CTL(dmic);
sound/soc/codecs/lpass-tx-macro.c
918
u16 adc_mux_reg, adc_reg, adc_n, dmic;
sound/soc/codecs/lpass-tx-macro.c
936
dmic = TX_ADC_TO_DMIC(adc_n);
sound/soc/codecs/lpass-tx-macro.c
937
dmic_clk_reg = CDC_TX_TOP_CSR_SWR_DMICn_CTL(dmic);
sound/soc/codecs/lpass-va-macro.c
616
u32 dmic, bool enable)
sound/soc/codecs/lpass-va-macro.c
625
switch (dmic) {
sound/soc/codecs/lpass-va-macro.c
730
unsigned int dmic = w->shift;
sound/soc/codecs/lpass-va-macro.c
734
va_dmic_clk_enable(comp, dmic, true);
sound/soc/codecs/lpass-va-macro.c
737
va_dmic_clk_enable(comp, dmic, false);
sound/soc/codecs/msm8916-wcd-digital.c
665
unsigned int dmic;
sound/soc/codecs/msm8916-wcd-digital.c
674
ret = kstrtouint(dmic_num, 10, &dmic);
sound/soc/codecs/msm8916-wcd-digital.c
675
if (ret < 0 || dmic > 2) {
sound/soc/codecs/msm8916-wcd-digital.c
685
switch (dmic) {
sound/soc/codecs/wcd9335.c
2870
unsigned int dmic;
sound/soc/codecs/wcd9335.c
2880
ret = kstrtouint(wname, 10, &dmic);
sound/soc/codecs/wcd9335.c
2887
switch (dmic) {
sound/soc/codecs/wcd934x.c
4661
unsigned int dmic,
sound/soc/codecs/wcd934x.c
4684
if (adc_mux_sel == dmic) {
sound/soc/codecs/wcd934x.c
4765
unsigned int dmic;
sound/soc/codecs/wcd934x.c
4776
ret = kstrtouint(wname, 10, &dmic);
sound/soc/codecs/wcd934x.c
4783
switch (dmic) {
sound/soc/codecs/wcd934x.c
4807
dmic_sample_rate = wcd934x_get_dmic_sample_rate(comp, dmic,
sound/soc/intel/avs/messages.h
765
} dmic;
sound/soc/mediatek/mt8188/mt8188-dai-adda.c
117
static void mtk_adda_ul_mictype(struct mtk_base_afe *afe, bool dmic)
sound/soc/mediatek/mt8188/mt8188-dai-adda.c
126
if (dmic)
sound/soc/mediatek/mt8195/mt8195-dai-adda.c
151
static void mtk_adda_ul_mictype(struct mtk_base_afe *afe, int adda, bool dmic)
sound/soc/mediatek/mt8195/mt8195-dai-adda.c
173
if (dmic)
sound/soc/mediatek/mt8365/mt8365-mt6357.c
156
SND_SOC_DAILINK_DEFS(dmic,
sound/soc/mediatek/mt8365/mt8365-mt6357.c
235
SND_SOC_DAILINK_REG(dmic),
sound/soc/rockchip/rk3399_gru_sound.c
315
SND_SOC_DAILINK_DEFS(dmic,
sound/soc/rockchip/rk3399_gru_sound.c
360
SND_SOC_DAILINK_REG(dmic),
sound/soc/sof/ipc3-topology.c
1479
memset(&config->dmic, 0, sizeof(config->dmic));
sound/soc/sof/ipc3-topology.c
1482
ret = sof_update_ipc_object(scomp, &config->dmic, SOF_DMIC_TOKENS, slink->tuples,
sound/soc/sof/ipc3-topology.c
1488
ret = sof_update_ipc_object(scomp, &config->dmic.pdm[0], SOF_DMIC_PDM_TOKENS,
sound/soc/sof/ipc3-topology.c
1491
config->dmic.num_pdm_active);
sound/soc/sof/ipc3-topology.c
1500
config->dai_index, config->dmic.driver_ipc_version);
sound/soc/sof/ipc3-topology.c
1502
config->dmic.pdmclk_min, config->dmic.pdmclk_max,
sound/soc/sof/ipc3-topology.c
1503
config->dmic.duty_min);
sound/soc/sof/ipc3-topology.c
1505
config->dmic.duty_max, config->dmic.fifo_fs,
sound/soc/sof/ipc3-topology.c
1506
config->dmic.num_pdm_active);
sound/soc/sof/ipc3-topology.c
1507
dev_dbg(scomp->dev, "fifo word length %d\n", config->dmic.fifo_bits);
sound/soc/sof/ipc3-topology.c
1509
for (i = 0; i < config->dmic.num_pdm_active; i++) {
sound/soc/sof/ipc3-topology.c
1511
config->dmic.pdm[i].id,
sound/soc/sof/ipc3-topology.c
1512
config->dmic.pdm[i].enable_mic_a,
sound/soc/sof/ipc3-topology.c
1513
config->dmic.pdm[i].enable_mic_b);
sound/soc/sof/ipc3-topology.c
1515
config->dmic.pdm[i].id,
sound/soc/sof/ipc3-topology.c
1516
config->dmic.pdm[i].polarity_mic_a,
sound/soc/sof/ipc3-topology.c
1517
config->dmic.pdm[i].polarity_mic_b);
sound/soc/sof/ipc3-topology.c
1519
config->dmic.pdm[i].id,
sound/soc/sof/ipc3-topology.c
1520
config->dmic.pdm[i].clk_edge,
sound/soc/sof/ipc3-topology.c
1521
config->dmic.pdm[i].skew);
sound/soc/sof/ipc3-topology.c
1529
config->dmic.fifo_bits_b = config->dmic.fifo_bits;
sound/soc/tegra/tegra210_dmic.c
106
clk_rate = (DMIC_OSR_FACTOR << dmic->osr_val) * srate;
sound/soc/tegra/tegra210_dmic.c
108
err = clk_set_rate(dmic->clk_dmic, clk_rate);
sound/soc/tegra/tegra210_dmic.c
115
regmap_update_bits(dmic->regmap,
sound/soc/tegra/tegra210_dmic.c
123
(dmic->lrsel << LRSEL_POL_SHIFT) |
sound/soc/tegra/tegra210_dmic.c
124
(dmic->osr_val << OSR_SHIFT) |
sound/soc/tegra/tegra210_dmic.c
125
((dmic->ch_select + 1) << CH_SEL_SHIFT));
sound/soc/tegra/tegra210_dmic.c
131
if (dmic->boost_gain)
sound/soc/tegra/tegra210_dmic.c
132
gain_q23 = div_u64(gain_q23 * dmic->boost_gain, 100);
sound/soc/tegra/tegra210_dmic.c
134
regmap_write(dmic->regmap, TEGRA210_DMIC_LP_FILTER_GAIN,
sound/soc/tegra/tegra210_dmic.c
151
cif_conf.mono_conv = dmic->mono_to_stereo;
sound/soc/tegra/tegra210_dmic.c
152
cif_conf.stereo_conv = dmic->stereo_to_mono;
sound/soc/tegra/tegra210_dmic.c
154
tegra_set_cif(dmic->regmap, TEGRA210_DMIC_TX_CIF_CTRL, &cif_conf);
sound/soc/tegra/tegra210_dmic.c
163
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
165
ucontrol->value.integer.value[0] = dmic->boost_gain;
sound/soc/tegra/tegra210_dmic.c
174
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
177
if (value == dmic->boost_gain)
sound/soc/tegra/tegra210_dmic.c
180
dmic->boost_gain = value;
sound/soc/tegra/tegra210_dmic.c
189
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
191
ucontrol->value.enumerated.item[0] = dmic->ch_select;
sound/soc/tegra/tegra210_dmic.c
200
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
203
if (value == dmic->ch_select)
sound/soc/tegra/tegra210_dmic.c
206
dmic->ch_select = value;
sound/soc/tegra/tegra210_dmic.c
215
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
217
ucontrol->value.enumerated.item[0] = dmic->mono_to_stereo;
sound/soc/tegra/tegra210_dmic.c
226
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
229
if (value == dmic->mono_to_stereo)
sound/soc/tegra/tegra210_dmic.c
232
dmic->mono_to_stereo = value;
sound/soc/tegra/tegra210_dmic.c
241
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
243
ucontrol->value.enumerated.item[0] = dmic->stereo_to_mono;
sound/soc/tegra/tegra210_dmic.c
252
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
255
if (value == dmic->stereo_to_mono)
sound/soc/tegra/tegra210_dmic.c
258
dmic->stereo_to_mono = value;
sound/soc/tegra/tegra210_dmic.c
267
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
269
ucontrol->value.enumerated.item[0] = dmic->osr_val;
sound/soc/tegra/tegra210_dmic.c
278
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
281
if (value == dmic->osr_val)
sound/soc/tegra/tegra210_dmic.c
284
dmic->osr_val = value;
sound/soc/tegra/tegra210_dmic.c
293
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
295
ucontrol->value.enumerated.item[0] = dmic->lrsel;
sound/soc/tegra/tegra210_dmic.c
304
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
307
if (value == dmic->lrsel)
sound/soc/tegra/tegra210_dmic.c
310
dmic->lrsel = value;
sound/soc/tegra/tegra210_dmic.c
44
struct tegra210_dmic *dmic = dev_get_drvdata(dev);
sound/soc/tegra/tegra210_dmic.c
46
regcache_cache_only(dmic->regmap, true);
sound/soc/tegra/tegra210_dmic.c
47
regcache_mark_dirty(dmic->regmap);
sound/soc/tegra/tegra210_dmic.c
49
clk_disable_unprepare(dmic->clk_dmic);
sound/soc/tegra/tegra210_dmic.c
492
struct tegra210_dmic *dmic;
sound/soc/tegra/tegra210_dmic.c
496
dmic = devm_kzalloc(dev, sizeof(*dmic), GFP_KERNEL);
sound/soc/tegra/tegra210_dmic.c
497
if (!dmic)
sound/soc/tegra/tegra210_dmic.c
500
dmic->osr_val = DMIC_OSR_64;
sound/soc/tegra/tegra210_dmic.c
501
dmic->ch_select = DMIC_CH_SELECT_STEREO;
sound/soc/tegra/tegra210_dmic.c
502
dmic->lrsel = DMIC_LRSEL_LEFT;
sound/soc/tegra/tegra210_dmic.c
503
dmic->boost_gain = 0;
sound/soc/tegra/tegra210_dmic.c
504
dmic->stereo_to_mono = 0; /* "CH0" */
sound/soc/tegra/tegra210_dmic.c
506
dev_set_drvdata(dev, dmic);
sound/soc/tegra/tegra210_dmic.c
508
dmic->clk_dmic = devm_clk_get(dev, "dmic");
sound/soc/tegra/tegra210_dmic.c
509
if (IS_ERR(dmic->clk_dmic))
sound/soc/tegra/tegra210_dmic.c
510
return dev_err_probe(dev, PTR_ERR(dmic->clk_dmic),
sound/soc/tegra/tegra210_dmic.c
517
dmic->regmap = devm_regmap_init_mmio(dev, regs,
sound/soc/tegra/tegra210_dmic.c
519
if (IS_ERR(dmic->regmap))
sound/soc/tegra/tegra210_dmic.c
520
return dev_err_probe(dev, PTR_ERR(dmic->regmap),
sound/soc/tegra/tegra210_dmic.c
523
regcache_cache_only(dmic->regmap, true);
sound/soc/tegra/tegra210_dmic.c
56
struct tegra210_dmic *dmic = dev_get_drvdata(dev);
sound/soc/tegra/tegra210_dmic.c
59
err = clk_prepare_enable(dmic->clk_dmic);
sound/soc/tegra/tegra210_dmic.c
65
regcache_cache_only(dmic->regmap, false);
sound/soc/tegra/tegra210_dmic.c
66
regcache_sync(dmic->regmap);
sound/soc/tegra/tegra210_dmic.c
75
struct tegra210_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/tegra/tegra210_dmic.c
87
switch (dmic->ch_select) {
sound/soc/ti/omap-dmic.c
106
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
108
guard(mutex)(&dmic->mutex);
sound/soc/ti/omap-dmic.c
110
cpu_latency_qos_remove_request(&dmic->pm_qos_req);
sound/soc/ti/omap-dmic.c
113
dmic->active = 0;
sound/soc/ti/omap-dmic.c
116
static int omap_dmic_select_divider(struct omap_dmic *dmic, int sample_rate)
sound/soc/ti/omap-dmic.c
125
if (dmic->fclk_freq == 19200000 && dmic->out_freq == 3840000)
sound/soc/ti/omap-dmic.c
128
dev_err(dmic->dev,
sound/soc/ti/omap-dmic.c
134
switch (dmic->out_freq) {
sound/soc/ti/omap-dmic.c
136
if (dmic->fclk_freq != 24576000)
sound/soc/ti/omap-dmic.c
141
switch (dmic->fclk_freq) {
sound/soc/ti/omap-dmic.c
156
if (dmic->fclk_freq != 24576000)
sound/soc/ti/omap-dmic.c
161
if (dmic->fclk_freq != 19200000)
sound/soc/ti/omap-dmic.c
166
dev_err(dmic->dev, "invalid out frequency: %dHz\n",
sound/soc/ti/omap-dmic.c
167
dmic->out_freq);
sound/soc/ti/omap-dmic.c
174
dev_err(dmic->dev, "invalid out frequency %dHz for %dHz input\n",
sound/soc/ti/omap-dmic.c
175
dmic->out_freq, dmic->fclk_freq);
sound/soc/ti/omap-dmic.c
183
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
187
dmic->clk_div = omap_dmic_select_divider(dmic, params_rate(params));
sound/soc/ti/omap-dmic.c
188
if (dmic->clk_div < 0) {
sound/soc/ti/omap-dmic.c
189
dev_err(dmic->dev, "no valid divider for %dHz from %dHz\n",
sound/soc/ti/omap-dmic.c
190
dmic->out_freq, dmic->fclk_freq);
sound/soc/ti/omap-dmic.c
194
dmic->ch_enabled = 0;
sound/soc/ti/omap-dmic.c
198
dmic->ch_enabled |= OMAP_DMIC_UP3_ENABLE;
sound/soc/ti/omap-dmic.c
201
dmic->ch_enabled |= OMAP_DMIC_UP2_ENABLE;
sound/soc/ti/omap-dmic.c
204
dmic->ch_enabled |= OMAP_DMIC_UP1_ENABLE;
sound/soc/ti/omap-dmic.c
207
dev_err(dmic->dev, "invalid number of legacy channels\n");
sound/soc/ti/omap-dmic.c
213
dma_data->maxburst = dmic->threshold * channels;
sound/soc/ti/omap-dmic.c
214
dmic->latency = (OMAP_DMIC_THRES_MAX - dmic->threshold) * USEC_PER_SEC /
sound/soc/ti/omap-dmic.c
223
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
226
if (cpu_latency_qos_request_active(&dmic->pm_qos_req))
sound/soc/ti/omap-dmic.c
227
cpu_latency_qos_update_request(&dmic->pm_qos_req,
sound/soc/ti/omap-dmic.c
228
dmic->latency);
sound/soc/ti/omap-dmic.c
231
omap_dmic_write(dmic, OMAP_DMIC_FIFO_CTRL_REG, dmic->threshold);
sound/soc/ti/omap-dmic.c
233
ctrl = omap_dmic_read(dmic, OMAP_DMIC_CTRL_REG);
sound/soc/ti/omap-dmic.c
242
ctrl |= OMAP_DMIC_CLK_DIV(dmic->clk_div);
sound/soc/ti/omap-dmic.c
244
omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG, ctrl);
sound/soc/ti/omap-dmic.c
246
omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG,
sound/soc/ti/omap-dmic.c
256
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
260
omap_dmic_start(dmic);
sound/soc/ti/omap-dmic.c
263
omap_dmic_stop(dmic);
sound/soc/ti/omap-dmic.c
272
static int omap_dmic_select_fclk(struct omap_dmic *dmic, int clk_id,
sound/soc/ti/omap-dmic.c
286
dev_err(dmic->dev, "invalid input frequency: %dHz\n", freq);
sound/soc/ti/omap-dmic.c
287
dmic->fclk_freq = 0;
sound/soc/ti/omap-dmic.c
291
if (dmic->sysclk == clk_id) {
sound/soc/ti/omap-dmic.c
292
dmic->fclk_freq = freq;
sound/soc/ti/omap-dmic.c
297
if (dmic->active && dmic_is_enabled(dmic)) {
sound/soc/ti/omap-dmic.c
298
dev_err(dmic->dev, "can't re-parent when DMIC active\n");
sound/soc/ti/omap-dmic.c
313
dev_err(dmic->dev, "fclk clk_id (%d) not supported\n", clk_id);
sound/soc/ti/omap-dmic.c
317
parent_clk = clk_get(dmic->dev, parent_clk_name);
sound/soc/ti/omap-dmic.c
319
dev_err(dmic->dev, "can't get %s\n", parent_clk_name);
sound/soc/ti/omap-dmic.c
323
mux = clk_get_parent(dmic->fclk);
sound/soc/ti/omap-dmic.c
325
dev_err(dmic->dev, "can't get fck mux parent\n");
sound/soc/ti/omap-dmic.c
330
scoped_guard(mutex, &dmic->mutex) {
sound/soc/ti/omap-dmic.c
331
if (dmic->active) {
sound/soc/ti/omap-dmic.c
333
pm_runtime_put_sync(dmic->dev);
sound/soc/ti/omap-dmic.c
335
pm_runtime_get_sync(dmic->dev);
sound/soc/ti/omap-dmic.c
342
dev_err(dmic->dev, "re-parent failed\n");
sound/soc/ti/omap-dmic.c
344
dmic->sysclk = clk_id;
sound/soc/ti/omap-dmic.c
345
dmic->fclk_freq = freq;
sound/soc/ti/omap-dmic.c
354
static int omap_dmic_select_outclk(struct omap_dmic *dmic, int clk_id,
sound/soc/ti/omap-dmic.c
360
dev_err(dmic->dev, "output clk_id (%d) not supported\n",
sound/soc/ti/omap-dmic.c
370
dmic->out_freq = freq;
sound/soc/ti/omap-dmic.c
373
dev_err(dmic->dev, "invalid out frequency: %dHz\n", freq);
sound/soc/ti/omap-dmic.c
374
dmic->out_freq = 0;
sound/soc/ti/omap-dmic.c
384
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
387
return omap_dmic_select_fclk(dmic, clk_id, freq);
sound/soc/ti/omap-dmic.c
389
return omap_dmic_select_outclk(dmic, clk_id, freq);
sound/soc/ti/omap-dmic.c
391
dev_err(dmic->dev, "invalid clock direction (%d)\n", dir);
sound/soc/ti/omap-dmic.c
397
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
399
pm_runtime_enable(dmic->dev);
sound/soc/ti/omap-dmic.c
402
pm_runtime_get_sync(dmic->dev);
sound/soc/ti/omap-dmic.c
403
omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG, 0x00);
sound/soc/ti/omap-dmic.c
404
pm_runtime_put_sync(dmic->dev);
sound/soc/ti/omap-dmic.c
407
dmic->threshold = OMAP_DMIC_THRES_MAX - 3;
sound/soc/ti/omap-dmic.c
409
snd_soc_dai_init_dma_data(dai, NULL, &dmic->dma_data);
sound/soc/ti/omap-dmic.c
416
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
418
pm_runtime_disable(dmic->dev);
sound/soc/ti/omap-dmic.c
453
struct omap_dmic *dmic;
sound/soc/ti/omap-dmic.c
457
dmic = devm_kzalloc(&pdev->dev, sizeof(struct omap_dmic), GFP_KERNEL);
sound/soc/ti/omap-dmic.c
458
if (!dmic)
sound/soc/ti/omap-dmic.c
461
platform_set_drvdata(pdev, dmic);
sound/soc/ti/omap-dmic.c
462
dmic->dev = &pdev->dev;
sound/soc/ti/omap-dmic.c
463
dmic->sysclk = OMAP_DMIC_SYSCLK_SYNC_MUX_CLKS;
sound/soc/ti/omap-dmic.c
465
mutex_init(&dmic->mutex);
sound/soc/ti/omap-dmic.c
467
dmic->fclk = devm_clk_get(dmic->dev, "fck");
sound/soc/ti/omap-dmic.c
468
if (IS_ERR(dmic->fclk)) {
sound/soc/ti/omap-dmic.c
469
dev_err(dmic->dev, "can't get fck\n");
sound/soc/ti/omap-dmic.c
475
dev_err(dmic->dev, "invalid dma memory resource\n");
sound/soc/ti/omap-dmic.c
478
dmic->dma_data.addr = res->start + OMAP_DMIC_DATA_REG;
sound/soc/ti/omap-dmic.c
480
dmic->dma_data.filter_data = "up_link";
sound/soc/ti/omap-dmic.c
482
dmic->io_base = devm_platform_ioremap_resource_byname(pdev, "mpu");
sound/soc/ti/omap-dmic.c
483
if (IS_ERR(dmic->io_base))
sound/soc/ti/omap-dmic.c
484
return PTR_ERR(dmic->io_base);
sound/soc/ti/omap-dmic.c
50
static inline void omap_dmic_write(struct omap_dmic *dmic, u16 reg, u32 val)
sound/soc/ti/omap-dmic.c
52
writel_relaxed(val, dmic->io_base + reg);
sound/soc/ti/omap-dmic.c
55
static inline int omap_dmic_read(struct omap_dmic *dmic, u16 reg)
sound/soc/ti/omap-dmic.c
57
return readl_relaxed(dmic->io_base + reg);
sound/soc/ti/omap-dmic.c
60
static inline void omap_dmic_start(struct omap_dmic *dmic)
sound/soc/ti/omap-dmic.c
62
u32 ctrl = omap_dmic_read(dmic, OMAP_DMIC_CTRL_REG);
sound/soc/ti/omap-dmic.c
65
omap_dmic_write(dmic, OMAP_DMIC_DMAENABLE_SET_REG,
sound/soc/ti/omap-dmic.c
68
omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG, ctrl | dmic->ch_enabled);
sound/soc/ti/omap-dmic.c
71
static inline void omap_dmic_stop(struct omap_dmic *dmic)
sound/soc/ti/omap-dmic.c
73
u32 ctrl = omap_dmic_read(dmic, OMAP_DMIC_CTRL_REG);
sound/soc/ti/omap-dmic.c
74
omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG,
sound/soc/ti/omap-dmic.c
78
omap_dmic_write(dmic, OMAP_DMIC_DMAENABLE_CLR_REG,
sound/soc/ti/omap-dmic.c
83
static inline int dmic_is_enabled(struct omap_dmic *dmic)
sound/soc/ti/omap-dmic.c
85
return omap_dmic_read(dmic, OMAP_DMIC_CTRL_REG) &
sound/soc/ti/omap-dmic.c
92
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
94
guard(mutex)(&dmic->mutex);
sound/soc/ti/omap-dmic.c
99
dmic->active = 1;