Lines Matching defs:i2s

70 	.name = "chv3-i2s",
101 static inline void chv3_i2s_wr(struct chv3_i2s_dev *i2s, int offset, u32 val)
103 writel(val, i2s->iobase + offset);
106 static inline u32 chv3_i2s_rd(struct chv3_i2s_dev *i2s, int offset)
108 return readl(i2s->iobase + offset);
113 struct chv3_i2s_dev *i2s = data;
116 reg = readl(i2s->iobase_irq + I2S_IRQ_CLR);
121 snd_pcm_period_elapsed(i2s->rx_substream);
124 snd_pcm_period_elapsed(i2s->tx_substream);
126 writel(reg, i2s->iobase_irq + I2S_IRQ_CLR);
135 struct chv3_i2s_dev *i2s = snd_soc_dai_get_drvdata(asoc_rtd_to_cpu(rtd, 0));
146 i2s->rx_substream = substream;
148 i2s->tx_substream = substream;
156 struct chv3_i2s_dev *i2s = snd_soc_dai_get_drvdata(asoc_rtd_to_cpu(rtd, 0));
159 chv3_i2s_wr(i2s, I2S_RX_ENABLE, 0);
161 chv3_i2s_wr(i2s, I2S_TX_ENABLE, 0);
169 struct chv3_i2s_dev *i2s = snd_soc_dai_get_drvdata(asoc_rtd_to_cpu(rtd, 0));
175 res = snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, i2s->dev,
183 res = snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, i2s->dev,
204 struct chv3_i2s_dev *i2s = snd_soc_dai_get_drvdata(asoc_rtd_to_cpu(rtd, 0));
212 chv3_i2s_wr(i2s, I2S_SOFT_RESET, I2S_SOFT_RESET_RX_BIT);
213 chv3_i2s_wr(i2s, I2S_RX_BASE_ADDR, substream->dma_buffer.addr);
214 chv3_i2s_wr(i2s, I2S_RX_BUFFER_SIZE, buffer_bytes);
215 chv3_i2s_wr(i2s, I2S_RX_IRQ, (period_size << 8) | 1);
216 chv3_i2s_wr(i2s, I2S_RX_ENABLE, 1);
218 chv3_i2s_wr(i2s, I2S_SOFT_RESET, I2S_SOFT_RESET_TX_BIT);
219 chv3_i2s_wr(i2s, I2S_TX_BASE_ADDR, substream->dma_buffer.addr);
220 chv3_i2s_wr(i2s, I2S_TX_BUFFER_SIZE, buffer_bytes);
221 chv3_i2s_wr(i2s, I2S_TX_IRQ, ((period_bytes / i2s->tx_bytes_to_fetch) << 8) | 1);
222 chv3_i2s_wr(i2s, I2S_TX_ENABLE, 1);
224 writel(I2S_IRQ_RX_BIT | I2S_IRQ_TX_BIT, i2s->iobase_irq + I2S_IRQ_MASK);
233 struct chv3_i2s_dev *i2s = snd_soc_dai_get_drvdata(asoc_rtd_to_cpu(rtd, 0));
241 idx_bytes = chv3_i2s_rd(i2s, I2S_RX_PRODUCER_IDX);
243 idx_bytes = chv3_i2s_rd(i2s, I2S_TX_CONSUMER_IDX);
256 struct chv3_i2s_dev *i2s = snd_soc_dai_get_drvdata(asoc_rtd_to_cpu(rtd, 0));
263 chv3_i2s_wr(i2s, I2S_RX_CONSUMER_IDX, idx);
265 chv3_i2s_wr(i2s, I2S_TX_PRODUCER_IDX, idx);
271 .name = "chv3-i2s-comp",
283 struct chv3_i2s_dev *i2s;
287 i2s = devm_kzalloc(&pdev->dev, sizeof(*i2s), GFP_KERNEL);
288 if (!i2s)
291 i2s->iobase = devm_platform_ioremap_resource(pdev, 0);
292 if (IS_ERR(i2s->iobase))
293 return PTR_ERR(i2s->iobase);
295 i2s->iobase_irq = devm_platform_ioremap_resource(pdev, 1);
296 if (IS_ERR(i2s->iobase_irq))
297 return PTR_ERR(i2s->iobase_irq);
299 i2s->tx_bytes_to_fetch = (chv3_i2s_rd(i2s, I2S_TX_IRQ_CONST) >> 8) & 0xffff;
301 i2s->dev = &pdev->dev;
302 dev_set_drvdata(&pdev->dev, i2s);
307 res = devm_request_irq(i2s->dev, irq, chv3_i2s_isr, 0, "chv3-i2s", i2s);
322 { .compatible = "google,chv3-i2s" },
329 .name = "chv3-i2s",