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
248 regmap_update_bits(i2s->regmap, I2S_TXCR, I2S_TXCR_VDW_MASK, val); in rockchip_i2s_hw_params()
249 regmap_update_bits(i2s->regmap, I2S_RXCR, I2S_RXCR_VDW_MASK, val); in rockchip_i2s_hw_params()
250 regmap_update_bits(i2s->regmap, I2S_DMACR, I2S_DMACR_TDL_MASK, in rockchip_i2s_hw_params()
252 regmap_update_bits(i2s->regmap, I2S_DMACR, I2S_DMACR_RDL_MASK, in rockchip_i2s_hw_params()
261 struct rk_i2s_dev *i2s = to_info(dai); in rockchip_i2s_trigger() local
269 rockchip_snd_rxctrl(i2s, 1); in rockchip_i2s_trigger()
271 rockchip_snd_txctrl(i2s, 1); in rockchip_i2s_trigger()
277 rockchip_snd_rxctrl(i2s, 0); in rockchip_i2s_trigger()
279 rockchip_snd_txctrl(i2s, 0); in rockchip_i2s_trigger()
292 struct rk_i2s_dev *i2s = to_info(cpu_dai); in rockchip_i2s_set_sysclk() local
295 ret = clk_set_rate(i2s->mclk, freq); in rockchip_i2s_set_sysclk()
297 dev_err(i2s->dev, "Fail to set mclk %d\n", ret); in rockchip_i2s_set_sysclk()
304 struct rk_i2s_dev *i2s = snd_soc_dai_get_drvdata(dai); in rockchip_i2s_dai_probe() local
306 dai->capture_dma_data = &i2s->capture_dma_data; in rockchip_i2s_dai_probe()
307 dai->playback_dma_data = &i2s->playback_dma_data; in rockchip_i2s_dai_probe()
418 struct rk_i2s_dev *i2s; in rockchip_i2s_probe() local
423 i2s = devm_kzalloc(&pdev->dev, sizeof(*i2s), GFP_KERNEL); in rockchip_i2s_probe()
424 if (!i2s) { in rockchip_i2s_probe()
430 i2s->hclk = devm_clk_get(&pdev->dev, "i2s_hclk"); in rockchip_i2s_probe()
431 if (IS_ERR(i2s->hclk)) { in rockchip_i2s_probe()
433 return PTR_ERR(i2s->hclk); in rockchip_i2s_probe()
435 ret = clk_prepare_enable(i2s->hclk); in rockchip_i2s_probe()
437 dev_err(i2s->dev, "hclock enable failed %d\n", ret); in rockchip_i2s_probe()
441 i2s->mclk = devm_clk_get(&pdev->dev, "i2s_clk"); in rockchip_i2s_probe()
442 if (IS_ERR(i2s->mclk)) { in rockchip_i2s_probe()
444 return PTR_ERR(i2s->mclk); in rockchip_i2s_probe()
452 i2s->regmap = devm_regmap_init_mmio(&pdev->dev, regs, in rockchip_i2s_probe()
454 if (IS_ERR(i2s->regmap)) { in rockchip_i2s_probe()
457 return PTR_ERR(i2s->regmap); in rockchip_i2s_probe()
460 i2s->playback_dma_data.addr = res->start + I2S_TXDR; in rockchip_i2s_probe()
461 i2s->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; in rockchip_i2s_probe()
462 i2s->playback_dma_data.maxburst = 4; in rockchip_i2s_probe()
464 i2s->capture_dma_data.addr = res->start + I2S_RXDR; in rockchip_i2s_probe()
465 i2s->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; in rockchip_i2s_probe()
466 i2s->capture_dma_data.maxburst = 4; in rockchip_i2s_probe()
468 i2s->dev = &pdev->dev; in rockchip_i2s_probe()
469 dev_set_drvdata(&pdev->dev, i2s); in rockchip_i2s_probe()
507 struct rk_i2s_dev *i2s = dev_get_drvdata(&pdev->dev); in rockchip_i2s_remove() local
513 clk_disable_unprepare(i2s->mclk); in rockchip_i2s_remove()
514 clk_disable_unprepare(i2s->hclk); in rockchip_i2s_remove()