Lines Matching full:i2s

3 // ALSA Soc Audio Layer - I2S core for newer Samsung SoCs.
21 #include "regs-i2s-v2.h"
22 #include "s3c-i2s-v2.h"
72 static void s3c2412_snd_txctrl(struct s3c_i2sv2_info *i2s, int on) in s3c2412_snd_txctrl() argument
74 void __iomem *regs = i2s->regs; in s3c2412_snd_txctrl()
102 dev_err(i2s->dev, "TXEN: Invalid MODE %x in IISMOD\n", in s3c2412_snd_txctrl()
131 dev_err(i2s->dev, "TXDIS: Invalid MODE %x in IISMOD\n", in s3c2412_snd_txctrl()
145 static void s3c2412_snd_rxctrl(struct s3c_i2sv2_info *i2s, int on) in s3c2412_snd_rxctrl() argument
147 void __iomem *regs = i2s->regs; in s3c2412_snd_rxctrl()
175 dev_err(i2s->dev, "RXEN: Invalid MODE %x in IISMOD\n", in s3c2412_snd_rxctrl()
200 dev_err(i2s->dev, "RXDIS: Invalid MODE %x in IISMOD\n", in s3c2412_snd_rxctrl()
218 static int s3c2412_snd_lrsync(struct s3c_i2sv2_info *i2s) in s3c2412_snd_lrsync() argument
226 iiscon = readl(i2s->regs + S3C2412_IISCON); in s3c2412_snd_lrsync()
242 * Set S3C2412 I2S DAI format
247 struct s3c_i2sv2_info *i2s = to_info(cpu_dai); in s3c2412_i2s_set_fmt() local
252 iismod = readl(i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_set_fmt()
257 i2s->master = 0; in s3c2412_i2s_set_fmt()
261 i2s->master = 1; in s3c2412_i2s_set_fmt()
289 writel(iismod, i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_set_fmt()
298 struct s3c_i2sv2_info *i2s = to_info(dai); in s3c_i2sv2_hw_params() local
305 dma_data = i2s->dma_playback; in s3c_i2sv2_hw_params()
307 dma_data = i2s->dma_capture; in s3c_i2sv2_hw_params()
312 iismod = readl(i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_hw_params()
328 writel(iismod, i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_hw_params()
337 struct s3c_i2sv2_info *i2s = to_info(cpu_dai); in s3c_i2sv2_set_sysclk() local
338 u32 iismod = readl(i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_set_sysclk()
354 if (!(i2s->feature & S3C_FEATURE_CDCLKCON)) in s3c_i2sv2_set_sysclk()
373 writel(iismod, i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_set_sysclk()
383 struct s3c_i2sv2_info *i2s = to_info(asoc_rtd_to_cpu(rtd, 0)); in s3c2412_i2s_trigger() local
395 i2s->regs + S3C2412_IISFIC); in s3c2412_i2s_trigger()
398 writel(0x0, i2s->regs + S3C2412_IISFIC); in s3c2412_i2s_trigger()
402 if (!i2s->master) { in s3c2412_i2s_trigger()
403 ret = s3c2412_snd_lrsync(i2s); in s3c2412_i2s_trigger()
411 s3c2412_snd_rxctrl(i2s, 1); in s3c2412_i2s_trigger()
413 s3c2412_snd_txctrl(i2s, 1); in s3c2412_i2s_trigger()
425 s3c2412_snd_rxctrl(i2s, 0); in s3c2412_i2s_trigger()
427 s3c2412_snd_txctrl(i2s, 0); in s3c2412_i2s_trigger()
446 struct s3c_i2sv2_info *i2s = to_info(cpu_dai); in s3c2412_i2s_set_clkdiv() local
474 reg = readl(i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_set_clkdiv()
476 writel(reg | div, i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_set_clkdiv()
478 pr_debug("%s: MOD=%08x\n", __func__, readl(i2s->regs + S3C2412_IISMOD)); in s3c2412_i2s_set_clkdiv()
503 reg = readl(i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_set_clkdiv()
505 writel(reg | div, i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_set_clkdiv()
506 pr_debug("%s: MOD=%08x\n", __func__, readl(i2s->regs + S3C2412_IISMOD)); in s3c2412_i2s_set_clkdiv()
512 i2s->regs + S3C2412_IISPSR); in s3c2412_i2s_set_clkdiv()
514 writel(0x0, i2s->regs + S3C2412_IISPSR); in s3c2412_i2s_set_clkdiv()
516 pr_debug("%s: PSR=%08x\n", __func__, readl(i2s->regs + S3C2412_IISPSR)); in s3c2412_i2s_set_clkdiv()
529 struct s3c_i2sv2_info *i2s = to_info(dai); in s3c2412_i2s_delay() local
530 u32 reg = readl(i2s->regs + S3C2412_IISFIC); in s3c2412_i2s_delay()
543 struct s3c_i2sv2_info *i2s = to_info(cpu_dai); in s3c_i2sv2_get_clock() local
544 u32 iismod = readl(i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_get_clock()
547 return i2s->iis_cclk; in s3c_i2sv2_get_clock()
549 return i2s->iis_pclk; in s3c_i2sv2_get_clock()
619 struct s3c_i2sv2_info *i2s) in s3c_i2sv2_probe() argument
624 i2s->dev = dev; in s3c_i2sv2_probe()
626 /* record our i2s structure for later use in the callbacks */ in s3c_i2sv2_probe()
627 snd_soc_dai_set_drvdata(dai, i2s); in s3c_i2sv2_probe()
629 i2s->iis_pclk = clk_get(dev, "iis"); in s3c_i2sv2_probe()
630 if (IS_ERR(i2s->iis_pclk)) { in s3c_i2sv2_probe()
635 clk_prepare_enable(i2s->iis_pclk); in s3c_i2sv2_probe()
639 iismod = readl(i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_probe()
641 writel(iismod, i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_probe()
642 s3c2412_snd_txctrl(i2s, 0); in s3c_i2sv2_probe()
643 s3c2412_snd_rxctrl(i2s, 0); in s3c_i2sv2_probe()
650 struct s3c_i2sv2_info *i2s) in s3c_i2sv2_cleanup() argument
652 clk_disable_unprepare(i2s->iis_pclk); in s3c_i2sv2_cleanup()
653 clk_put(i2s->iis_pclk); in s3c_i2sv2_cleanup()
654 i2s->iis_pclk = NULL; in s3c_i2sv2_cleanup()