dmic              323 drivers/pinctrl/nomadik/pinctrl-ab8500.c AB8500_FUNC_GROUPS(dmic, "dmic12_d_1", "dmic34_d_1", "dmic56_d_1");
dmic              345 drivers/pinctrl/nomadik/pinctrl-ab8500.c 	FUNCTION(dmic),
dmic               73 include/sound/sof/dai.h 		struct sof_ipc_dai_dmic_params dmic;
dmic               37 sound/soc/codecs/dmic.c 	struct dmic *dmic = snd_soc_component_get_drvdata(component);
dmic               41 sound/soc/codecs/dmic.c 		if (dmic->modeswitch_delay)
dmic               42 sound/soc/codecs/dmic.c 			mdelay(dmic->modeswitch_delay);
dmic               57 sound/soc/codecs/dmic.c 	struct dmic *dmic = snd_soc_component_get_drvdata(component);
dmic               61 sound/soc/codecs/dmic.c 		if (dmic->gpio_en)
dmic               62 sound/soc/codecs/dmic.c 			gpiod_set_value(dmic->gpio_en, 1);
dmic               64 sound/soc/codecs/dmic.c 		if (dmic->wakeup_delay)
dmic               65 sound/soc/codecs/dmic.c 			msleep(dmic->wakeup_delay);
dmic               68 sound/soc/codecs/dmic.c 		if (dmic->gpio_en)
dmic               69 sound/soc/codecs/dmic.c 			gpiod_set_value(dmic->gpio_en, 0);
dmic               92 sound/soc/codecs/dmic.c 	struct dmic *dmic;
dmic               94 sound/soc/codecs/dmic.c 	dmic = devm_kzalloc(component->dev, sizeof(*dmic), GFP_KERNEL);
dmic               95 sound/soc/codecs/dmic.c 	if (!dmic)
dmic               98 sound/soc/codecs/dmic.c 	dmic->gpio_en = devm_gpiod_get_optional(component->dev,
dmic              100 sound/soc/codecs/dmic.c 	if (IS_ERR(dmic->gpio_en))
dmic              101 sound/soc/codecs/dmic.c 		return PTR_ERR(dmic->gpio_en);
dmic              104 sound/soc/codecs/dmic.c 				 &dmic->wakeup_delay);
dmic              106 sound/soc/codecs/dmic.c 				 &dmic->modeswitch_delay);
dmic              108 sound/soc/codecs/dmic.c 		dmic->wakeup_delay  = wakeup_delay;
dmic              110 sound/soc/codecs/dmic.c 		dmic->modeswitch_delay  = modeswitch_delay;
dmic              112 sound/soc/codecs/dmic.c 	if (dmic->modeswitch_delay > MAX_MODESWITCH_DELAY)
dmic              113 sound/soc/codecs/dmic.c 		dmic->modeswitch_delay = MAX_MODESWITCH_DELAY;
dmic              115 sound/soc/codecs/dmic.c 	snd_soc_component_set_drvdata(component, dmic);
dmic              667 sound/soc/codecs/msm8916-wcd-digital.c 	unsigned int dmic;
dmic              676 sound/soc/codecs/msm8916-wcd-digital.c 	ret = kstrtouint(dmic_num, 10, &dmic);
dmic              677 sound/soc/codecs/msm8916-wcd-digital.c 	if (ret < 0 || dmic > 2) {
dmic              687 sound/soc/codecs/msm8916-wcd-digital.c 		switch (dmic) {
dmic             2918 sound/soc/codecs/wcd9335.c 	unsigned int dmic;
dmic             2928 sound/soc/codecs/wcd9335.c 	ret = kstrtouint(wname, 10, &dmic);
dmic             2935 sound/soc/codecs/wcd9335.c 	switch (dmic) {
dmic              387 sound/soc/intel/boards/bxt_da7219_max98357a.c SND_SOC_DAILINK_DEF(dmic,
dmic              499 sound/soc/intel/boards/bxt_da7219_max98357a.c 		SND_SOC_DAILINK_REG(dmic, dummy, platform),
dmic              335 sound/soc/intel/boards/bxt_rt298.c SND_SOC_DAILINK_DEF(dmic,
dmic              429 sound/soc/intel/boards/bxt_rt298.c 		SND_SOC_DAILINK_REG(dmic, dummy, platform),
dmic              335 sound/soc/intel/boards/glk_rt5682_max98357a.c SND_SOC_DAILINK_DEF(dmic,
dmic              440 sound/soc/intel/boards/glk_rt5682_max98357a.c 		SND_SOC_DAILINK_REG(dmic, dummy, platform),
dmic              358 sound/soc/intel/boards/kbl_da7219_max98357a.c SND_SOC_DAILINK_DEF(dmic,
dmic              440 sound/soc/intel/boards/kbl_da7219_max98357a.c 		SND_SOC_DAILINK_REG(dmic, dummy, platform),
dmic              622 sound/soc/intel/boards/kbl_da7219_max98927.c SND_SOC_DAILINK_DEF(dmic,
dmic              714 sound/soc/intel/boards/kbl_da7219_max98927.c 		SND_SOC_DAILINK_REG(dmic, dummy, platform),
dmic              880 sound/soc/intel/boards/kbl_da7219_max98927.c 		SND_SOC_DAILINK_REG(dmic, dummy, platform),
dmic              589 sound/soc/intel/boards/kbl_rt5663_max98927.c SND_SOC_DAILINK_DEF(dmic,
dmic              697 sound/soc/intel/boards/kbl_rt5663_max98927.c 		SND_SOC_DAILINK_REG(dmic, dummy, platform),
dmic              431 sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c SND_SOC_DAILINK_DEF(dmic,
dmic              521 sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c 		SND_SOC_DAILINK_REG(dmic, dummy, platform),
dmic              408 sound/soc/intel/boards/skl_nau88l25_max98357a.c SND_SOC_DAILINK_DEF(dmic,
dmic              498 sound/soc/intel/boards/skl_nau88l25_max98357a.c 		SND_SOC_DAILINK_REG(dmic, dummy, platform),
dmic              446 sound/soc/intel/boards/skl_nau88l25_ssm4567.c SND_SOC_DAILINK_DEF(dmic,
dmic              537 sound/soc/intel/boards/skl_nau88l25_ssm4567.c 		SND_SOC_DAILINK_REG(dmic, dummy, platform),
dmic              298 sound/soc/intel/boards/skl_rt286.c SND_SOC_DAILINK_DEF(dmic,
dmic              398 sound/soc/intel/boards/skl_rt286.c 		SND_SOC_DAILINK_REG(dmic, dummy, platform),
dmic              266 sound/soc/rockchip/rk3399_gru_sound.c SND_SOC_DAILINK_DEFS(dmic,
dmic              310 sound/soc/rockchip/rk3399_gru_sound.c 		SND_SOC_DAILINK_REG(dmic),
dmic             2563 sound/soc/sof/topology.c 	memset(&config->dmic, 0, sizeof(struct sof_ipc_dai_dmic_params));
dmic             2566 sound/soc/sof/topology.c 	ret = sof_parse_tokens(scomp, &config->dmic, dmic_tokens,
dmic             2581 sound/soc/sof/topology.c 					config->dmic.num_pdm_active;
dmic             2601 sound/soc/sof/topology.c 	ret = sof_parse_tokens(scomp, &ipc_config->dmic.pdm[0], dmic_pdm_tokens,
dmic             2615 sound/soc/sof/topology.c 		ipc_config->dai_index, ipc_config->dmic.driver_ipc_version);
dmic             2617 sound/soc/sof/topology.c 		ipc_config->dmic.pdmclk_min, ipc_config->dmic.pdmclk_max,
dmic             2618 sound/soc/sof/topology.c 		ipc_config->dmic.duty_min);
dmic             2620 sound/soc/sof/topology.c 		ipc_config->dmic.duty_max, ipc_config->dmic.fifo_fs,
dmic             2621 sound/soc/sof/topology.c 		ipc_config->dmic.num_pdm_active);
dmic             2623 sound/soc/sof/topology.c 		ipc_config->dmic.fifo_bits);
dmic             2625 sound/soc/sof/topology.c 	for (j = 0; j < ipc_config->dmic.num_pdm_active; j++) {
dmic             2627 sound/soc/sof/topology.c 			ipc_config->dmic.pdm[j].id,
dmic             2628 sound/soc/sof/topology.c 			ipc_config->dmic.pdm[j].enable_mic_a,
dmic             2629 sound/soc/sof/topology.c 			ipc_config->dmic.pdm[j].enable_mic_b);
dmic             2631 sound/soc/sof/topology.c 			ipc_config->dmic.pdm[j].id,
dmic             2632 sound/soc/sof/topology.c 			ipc_config->dmic.pdm[j].polarity_mic_a,
dmic             2633 sound/soc/sof/topology.c 			ipc_config->dmic.pdm[j].polarity_mic_b);
dmic             2635 sound/soc/sof/topology.c 			ipc_config->dmic.pdm[j].id,
dmic             2636 sound/soc/sof/topology.c 			ipc_config->dmic.pdm[j].clk_edge,
dmic             2637 sound/soc/sof/topology.c 			ipc_config->dmic.pdm[j].skew);
dmic             2642 sound/soc/sof/topology.c 		ipc_config->dmic.reserved_2 = ipc_config->dmic.fifo_bits;
dmic               51 sound/soc/ti/omap-dmic.c static inline void omap_dmic_write(struct omap_dmic *dmic, u16 reg, u32 val)
dmic               53 sound/soc/ti/omap-dmic.c 	writel_relaxed(val, dmic->io_base + reg);
dmic               56 sound/soc/ti/omap-dmic.c static inline int omap_dmic_read(struct omap_dmic *dmic, u16 reg)
dmic               58 sound/soc/ti/omap-dmic.c 	return readl_relaxed(dmic->io_base + reg);
dmic               61 sound/soc/ti/omap-dmic.c static inline void omap_dmic_start(struct omap_dmic *dmic)
dmic               63 sound/soc/ti/omap-dmic.c 	u32 ctrl = omap_dmic_read(dmic, OMAP_DMIC_CTRL_REG);
dmic               66 sound/soc/ti/omap-dmic.c 	omap_dmic_write(dmic, OMAP_DMIC_DMAENABLE_SET_REG,
dmic               69 sound/soc/ti/omap-dmic.c 	omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG, ctrl | dmic->ch_enabled);
dmic               72 sound/soc/ti/omap-dmic.c static inline void omap_dmic_stop(struct omap_dmic *dmic)
dmic               74 sound/soc/ti/omap-dmic.c 	u32 ctrl = omap_dmic_read(dmic, OMAP_DMIC_CTRL_REG);
dmic               75 sound/soc/ti/omap-dmic.c 	omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG,
dmic               79 sound/soc/ti/omap-dmic.c 	omap_dmic_write(dmic, OMAP_DMIC_DMAENABLE_CLR_REG,
dmic               84 sound/soc/ti/omap-dmic.c static inline int dmic_is_enabled(struct omap_dmic *dmic)
dmic               86 sound/soc/ti/omap-dmic.c 	return omap_dmic_read(dmic, OMAP_DMIC_CTRL_REG) &
dmic               93 sound/soc/ti/omap-dmic.c 	struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
dmic               96 sound/soc/ti/omap-dmic.c 	mutex_lock(&dmic->mutex);
dmic               99 sound/soc/ti/omap-dmic.c 		dmic->active = 1;
dmic              103 sound/soc/ti/omap-dmic.c 	mutex_unlock(&dmic->mutex);
dmic              111 sound/soc/ti/omap-dmic.c 	struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
dmic              113 sound/soc/ti/omap-dmic.c 	mutex_lock(&dmic->mutex);
dmic              115 sound/soc/ti/omap-dmic.c 	pm_qos_remove_request(&dmic->pm_qos_req);
dmic              118 sound/soc/ti/omap-dmic.c 		dmic->active = 0;
dmic              120 sound/soc/ti/omap-dmic.c 	mutex_unlock(&dmic->mutex);
dmic              123 sound/soc/ti/omap-dmic.c static int omap_dmic_select_divider(struct omap_dmic *dmic, int sample_rate)
dmic              132 sound/soc/ti/omap-dmic.c 		if (dmic->fclk_freq == 19200000 && dmic->out_freq == 3840000)
dmic              135 sound/soc/ti/omap-dmic.c 			dev_err(dmic->dev,
dmic              141 sound/soc/ti/omap-dmic.c 	switch (dmic->out_freq) {
dmic              143 sound/soc/ti/omap-dmic.c 		if (dmic->fclk_freq != 24576000)
dmic              148 sound/soc/ti/omap-dmic.c 		switch (dmic->fclk_freq) {
dmic              163 sound/soc/ti/omap-dmic.c 		if (dmic->fclk_freq != 24576000)
dmic              168 sound/soc/ti/omap-dmic.c 		if (dmic->fclk_freq != 19200000)
dmic              173 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "invalid out frequency: %dHz\n",
dmic              174 sound/soc/ti/omap-dmic.c 			dmic->out_freq);
dmic              181 sound/soc/ti/omap-dmic.c 	dev_err(dmic->dev, "invalid out frequency %dHz for %dHz input\n",
dmic              182 sound/soc/ti/omap-dmic.c 		dmic->out_freq, dmic->fclk_freq);
dmic              190 sound/soc/ti/omap-dmic.c 	struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
dmic              194 sound/soc/ti/omap-dmic.c 	dmic->clk_div = omap_dmic_select_divider(dmic, params_rate(params));
dmic              195 sound/soc/ti/omap-dmic.c 	if (dmic->clk_div < 0) {
dmic              196 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "no valid divider for %dHz from %dHz\n",
dmic              197 sound/soc/ti/omap-dmic.c 			dmic->out_freq, dmic->fclk_freq);
dmic              201 sound/soc/ti/omap-dmic.c 	dmic->ch_enabled = 0;
dmic              205 sound/soc/ti/omap-dmic.c 		dmic->ch_enabled |= OMAP_DMIC_UP3_ENABLE;
dmic              208 sound/soc/ti/omap-dmic.c 		dmic->ch_enabled |= OMAP_DMIC_UP2_ENABLE;
dmic              211 sound/soc/ti/omap-dmic.c 		dmic->ch_enabled |= OMAP_DMIC_UP1_ENABLE;
dmic              214 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "invalid number of legacy channels\n");
dmic              220 sound/soc/ti/omap-dmic.c 	dma_data->maxburst = dmic->threshold * channels;
dmic              221 sound/soc/ti/omap-dmic.c 	dmic->latency = (OMAP_DMIC_THRES_MAX - dmic->threshold) * USEC_PER_SEC /
dmic              230 sound/soc/ti/omap-dmic.c 	struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
dmic              233 sound/soc/ti/omap-dmic.c 	if (pm_qos_request_active(&dmic->pm_qos_req))
dmic              234 sound/soc/ti/omap-dmic.c 		pm_qos_update_request(&dmic->pm_qos_req, dmic->latency);
dmic              237 sound/soc/ti/omap-dmic.c 	omap_dmic_write(dmic, OMAP_DMIC_FIFO_CTRL_REG, dmic->threshold);
dmic              239 sound/soc/ti/omap-dmic.c 	ctrl = omap_dmic_read(dmic, OMAP_DMIC_CTRL_REG);
dmic              248 sound/soc/ti/omap-dmic.c 	ctrl |= OMAP_DMIC_CLK_DIV(dmic->clk_div);
dmic              250 sound/soc/ti/omap-dmic.c 	omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG, ctrl);
dmic              252 sound/soc/ti/omap-dmic.c 	omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG,
dmic              262 sound/soc/ti/omap-dmic.c 	struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
dmic              266 sound/soc/ti/omap-dmic.c 		omap_dmic_start(dmic);
dmic              269 sound/soc/ti/omap-dmic.c 		omap_dmic_stop(dmic);
dmic              278 sound/soc/ti/omap-dmic.c static int omap_dmic_select_fclk(struct omap_dmic *dmic, int clk_id,
dmic              292 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "invalid input frequency: %dHz\n", freq);
dmic              293 sound/soc/ti/omap-dmic.c 		dmic->fclk_freq = 0;
dmic              297 sound/soc/ti/omap-dmic.c 	if (dmic->sysclk == clk_id) {
dmic              298 sound/soc/ti/omap-dmic.c 		dmic->fclk_freq = freq;
dmic              303 sound/soc/ti/omap-dmic.c 	if (dmic->active && dmic_is_enabled(dmic)) {
dmic              304 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "can't re-parent when DMIC active\n");
dmic              319 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "fclk clk_id (%d) not supported\n", clk_id);
dmic              323 sound/soc/ti/omap-dmic.c 	parent_clk = clk_get(dmic->dev, parent_clk_name);
dmic              325 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "can't get %s\n", parent_clk_name);
dmic              329 sound/soc/ti/omap-dmic.c 	mux = clk_get_parent(dmic->fclk);
dmic              331 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "can't get fck mux parent\n");
dmic              336 sound/soc/ti/omap-dmic.c 	mutex_lock(&dmic->mutex);
dmic              337 sound/soc/ti/omap-dmic.c 	if (dmic->active) {
dmic              339 sound/soc/ti/omap-dmic.c 		pm_runtime_put_sync(dmic->dev);
dmic              341 sound/soc/ti/omap-dmic.c 		pm_runtime_get_sync(dmic->dev);
dmic              345 sound/soc/ti/omap-dmic.c 	mutex_unlock(&dmic->mutex);
dmic              348 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "re-parent failed\n");
dmic              352 sound/soc/ti/omap-dmic.c 	dmic->sysclk = clk_id;
dmic              353 sound/soc/ti/omap-dmic.c 	dmic->fclk_freq = freq;
dmic              362 sound/soc/ti/omap-dmic.c static int omap_dmic_select_outclk(struct omap_dmic *dmic, int clk_id,
dmic              368 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "output clk_id (%d) not supported\n",
dmic              378 sound/soc/ti/omap-dmic.c 		dmic->out_freq = freq;
dmic              381 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "invalid out frequency: %dHz\n", freq);
dmic              382 sound/soc/ti/omap-dmic.c 		dmic->out_freq = 0;
dmic              392 sound/soc/ti/omap-dmic.c 	struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
dmic              395 sound/soc/ti/omap-dmic.c 		return omap_dmic_select_fclk(dmic, clk_id, freq);
dmic              397 sound/soc/ti/omap-dmic.c 		return omap_dmic_select_outclk(dmic, clk_id, freq);
dmic              399 sound/soc/ti/omap-dmic.c 	dev_err(dmic->dev, "invalid clock direction (%d)\n", dir);
dmic              414 sound/soc/ti/omap-dmic.c 	struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
dmic              416 sound/soc/ti/omap-dmic.c 	pm_runtime_enable(dmic->dev);
dmic              419 sound/soc/ti/omap-dmic.c 	pm_runtime_get_sync(dmic->dev);
dmic              420 sound/soc/ti/omap-dmic.c 	omap_dmic_write(dmic, OMAP_DMIC_CTRL_REG, 0x00);
dmic              421 sound/soc/ti/omap-dmic.c 	pm_runtime_put_sync(dmic->dev);
dmic              424 sound/soc/ti/omap-dmic.c 	dmic->threshold = OMAP_DMIC_THRES_MAX - 3;
dmic              426 sound/soc/ti/omap-dmic.c 	snd_soc_dai_init_dma_data(dai, NULL, &dmic->dma_data);
dmic              433 sound/soc/ti/omap-dmic.c 	struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai);
dmic              435 sound/soc/ti/omap-dmic.c 	pm_runtime_disable(dmic->dev);
dmic              460 sound/soc/ti/omap-dmic.c 	struct omap_dmic *dmic;
dmic              464 sound/soc/ti/omap-dmic.c 	dmic = devm_kzalloc(&pdev->dev, sizeof(struct omap_dmic), GFP_KERNEL);
dmic              465 sound/soc/ti/omap-dmic.c 	if (!dmic)
dmic              468 sound/soc/ti/omap-dmic.c 	platform_set_drvdata(pdev, dmic);
dmic              469 sound/soc/ti/omap-dmic.c 	dmic->dev = &pdev->dev;
dmic              470 sound/soc/ti/omap-dmic.c 	dmic->sysclk = OMAP_DMIC_SYSCLK_SYNC_MUX_CLKS;
dmic              472 sound/soc/ti/omap-dmic.c 	mutex_init(&dmic->mutex);
dmic              474 sound/soc/ti/omap-dmic.c 	dmic->fclk = devm_clk_get(dmic->dev, "fck");
dmic              475 sound/soc/ti/omap-dmic.c 	if (IS_ERR(dmic->fclk)) {
dmic              476 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "cant get fck\n");
dmic              482 sound/soc/ti/omap-dmic.c 		dev_err(dmic->dev, "invalid dma memory resource\n");
dmic              485 sound/soc/ti/omap-dmic.c 	dmic->dma_data.addr = res->start + OMAP_DMIC_DATA_REG;
dmic              487 sound/soc/ti/omap-dmic.c 	dmic->dma_data.filter_data = "up_link";
dmic              490 sound/soc/ti/omap-dmic.c 	dmic->io_base = devm_ioremap_resource(&pdev->dev, res);
dmic              491 sound/soc/ti/omap-dmic.c 	if (IS_ERR(dmic->io_base))
dmic              492 sound/soc/ti/omap-dmic.c 		return PTR_ERR(dmic->io_base);