/openbmc/linux/Documentation/sound/soc/ |
H A D | dpcm.rst | 18 DPCM re-uses all the existing component codec, platform and DAI drivers without 23 ------------------------------------- 26 document for all examples :- 32 PCM0 <------------> * * <----DAI0-----> Codec Headset 34 PCM1 <------------> * * <----DAI1-----> Codec Speakers 36 PCM2 <------------> * * <----DAI2-----> MODEM 38 PCM3 <------------> * * <----DAI3-----> BT 40 * * <----DAI4-----> DMIC 42 * * <----DAI5-----> FM 47 modem. This sound card exposes 4 DSP front end (FE) ALSA PCM devices and [all …]
|
/openbmc/linux/Documentation/devicetree/bindings/sound/ |
H A D | imx-audio-card.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/sound/imx-audio-card.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Shengjiu Wang <shengjiu.wang@nxp.com> 13 - $ref: sound-card-common.yaml# 18 - fsl,imx-audio-card 21 ".*-dai-link$": 23 Each subnode represents a dai link. Subnodes of each dai links would be 29 link-name: [all …]
|
/openbmc/linux/sound/soc/intel/avs/ |
H A D | pcm.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 // Copyright(c) 2021-2022 Intel Corporation. All rights reserved. 14 #include <sound/soc-acpi.h> 15 #include <sound/soc-acpi-intel-match.h> 16 #include <sound/soc-component.h> 25 * link stream is stored within substream's runtime 36 avs_dai_find_path_template(struct snd_soc_dai *dai, bool is_fe, int direction) in avs_dai_find_path_template() argument 38 struct snd_soc_dapm_widget *dw = snd_soc_dai_get_widget(dai, direction); in avs_dai_find_path_template() 48 dp = list_first_entry_or_null(&dw->edges[dir], typeof(*dp), list_node[dir]); in avs_dai_find_path_template() 53 dw = (dp->source == dw) ? dp->sink : dp->source; in avs_dai_find_path_template() [all …]
|
/openbmc/linux/include/sound/ |
H A D | soc-dpcm.h | 1 /* SPDX-License-Identifier: GPL-2.0 3 * linux/sound/soc-dpcm.h -- ALSA SoC Dynamic PCM Support 18 * Types of runtime_update to perform. e.g. originated from FE PCM ops 28 * Dynamic PCM Frontend -> Backend link management states. 31 SND_SOC_DPCM_LINK_STATE_NEW = 0, /* newly created link */ 32 SND_SOC_DPCM_LINK_STATE_FREE, /* link to be dismantled */ 36 * Dynamic PCM Frontend -> Backend link PCM states. 65 * Dynamic PCM link 66 * This links together a FE and BE DAI at runtime and stores the link 70 /* FE and BE DAIs*/ [all …]
|
H A D | soc-topology.h | 1 /* SPDX-License-Identifier: GPL-2.0 3 * linux/sound/soc-topology.h -- ALSA SoC Firmware Controls and DAPM 9 * algorithms, equalisers, DAIs, widgets, FE caps, BE caps, codec link caps etc. 60 /* generic dynamic object - all dynamic objects belong to this struct */ 74 * Kcontrol operations - used to map handlers onto firmware based controls. 96 * DAPM widget event handlers - used to map handlers onto widgets. 105 * Public API - Used by component drivers to load and unload dynamic objects 110 /* external kcontrol init - used for any driver specific init */ 122 /* external widget init - used for any driver specific init */ 132 /* FE DAI - used for any driver specific init */ [all …]
|
H A D | soc.h | 1 /* SPDX-License-Identifier: GPL-2.0 3 * linux/sound/soc.h -- ALSA SoC Layer 215 .mask = xitems ? roundup_pow_of_two(xitems) - 1 : 0} 417 #include <sound/soc-dapm.h> 418 #include <sound/soc-dpcm.h> 419 #include <sound/soc-topology.h> 493 snd_soc_runtime_action(rtd, stream, -1); in snd_soc_runtime_deactivate() 558 int snd_soc_add_dai_controls(struct snd_soc_dai *dai, 612 SND_SOC_TRIGGER_ORDER_DEFAULT = 0, /* Link->Component->DAI DAI->Component->Link */ 613 SND_SOC_TRIGGER_ORDER_LDC, /* Link->DAI->Component Component->DAI->Link */ [all …]
|
/openbmc/linux/sound/soc/ |
H A D | soc-pcm.c | 1 // SPDX-License-Identifier: GPL-2.0+ 3 // soc-pcm.c -- ALSA SoC PCM 25 #include <sound/soc-dpcm.h> 26 #include <sound/soc-link.h> 39 case -EPROBE_DEFER: in _soc_pcm_ret() 40 case -ENOTSUPP: in _soc_pcm_ret() 43 dev_err(rtd->dev, in _soc_pcm_ret() 45 func, rtd->dai_link->name, ret); in _soc_pcm_ret() 73 return (rtd)->dai_link->num_cpus == 1 ? asoc_rtd_to_cpu(rtd, 0)->name : "multicpu"; in soc_cpu_dai_name() 77 return (rtd)->dai_link->num_codecs == 1 ? asoc_rtd_to_codec(rtd, 0)->name : "multicodec"; in soc_codec_dai_name() [all …]
|
H A D | soc-compress.c | 1 // SPDX-License-Identifier: GPL-2.0+ 3 // soc-compress.c -- ALSA SoC Compress 21 #include <sound/soc-dpcm.h> 22 #include <sound/soc-link.h> 26 struct snd_soc_pcm_runtime *rtd = cstream->private_data; in snd_soc_compr_components_open() 47 struct snd_soc_pcm_runtime *rtd = cstream->private_data; in snd_soc_compr_components_free() 59 struct snd_soc_pcm_runtime *rtd = cstream->private_data; in soc_compr_clean() 62 int stream = cstream->direction; /* SND_COMPRESS_xxx is same as SNDRV_PCM_STREAM_xxx */ in soc_compr_clean() 72 cpu_dai->rate = 0; in soc_compr_clean() 75 codec_dai->rate = 0; in soc_compr_clean() [all …]
|
H A D | soc-topology.c | 1 // SPDX-License-Identifier: GPL-2.0+ 3 // soc-topology.c -- ALSA SoC Topology 17 // topology data can contain kcontrols, DAPM graphs, widgets, DAIs, DAI links, 29 #include <sound/soc-dapm.h> 30 #include <sound/soc-topology.h> 83 const u8 *end = tplg->pos + elem_size * count; in soc_tplg_check_elem_count() 85 if (end > tplg->fw->data + tplg->fw->size) { in soc_tplg_check_elem_count() 86 dev_err(tplg->dev, "ASoC: %s overflow end of data\n", in soc_tplg_check_elem_count() 88 return -EINVAL; in soc_tplg_check_elem_count() 94 dev_err(tplg->dev, in soc_tplg_check_elem_count() [all …]
|
/openbmc/linux/sound/soc/samsung/ |
H A D | odroid.c | 1 // SPDX-License-Identifier: GPL-2.0 6 #include <linux/clk-provider.h> 13 #include "i2s-regs.h" 28 struct snd_pcm_runtime *runtime = substream->runtime; in odroid_card_fe_startup() 39 struct odroid_priv *priv = snd_soc_card_get_drvdata(rtd->card); in odroid_card_fe_hw_params() 43 spin_lock_irqsave(&priv->lock, flags); in odroid_card_fe_hw_params() 44 if (priv->be_active && priv->be_sample_rate != params_rate(params)) in odroid_card_fe_hw_params() 45 ret = -EINVAL; in odroid_card_fe_hw_params() 46 spin_unlock_irqrestore(&priv->lock, flags); in odroid_card_fe_hw_params() 60 struct odroid_priv *priv = snd_soc_card_get_drvdata(rtd->card); in odroid_card_be_hw_params() [all …]
|
/openbmc/linux/sound/soc/generic/ |
H A D | audio-graph-card.c | 1 // SPDX-License-Identifier: GPL-2.0 8 // based on ${LINUX}/sound/soc/generic/simple-card.c 29 struct snd_soc_dapm_context *dapm = w->dapm; in graph_outdrv_event() 30 struct asoc_simple_priv *priv = snd_soc_card_get_drvdata(dapm->card); in graph_outdrv_event() 34 gpiod_set_value_cansleep(priv->pa_gpio, 1); in graph_outdrv_event() 37 gpiod_set_value_cansleep(priv->pa_gpio, 0); in graph_outdrv_event() 40 return -EINVAL; in graph_outdrv_event() 60 struct snd_soc_dai *dai = snd_soc_find_dai_with_mutex(dlc); in soc_component_is_pcm() local 62 if (dai && (dai->component->driver->pcm_construct || in soc_component_is_pcm() 63 (dai->driver->ops && dai->driver->ops->pcm_new))) in soc_component_is_pcm() [all …]
|
H A D | simple-card.c | 1 // SPDX-License-Identifier: GPL-2.0 16 #include <sound/soc-dai.h> 21 #define DAI "sound-dai" macro 22 #define CELL "#sound-dai-cells" 23 #define PREFIX "simple-audio-card," 41 * Get node via "sound-dai = <&phandle port>" in asoc_simple_parse_platform() 44 ret = of_parse_phandle_with_args(node, DAI, CELL, 0, &args); in asoc_simple_parse_platform() 50 dlc->of_node = args.np; in asoc_simple_parse_platform() 61 struct snd_soc_dai *dai; in asoc_simple_parse_dai() local 68 * Get node via "sound-dai = <&phandle port>" in asoc_simple_parse_dai() [all …]
|
H A D | audio-graph-card2.c | 1 // SPDX-License-Identifier: GPL-2.0 8 // based on ${LINUX}/sound/soc/generic/audio-graph-card.c 28 bitclock-master; 30 frame-master; 42 sample0: left_j, bitclock-master, frame-master 43 sample1: i2s, bitclock-master 59 linux/sound/soc/soc-utils.c 60 linux/sound/soc/generic/test-component.c 63 Normal Audio-Graph 66 CPU <---> Codec [all …]
|
H A D | simple-card-utils.c | 1 // SPDX-License-Identifier: GPL-2.0 3 // simple-card-utils.c 35 if (!strcmp(data->convert_sample_format, in asoc_simple_fixup_sample_fmt() 54 snprintf(prop, sizeof(prop), "%s%s", prefix, "convert-rate"); in asoc_simple_parse_convert() 55 of_property_read_u32(np, prop, &data->convert_rate); in asoc_simple_parse_convert() 58 snprintf(prop, sizeof(prop), "%s%s", prefix, "convert-channels"); in asoc_simple_parse_convert() 59 of_property_read_u32(np, prop, &data->convert_channels); in asoc_simple_parse_convert() 62 snprintf(prop, sizeof(prop), "%s%s", prefix, "convert-sample-format"); in asoc_simple_parse_convert() 63 of_property_read_string(np, prop, &data->convert_sample_format); in asoc_simple_parse_convert() 68 * asoc_simple_is_convert_required() - Query if HW param conversion was requested [all …]
|
/openbmc/linux/sound/soc/sof/intel/ |
H A D | hda-dai-ops.c | 1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) 10 #include <sound/hda-mlink.h> 13 #include "../ipc4-priv.h" 14 #include "../ipc4-topology.h" 15 #include "../sof-priv.h" 16 #include "../sof-audio.h" 19 /* These ops are only applicable for the HDA DAI's in their current form */ 23 * to the link DMA stream_tag argument is assigned to one 24 * of the FEs connected to the BE DAI. 34 fe_substream = snd_soc_dpcm_get_substream(dpcm->fe, dir); in hda_check_fes() [all …]
|
/openbmc/linux/sound/soc/sof/ |
H A D | ipc3-topology.c | 1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) 12 #include "sof-priv.h" 13 #include "sof-audio.h" 14 #include "ipc3-priv.h" 80 /* DAI */ 90 /* BE DAI link */ 316 [SOF_DAI_TOKENS] = {"DAI tokens", dai_tokens, ARRAY_SIZE(dai_tokens)}, 317 [SOF_DAI_LINK_TOKENS] = {"DAI link tokens", dai_link_tokens, ARRAY_SIZE(dai_link_tokens)}, 331 * sof_comp_alloc - allocate and initialize buffer for a new component 344 size_t ext_size = sizeof(swidget->uuid); in sof_comp_alloc() [all …]
|
H A D | ipc3-pcm.c | 1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) 11 #include "ipc3-priv.h" 13 #include "sof-priv.h" 14 #include "sof-audio.h" 26 return -EINVAL; in sof_ipc3_pcm_hw_free() 28 if (!spcm->prepared[substream->stream]) in sof_ipc3_pcm_hw_free() 33 stream.comp_id = spcm->stream[substream->stream].comp_id; in sof_ipc3_pcm_hw_free() 36 return sof_ipc_tx_message_no_reply(sdev->ipc, &stream, sizeof(stream)); in sof_ipc3_pcm_hw_free() 46 struct sof_ipc_fw_version *v = &sdev->fw_ready.version; in sof_ipc3_pcm_hw_params() 47 struct snd_pcm_runtime *runtime = substream->runtime; in sof_ipc3_pcm_hw_params() [all …]
|
H A D | topology.c | 1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) 18 #include "sof-priv.h" 19 #include "sof-audio.h" 25 * from dB gain 20th root of 10 in Q1.16 fixed-point notation 28 /* 40th root of 10 in Q1.16 fixed-point notation*/ 40 * sof_update_ipc_object - Parse multiple sets of tokens within the token array associated with the 62 token_list = tplg_ops ? tplg_ops->token_list : NULL; in sof_update_ipc_object() 68 dev_err(scomp->dev, "Invalid token count for token ID: %d\n", token_id); in sof_update_ipc_object() 69 return -EINVAL; in sof_update_ipc_object() 78 dev_err(scomp->dev, "Invalid tokens for token id: %d\n", token_id); in sof_update_ipc_object() [all …]
|
H A D | ipc4-pcm.c | 1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) 11 #include "sof-audio.h" 12 #include "sof-priv.h" 14 #include "ipc4-priv.h" 15 #include "ipc4-topology.h" 16 #include "ipc4-fw-reg.h" 25 if (trigger_list->count == 1) in sof_ipc4_set_multi_pipeline_state() 26 return sof_ipc4_set_pipeline_state(sdev, trigger_list->pipeline_instance_ids[0], in sof_ipc4_set_multi_pipeline_state() 39 ipc_size = sizeof(u32) * (trigger_list->count + 1); in sof_ipc4_set_multi_pipeline_state() 43 return sof_ipc_tx_message_no_reply(sdev->ipc, &msg, ipc_size); in sof_ipc4_set_multi_pipeline_state() [all …]
|
H A D | sof-audio.h | 1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ 20 #include <sound/sof/dai.h> 22 #include "sof-priv.h" 24 #define SOF_AUDIO_PCM_DRV_NAME "sof-audio-component" 37 /* max number of FE PCMs before BEs */ 68 return volume_map[size - 1]; in mixer_to_ipc() 82 return i - 1; in ipc_to_mixer() 93 int dai_data; /* contains DAI-specific information */ 97 * struct sof_ipc_pcm_ops - IPC-specific PCM ops 101 * @dai_link_fixup: Function pointer for DAI link fixup [all …]
|
/openbmc/linux/include/uapi/sound/ |
H A D | asoc.h | 1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 3 * uapi/sound/asoc.h -- ALSA SoC Firmware Controls and DAPM 34 * Maximum number of physical link's hardware configs 38 /* individual kcontrol info types - can be mixed with other types */ 49 /* individual widget kcontrol info types - can be mixed with other types */ 56 /* DAPM widget types - add new items to the end */ 116 /* vendor block IDs - please add new vendor types to end */ 133 /* DAI flags */ 138 /* DAI clock gating */ 143 /* DAI mclk_direction */ [all …]
|
/openbmc/linux/sound/soc/intel/skylake/ |
H A D | skl-pcm.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * skl-pcm.c -ASoC HDA Platform driver file implementing PCM functionality 5 * Copyright (C) 2014-2015 Intel Corp 20 #include "skl-topology.h" 21 #include "skl-sst-dsp.h" 22 #include "skl-sst-ipc.h" 60 return substream->runtime->private_data; in get_hdac_ext_stream() 67 struct hdac_bus *bus = hstream->bus; in get_bus_ctx() 77 hdac_stream(stream)->bufsize = 0; in skl_substream_alloc_pages() 78 hdac_stream(stream)->period_bytes = 0; in skl_substream_alloc_pages() [all …]
|
/openbmc/linux/sound/soc/mediatek/common/ |
H A D | mtk-afe-fe-dai.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * mtk-afe-fe-dais.c -- Mediatek afe fe dai operator 14 #include "mtk-afe-platform-driver.h" 16 #include "mtk-afe-fe-dai.h" 17 #include "mtk-base-afe.h" 38 struct snd_soc_dai *dai) in mtk_afe_fe_startup() argument 41 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_afe_fe_startup() 42 struct snd_pcm_runtime *runtime = substream->runtime; in mtk_afe_fe_startup() 43 int memif_num = asoc_rtd_to_cpu(rtd, 0)->id; in mtk_afe_fe_startup() 44 struct mtk_base_afe_memif *memif = &afe->memif[memif_num]; in mtk_afe_fe_startup() [all …]
|
/openbmc/linux/sound/soc/fsl/ |
H A D | imx-card.c | 1 // SPDX-License-Identifier: GPL-2.0+ 2 // Copyright 2017-2021 NXP 15 #include <sound/soc-dapm.h> 55 * struct imx_card_plat_data - specific info for codecs 89 * struct dai_link_data - specific info for dai link 93 * @cpu_sysclk_id: sysclk id for cpu dai 104 * struct imx_card_data - platform device data 108 * @link_data: private data for dai link 143 * Table 13 - Audio Interface Format 154 * Table 7 - mapping multiplier and speed mode [all …]
|
H A D | fsl-asoc-card.c | 1 // SPDX-License-Identifier: GPL-2.0 23 #include "imx-audmux.h" 32 #define DRIVER_NAME "fsl-asoc-card" 39 /* Default DAI format without Master and Slave flag */ 43 * struct codec_priv - CODEC private data 61 * struct cpu_priv - CPU private data 79 * struct fsl_asoc_card_priv - Freescale Generic ASOC card private data 80 * @dai_link: DAI link structure including normal one and DPCM link 90 * @asrc_rate: ASRC sample rate used by Back-Ends 91 * @asrc_format: ASRC sample format used by Back-Ends [all …]
|