Lines Matching refs:i2s
48 struct rk_i2s_dev *i2s = dev_get_drvdata(dev); in i2s_runtime_suspend() local
50 clk_disable_unprepare(i2s->mclk); in i2s_runtime_suspend()
57 struct rk_i2s_dev *i2s = dev_get_drvdata(dev); in i2s_runtime_resume() local
60 ret = clk_prepare_enable(i2s->mclk); in i2s_runtime_resume()
62 dev_err(i2s->dev, "clock enable failed %d\n", ret); in i2s_runtime_resume()
74 static void rockchip_snd_txctrl(struct rk_i2s_dev *i2s, int on) in rockchip_snd_txctrl() argument
80 regmap_update_bits(i2s->regmap, I2S_DMACR, in rockchip_snd_txctrl()
83 regmap_update_bits(i2s->regmap, I2S_XFER, in rockchip_snd_txctrl()
87 i2s->tx_start = true; in rockchip_snd_txctrl()
89 i2s->tx_start = false; in rockchip_snd_txctrl()
91 regmap_update_bits(i2s->regmap, I2S_DMACR, in rockchip_snd_txctrl()
94 if (!i2s->rx_start) { in rockchip_snd_txctrl()
95 regmap_update_bits(i2s->regmap, I2S_XFER, in rockchip_snd_txctrl()
101 regmap_update_bits(i2s->regmap, I2S_CLR, in rockchip_snd_txctrl()
105 regmap_read(i2s->regmap, I2S_CLR, &val); in rockchip_snd_txctrl()
109 regmap_read(i2s->regmap, I2S_CLR, &val); in rockchip_snd_txctrl()
112 dev_warn(i2s->dev, "fail to clear\n"); in rockchip_snd_txctrl()
120 static void rockchip_snd_rxctrl(struct rk_i2s_dev *i2s, int on) in rockchip_snd_rxctrl() argument
126 regmap_update_bits(i2s->regmap, I2S_DMACR, in rockchip_snd_rxctrl()
129 regmap_update_bits(i2s->regmap, I2S_XFER, in rockchip_snd_rxctrl()
133 i2s->rx_start = true; in rockchip_snd_rxctrl()
135 i2s->rx_start = false; in rockchip_snd_rxctrl()
137 regmap_update_bits(i2s->regmap, I2S_DMACR, in rockchip_snd_rxctrl()
140 if (!i2s->tx_start) { in rockchip_snd_rxctrl()
141 regmap_update_bits(i2s->regmap, I2S_XFER, in rockchip_snd_rxctrl()
147 regmap_update_bits(i2s->regmap, I2S_CLR, in rockchip_snd_rxctrl()
151 regmap_read(i2s->regmap, I2S_CLR, &val); in rockchip_snd_rxctrl()
155 regmap_read(i2s->regmap, I2S_CLR, &val); in rockchip_snd_rxctrl()
158 dev_warn(i2s->dev, "fail to clear\n"); in rockchip_snd_rxctrl()
169 struct rk_i2s_dev *i2s = to_info(cpu_dai); in rockchip_i2s_set_fmt() local
185 regmap_update_bits(i2s->regmap, I2S_CKR, mask, val); in rockchip_i2s_set_fmt()
202 regmap_update_bits(i2s->regmap, I2S_TXCR, mask, val); in rockchip_i2s_set_fmt()
219 regmap_update_bits(i2s->regmap, I2S_RXCR, mask, val); in rockchip_i2s_set_fmt()
228 struct rk_i2s_dev *i2s = to_info(dai); in rockchip_i2s_hw_params() local
263 dev_err(i2s->dev, "invalid channel: %d\n", in rockchip_i2s_hw_params()
269 regmap_update_bits(i2s->regmap, I2S_RXCR, in rockchip_i2s_hw_params()
273 regmap_update_bits(i2s->regmap, I2S_TXCR, in rockchip_i2s_hw_params()
277 regmap_update_bits(i2s->regmap, I2S_DMACR, I2S_DMACR_TDL_MASK, in rockchip_i2s_hw_params()
279 regmap_update_bits(i2s->regmap, I2S_DMACR, I2S_DMACR_RDL_MASK, in rockchip_i2s_hw_params()
286 regmap_update_bits(i2s->regmap, I2S_CKR, in rockchip_i2s_hw_params()
295 struct rk_i2s_dev *i2s = to_info(dai); in rockchip_i2s_trigger() local
303 rockchip_snd_rxctrl(i2s, 1); in rockchip_i2s_trigger()
305 rockchip_snd_txctrl(i2s, 1); in rockchip_i2s_trigger()
311 rockchip_snd_rxctrl(i2s, 0); in rockchip_i2s_trigger()
313 rockchip_snd_txctrl(i2s, 0); in rockchip_i2s_trigger()
326 struct rk_i2s_dev *i2s = to_info(cpu_dai); in rockchip_i2s_set_sysclk() local
329 ret = clk_set_rate(i2s->mclk, freq); in rockchip_i2s_set_sysclk()
331 dev_err(i2s->dev, "Fail to set mclk %d\n", ret); in rockchip_i2s_set_sysclk()
338 struct rk_i2s_dev *i2s = snd_soc_dai_get_drvdata(dai); in rockchip_i2s_dai_probe() local
340 dai->capture_dma_data = &i2s->capture_dma_data; in rockchip_i2s_dai_probe()
341 dai->playback_dma_data = &i2s->playback_dma_data; in rockchip_i2s_dai_probe()
453 struct rk_i2s_dev *i2s; in rockchip_i2s_probe() local
459 i2s = devm_kzalloc(&pdev->dev, sizeof(*i2s), GFP_KERNEL); in rockchip_i2s_probe()
460 if (!i2s) { in rockchip_i2s_probe()
466 i2s->hclk = devm_clk_get(&pdev->dev, "i2s_hclk"); in rockchip_i2s_probe()
467 if (IS_ERR(i2s->hclk)) { in rockchip_i2s_probe()
469 return PTR_ERR(i2s->hclk); in rockchip_i2s_probe()
471 ret = clk_prepare_enable(i2s->hclk); in rockchip_i2s_probe()
473 dev_err(i2s->dev, "hclock enable failed %d\n", ret); in rockchip_i2s_probe()
477 i2s->mclk = devm_clk_get(&pdev->dev, "i2s_clk"); in rockchip_i2s_probe()
478 if (IS_ERR(i2s->mclk)) { in rockchip_i2s_probe()
480 return PTR_ERR(i2s->mclk); in rockchip_i2s_probe()
488 i2s->regmap = devm_regmap_init_mmio(&pdev->dev, regs, in rockchip_i2s_probe()
490 if (IS_ERR(i2s->regmap)) { in rockchip_i2s_probe()
493 return PTR_ERR(i2s->regmap); in rockchip_i2s_probe()
496 i2s->playback_dma_data.addr = res->start + I2S_TXDR; in rockchip_i2s_probe()
497 i2s->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; in rockchip_i2s_probe()
498 i2s->playback_dma_data.maxburst = 4; in rockchip_i2s_probe()
500 i2s->capture_dma_data.addr = res->start + I2S_RXDR; in rockchip_i2s_probe()
501 i2s->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; in rockchip_i2s_probe()
502 i2s->capture_dma_data.maxburst = 4; in rockchip_i2s_probe()
504 i2s->dev = &pdev->dev; in rockchip_i2s_probe()
505 dev_set_drvdata(&pdev->dev, i2s); in rockchip_i2s_probe()
549 struct rk_i2s_dev *i2s = dev_get_drvdata(&pdev->dev); in rockchip_i2s_remove() local
555 clk_disable_unprepare(i2s->mclk); in rockchip_i2s_remove()
556 clk_disable_unprepare(i2s->hclk); in rockchip_i2s_remove()