/linux-6.12.1/sound/soc/xtensa/ |
D | xtfpga-i2s.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Xtfpga I2S controller driver 17 #define DRV_NAME "xtfpga-i2s" 46 * I2S controller operation: 61 void __iomem *regs; member 69 * read-side critical section. Trigger callback sets and clears the 76 unsigned (*tx_fn)(struct xtfpga_i2s *i2s, 123 * xtfpga_pcm_tx_2x16 for 16-bit stereo. 125 * FIFO consists of 32-bit words, one word per channel, always 2 channels. 126 * If I2S interface is configured with smaller sample resolution, only [all …]
|
/linux-6.12.1/sound/soc/meson/ |
D | g12a-tohdmitx.c | 1 // SPDX-License-Identifier: GPL-2.0 13 #include <sound/soc-dai.h> 15 #include <dt-bindings/sound/meson-g12a-tohdmitx.h> 16 #include "meson-codec-glue.h" 18 #define G12A_TOHDMITX_DRV_NAME "g12a-tohdmitx" 35 "I2S A", "I2S B", "I2S C", 45 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; in g12a_tohdmitx_i2s_mux_put_enum() 48 if (ucontrol->value.enumerated.item[0] >= e->items) in g12a_tohdmitx_i2s_mux_put_enum() 49 return -EINVAL; in g12a_tohdmitx_i2s_mux_put_enum() 51 mux = snd_soc_enum_item_to_val(e, ucontrol->value.enumerated.item[0]); in g12a_tohdmitx_i2s_mux_put_enum() [all …]
|
D | aiu.c | 1 // SPDX-License-Identifier: GPL-2.0 13 #include <sound/soc-dai.h> 15 #include <dt-bindings/sound/meson-aiu.h> 17 #include "aiu-fifo.h" 22 "SPDIF", "I2S", 38 { "I2S Encoder Playback", NULL, "I2S FIFO Playback" }, 40 { "SPDIF SRC SEL", "I2S", "I2S FIFO Playback" }, 52 if (args->args_count != 2) in aiu_of_xlate_dai_name() 53 return -EINVAL; in aiu_of_xlate_dai_name() 55 if (args->args[0] != component_id) in aiu_of_xlate_dai_name() [all …]
|
D | g12a-toacodec.c | 1 // SPDX-License-Identifier: GPL-2.0 14 #include <sound/soc-dai.h> 16 #include <dt-bindings/sound/meson-g12a-toacodec.h> 17 #include "axg-tdm.h" 18 #include "meson-codec-glue.h" 20 #define G12A_TOACODEC_DRV_NAME "g12a-toacodec" 60 "I2S A", "I2S B", "I2S C", 71 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; in g12a_toacodec_mux_put_enum() 74 if (ucontrol->value.enumerated.item[0] >= e->items) in g12a_toacodec_mux_put_enum() 75 return -EINVAL; in g12a_toacodec_mux_put_enum() [all …]
|
/linux-6.12.1/sound/soc/tegra/ |
D | tegra20_i2s.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * tegra20_i2s.c - Tegra20 I2S driver 6 * Copyright (C) 2010,2012 - NVIDIA, Inc. 10 * Copyright (c) 2009-2010, NVIDIA Corporation. 35 #define DRV_NAME "tegra20-i2s" 39 struct tegra20_i2s *i2s = dev_get_drvdata(dev); in tegra20_i2s_runtime_suspend() local 41 regcache_cache_only(i2s->regmap, true); in tegra20_i2s_runtime_suspend() 43 clk_disable_unprepare(i2s->clk_i2s); in tegra20_i2s_runtime_suspend() 50 struct tegra20_i2s *i2s = dev_get_drvdata(dev); in tegra20_i2s_runtime_resume() local 53 ret = reset_control_assert(i2s->reset); in tegra20_i2s_runtime_resume() [all …]
|
D | tegra30_i2s.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * tegra30_i2s.c - Tegra30 I2S driver 6 * Copyright (c) 2010-2012, NVIDIA CORPORATION. All rights reserved. 10 * Copyright (c) 2009-2010, NVIDIA Corporation. 36 #define DRV_NAME "tegra30-i2s" 40 struct tegra30_i2s *i2s = dev_get_drvdata(dev); in tegra30_i2s_runtime_suspend() local 42 regcache_cache_only(i2s->regmap, true); in tegra30_i2s_runtime_suspend() 44 clk_disable_unprepare(i2s->clk_i2s); in tegra30_i2s_runtime_suspend() 51 struct tegra30_i2s *i2s = dev_get_drvdata(dev); in tegra30_i2s_runtime_resume() local 54 ret = clk_prepare_enable(i2s->clk_i2s); in tegra30_i2s_runtime_resume() [all …]
|
D | tegra210_i2s.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 // tegra210_i2s.c - Tegra210 I2S driver 33 * is required to select i2s4b for it to be functional for I2S 44 regmap_write(regmap, TEGRA210_I2S_SLOT_CTRL, total_slots - 1); in tegra210_i2s_set_slot_ctrl() 52 struct tegra210_i2s *i2s = dev_get_drvdata(dev); in tegra210_i2s_set_clock_rate() local 56 regmap_read(i2s->regmap, TEGRA210_I2S_CTRL, &val); in tegra210_i2s_set_clock_rate() 58 /* No need to set rates if I2S is being operated in slave */ in tegra210_i2s_set_clock_rate() 62 err = clk_set_rate(i2s->clk_i2s, clock_rate); in tegra210_i2s_set_clock_rate() 64 dev_err(dev, "can't set I2S bit clock rate %u, err: %d\n", in tegra210_i2s_set_clock_rate() 69 if (!IS_ERR(i2s->clk_sync_input)) { in tegra210_i2s_set_clock_rate() [all …]
|
D | tegra20_spdif.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * tegra20_spdif.c - Tegra20 SPDIF driver 6 * Copyright (C) 2011-2012 - NVIDIA, Inc. 32 regcache_cache_only(spdif->regmap, true); in tegra20_spdif_runtime_suspend() 34 clk_disable_unprepare(spdif->clk_spdif_out); in tegra20_spdif_runtime_suspend() 44 ret = reset_control_assert(spdif->reset); in tegra20_spdif_runtime_resume() 48 ret = clk_prepare_enable(spdif->clk_spdif_out); in tegra20_spdif_runtime_resume() 56 ret = reset_control_deassert(spdif->reset); in tegra20_spdif_runtime_resume() 60 regcache_cache_only(spdif->regmap, false); in tegra20_spdif_runtime_resume() 61 regcache_mark_dirty(spdif->regmap); in tegra20_spdif_runtime_resume() [all …]
|
/linux-6.12.1/sound/soc/fsl/ |
D | lpc3xxx-i2s.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 23 #include "lpc3xxx-i2s.h" 60 if (abs(trate - i2srate) < diff) { in __lpc3xxx_find_clkdiv() 61 diff = abs(trate - i2srate); in __lpc3xxx_find_clkdiv() 72 struct device *dev = i2s_info_p->dev; in lpc3xxx_i2s_startup() 76 guard(mutex)(&i2s_info_p->lock); in lpc3xxx_i2s_startup() 78 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) in lpc3xxx_i2s_startup() 83 if (flag & i2s_info_p->streams_in_use) { in lpc3xxx_i2s_startup() 84 dev_warn(dev, "I2S channel is busy\n"); in lpc3xxx_i2s_startup() 85 ret = -EBUSY; in lpc3xxx_i2s_startup() [all …]
|
D | mpc5200_psc_i2s.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 // Freescale MPC5200 PSC in I2S mode 21 * PSC_I2S_RATES: sample rates supported by the I2S 23 * This driver currently only supports the PSC running in I2S slave mode, 31 * PSC_I2S_FORMATS: audio formats supported by the PSC I2S mode 44 dev_dbg(psc_dma->dev, "%s(substream=%p) p_size=%i p_bytes=%i" in psc_i2s_hw_params() 64 dev_dbg(psc_dma->dev, "invalid format\n"); in psc_i2s_hw_params() 65 return -EINVAL; in psc_i2s_hw_params() 67 out_be32(&psc_dma->psc_regs->sicr, psc_dma->sicr | mode); in psc_i2s_hw_params() 90 dev_dbg(psc_dma->dev, "psc_i2s_set_sysclk(cpu_dai=%p, dir=%i)\n", in psc_i2s_set_sysclk() [all …]
|
D | fsl_ssi.c | 1 // SPDX-License-Identifier: GPL-2.0 7 // Copyright 2007-2010 Freescale Semiconductor, Inc. 9 // Some notes why imx-pcm-fiq is used instead of DMA on some boards: 16 // we receive in our (PCM-) data stream. The only chance we have is to 43 #include <linux/dma/imx-dma.h> 53 #include "imx-pcm.h" 55 /* Define RX and TX to index ssi->regvals array; Can be 0 or 1 only */ 66 * (bit-endianness must match byte-endianness). Processors typically write 68 * written in. So if the host CPU is big-endian, then only big-endian 91 * - SSI inputs external bit clock and outputs frame sync clock -- CBM_CFS [all …]
|
/linux-6.12.1/sound/soc/jz4740/ |
D | jz4740-i2s.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de> 9 #include <linux/dma-mapping.h> 97 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai); in jz4740_i2s_startup() local 105 if (!i2s->soc_info->shared_fifo_flush) { in jz4740_i2s_startup() 106 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) in jz4740_i2s_startup() 107 regmap_set_bits(i2s->regmap, JZ_REG_AIC_CTRL, JZ_AIC_CTRL_TFLUSH); in jz4740_i2s_startup() 109 regmap_set_bits(i2s->regmap, JZ_REG_AIC_CTRL, JZ_AIC_CTRL_RFLUSH); in jz4740_i2s_startup() 121 if (i2s->soc_info->shared_fifo_flush) in jz4740_i2s_startup() 122 regmap_set_bits(i2s->regmap, JZ_REG_AIC_CTRL, JZ_AIC_CTRL_TFLUSH); in jz4740_i2s_startup() [all …]
|
/linux-6.12.1/Documentation/devicetree/bindings/sound/ |
D | intel,keembay-i2s.yaml | 1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 4 --- 5 $id: http://devicetree.org/schemas/sound/intel,keembay-i2s.yaml# 6 $schema: http://devicetree.org/meta-schemas/core.yaml# 8 title: Intel KeemBay I2S 11 - Daniele Alessandrelli <daniele.alessandrelli@intel.com> 12 - Paul J. Murphy <paul.j.murphy@intel.com> 15 Intel KeemBay I2S 18 - $ref: dai-common.yaml# 23 - intel,keembay-i2s [all …]
|
D | st,sti-asoc-card.txt | 3 The sti ASoC Sound Card can be used, for all sti SoCs using internal sti-sas 8 Documentation/devicetree/bindings/sound/simple-card.yaml. 10 1) sti-uniperiph-dai: audio dai device. 11 --------------------------------------- 14 - compatible: "st,stih407-uni-player-hdmi", "st,stih407-uni-player-pcm-out", 15 "st,stih407-uni-player-dac", "st,stih407-uni-player-spdif", 16 "st,stih407-uni-reader-pcm_in", "st,stih407-uni-reader-hdmi", 18 - st,syscfg: phandle to boot-device system configuration registers 20 - clock-names: name of the clocks listed in clocks property in the same order 22 - reg: CPU DAI IP Base address and size entries, listed in same [all …]
|
/linux-6.12.1/sound/soc/samsung/ |
D | idma.c | 1 // SPDX-License-Identifier: GPL-2.0+ 3 // idma.c - I2S0 internal DMA driver 10 #include <linux/dma-mapping.h> 17 #include "i2s.h" 19 #include "i2s-regs.h" 52 void __iomem *regs; member 61 (readl(idma.regs + I2STRNCNT) & 0xffffff) * 4; in idma_getpos() 66 struct snd_pcm_runtime *runtime = substream->runtime; in idma_enqueue() 67 struct idma_ctrl *prtd = substream->runtime->private_data; in idma_enqueue() 70 spin_lock(&prtd->lock); in idma_enqueue() [all …]
|
D | odroid.c | 1 // SPDX-License-Identifier: GPL-2.0 6 #include <linux/clk-provider.h> 11 #include "i2s.h" 12 #include "i2s-regs.h" 27 struct snd_pcm_runtime *runtime = substream->runtime; in odroid_card_fe_startup() 38 struct odroid_priv *priv = snd_soc_card_get_drvdata(rtd->card); in odroid_card_fe_hw_params() 42 spin_lock_irqsave(&priv->lock, flags); in odroid_card_fe_hw_params() 43 if (priv->be_active && priv->be_sample_rate != params_rate(params)) in odroid_card_fe_hw_params() 44 ret = -EINVAL; in odroid_card_fe_hw_params() 45 spin_unlock_irqrestore(&priv->lock, flags); in odroid_card_fe_hw_params() [all …]
|
/linux-6.12.1/sound/soc/rockchip/ |
D | rockchip_i2s.c | 1 // SPDX-License-Identifier: GPL-2.0-only 4 * ALSA SoC Audio Layer - Rockchip I2S Controller driver 7 * Author: Jianqun <jay.xu@rock-chips.com> 24 #define DRV_NAME "rockchip-i2s" 48 * I2S controller hopes to start the tx and rx together, 62 static int i2s_pinctrl_select_bclk_on(struct rk_i2s_dev *i2s) in i2s_pinctrl_select_bclk_on() argument 66 if (!IS_ERR(i2s->pinctrl) && !IS_ERR_OR_NULL(i2s->bclk_on)) in i2s_pinctrl_select_bclk_on() 67 ret = pinctrl_select_state(i2s->pinctrl, i2s->bclk_on); in i2s_pinctrl_select_bclk_on() 70 dev_err(i2s->dev, "bclk enable failed %d\n", ret); in i2s_pinctrl_select_bclk_on() 75 static int i2s_pinctrl_select_bclk_off(struct rk_i2s_dev *i2s) in i2s_pinctrl_select_bclk_off() argument [all …]
|
D | rockchip_i2s_tdm.c | 1 // SPDX-License-Identifier: GPL-2.0-only 2 // ALSA SoC Audio Layer - Rockchip I2S/TDM Controller driver 5 // Author: Sugar Zhang <sugar.zhang@rock-chips.com> 9 #include <linux/clk-provider.h> 23 #define DRV_NAME "rockchip-i2s-tdm" 91 clk_disable_unprepare(i2s_tdm->mclk_tx); in i2s_tdm_disable_unprepare_mclk() 92 clk_disable_unprepare(i2s_tdm->mclk_rx); in i2s_tdm_disable_unprepare_mclk() 96 * i2s_tdm_prepare_enable_mclk - prepare to enable all mclks, disable them on 109 ret = clk_prepare_enable(i2s_tdm->mclk_tx); in i2s_tdm_prepare_enable_mclk() 112 ret = clk_prepare_enable(i2s_tdm->mclk_rx); in i2s_tdm_prepare_enable_mclk() [all …]
|
/linux-6.12.1/sound/soc/bcm/ |
D | bcm63xx-i2s-whistler.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 2 // linux/sound/bcm/bcm63xx-i2s-whistler.c 3 // BCM63xx whistler i2s driver 5 // Author: Kevin-Ke Li <kevin-ke.li@broadcom.com> 8 #include <linux/dma-mapping.h> 14 #include "bcm63xx-i2s.h" 16 #define DRV_NAME "brcm-i2s" 81 ret = clk_set_rate(i2s_priv->i2s_clk, params_rate(params)); in bcm63xx_i2s_hw_params() 83 dev_err(i2s_priv->dev, in bcm63xx_i2s_hw_params() 94 struct regmap *regmap_i2s = i2s_priv->regmap_i2s; in bcm63xx_i2s_startup() [all …]
|
/linux-6.12.1/sound/soc/cirrus/ |
D | ep93xx-i2s.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * linux/sound/soc/ep93xx-i2s.c 4 * EP93xx I2S driver 29 #include "ep93xx-pcm.h" 59 * 0 - Generate interrupt when FIFO is half empty 60 * 1 - Generate interrupt when FIFO is empty 77 void __iomem *regs; member 85 __raw_writel(val, info->regs + reg); in ep93xx_i2s_write_reg() 91 return __raw_readl(info->regs + reg); in ep93xx_i2s_read_reg() 101 clk_prepare_enable(info->mclk); in ep93xx_i2s_enable() [all …]
|
/linux-6.12.1/sound/soc/sunxi/ |
D | sun4i-i2s.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 7 * Maxime Ripard <maxime.ripard@free-electrons.com> 22 #include <sound/soc-dai.h> 85 #define SUN4I_I2S_CHAN_SEL(num_chan) (((num_chan) - 1) << 0) 93 /* Defines required for sun8i-h3 support */ 106 #define SUN8I_I2S_FMT0_LRCK_PERIOD(period) ((period - 1) << 8) 119 #define SUN8I_I2S_CHAN_CFG_RX_SLOT_NUM(chan) ((chan - 1) << 4) 121 #define SUN8I_I2S_CHAN_CFG_TX_SLOT_NUM(chan) (chan - 1) 128 #define SUN8I_I2S_TX_CHAN_EN(num_chan) (((1 << num_chan) - 1) << 4) 133 /* Defines required for sun50i-h6 support */ [all …]
|
/linux-6.12.1/arch/arm/mach-s3c/ |
D | pl080.c | 1 // SPDX-License-Identifier: GPL-2.0 3 // Samsung's S3C64XX generic DMA support using amba-pl08x driver. 17 #include "regs-sys-s3c64xx.h" 21 return cd->min_signal; in pl08x_get_xfer_signal() 117 { "s3c6400-uart.0", "tx", &s3c64xx_dma0_info[0] }, 118 { "s3c6400-uart.0", "rx", &s3c64xx_dma0_info[1] }, 119 { "s3c6400-uart.1", "tx", &s3c64xx_dma0_info[2] }, 120 { "s3c6400-uart.1", "rx", &s3c64xx_dma0_info[3] }, 121 { "s3c6400-uart.2", "tx", &s3c64xx_dma0_info[4] }, 122 { "s3c6400-uart.2", "rx", &s3c64xx_dma0_info[5] }, [all …]
|
/linux-6.12.1/arch/arm/boot/dts/marvell/ |
D | armada-388-db.dts | 1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT) 4 * (DB-88F6820) 8 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> 11 /dts-v1/; 12 #include "armada-388.dtsi" 16 compatible = "marvell,a385-db", "marvell,armada388", 20 stdout-path = "serial0:115200n8"; 35 internal-regs { 38 clock-frequency = <100000>; 39 audio_codec: audio-codec@4a { [all …]
|
D | armada-370-db.dts | 1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT) 4 * (DB-88F6710-BP-DDR3) 9 * Gregory CLEMENT <gregory.clement@free-electrons.com> 10 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> 15 * DT-capable, U-Boot bootloaders provided by Marvell. Some earlier 22 /dts-v1/; 23 #include "armada-370.dtsi" 27 compatible = "marvell,a370-db", "marvell,armada370", "marvell,armada-370-xp"; 30 stdout-path = "serial0:115200n8"; 43 internal-regs { [all …]
|
/linux-6.12.1/sound/soc/kirkwood/ |
D | kirkwood-i2s.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * kirkwood-i2s.c 6 * (c) 2010 Arnaud Patard <arnaud.patard@rtp-net.org> 20 #include <linux/platform_data/asoc-kirkwood.h> 34 /* These registers are relative to the second register region - 56 struct device_node *np = pdev->dev.of_node; in armada_38x_i2s_init_quirk() 60 priv->pll_config = devm_platform_ioremap_resource_byname(pdev, "pll_regs"); in armada_38x_i2s_init_quirk() 61 if (IS_ERR(priv->pll_config)) in armada_38x_i2s_init_quirk() 62 return -ENOMEM; in armada_38x_i2s_init_quirk() 64 priv->soc_control = devm_platform_ioremap_resource_byname(pdev, "soc_ctrl"); in armada_38x_i2s_init_quirk() [all …]
|