Lines Matching refs:usp
16 #include "sirf-usp.h"
28 static void sirf_usp_tx_enable(struct sirf_usp *usp)
30 regmap_update_bits(usp->regmap, USP_TX_FIFO_OP,
32 regmap_write(usp->regmap, USP_TX_FIFO_OP, 0);
34 regmap_update_bits(usp->regmap, USP_TX_FIFO_OP,
37 regmap_update_bits(usp->regmap, USP_TX_RX_ENABLE,
41 static void sirf_usp_tx_disable(struct sirf_usp *usp)
43 regmap_update_bits(usp->regmap, USP_TX_RX_ENABLE,
46 regmap_write(usp->regmap, USP_TX_FIFO_OP, 0);
49 static void sirf_usp_rx_enable(struct sirf_usp *usp)
51 regmap_update_bits(usp->regmap, USP_RX_FIFO_OP,
53 regmap_write(usp->regmap, USP_RX_FIFO_OP, 0);
55 regmap_update_bits(usp->regmap, USP_RX_FIFO_OP,
58 regmap_update_bits(usp->regmap, USP_TX_RX_ENABLE,
62 static void sirf_usp_rx_disable(struct sirf_usp *usp)
64 regmap_update_bits(usp->regmap, USP_TX_RX_ENABLE,
67 regmap_write(usp->regmap, USP_RX_FIFO_OP, 0);
72 struct sirf_usp *usp = snd_soc_dai_get_drvdata(dai);
74 snd_soc_dai_init_dma_data(dai, &usp->playback_dma_data,
75 &usp->capture_dma_data);
82 struct sirf_usp *usp = snd_soc_dai_get_drvdata(dai);
96 usp->daifmt_format = (fmt & SND_SOC_DAIFMT_FORMAT_MASK);
107 usp->daifmt_format |= (fmt & SND_SOC_DAIFMT_INV_MASK);
116 static void sirf_usp_i2s_init(struct sirf_usp *usp)
119 regmap_update_bits(usp->regmap, USP_RISC_DSP_MODE,
126 regmap_write(usp->regmap, USP_TX_DMA_IO_LEN, 0);
127 regmap_write(usp->regmap, USP_RX_DMA_IO_LEN, 0);
130 regmap_write(usp->regmap, USP_MODE2, (1 << USP_RXD_DELAY_LEN_OFFSET) |
135 regmap_write(usp->regmap, USP_MODE1,
141 regmap_write(usp->regmap, USP_RX_DMA_IO_CTRL, 0);
144 regmap_write(usp->regmap, USP_RX_FIFO_CTRL,
149 regmap_write(usp->regmap, USP_RX_FIFO_LEVEL_CHK,
153 regmap_write(usp->regmap, USP_TX_DMA_IO_CTRL, 0);
156 regmap_write(usp->regmap, USP_TX_FIFO_CTRL,
160 regmap_write(usp->regmap, USP_TX_FIFO_LEVEL_CHK,
167 struct sirf_usp *usp = snd_soc_dai_get_drvdata(dai);
190 switch (usp->daifmt_format & SND_SOC_DAIFMT_FORMAT_MASK) {
192 regmap_update_bits(usp->regmap, USP_RX_FRAME_CTRL,
196 regmap_update_bits(usp->regmap, USP_RX_FRAME_CTRL,
206 switch (usp->daifmt_format & SND_SOC_DAIFMT_INV_MASK) {
210 regmap_update_bits(usp->regmap, USP_MODE1,
219 regmap_update_bits(usp->regmap, USP_TX_FRAME_CTRL,
227 regmap_update_bits(usp->regmap, USP_RX_FRAME_CTRL,
241 struct sirf_usp *usp = snd_soc_dai_get_drvdata(dai);
248 sirf_usp_tx_enable(usp);
250 sirf_usp_rx_enable(usp);
256 sirf_usp_tx_disable(usp);
258 sirf_usp_rx_disable(usp);
273 .name = "sirf-usp-pcm",
296 struct sirf_usp *usp = dev_get_drvdata(dev);
298 clk_disable_unprepare(usp->clk);
304 struct sirf_usp *usp = dev_get_drvdata(dev);
307 ret = clk_prepare_enable(usp->clk);
312 sirf_usp_i2s_init(usp);
319 struct sirf_usp *usp = dev_get_drvdata(dev);
322 regmap_read(usp->regmap, USP_MODE1, &usp->mode1_reg);
323 regmap_read(usp->regmap, USP_MODE2, &usp->mode2_reg);
331 struct sirf_usp *usp = dev_get_drvdata(dev);
338 regmap_write(usp->regmap, USP_MODE1, usp->mode1_reg);
339 regmap_write(usp->regmap, USP_MODE2, usp->mode2_reg);
346 .name = "sirf-usp",
360 struct sirf_usp *usp;
363 usp = devm_kzalloc(&pdev->dev, sizeof(struct sirf_usp),
365 if (!usp)
368 platform_set_drvdata(pdev, usp);
373 usp->regmap = devm_regmap_init_mmio(&pdev->dev, base,
375 if (IS_ERR(usp->regmap))
376 return PTR_ERR(usp->regmap);
378 usp->clk = devm_clk_get(&pdev->dev, NULL);
379 if (IS_ERR(usp->clk)) {
381 return PTR_ERR(usp->clk);
410 { .compatible = "sirf,prima2-usp-pcm", },
423 .name = "sirf-usp-pcm",