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),
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
611
u32 dmic, bool enable)
sound/soc/codecs/lpass-va-macro.c
620
switch (dmic) {
sound/soc/codecs/lpass-va-macro.c
725
unsigned int dmic = w->shift;
sound/soc/codecs/lpass-va-macro.c
729
va_dmic_clk_enable(comp, dmic, true);
sound/soc/codecs/lpass-va-macro.c
732
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
157
SND_SOC_DAILINK_DEFS(dmic,
sound/soc/mediatek/mt8365/mt8365-mt6357.c
236
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
1471
memset(&config->dmic, 0, sizeof(config->dmic));
sound/soc/sof/ipc3-topology.c
1474
ret = sof_update_ipc_object(scomp, &config->dmic, SOF_DMIC_TOKENS, slink->tuples,
sound/soc/sof/ipc3-topology.c
1480
ret = sof_update_ipc_object(scomp, &config->dmic.pdm[0], SOF_DMIC_PDM_TOKENS,
sound/soc/sof/ipc3-topology.c
1483
config->dmic.num_pdm_active);
sound/soc/sof/ipc3-topology.c
1492
config->dai_index, config->dmic.driver_ipc_version);
sound/soc/sof/ipc3-topology.c
1494
config->dmic.pdmclk_min, config->dmic.pdmclk_max,
sound/soc/sof/ipc3-topology.c
1495
config->dmic.duty_min);
sound/soc/sof/ipc3-topology.c
1497
config->dmic.duty_max, config->dmic.fifo_fs,
sound/soc/sof/ipc3-topology.c
1498
config->dmic.num_pdm_active);
sound/soc/sof/ipc3-topology.c
1499
dev_dbg(scomp->dev, "fifo word length %d\n", config->dmic.fifo_bits);
sound/soc/sof/ipc3-topology.c
1501
for (i = 0; i < config->dmic.num_pdm_active; i++) {
sound/soc/sof/ipc3-topology.c
1503
config->dmic.pdm[i].id,
sound/soc/sof/ipc3-topology.c
1504
config->dmic.pdm[i].enable_mic_a,
sound/soc/sof/ipc3-topology.c
1505
config->dmic.pdm[i].enable_mic_b);
sound/soc/sof/ipc3-topology.c
1507
config->dmic.pdm[i].id,
sound/soc/sof/ipc3-topology.c
1508
config->dmic.pdm[i].polarity_mic_a,
sound/soc/sof/ipc3-topology.c
1509
config->dmic.pdm[i].polarity_mic_b);
sound/soc/sof/ipc3-topology.c
1511
config->dmic.pdm[i].id,
sound/soc/sof/ipc3-topology.c
1512
config->dmic.pdm[i].clk_edge,
sound/soc/sof/ipc3-topology.c
1513
config->dmic.pdm[i].skew);
sound/soc/sof/ipc3-topology.c
1521
config->dmic.fifo_bits_b = config->dmic.fifo_bits;
sound/soc/tegra/tegra210_dmic.c
107
clk_rate = (DMIC_OSR_FACTOR << dmic->osr_val) * srate;
sound/soc/tegra/tegra210_dmic.c
109
err = clk_set_rate(dmic->clk_dmic, clk_rate);
sound/soc/tegra/tegra210_dmic.c
116
regmap_update_bits(dmic->regmap,
sound/soc/tegra/tegra210_dmic.c
124
(dmic->lrsel << LRSEL_POL_SHIFT) |
sound/soc/tegra/tegra210_dmic.c
125
(dmic->osr_val << OSR_SHIFT) |
sound/soc/tegra/tegra210_dmic.c
126
((dmic->ch_select + 1) << CH_SEL_SHIFT));
sound/soc/tegra/tegra210_dmic.c
132
if (dmic->boost_gain)
sound/soc/tegra/tegra210_dmic.c
133
gain_q23 = div_u64(gain_q23 * dmic->boost_gain, 100);
sound/soc/tegra/tegra210_dmic.c
135
regmap_write(dmic->regmap, TEGRA210_DMIC_LP_FILTER_GAIN,
sound/soc/tegra/tegra210_dmic.c
152
cif_conf.mono_conv = dmic->mono_to_stereo;
sound/soc/tegra/tegra210_dmic.c
153
cif_conf.stereo_conv = dmic->stereo_to_mono;
sound/soc/tegra/tegra210_dmic.c
155
tegra_set_cif(dmic->regmap, TEGRA210_DMIC_TX_CIF_CTRL, &cif_conf);
sound/soc/tegra/tegra210_dmic.c
164
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
166
ucontrol->value.integer.value[0] = dmic->boost_gain;
sound/soc/tegra/tegra210_dmic.c
175
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
178
if (value == dmic->boost_gain)
sound/soc/tegra/tegra210_dmic.c
181
dmic->boost_gain = value;
sound/soc/tegra/tegra210_dmic.c
190
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
192
ucontrol->value.enumerated.item[0] = dmic->ch_select;
sound/soc/tegra/tegra210_dmic.c
201
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
204
if (value == dmic->ch_select)
sound/soc/tegra/tegra210_dmic.c
207
dmic->ch_select = value;
sound/soc/tegra/tegra210_dmic.c
216
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
218
ucontrol->value.enumerated.item[0] = dmic->mono_to_stereo;
sound/soc/tegra/tegra210_dmic.c
227
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
230
if (value == dmic->mono_to_stereo)
sound/soc/tegra/tegra210_dmic.c
233
dmic->mono_to_stereo = value;
sound/soc/tegra/tegra210_dmic.c
242
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
244
ucontrol->value.enumerated.item[0] = dmic->stereo_to_mono;
sound/soc/tegra/tegra210_dmic.c
253
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
256
if (value == dmic->stereo_to_mono)
sound/soc/tegra/tegra210_dmic.c
259
dmic->stereo_to_mono = value;
sound/soc/tegra/tegra210_dmic.c
268
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
270
ucontrol->value.enumerated.item[0] = dmic->osr_val;
sound/soc/tegra/tegra210_dmic.c
279
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
282
if (value == dmic->osr_val)
sound/soc/tegra/tegra210_dmic.c
285
dmic->osr_val = value;
sound/soc/tegra/tegra210_dmic.c
294
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
296
ucontrol->value.enumerated.item[0] = dmic->lrsel;
sound/soc/tegra/tegra210_dmic.c
305
struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
sound/soc/tegra/tegra210_dmic.c
308
if (value == dmic->lrsel)
sound/soc/tegra/tegra210_dmic.c
311
dmic->lrsel = value;
sound/soc/tegra/tegra210_dmic.c
45
struct tegra210_dmic *dmic = dev_get_drvdata(dev);
sound/soc/tegra/tegra210_dmic.c
47
regcache_cache_only(dmic->regmap, true);
sound/soc/tegra/tegra210_dmic.c
48
regcache_mark_dirty(dmic->regmap);
sound/soc/tegra/tegra210_dmic.c
493
struct tegra210_dmic *dmic;
sound/soc/tegra/tegra210_dmic.c
497
dmic = devm_kzalloc(dev, sizeof(*dmic), GFP_KERNEL);
sound/soc/tegra/tegra210_dmic.c
498
if (!dmic)
sound/soc/tegra/tegra210_dmic.c
50
clk_disable_unprepare(dmic->clk_dmic);
sound/soc/tegra/tegra210_dmic.c
501
dmic->osr_val = DMIC_OSR_64;
sound/soc/tegra/tegra210_dmic.c
502
dmic->ch_select = DMIC_CH_SELECT_STEREO;
sound/soc/tegra/tegra210_dmic.c
503
dmic->lrsel = DMIC_LRSEL_LEFT;
sound/soc/tegra/tegra210_dmic.c
504
dmic->boost_gain = 0;
sound/soc/tegra/tegra210_dmic.c
505
dmic->stereo_to_mono = 0; /* "CH0" */
sound/soc/tegra/tegra210_dmic.c
507
dev_set_drvdata(dev, dmic);
sound/soc/tegra/tegra210_dmic.c
509
dmic->clk_dmic = devm_clk_get(dev, "dmic");
sound/soc/tegra/tegra210_dmic.c
510
if (IS_ERR(dmic->clk_dmic)) {
sound/soc/tegra/tegra210_dmic.c
512
return PTR_ERR(dmic->clk_dmic);
sound/soc/tegra/tegra210_dmic.c
519
dmic->regmap = devm_regmap_init_mmio(dev, regs,
sound/soc/tegra/tegra210_dmic.c
521
if (IS_ERR(dmic->regmap)) {
sound/soc/tegra/tegra210_dmic.c
523
return PTR_ERR(dmic->regmap);
sound/soc/tegra/tegra210_dmic.c
526
regcache_cache_only(dmic->regmap, true);
sound/soc/tegra/tegra210_dmic.c
57
struct tegra210_dmic *dmic = dev_get_drvdata(dev);
sound/soc/tegra/tegra210_dmic.c
60
err = clk_prepare_enable(dmic->clk_dmic);
sound/soc/tegra/tegra210_dmic.c
66
regcache_cache_only(dmic->regmap, false);
sound/soc/tegra/tegra210_dmic.c
67
regcache_sync(dmic->regmap);
sound/soc/tegra/tegra210_dmic.c
76
struct tegra210_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/tegra/tegra210_dmic.c
88
switch (dmic->ch_select) {
sound/soc/ti/omap-dmic.c
103
mutex_unlock(&dmic->mutex);
sound/soc/ti/omap-dmic.c
111
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
113
mutex_lock(&dmic->mutex);
sound/soc/ti/omap-dmic.c
115
cpu_latency_qos_remove_request(&dmic->pm_qos_req);
sound/soc/ti/omap-dmic.c
118
dmic->active = 0;
sound/soc/ti/omap-dmic.c
120
mutex_unlock(&dmic->mutex);
sound/soc/ti/omap-dmic.c
123
static int omap_dmic_select_divider(struct omap_dmic *dmic, int sample_rate)
sound/soc/ti/omap-dmic.c
132
if (dmic->fclk_freq == 19200000 && dmic->out_freq == 3840000)
sound/soc/ti/omap-dmic.c
135
dev_err(dmic->dev,
sound/soc/ti/omap-dmic.c
141
switch (dmic->out_freq) {
sound/soc/ti/omap-dmic.c
143
if (dmic->fclk_freq != 24576000)
sound/soc/ti/omap-dmic.c
148
switch (dmic->fclk_freq) {
sound/soc/ti/omap-dmic.c
163
if (dmic->fclk_freq != 24576000)
sound/soc/ti/omap-dmic.c
168
if (dmic->fclk_freq != 19200000)
sound/soc/ti/omap-dmic.c
173
dev_err(dmic->dev, "invalid out frequency: %dHz\n",
sound/soc/ti/omap-dmic.c
174
dmic->out_freq);
sound/soc/ti/omap-dmic.c
181
dev_err(dmic->dev, "invalid out frequency %dHz for %dHz input\n",
sound/soc/ti/omap-dmic.c
182
dmic->out_freq, dmic->fclk_freq);
sound/soc/ti/omap-dmic.c
190
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
194
dmic->clk_div = omap_dmic_select_divider(dmic, params_rate(params));
sound/soc/ti/omap-dmic.c
195
if (dmic->clk_div < 0) {
sound/soc/ti/omap-dmic.c
196
dev_err(dmic->dev, "no valid divider for %dHz from %dHz\n",
sound/soc/ti/omap-dmic.c
197
dmic->out_freq, dmic->fclk_freq);
sound/soc/ti/omap-dmic.c
201
dmic->ch_enabled = 0;
sound/soc/ti/omap-dmic.c
205
dmic->ch_enabled |= OMAP_DMIC_UP3_ENABLE;
sound/soc/ti/omap-dmic.c
208
dmic->ch_enabled |= OMAP_DMIC_UP2_ENABLE;
sound/soc/ti/omap-dmic.c
211
dmic->ch_enabled |= OMAP_DMIC_UP1_ENABLE;
sound/soc/ti/omap-dmic.c
214
dev_err(dmic->dev, "invalid number of legacy channels\n");
sound/soc/ti/omap-dmic.c
220
dma_data->maxburst = dmic->threshold * channels;
sound/soc/ti/omap-dmic.c
221
dmic->latency = (OMAP_DMIC_THRES_MAX - dmic->threshold) * USEC_PER_SEC /
sound/soc/ti/omap-dmic.c
230
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
233
if (cpu_latency_qos_request_active(&dmic->pm_qos_req))
sound/soc/ti/omap-dmic.c
234
cpu_latency_qos_update_request(&dmic->pm_qos_req,
sound/soc/ti/omap-dmic.c
235
dmic->latency);
sound/soc/ti/omap-dmic.c
238
omap_dmic_write(dmic, OMAP_DMIC_FIFO_CTRL_REG, dmic->threshold);
sound/soc/ti/omap-dmic.c
240
ctrl = omap_dmic_read(dmic, OMAP_DMIC_CTRL_REG);
sound/soc/ti/omap-dmic.c
249
ctrl |= OMAP_DMIC_CLK_DIV(dmic->clk_div);
sound/soc/ti/omap-dmic.c
251
omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG, ctrl);
sound/soc/ti/omap-dmic.c
253
omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG,
sound/soc/ti/omap-dmic.c
263
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
267
omap_dmic_start(dmic);
sound/soc/ti/omap-dmic.c
270
omap_dmic_stop(dmic);
sound/soc/ti/omap-dmic.c
279
static int omap_dmic_select_fclk(struct omap_dmic *dmic, int clk_id,
sound/soc/ti/omap-dmic.c
293
dev_err(dmic->dev, "invalid input frequency: %dHz\n", freq);
sound/soc/ti/omap-dmic.c
294
dmic->fclk_freq = 0;
sound/soc/ti/omap-dmic.c
298
if (dmic->sysclk == clk_id) {
sound/soc/ti/omap-dmic.c
299
dmic->fclk_freq = freq;
sound/soc/ti/omap-dmic.c
304
if (dmic->active && dmic_is_enabled(dmic)) {
sound/soc/ti/omap-dmic.c
305
dev_err(dmic->dev, "can't re-parent when DMIC active\n");
sound/soc/ti/omap-dmic.c
320
dev_err(dmic->dev, "fclk clk_id (%d) not supported\n", clk_id);
sound/soc/ti/omap-dmic.c
324
parent_clk = clk_get(dmic->dev, parent_clk_name);
sound/soc/ti/omap-dmic.c
326
dev_err(dmic->dev, "can't get %s\n", parent_clk_name);
sound/soc/ti/omap-dmic.c
330
mux = clk_get_parent(dmic->fclk);
sound/soc/ti/omap-dmic.c
332
dev_err(dmic->dev, "can't get fck mux parent\n");
sound/soc/ti/omap-dmic.c
337
mutex_lock(&dmic->mutex);
sound/soc/ti/omap-dmic.c
338
if (dmic->active) {
sound/soc/ti/omap-dmic.c
340
pm_runtime_put_sync(dmic->dev);
sound/soc/ti/omap-dmic.c
342
pm_runtime_get_sync(dmic->dev);
sound/soc/ti/omap-dmic.c
346
mutex_unlock(&dmic->mutex);
sound/soc/ti/omap-dmic.c
349
dev_err(dmic->dev, "re-parent failed\n");
sound/soc/ti/omap-dmic.c
353
dmic->sysclk = clk_id;
sound/soc/ti/omap-dmic.c
354
dmic->fclk_freq = freq;
sound/soc/ti/omap-dmic.c
363
static int omap_dmic_select_outclk(struct omap_dmic *dmic, int clk_id,
sound/soc/ti/omap-dmic.c
369
dev_err(dmic->dev, "output clk_id (%d) not supported\n",
sound/soc/ti/omap-dmic.c
379
dmic->out_freq = freq;
sound/soc/ti/omap-dmic.c
382
dev_err(dmic->dev, "invalid out frequency: %dHz\n", freq);
sound/soc/ti/omap-dmic.c
383
dmic->out_freq = 0;
sound/soc/ti/omap-dmic.c
393
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
396
return omap_dmic_select_fclk(dmic, clk_id, freq);
sound/soc/ti/omap-dmic.c
398
return omap_dmic_select_outclk(dmic, clk_id, freq);
sound/soc/ti/omap-dmic.c
400
dev_err(dmic->dev, "invalid clock direction (%d)\n", dir);
sound/soc/ti/omap-dmic.c
406
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
408
pm_runtime_enable(dmic->dev);
sound/soc/ti/omap-dmic.c
411
pm_runtime_get_sync(dmic->dev);
sound/soc/ti/omap-dmic.c
412
omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG, 0x00);
sound/soc/ti/omap-dmic.c
413
pm_runtime_put_sync(dmic->dev);
sound/soc/ti/omap-dmic.c
416
dmic->threshold = OMAP_DMIC_THRES_MAX - 3;
sound/soc/ti/omap-dmic.c
418
snd_soc_dai_init_dma_data(dai, NULL, &dmic->dma_data);
sound/soc/ti/omap-dmic.c
425
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
427
pm_runtime_disable(dmic->dev);
sound/soc/ti/omap-dmic.c
462
struct omap_dmic *dmic;
sound/soc/ti/omap-dmic.c
466
dmic = devm_kzalloc(&pdev->dev, sizeof(struct omap_dmic), GFP_KERNEL);
sound/soc/ti/omap-dmic.c
467
if (!dmic)
sound/soc/ti/omap-dmic.c
470
platform_set_drvdata(pdev, dmic);
sound/soc/ti/omap-dmic.c
471
dmic->dev = &pdev->dev;
sound/soc/ti/omap-dmic.c
472
dmic->sysclk = OMAP_DMIC_SYSCLK_SYNC_MUX_CLKS;
sound/soc/ti/omap-dmic.c
474
mutex_init(&dmic->mutex);
sound/soc/ti/omap-dmic.c
476
dmic->fclk = devm_clk_get(dmic->dev, "fck");
sound/soc/ti/omap-dmic.c
477
if (IS_ERR(dmic->fclk)) {
sound/soc/ti/omap-dmic.c
478
dev_err(dmic->dev, "can't get fck\n");
sound/soc/ti/omap-dmic.c
484
dev_err(dmic->dev, "invalid dma memory resource\n");
sound/soc/ti/omap-dmic.c
487
dmic->dma_data.addr = res->start + OMAP_DMIC_DATA_REG;
sound/soc/ti/omap-dmic.c
489
dmic->dma_data.filter_data = "up_link";
sound/soc/ti/omap-dmic.c
491
dmic->io_base = devm_platform_ioremap_resource_byname(pdev, "mpu");
sound/soc/ti/omap-dmic.c
492
if (IS_ERR(dmic->io_base))
sound/soc/ti/omap-dmic.c
493
return PTR_ERR(dmic->io_base);
sound/soc/ti/omap-dmic.c
51
static inline void omap_dmic_write(struct omap_dmic *dmic, u16 reg, u32 val)
sound/soc/ti/omap-dmic.c
53
writel_relaxed(val, dmic->io_base + reg);
sound/soc/ti/omap-dmic.c
56
static inline int omap_dmic_read(struct omap_dmic *dmic, u16 reg)
sound/soc/ti/omap-dmic.c
58
return readl_relaxed(dmic->io_base + reg);
sound/soc/ti/omap-dmic.c
61
static inline void omap_dmic_start(struct omap_dmic *dmic)
sound/soc/ti/omap-dmic.c
63
u32 ctrl = omap_dmic_read(dmic, OMAP_DMIC_CTRL_REG);
sound/soc/ti/omap-dmic.c
66
omap_dmic_write(dmic, OMAP_DMIC_DMAENABLE_SET_REG,
sound/soc/ti/omap-dmic.c
69
omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG, ctrl | dmic->ch_enabled);
sound/soc/ti/omap-dmic.c
72
static inline void omap_dmic_stop(struct omap_dmic *dmic)
sound/soc/ti/omap-dmic.c
74
u32 ctrl = omap_dmic_read(dmic, OMAP_DMIC_CTRL_REG);
sound/soc/ti/omap-dmic.c
75
omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG,
sound/soc/ti/omap-dmic.c
79
omap_dmic_write(dmic, OMAP_DMIC_DMAENABLE_CLR_REG,
sound/soc/ti/omap-dmic.c
84
static inline int dmic_is_enabled(struct omap_dmic *dmic)
sound/soc/ti/omap-dmic.c
86
return omap_dmic_read(dmic, OMAP_DMIC_CTRL_REG) &
sound/soc/ti/omap-dmic.c
93
struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
sound/soc/ti/omap-dmic.c
96
mutex_lock(&dmic->mutex);
sound/soc/ti/omap-dmic.c
99
dmic->active = 1;