Lines Matching +full:i2s +full:- +full:regs

1 // SPDX-License-Identifier: GPL-2.0+
3 // s3c24xx-i2s.c -- ALSA Soc Audio Layer
8 // Copyright 2004-2005 Simtec Electronics
21 #include "regs-iis.h"
23 #include "s3c24xx-i2s.h"
36 void __iomem *regs; member
51 iisfcon = readl(s3c24xx_i2s.regs + S3C2410_IISFCON); in s3c24xx_snd_txctrl()
52 iiscon = readl(s3c24xx_i2s.regs + S3C2410_IISCON); in s3c24xx_snd_txctrl()
53 iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_snd_txctrl()
63 writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_snd_txctrl()
64 writel(iisfcon, s3c24xx_i2s.regs + S3C2410_IISFCON); in s3c24xx_snd_txctrl()
65 writel(iiscon, s3c24xx_i2s.regs + S3C2410_IISCON); in s3c24xx_snd_txctrl()
80 writel(iiscon, s3c24xx_i2s.regs + S3C2410_IISCON); in s3c24xx_snd_txctrl()
81 writel(iisfcon, s3c24xx_i2s.regs + S3C2410_IISFCON); in s3c24xx_snd_txctrl()
82 writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_snd_txctrl()
94 iisfcon = readl(s3c24xx_i2s.regs + S3C2410_IISFCON); in s3c24xx_snd_rxctrl()
95 iiscon = readl(s3c24xx_i2s.regs + S3C2410_IISCON); in s3c24xx_snd_rxctrl()
96 iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_snd_rxctrl()
106 writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_snd_rxctrl()
107 writel(iisfcon, s3c24xx_i2s.regs + S3C2410_IISFCON); in s3c24xx_snd_rxctrl()
108 writel(iiscon, s3c24xx_i2s.regs + S3C2410_IISCON); in s3c24xx_snd_rxctrl()
123 writel(iisfcon, s3c24xx_i2s.regs + S3C2410_IISFCON); in s3c24xx_snd_rxctrl()
124 writel(iiscon, s3c24xx_i2s.regs + S3C2410_IISCON); in s3c24xx_snd_rxctrl()
125 writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_snd_rxctrl()
141 iiscon = readl(s3c24xx_i2s.regs + S3C2410_IISCON); in s3c24xx_snd_lrsync()
145 if (!timeout--) in s3c24xx_snd_lrsync()
146 return -ETIMEDOUT; in s3c24xx_snd_lrsync()
158 return (readl(s3c24xx_i2s.regs + S3C2410_IISMOD) & S3C2410_IISMOD_SLAVE) ? 0:1; in s3c24xx_snd_is_clkmaster()
162 * Set S3C24xx I2S DAI format
169 iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_i2s_set_fmt()
180 return -EINVAL; in s3c24xx_i2s_set_fmt()
191 return -EINVAL; in s3c24xx_i2s_set_fmt()
194 writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_i2s_set_fmt()
210 iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_i2s_hw_params()
216 dma_data->addr_width = 1; in s3c24xx_i2s_hw_params()
220 dma_data->addr_width = 2; in s3c24xx_i2s_hw_params()
223 return -EINVAL; in s3c24xx_i2s_hw_params()
226 writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_i2s_hw_params()
247 if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) in s3c24xx_i2s_trigger()
256 if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) in s3c24xx_i2s_trigger()
262 ret = -EINVAL; in s3c24xx_i2s_trigger()
276 u32 iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_i2s_set_sysclk()
287 return -EINVAL; in s3c24xx_i2s_set_sysclk()
290 writel(iismod, s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_i2s_set_sysclk()
304 reg = readl(s3c24xx_i2s.regs + S3C2410_IISMOD) & ~S3C2410_IISMOD_FS_MASK; in s3c24xx_i2s_set_clkdiv()
305 writel(reg | div, s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_i2s_set_clkdiv()
308 reg = readl(s3c24xx_i2s.regs + S3C2410_IISMOD) & ~(S3C2410_IISMOD_384FS); in s3c24xx_i2s_set_clkdiv()
309 writel(reg | div, s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_i2s_set_clkdiv()
312 writel(div, s3c24xx_i2s.regs + S3C2410_IISPSR); in s3c24xx_i2s_set_clkdiv()
313 reg = readl(s3c24xx_i2s.regs + S3C2410_IISCON); in s3c24xx_i2s_set_clkdiv()
314 writel(reg | S3C2410_IISCON_PSCEN, s3c24xx_i2s.regs + S3C2410_IISCON); in s3c24xx_i2s_set_clkdiv()
317 return -EINVAL; in s3c24xx_i2s_set_clkdiv()
339 s3c24xx_i2s.iis_clk = devm_clk_get(dai->dev, "iis"); in s3c24xx_i2s_probe()
348 writel(S3C2410_IISCON_IISEN, s3c24xx_i2s.regs + S3C2410_IISCON); in s3c24xx_i2s_probe()
359 s3c24xx_i2s.iiscon = readl(s3c24xx_i2s.regs + S3C2410_IISCON); in s3c24xx_i2s_suspend()
360 s3c24xx_i2s.iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_i2s_suspend()
361 s3c24xx_i2s.iisfcon = readl(s3c24xx_i2s.regs + S3C2410_IISFCON); in s3c24xx_i2s_suspend()
362 s3c24xx_i2s.iispsr = readl(s3c24xx_i2s.regs + S3C2410_IISPSR); in s3c24xx_i2s_suspend()
377 writel(s3c24xx_i2s.iiscon, s3c24xx_i2s.regs + S3C2410_IISCON); in s3c24xx_i2s_resume()
378 writel(s3c24xx_i2s.iismod, s3c24xx_i2s.regs + S3C2410_IISMOD); in s3c24xx_i2s_resume()
379 writel(s3c24xx_i2s.iisfcon, s3c24xx_i2s.regs + S3C2410_IISFCON); in s3c24xx_i2s_resume()
380 writel(s3c24xx_i2s.iispsr, s3c24xx_i2s.regs + S3C2410_IISPSR); in s3c24xx_i2s_resume()
418 .name = "s3c24xx-i2s",
429 s3c24xx_i2s.regs = devm_ioremap_resource(&pdev->dev, res); in s3c24xx_iis_dev_probe()
430 if (IS_ERR(s3c24xx_i2s.regs)) in s3c24xx_iis_dev_probe()
431 return PTR_ERR(s3c24xx_i2s.regs); in s3c24xx_iis_dev_probe()
433 s3c24xx_i2s_pcm_stereo_out.addr = res->start + S3C2410_IISFIFO; in s3c24xx_iis_dev_probe()
434 s3c24xx_i2s_pcm_stereo_in.addr = res->start + S3C2410_IISFIFO; in s3c24xx_iis_dev_probe()
436 ret = samsung_asoc_dma_platform_register(&pdev->dev, NULL, in s3c24xx_iis_dev_probe()
439 dev_err(&pdev->dev, "Failed to register the DMA: %d\n", ret); in s3c24xx_iis_dev_probe()
443 ret = devm_snd_soc_register_component(&pdev->dev, in s3c24xx_iis_dev_probe()
446 dev_err(&pdev->dev, "Failed to register the DAI\n"); in s3c24xx_iis_dev_probe()
454 .name = "s3c24xx-iis",
462 MODULE_DESCRIPTION("s3c24xx I2S SoC Interface");
464 MODULE_ALIAS("platform:s3c24xx-iis");