• Home
  • Raw
  • Download

Lines Matching full:i2s

1 /* ALSA Soc Audio Layer - I2S core for newer Samsung SoCs.
25 #include "regs-i2s-v2.h"
26 #include "s3c-i2s-v2.h"
76 static void s3c2412_snd_txctrl(struct s3c_i2sv2_info *i2s, int on) in s3c2412_snd_txctrl() argument
78 void __iomem *regs = i2s->regs; in s3c2412_snd_txctrl()
106 dev_err(i2s->dev, "TXEN: Invalid MODE %x in IISMOD\n", in s3c2412_snd_txctrl()
135 dev_err(i2s->dev, "TXDIS: Invalid MODE %x in IISMOD\n", in s3c2412_snd_txctrl()
149 static void s3c2412_snd_rxctrl(struct s3c_i2sv2_info *i2s, int on) in s3c2412_snd_rxctrl() argument
151 void __iomem *regs = i2s->regs; in s3c2412_snd_rxctrl()
179 dev_err(i2s->dev, "RXEN: Invalid MODE %x in IISMOD\n", in s3c2412_snd_rxctrl()
204 dev_err(i2s->dev, "RXDIS: Invalid MODE %x in IISMOD\n", in s3c2412_snd_rxctrl()
222 static int s3c2412_snd_lrsync(struct s3c_i2sv2_info *i2s) in s3c2412_snd_lrsync() argument
230 iiscon = readl(i2s->regs + S3C2412_IISCON); in s3c2412_snd_lrsync()
246 * Set S3C2412 I2S DAI format
251 struct s3c_i2sv2_info *i2s = to_info(cpu_dai); in s3c2412_i2s_set_fmt() local
256 iismod = readl(i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_set_fmt()
261 i2s->master = 0; in s3c2412_i2s_set_fmt()
265 i2s->master = 1; in s3c2412_i2s_set_fmt()
293 writel(iismod, i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_set_fmt()
302 struct s3c_i2sv2_info *i2s = to_info(dai); in s3c_i2sv2_hw_params() local
309 dma_data = i2s->dma_playback; in s3c_i2sv2_hw_params()
311 dma_data = i2s->dma_capture; in s3c_i2sv2_hw_params()
316 iismod = readl(i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_hw_params()
332 writel(iismod, i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_hw_params()
341 struct s3c_i2sv2_info *i2s = to_info(cpu_dai); in s3c_i2sv2_set_sysclk() local
342 u32 iismod = readl(i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_set_sysclk()
358 if (!(i2s->feature & S3C_FEATURE_CDCLKCON)) in s3c_i2sv2_set_sysclk()
377 writel(iismod, i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_set_sysclk()
387 struct s3c_i2sv2_info *i2s = to_info(rtd->cpu_dai); in s3c2412_i2s_trigger() local
399 i2s->regs + S3C2412_IISFIC); in s3c2412_i2s_trigger()
402 writel(0x0, i2s->regs + S3C2412_IISFIC); in s3c2412_i2s_trigger()
406 if (!i2s->master) { in s3c2412_i2s_trigger()
407 ret = s3c2412_snd_lrsync(i2s); in s3c2412_i2s_trigger()
415 s3c2412_snd_rxctrl(i2s, 1); in s3c2412_i2s_trigger()
417 s3c2412_snd_txctrl(i2s, 1); in s3c2412_i2s_trigger()
429 s3c2412_snd_rxctrl(i2s, 0); in s3c2412_i2s_trigger()
431 s3c2412_snd_txctrl(i2s, 0); in s3c2412_i2s_trigger()
450 struct s3c_i2sv2_info *i2s = to_info(cpu_dai); in s3c2412_i2s_set_clkdiv() local
478 reg = readl(i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_set_clkdiv()
480 writel(reg | div, i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_set_clkdiv()
482 pr_debug("%s: MOD=%08x\n", __func__, readl(i2s->regs + S3C2412_IISMOD)); in s3c2412_i2s_set_clkdiv()
507 reg = readl(i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_set_clkdiv()
509 writel(reg | div, i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_set_clkdiv()
510 pr_debug("%s: MOD=%08x\n", __func__, readl(i2s->regs + S3C2412_IISMOD)); in s3c2412_i2s_set_clkdiv()
516 i2s->regs + S3C2412_IISPSR); in s3c2412_i2s_set_clkdiv()
518 writel(0x0, i2s->regs + S3C2412_IISPSR); in s3c2412_i2s_set_clkdiv()
520 pr_debug("%s: PSR=%08x\n", __func__, readl(i2s->regs + S3C2412_IISPSR)); in s3c2412_i2s_set_clkdiv()
533 struct s3c_i2sv2_info *i2s = to_info(dai); in s3c2412_i2s_delay() local
534 u32 reg = readl(i2s->regs + S3C2412_IISFIC); in s3c2412_i2s_delay()
547 struct s3c_i2sv2_info *i2s = to_info(cpu_dai); in s3c_i2sv2_get_clock() local
548 u32 iismod = readl(i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_get_clock()
551 return i2s->iis_cclk; in s3c_i2sv2_get_clock()
553 return i2s->iis_pclk; in s3c_i2sv2_get_clock()
623 struct s3c_i2sv2_info *i2s, in s3c_i2sv2_probe() argument
629 i2s->dev = dev; in s3c_i2sv2_probe()
631 /* record our i2s structure for later use in the callbacks */ in s3c_i2sv2_probe()
632 snd_soc_dai_set_drvdata(dai, i2s); in s3c_i2sv2_probe()
634 i2s->iis_pclk = clk_get(dev, "iis"); in s3c_i2sv2_probe()
635 if (IS_ERR(i2s->iis_pclk)) { in s3c_i2sv2_probe()
640 clk_prepare_enable(i2s->iis_pclk); in s3c_i2sv2_probe()
644 iismod = readl(i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_probe()
646 writel(iismod, i2s->regs + S3C2412_IISMOD); in s3c_i2sv2_probe()
647 s3c2412_snd_txctrl(i2s, 0); in s3c_i2sv2_probe()
648 s3c2412_snd_rxctrl(i2s, 0); in s3c_i2sv2_probe()
655 struct s3c_i2sv2_info *i2s) in s3c_i2sv2_cleanup() argument
657 clk_disable_unprepare(i2s->iis_pclk); in s3c_i2sv2_cleanup()
658 clk_put(i2s->iis_pclk); in s3c_i2sv2_cleanup()
659 i2s->iis_pclk = NULL; in s3c_i2sv2_cleanup()
666 struct s3c_i2sv2_info *i2s = to_info(dai); in s3c2412_i2s_suspend() local
670 i2s->suspend_iismod = readl(i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_suspend()
671 i2s->suspend_iiscon = readl(i2s->regs + S3C2412_IISCON); in s3c2412_i2s_suspend()
672 i2s->suspend_iispsr = readl(i2s->regs + S3C2412_IISPSR); in s3c2412_i2s_suspend()
676 iismod = readl(i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_suspend()
693 struct s3c_i2sv2_info *i2s = to_info(dai); in s3c2412_i2s_resume() local
696 dai->active, i2s->suspend_iismod, i2s->suspend_iiscon); in s3c2412_i2s_resume()
699 writel(i2s->suspend_iiscon, i2s->regs + S3C2412_IISCON); in s3c2412_i2s_resume()
700 writel(i2s->suspend_iismod, i2s->regs + S3C2412_IISMOD); in s3c2412_i2s_resume()
701 writel(i2s->suspend_iispsr, i2s->regs + S3C2412_IISPSR); in s3c2412_i2s_resume()
704 i2s->regs + S3C2412_IISFIC); in s3c2412_i2s_resume()
707 writel(0x0, i2s->regs + S3C2412_IISFIC); in s3c2412_i2s_resume()