Lines Matching refs:adata
34 static inline void acp_set_i2s_clk(struct acp_dev_data *adata, int dai_id) in acp_set_i2s_clk() argument
40 dev = adata->dev; in acp_set_i2s_clk()
58 if (adata->tdm_mode) in acp_set_i2s_clk()
65 val |= FIELD_PREP(ACP63_LRCLK_DIV_FIELD, adata->lrclk_div); in acp_set_i2s_clk()
66 val |= FIELD_PREP(ACP63_BCLK_DIV_FIELD, adata->bclk_div); in acp_set_i2s_clk()
69 val |= FIELD_PREP(LRCLK_DIV_FIELD, adata->lrclk_div); in acp_set_i2s_clk()
70 val |= FIELD_PREP(BCLK_DIV_FIELD, adata->bclk_div); in acp_set_i2s_clk()
72 writel(val, adata->acp_base + i2s_clk_reg); in acp_set_i2s_clk()
78 struct acp_dev_data *adata = snd_soc_dai_get_drvdata(cpu_dai); in acp_i2s_set_fmt() local
84 adata->tdm_mode = TDM_DISABLE; in acp_i2s_set_fmt()
87 adata->tdm_mode = TDM_ENABLE; in acp_i2s_set_fmt()
99 struct acp_dev_data *adata = snd_soc_dai_get_drvdata(dai); in acp_i2s_set_tdm_slot() local
160 spin_lock_irq(&adata->acp_lock); in acp_i2s_set_tdm_slot()
161 list_for_each_entry(stream, &adata->stream_list, list) { in acp_i2s_set_tdm_slot()
166 adata->tdm_tx_fmt[stream->dai_id - 1] = in acp_i2s_set_tdm_slot()
169 adata->tdm_rx_fmt[stream->dai_id - 1] = in acp_i2s_set_tdm_slot()
176 adata->tdm_tx_fmt[stream->dai_id - 1] = in acp_i2s_set_tdm_slot()
179 adata->tdm_rx_fmt[stream->dai_id - 1] = in acp_i2s_set_tdm_slot()
184 spin_unlock_irq(&adata->acp_lock); in acp_i2s_set_tdm_slot()
188 spin_unlock_irq(&adata->acp_lock); in acp_i2s_set_tdm_slot()
196 struct acp_dev_data *adata; in acp_i2s_hwparams() local
203 adata = snd_soc_dai_get_drvdata(dai); in acp_i2s_hwparams()
204 rsrc = adata->rsrc; in acp_i2s_hwparams()
243 adata->xfer_tx_resolution[dai->driver->id - 1] = xfer_resolution; in acp_i2s_hwparams()
262 adata->xfer_rx_resolution[dai->driver->id - 1] = xfer_resolution; in acp_i2s_hwparams()
265 val = readl(adata->acp_base + reg_val); in acp_i2s_hwparams()
268 writel(val, adata->acp_base + reg_val); in acp_i2s_hwparams()
270 if (adata->tdm_mode) { in acp_i2s_hwparams()
271 val = readl(adata->acp_base + reg_val); in acp_i2s_hwparams()
272 writel(val | BIT(1), adata->acp_base + reg_val); in acp_i2s_hwparams()
274 tdm_fmt = adata->tdm_tx_fmt[dai->driver->id - 1]; in acp_i2s_hwparams()
276 tdm_fmt = adata->tdm_rx_fmt[dai->driver->id - 1]; in acp_i2s_hwparams()
277 writel(tdm_fmt, adata->acp_base + fmt_reg); in acp_i2s_hwparams()
380 adata->lrclk_div = lrclk_div_val; in acp_i2s_hwparams()
381 adata->bclk_div = bclk_div_val; in acp_i2s_hwparams()
390 struct acp_dev_data *adata = dev_get_drvdata(dev); in acp_i2s_trigger() local
391 struct acp_resource *rsrc = adata->rsrc; in acp_i2s_trigger()
401 stream->bytescount = acp_get_byte_count(adata, stream->dai_id, substream->stream); in acp_i2s_trigger()
405 water_val = ACP_BT_TX_INTR_WATERMARK_SIZE(adata); in acp_i2s_trigger()
408 buf_reg = ACP_BT_TX_RINGBUFSIZE(adata); in acp_i2s_trigger()
411 water_val = ACP_I2S_TX_INTR_WATERMARK_SIZE(adata); in acp_i2s_trigger()
414 buf_reg = ACP_I2S_TX_RINGBUFSIZE(adata); in acp_i2s_trigger()
429 water_val = ACP_BT_RX_INTR_WATERMARK_SIZE(adata); in acp_i2s_trigger()
432 buf_reg = ACP_BT_RX_RINGBUFSIZE(adata); in acp_i2s_trigger()
435 water_val = ACP_I2S_RX_INTR_WATERMARK_SIZE(adata); in acp_i2s_trigger()
438 buf_reg = ACP_I2S_RX_RINGBUFSIZE(adata); in acp_i2s_trigger()
452 writel(period_bytes, adata->acp_base + water_val); in acp_i2s_trigger()
453 writel(buf_size, adata->acp_base + buf_reg); in acp_i2s_trigger()
455 acp_set_i2s_clk(adata, dai->driver->id); in acp_i2s_trigger()
456 val = readl(adata->acp_base + reg_val); in acp_i2s_trigger()
458 writel(val, adata->acp_base + reg_val); in acp_i2s_trigger()
459 writel(1, adata->acp_base + ier_val); in acp_i2s_trigger()
496 val = readl(adata->acp_base + reg_val); in acp_i2s_trigger()
498 writel(val, adata->acp_base + reg_val); in acp_i2s_trigger()
500 if (!(readl(adata->acp_base + ACP_BTTDM_ITER) & BIT(0)) && in acp_i2s_trigger()
501 !(readl(adata->acp_base + ACP_BTTDM_IRER) & BIT(0))) in acp_i2s_trigger()
502 writel(0, adata->acp_base + ACP_BTTDM_IER); in acp_i2s_trigger()
503 if (!(readl(adata->acp_base + ACP_I2STDM_ITER) & BIT(0)) && in acp_i2s_trigger()
504 !(readl(adata->acp_base + ACP_I2STDM_IRER) & BIT(0))) in acp_i2s_trigger()
505 writel(0, adata->acp_base + ACP_I2STDM_IER); in acp_i2s_trigger()
506 if (!(readl(adata->acp_base + ACP_HSTDM_ITER) & BIT(0)) && in acp_i2s_trigger()
507 !(readl(adata->acp_base + ACP_HSTDM_IRER) & BIT(0))) in acp_i2s_trigger()
508 writel(0, adata->acp_base + ACP_HSTDM_IER); in acp_i2s_trigger()
520 struct acp_dev_data *adata = dev_get_drvdata(dev); in acp_i2s_prepare() local
522 struct acp_resource *rsrc = adata->rsrc; in acp_i2s_prepare()
532 reg_dma_size = ACP_I2S_TX_DMA_SIZE(adata); in acp_i2s_prepare()
535 reg_fifo_addr = ACP_I2S_TX_FIFOADDR(adata); in acp_i2s_prepare()
536 reg_fifo_size = ACP_I2S_TX_FIFOSIZE(adata); in acp_i2s_prepare()
542 writel(phy_addr, adata->acp_base + ACP_I2S_TX_RINGBUFADDR(adata)); in acp_i2s_prepare()
544 reg_dma_size = ACP_I2S_RX_DMA_SIZE(adata); in acp_i2s_prepare()
547 reg_fifo_addr = ACP_I2S_RX_FIFOADDR(adata); in acp_i2s_prepare()
548 reg_fifo_size = ACP_I2S_RX_FIFOSIZE(adata); in acp_i2s_prepare()
554 writel(phy_addr, adata->acp_base + ACP_I2S_RX_RINGBUFADDR(adata)); in acp_i2s_prepare()
559 reg_dma_size = ACP_BT_TX_DMA_SIZE(adata); in acp_i2s_prepare()
562 reg_fifo_addr = ACP_BT_TX_FIFOADDR(adata); in acp_i2s_prepare()
563 reg_fifo_size = ACP_BT_TX_FIFOSIZE(adata); in acp_i2s_prepare()
569 writel(phy_addr, adata->acp_base + ACP_BT_TX_RINGBUFADDR(adata)); in acp_i2s_prepare()
571 reg_dma_size = ACP_BT_RX_DMA_SIZE(adata); in acp_i2s_prepare()
574 reg_fifo_addr = ACP_BT_RX_FIFOADDR(adata); in acp_i2s_prepare()
575 reg_fifo_size = ACP_BT_RX_FIFOSIZE(adata); in acp_i2s_prepare()
581 writel(phy_addr, adata->acp_base + ACP_BT_RX_RINGBUFADDR(adata)); in acp_i2s_prepare()
596 writel(phy_addr, adata->acp_base + ACP_HS_TX_RINGBUFADDR); in acp_i2s_prepare()
608 writel(phy_addr, adata->acp_base + ACP_HS_RX_RINGBUFADDR); in acp_i2s_prepare()
616 writel(DMA_SIZE, adata->acp_base + reg_dma_size); in acp_i2s_prepare()
617 writel(acp_fifo_addr, adata->acp_base + reg_fifo_addr); in acp_i2s_prepare()
618 writel(FIFO_SIZE, adata->acp_base + reg_fifo_size); in acp_i2s_prepare()
620 ext_int_ctrl = readl(ACP_EXTERNAL_INTR_CNTL(adata, rsrc->irqp_used)); in acp_i2s_prepare()
628 writel(ext_int_ctrl, ACP_EXTERNAL_INTR_CNTL(adata, rsrc->irqp_used)); in acp_i2s_prepare()
637 struct acp_dev_data *adata = dev_get_drvdata(dev); in acp_i2s_startup() local
638 struct acp_resource *rsrc = adata->rsrc; in acp_i2s_startup()