/linux/sound/soc/img/ |
H A D | img-i2s-out.c | 69 struct img_i2s_out *i2s = dev_get_drvdata(dev); in img_i2s_out_runtime_suspend() local 71 clk_disable_unprepare(i2s->clk_ref); in img_i2s_out_runtime_suspend() 72 clk_disable_unprepare(i2s->clk_sys); in img_i2s_out_runtime_suspend() 79 struct img_i2s_out *i2s = dev_get_drvdata(dev); in img_i2s_out_runtime_resume() local 82 ret = clk_prepare_enable(i2s->clk_sys); in img_i2s_out_runtime_resume() 88 ret = clk_prepare_enable(i2s->clk_ref); in img_i2s_out_runtime_resume() 91 clk_disable_unprepare(i2s->clk_sys); in img_i2s_out_runtime_resume() 98 static inline void img_i2s_out_writel(struct img_i2s_out *i2s, u32 val, in img_i2s_out_writel() argument 101 writel(val, i2s->base + reg); in img_i2s_out_writel() 104 static inline u32 img_i2s_out_readl(struct img_i2s_out *i2s, u32 reg) in img_i2s_out_readl() argument [all …]
|
H A D | img-i2s-in.c | 67 struct img_i2s_in *i2s = dev_get_drvdata(dev); in img_i2s_in_runtime_suspend() local 69 clk_disable_unprepare(i2s->clk_sys); in img_i2s_in_runtime_suspend() 76 struct img_i2s_in *i2s = dev_get_drvdata(dev); in img_i2s_in_runtime_resume() local 79 ret = clk_prepare_enable(i2s->clk_sys); in img_i2s_in_runtime_resume() 88 static inline void img_i2s_in_writel(struct img_i2s_in *i2s, u32 val, u32 reg) in img_i2s_in_writel() argument 90 writel(val, i2s->base + reg); in img_i2s_in_writel() 93 static inline u32 img_i2s_in_readl(struct img_i2s_in *i2s, u32 reg) in img_i2s_in_readl() argument 95 return readl(i2s->base + reg); in img_i2s_in_readl() 98 static inline void img_i2s_in_ch_writel(struct img_i2s_in *i2s, u32 chan, in img_i2s_in_ch_writel() argument 101 writel(val, i2s->channel_base + (chan * IMG_I2S_IN_CH_STRIDE) + reg); in img_i2s_in_ch_writel() [all …]
|
/linux/sound/soc/hisilicon/ |
H A D | hi6210-i2s.c | 80 static inline void hi6210_write_reg(struct hi6210_i2s *i2s, int reg, u32 val) in hi6210_write_reg() argument 82 writel(val, i2s->base + reg); in hi6210_write_reg() 85 static inline u32 hi6210_read_reg(struct hi6210_i2s *i2s, int reg) in hi6210_read_reg() argument 87 return readl(i2s->base + reg); in hi6210_read_reg() 93 struct hi6210_i2s *i2s = dev_get_drvdata(cpu_dai->dev); in hi6210_i2s_startup() local 98 regmap_read(i2s->sysctrl, SC_PERIPH_RSTSTAT2, &val); in hi6210_i2s_startup() 100 regmap_write(i2s->sysctrl, SC_PERIPH_RSTDIS2, BIT(4)); in hi6210_i2s_startup() 102 for (n = 0; n < i2s->clocks; n++) { in hi6210_i2s_startup() 103 ret = clk_prepare_enable(i2s->clk[n]); in hi6210_i2s_startup() 108 ret = clk_set_rate(i2s->clk[CLK_I2S_BASE], 49152000); in hi6210_i2s_startup() [all …]
|
/linux/sound/soc/rockchip/ |
H A D | rockchip_i2s.c | 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 80 if (!IS_ERR(i2s->pinctrl) && !IS_ERR_OR_NULL(i2s->bclk_off)) in i2s_pinctrl_select_bclk_off() 81 ret = pinctrl_select_state(i2s->pinctrl, i2s->bclk_off); in i2s_pinctrl_select_bclk_off() 84 dev_err(i2s->dev, "bclk disable failed %d\n", ret); in i2s_pinctrl_select_bclk_off() 91 struct rk_i2s_dev *i2s = dev_get_drvdata(dev); in i2s_runtime_suspend() local 93 regcache_cache_only(i2s->regmap, true); in i2s_runtime_suspend() [all …]
|
/linux/sound/soc/stm/ |
H A D | stm32_i2s.c | 261 int (*set_i2s_clk_rate)(struct stm32_i2s_data *i2s, unsigned int rate); 262 void (*put_i2s_clk_rate)(struct stm32_i2s_data *i2s); 272 int (*get_i2s_clk_parent)(struct stm32_i2s_data *i2s); 283 static int stm32_i2s_get_parent_clk(struct stm32_i2s_data *i2s); 285 static int stm32_i2s_calc_clk_div(struct stm32_i2s_data *i2s, in stm32_i2s_calc_clk_div() argument 303 dev_dbg(&i2s->pdev->dev, "Divider: 2*%d(div)+%d(odd) = %d\n", in stm32_i2s_calc_clk_div() 309 dev_err(&i2s->pdev->dev, "Wrong divider setting\n"); in stm32_i2s_calc_clk_div() 314 dev_dbg(&i2s->pdev->dev, in stm32_i2s_calc_clk_div() 318 i2s->div = div; in stm32_i2s_calc_clk_div() 319 i2s->odd = odd; in stm32_i2s_calc_clk_div() [all …]
|
/linux/sound/soc/tegra/ |
H A D | tegra30_i2s.c | 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() 60 regcache_cache_only(i2s->regmap, false); in tegra30_i2s_runtime_resume() 61 regcache_mark_dirty(i2s->regmap); in tegra30_i2s_runtime_resume() 63 ret = regcache_sync(i2s->regmap); in tegra30_i2s_runtime_resume() 70 clk_disable_unprepare(i2s->clk_i2s); in tegra30_i2s_runtime_resume() 78 struct tegra30_i2s *i2s = snd_soc_dai_get_drvdata(dai); in tegra30_i2s_set_fmt() local [all …]
|
H A D | tegra210_i2s.c | 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() 62 err = clk_set_rate(i2s->clk_i2s, clock_rate); in tegra210_i2s_set_clock_rate() 69 if (!IS_ERR(i2s->clk_sync_input)) { in tegra210_i2s_set_clock_rate() 75 err = clk_set_rate(i2s->clk_sync_input, clock_rate); in tegra210_i2s_set_clock_rate() 91 struct tegra210_i2s *i2s = dev_get_drvdata(dev); in tegra210_i2s_sw_reset() local 109 regmap_read(i2s->regmap, cif_reg, &cif_ctrl); in tegra210_i2s_sw_reset() 110 regmap_read(i2s->regmap, stream_reg, &stream_ctrl); in tegra210_i2s_sw_reset() 111 regmap_read(i2s->regmap, TEGRA210_I2S_CTRL, &i2s_ctrl); in tegra210_i2s_sw_reset() 114 regmap_update_bits(i2s->regmap, reset_reg, reset_mask, reset_en); in tegra210_i2s_sw_reset() [all …]
|
H A D | tegra20_i2s.c | 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() 57 ret = clk_prepare_enable(i2s->clk_i2s); in tegra20_i2s_runtime_resume() 65 ret = reset_control_deassert(i2s->reset); in tegra20_i2s_runtime_resume() 69 regcache_cache_only(i2s->regmap, false); in tegra20_i2s_runtime_resume() 70 regcache_mark_dirty(i2s->regmap); in tegra20_i2s_runtime_resume() 72 ret = regcache_sync(i2s->regmap); in tegra20_i2s_runtime_resume() [all …]
|
H A D | Makefile | 7 snd-soc-tegra20-i2s-y := tegra20_i2s.o 10 snd-soc-tegra30-i2s-y := tegra30_i2s.o 13 snd-soc-tegra210-i2s-y := tegra210_i2s.o 27 obj-$(CONFIG_SND_SOC_TEGRA20_I2S) += snd-soc-tegra20-i2s.o 30 obj-$(CONFIG_SND_SOC_TEGRA30_I2S) += snd-soc-tegra30-i2s.o 33 obj-$(CONFIG_SND_SOC_TEGRA210_I2S) += snd-soc-tegra210-i2s.o
|
/linux/sound/soc/adi/ |
H A D | axi-i2s.c | 60 struct axi_i2s *i2s = snd_soc_dai_get_drvdata(dai); in axi_i2s_trigger() local 83 regmap_update_bits(i2s->regmap, AXI_I2S_REG_CTRL, mask, val); in axi_i2s_trigger() 91 struct axi_i2s *i2s = snd_soc_dai_get_drvdata(dai); in axi_i2s_hw_params() local 98 bclk_div = DIV_ROUND_UP(clk_get_rate(i2s->clk_ref), bclk_rate) / 2 - 1; in axi_i2s_hw_params() 100 regmap_write(i2s->regmap, AXI_I2S_REG_CLK_CTRL, (word_size << 16) | in axi_i2s_hw_params() 109 struct axi_i2s *i2s = snd_soc_dai_get_drvdata(dai); in axi_i2s_startup() local 118 regmap_write(i2s->regmap, AXI_I2S_REG_RESET, mask); in axi_i2s_startup() 122 &i2s->rate_constraints); in axi_i2s_startup() 126 return clk_prepare_enable(i2s->clk_ref); in axi_i2s_startup() 132 struct axi_i2s *i2s = snd_soc_dai_get_drvdata(dai); in axi_i2s_shutdown() local [all …]
|
/linux/sound/soc/jz4740/ |
H A D | jz4740-i2s.c | 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() 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() 124 ret = clk_prepare_enable(i2s->clk_i2s); in jz4740_i2s_startup() 128 regmap_set_bits(i2s->regmap, JZ_REG_AIC_CONF, JZ_AIC_CONF_ENABLE); in jz4740_i2s_startup() 135 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai); in jz4740_i2s_shutdown() local 140 regmap_clear_bits(i2s->regmap, JZ_REG_AIC_CONF, JZ_AIC_CONF_ENABLE); in jz4740_i2s_shutdown() [all …]
|
/linux/sound/soc/xtensa/ |
H A D | xtfpga-i2s.c | 76 unsigned (*tx_fn)(struct xtfpga_i2s *i2s, 131 struct xtfpga_i2s *i2s, struct snd_pcm_runtime *runtime, \ 137 for (; i2s->tx_fifo_level < i2s->tx_fifo_high; \ 138 i2s->tx_fifo_level += 2) { \ 140 i2s->regs + XTFPGA_I2S_CHAN0_DATA); \ 142 i2s->regs + XTFPGA_I2S_CHAN0_DATA); \ 156 static bool xtfpga_pcm_push_tx(struct xtfpga_i2s *i2s) in xtfpga_pcm_push_tx() argument 162 tx_substream = rcu_dereference(i2s->tx_substream); in xtfpga_pcm_push_tx() 165 unsigned tx_ptr = READ_ONCE(i2s->tx_ptr); in xtfpga_pcm_push_tx() 166 unsigned new_tx_ptr = i2s->tx_fn(i2s, tx_substream->runtime, in xtfpga_pcm_push_tx() [all …]
|
/linux/sound/soc/sunxi/ |
H A D | sun4i-i2s.c | 196 unsigned long (*get_bclk_parent_rate)(const struct sun4i_i2s *i2s); 205 int (*set_chan_cfg)(const struct sun4i_i2s *i2s, 208 int (*set_fmt)(const struct sun4i_i2s *i2s, unsigned int fmt); 278 static unsigned long sun4i_i2s_get_bclk_parent_rate(const struct sun4i_i2s *i2s) in sun4i_i2s_get_bclk_parent_rate() argument 280 return i2s->mclk_freq; in sun4i_i2s_get_bclk_parent_rate() 283 static unsigned long sun8i_i2s_get_bclk_parent_rate(const struct sun4i_i2s *i2s) in sun8i_i2s_get_bclk_parent_rate() argument 285 return clk_get_rate(i2s->mod_clk); in sun8i_i2s_get_bclk_parent_rate() 288 static int sun4i_i2s_get_bclk_div(struct sun4i_i2s *i2s, in sun4i_i2s_get_bclk_div() argument 294 const struct sun4i_i2s_clk_div *dividers = i2s->variant->bclk_dividers; in sun4i_i2s_get_bclk_div() 298 for (i = 0; i < i2s->variant->num_bclk_dividers; i++) { in sun4i_i2s_get_bclk_div() [all …]
|
/linux/sound/soc/google/ |
H A D | chv3-i2s.c | 101 static inline void chv3_i2s_wr(struct chv3_i2s_dev *i2s, int offset, u32 val) in chv3_i2s_wr() argument 103 writel(val, i2s->iobase + offset); in chv3_i2s_wr() 106 static inline u32 chv3_i2s_rd(struct chv3_i2s_dev *i2s, int offset) in chv3_i2s_rd() argument 108 return readl(i2s->iobase + offset); in chv3_i2s_rd() 113 struct chv3_i2s_dev *i2s = data; in chv3_i2s_isr() local 116 reg = readl(i2s->iobase_irq + I2S_IRQ_CLR); in chv3_i2s_isr() 121 snd_pcm_period_elapsed(i2s->rx_substream); in chv3_i2s_isr() 124 snd_pcm_period_elapsed(i2s->tx_substream); in chv3_i2s_isr() 126 writel(reg, i2s->iobase_irq + I2S_IRQ_CLR); in chv3_i2s_isr() 135 struct chv3_i2s_dev *i2s = snd_soc_dai_get_drvdata(snd_soc_rtd_to_cpu(rtd, 0)); in chv3_dma_open() local [all …]
|
/linux/sound/soc/loongson/ |
H A D | loongson_i2s.c | 33 struct loongson_i2s *i2s = snd_soc_dai_get_drvdata(dai); in loongson_i2s_trigger() local 43 regmap_update_bits(i2s->regmap, LS_I2S_CTRL, mask, mask); in loongson_i2s_trigger() 50 regmap_update_bits(i2s->regmap, LS_I2S_CTRL, mask, 0); in loongson_i2s_trigger() 63 struct loongson_i2s *i2s = snd_soc_dai_get_drvdata(dai); in loongson_i2s_hw_params() local 64 u32 clk_rate = i2s->clk_rate; in loongson_i2s_hw_params() 65 u32 sysclk = i2s->sysclk; in loongson_i2s_hw_params() 73 switch (i2s->rev_id) { in loongson_i2s_hw_params() 84 regmap_write(i2s->regmap, LS_I2S_CFG, val); in loongson_i2s_hw_params() 94 regmap_read(i2s->regmap, LS_I2S_CFG, &val); in loongson_i2s_hw_params() 101 regmap_write(i2s->regmap, LS_I2S_CFG, val); in loongson_i2s_hw_params() [all …]
|
H A D | loongson_i2s_pci.c | 79 struct loongson_i2s *i2s; in loongson_i2s_pci_probe() local 87 i2s = devm_kzalloc(dev, sizeof(*i2s), GFP_KERNEL); in loongson_i2s_pci_probe() 88 if (!i2s) in loongson_i2s_pci_probe() 91 i2s->rev_id = pdev->revision; in loongson_i2s_pci_probe() 92 i2s->dev = dev; in loongson_i2s_pci_probe() 93 pci_set_drvdata(pdev, i2s); in loongson_i2s_pci_probe() 101 i2s->reg_base = pcim_iomap_table(pdev)[0]; in loongson_i2s_pci_probe() 102 i2s->regmap = devm_regmap_init_mmio(dev, i2s->reg_base, in loongson_i2s_pci_probe() 104 if (IS_ERR(i2s->regmap)) in loongson_i2s_pci_probe() 105 return dev_err_probe(dev, PTR_ERR(i2s->regmap), "regmap_init_mmio failed\n"); in loongson_i2s_pci_probe() [all …]
|
/linux/sound/soc/samsung/ |
H A D | i2s.c | 137 static inline bool is_secondary(struct i2s_dai *i2s) in is_secondary() argument 139 return i2s->drv->id == SAMSUNG_I2S_ID_SECONDARY; in is_secondary() 143 static inline bool tx_active(struct i2s_dai *i2s) in tx_active() argument 147 if (!i2s) in tx_active() 150 active = readl(i2s->priv->addr + I2SCON); in tx_active() 152 if (is_secondary(i2s)) in tx_active() 161 static inline struct i2s_dai *get_other_dai(struct i2s_dai *i2s) in get_other_dai() argument 163 return i2s->pri_dai ? : i2s->sec_dai; in get_other_dai() 167 static inline bool other_tx_active(struct i2s_dai *i2s) in other_tx_active() argument 169 struct i2s_dai *other = get_other_dai(i2s); in other_tx_active() [all …]
|
/linux/Documentation/devicetree/bindings/sound/ |
H A D | hisilicon,hi6210-i2s.txt | 1 * Hisilicon 6210 i2s controller 6 - "hisilicon,hi6210-i2s" 7 - reg: physical base address of the i2s controller unit and length of 9 - interrupts: should contain the i2s interrupt. 14 - "i2s-base" 25 Example for the hi6210 i2s controller: 27 i2s0: i2s@f7118000{ 28 compatible = "hisilicon,hi6210-i2s"; 29 reg = <0x0 0xf7118000 0x0 0x8000>; /* i2s unit */ 33 clock-names = "dacodec", "i2s-base"; [all …]
|
H A D | rockchip-max98090.txt | 6 - rockchip,i2s-controller: The phandle of the Rockchip I2S controller that's 21 rockchip,i2s-controller = <&i2s>; 30 rockchip,i2s-controller = <&i2s>; 38 rockchip,i2s-controller = <&i2s>;
|
H A D | img,i2s-in.txt | 5 - compatible : Compatible list, must contain "img,i2s-in" 21 - img,i2s-channels : Number of I2S channels instantiated in the I2S in block 37 i2s_in: i2s-in@18100800 { 38 compatible = "img,i2s-in"; 45 img,i2s-channels = <6>;
|
H A D | mikroe,mikroe-proto.txt | 5 - dai-format: Must be "i2s". 6 - i2s-controller: The phandle of the I2S controller. 19 i2s-controller = <&i2s0>; 21 dai-format = "i2s";
|
/linux/sound/soc/bcm/ |
H A D | Makefile | 3 snd-soc-bcm2835-i2s-y := bcm2835-i2s.o 5 obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o 13 snd-soc-63xx-y := bcm63xx-i2s-whistler.o bcm63xx-pcm-whistler.o
|
/linux/sound/soc/atmel/ |
H A D | Makefile | 6 snd-soc-atmel-i2s-y := atmel-i2s.o 7 snd-soc-mchp-i2s-mcc-y := mchp-i2s-mcc.o 21 obj-$(CONFIG_SND_ATMEL_SOC_I2S) += snd-soc-atmel-i2s.o 22 obj-$(CONFIG_SND_MCHP_SOC_I2S_MCC) += snd-soc-mchp-i2s-mcc.o
|
/linux/drivers/macintosh/ |
H A D | rack-meter.c | 60 struct device_node *i2s; member 106 pmac_call_feature(PMAC_FTR_SOUND_CHIP_ENABLE, rm->i2s, 0, 1); in rackmeter_setup_i2s() 369 struct device_node *i2s = NULL, *np = NULL; in rackmeter_probe() local 377 for_each_child_of_node(mdev->ofdev.dev.of_node, i2s) in rackmeter_probe() 378 if (of_node_name_eq(i2s, "i2s-a")) in rackmeter_probe() 381 if (i2s == NULL) { in rackmeter_probe() 386 for_each_child_of_node(i2s, np) { in rackmeter_probe() 406 rm->i2s = i2s; in rackmeter_probe() 428 rm->irq = irq_of_parse_and_map(i2s, 1); in rackmeter_probe() 430 of_address_to_resource(i2s, 0, &ri2s) || in rackmeter_probe() [all …]
|
/linux/arch/arm64/boot/dts/rockchip/ |
H A D | rk3308.dtsi | 615 i2s_8ch_2: i2s@ff320000 { 616 compatible = "rockchip,rk3308-i2s-tdm"; 636 i2s_8ch_3: i2s@ff330000 { 637 compatible = "rockchip,rk3308-i2s-tdm"; 652 i2s_2ch_0: i2s@ff350000 { 653 compatible = "rockchip,rk3308-i2s", "rockchip,rk3066-i2s"; 670 i2s_2ch_1: i2s@ff360000 { 671 compatible = "rockchip,rk3308-i2s", "rockchip,rk3066-i2s"; 1254 i2s_2ch_0_mclk: i2s-2ch-0-mclk { 1259 i2s_2ch_0_sclk: i2s-2ch-0-sclk { [all …]
|