Lines Matching full:ssc

3  * Driver for AT73C213 16-bit stereo DAC connected to Atmel SSC
27 #include <linux/atmel-ssc.h>
69 struct ssc_device *ssc; member
75 /* Protect SSC registers against concurrent access. */
131 unsigned long ssc_rate = clk_get_rate(chip->ssc->clk); in snd_at73c213_set_bitrate()
146 /* SSC clock / (bitrate * stereo * 16-bit). */ in snd_at73c213_set_bitrate()
166 /* SSC clock / (ssc divider * 16-bit * stereo). */ in snd_at73c213_set_bitrate()
192 /* Set divider in SSC device. */ in snd_at73c213_set_bitrate()
193 ssc_writel(chip->ssc->regs, CMR, ssc_div/2); in snd_at73c213_set_bitrate()
195 /* SSC clock / (ssc divider * 16-bit * stereo). */ in snd_at73c213_set_bitrate()
221 clk_enable(chip->ssc->clk); in snd_at73c213_pcm_open()
230 clk_disable(chip->ssc->clk); in snd_at73c213_pcm_close()
241 val = ssc_readl(chip->ssc->regs, TFMR); in snd_at73c213_pcm_hw_params()
243 ssc_writel(chip->ssc->regs, TFMR, val); in snd_at73c213_pcm_hw_params()
258 ssc_writel(chip->ssc->regs, PDC_TPR, in snd_at73c213_pcm_prepare()
260 ssc_writel(chip->ssc->regs, PDC_TCR, in snd_at73c213_pcm_prepare()
262 ssc_writel(chip->ssc->regs, PDC_TNPR, in snd_at73c213_pcm_prepare()
264 ssc_writel(chip->ssc->regs, PDC_TNCR, in snd_at73c213_pcm_prepare()
280 ssc_writel(chip->ssc->regs, IER, SSC_BIT(IER_ENDTX)); in snd_at73c213_pcm_trigger()
281 ssc_writel(chip->ssc->regs, PDC_PTCR, SSC_BIT(PDC_PTCR_TXTEN)); in snd_at73c213_pcm_trigger()
284 ssc_writel(chip->ssc->regs, PDC_PTCR, SSC_BIT(PDC_PTCR_TXTDIS)); in snd_at73c213_pcm_trigger()
285 ssc_writel(chip->ssc->regs, IDR, SSC_BIT(IDR_ENDTX)); in snd_at73c213_pcm_trigger()
306 bytes = ssc_readl(chip->ssc->regs, PDC_TPR) in snd_at73c213_pcm_pointer()
343 SNDRV_DMA_TYPE_DEV, &chip->ssc->pdev->dev, in snd_at73c213_pcm_new()
362 status = ssc_readl(chip->ssc->regs, IMR); in snd_at73c213_interrupt()
374 ssc_writel(chip->ssc->regs, PDC_TNPR, in snd_at73c213_interrupt()
376 ssc_writel(chip->ssc->regs, PDC_TNCR, in snd_at73c213_interrupt()
381 ssc_readl(chip->ssc->regs, IMR); in snd_at73c213_interrupt()
747 ssc_writel(chip->ssc->regs, TCMR, in snd_at73c213_ssc_init()
759 ssc_writel(chip->ssc->regs, TFMR, in snd_at73c213_ssc_init()
851 ssc_writel(chip->ssc->regs, CR, SSC_BIT(CR_TXEN)); in snd_at73c213_chip_init()
865 ssc_writel(chip->ssc->regs, CR, SSC_BIT(CR_TXDIS)); in snd_at73c213_dev_free()
883 irq = chip->ssc->irq; in snd_at73c213_dev_init()
892 clk_enable(chip->ssc->clk); in snd_at73c213_dev_init()
932 clk_disable(chip->ssc->clk); in snd_at73c213_dev_init()
972 chip->ssc = ssc_request(board->ssc_id); in snd_at73c213_probe()
973 if (IS_ERR(chip->ssc)) { in snd_at73c213_probe()
974 dev_dbg(&spi->dev, "could not get ssc%d device\n", in snd_at73c213_probe()
976 retval = PTR_ERR(chip->ssc); in snd_at73c213_probe()
997 ssc_free(chip->ssc); in snd_at73c213_probe()
1011 clk_enable(chip->ssc->clk); in snd_at73c213_remove()
1012 ssc_writel(chip->ssc->regs, CR, SSC_BIT(CR_TXDIS)); in snd_at73c213_remove()
1013 clk_disable(chip->ssc->clk); in snd_at73c213_remove()
1067 ssc_free(chip->ssc); in snd_at73c213_remove()
1080 ssc_writel(chip->ssc->regs, CR, SSC_BIT(CR_TXDIS)); in snd_at73c213_suspend()
1081 clk_disable(chip->ssc->clk); in snd_at73c213_suspend()
1093 clk_enable(chip->ssc->clk); in snd_at73c213_resume()
1094 ssc_writel(chip->ssc->regs, CR, SSC_BIT(CR_TXEN)); in snd_at73c213_resume()
1119 MODULE_DESCRIPTION("Sound driver for AT73C213 with Atmel SSC");