• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/sound/soc/pxa/

Lines Matching defs:ssp

2  * pxa-ssp.c  --  ALSA Soc Audio Layer
36 #include <plat/ssp.h>
39 #include "pxa-ssp.h"
45 struct ssp_device *ssp;
56 static void dump_registers(struct ssp_device *ssp)
58 dev_dbg(&ssp->pdev->dev, "SSCR0 0x%08x SSCR1 0x%08x SSTO 0x%08x\n",
59 pxa_ssp_read_reg(ssp, SSCR0), pxa_ssp_read_reg(ssp, SSCR1),
60 pxa_ssp_read_reg(ssp, SSTO));
62 dev_dbg(&ssp->pdev->dev, "SSPSP 0x%08x SSSR 0x%08x SSACD 0x%08x\n",
63 pxa_ssp_read_reg(ssp, SSPSP), pxa_ssp_read_reg(ssp, SSSR),
64 pxa_ssp_read_reg(ssp, SSACD));
67 static void pxa_ssp_enable(struct ssp_device *ssp)
71 sscr0 = __raw_readl(ssp->mmio_base + SSCR0) | SSCR0_SSE;
72 __raw_writel(sscr0, ssp->mmio_base + SSCR0);
75 static void pxa_ssp_disable(struct ssp_device *ssp)
79 sscr0 = __raw_readl(ssp->mmio_base + SSCR0) & ~SSCR0_SSE;
80 __raw_writel(sscr0, ssp->mmio_base + SSCR0);
89 pxa_ssp_get_dma_params(struct ssp_device *ssp, int width4, int out)
97 snprintf(dma->name, 20, "SSP%d PCM %s %s", ssp->port_id,
101 dma->params.drcmr = &DRCMR(out ? ssp->drcmr_tx : ssp->drcmr_rx);
105 dma->params.dev_addr = ssp->phys_base + SSDR;
116 struct ssp_device *ssp = priv->ssp;
120 clk_enable(ssp->clk);
121 pxa_ssp_disable(ssp);
136 struct ssp_device *ssp = priv->ssp;
139 pxa_ssp_disable(ssp);
140 clk_disable(ssp->clk);
152 struct ssp_device *ssp = priv->ssp;
155 clk_enable(ssp->clk);
157 priv->cr0 = __raw_readl(ssp->mmio_base + SSCR0);
158 priv->cr1 = __raw_readl(ssp->mmio_base + SSCR1);
159 priv->to = __raw_readl(ssp->mmio_base + SSTO);
160 priv->psp = __raw_readl(ssp->mmio_base + SSPSP);
162 pxa_ssp_disable(ssp);
163 clk_disable(ssp->clk);
170 struct ssp_device *ssp = priv->ssp;
173 clk_enable(ssp->clk);
175 __raw_writel(sssr, ssp->mmio_base + SSSR);
176 __raw_writel(priv->cr0 & ~SSCR0_SSE, ssp->mmio_base + SSCR0);
177 __raw_writel(priv->cr1, ssp->mmio_base + SSCR1);
178 __raw_writel(priv->to, ssp->mmio_base + SSTO);
179 __raw_writel(priv->psp, ssp->mmio_base + SSPSP);
182 pxa_ssp_enable(ssp);
184 clk_disable(ssp->clk);
198 static void pxa_ssp_set_scr(struct ssp_device *ssp, u32 div)
200 u32 sscr0 = pxa_ssp_read_reg(ssp, SSCR0);
202 if (cpu_is_pxa25x() && ssp->type == PXA25x_SSP) {
209 pxa_ssp_write_reg(ssp, SSCR0, sscr0);
215 static u32 pxa_ssp_get_scr(struct ssp_device *ssp)
217 u32 sscr0 = pxa_ssp_read_reg(ssp, SSCR0);
220 if (cpu_is_pxa25x() && ssp->type == PXA25x_SSP)
234 struct ssp_device *ssp = priv->ssp;
237 u32 sscr0 = pxa_ssp_read_reg(ssp, SSCR0) &
240 dev_dbg(&ssp->pdev->dev,
265 pxa_ssp_set_scr(ssp, 1);
275 clk_disable(ssp->clk);
276 val = pxa_ssp_read_reg(ssp, SSCR0) | sscr0;
277 pxa_ssp_write_reg(ssp, SSCR0, val);
279 clk_enable(ssp->clk);
291 struct ssp_device *ssp = priv->ssp;
296 val = (pxa_ssp_read_reg(ssp, SSACD) & ~0x7) | SSACD_ACDS(div);
297 pxa_ssp_write_reg(ssp, SSACD, val);
300 val = pxa_ssp_read_reg(ssp, SSACD);
323 pxa_ssp_write_reg(ssp, SSACD, val);
326 pxa_ssp_set_scr(ssp, div);
342 struct ssp_device *ssp = priv->ssp;
343 u32 ssacd = pxa_ssp_read_reg(ssp, SSACD) & ~0x70;
347 pxa_ssp_write_reg(ssp, SSACDD, 0);
385 pxa_ssp_write_reg(ssp, SSACDD, val);
389 dev_dbg(&ssp->pdev->dev,
399 pxa_ssp_write_reg(ssp, SSACD, ssacd);
411 struct ssp_device *ssp = priv->ssp;
414 sscr0 = pxa_ssp_read_reg(ssp, SSCR0);
431 pxa_ssp_write_reg(ssp, SSTSA, tx_mask);
432 pxa_ssp_write_reg(ssp, SSRSA, rx_mask);
434 pxa_ssp_write_reg(ssp, SSCR0, sscr0);
446 struct ssp_device *ssp = priv->ssp;
449 sscr1 = pxa_ssp_read_reg(ssp, SSCR1);
454 pxa_ssp_write_reg(ssp, SSCR1, sscr1);
468 struct ssp_device *ssp = priv->ssp;
478 if (pxa_ssp_read_reg(ssp, SSCR0) & SSCR0_SSE) {
479 dev_err(&ssp->pdev->dev,
485 sscr0 = pxa_ssp_read_reg(ssp, SSCR0) &
537 pxa_ssp_write_reg(ssp, SSCR0, sscr0);
538 pxa_ssp_write_reg(ssp, SSCR1, sscr1);
539 pxa_ssp_write_reg(ssp, SSPSP, sspsp);
541 dump_registers(ssp);
563 struct ssp_device *ssp = priv->ssp;
568 int ttsa = pxa_ssp_read_reg(ssp, SSTSA) & 0xf;
580 dma_data = pxa_ssp_get_dma_params(ssp,
587 if (pxa_ssp_read_reg(ssp, SSCR0) & SSCR0_SSE)
591 sscr0 = pxa_ssp_read_reg(ssp, SSCR0) & ~(SSCR0_DSS | SSCR0_EDSS);
592 pxa_ssp_write_reg(ssp, SSCR0, sscr0);
595 sscr0 = pxa_ssp_read_reg(ssp, SSCR0);
611 pxa_ssp_write_reg(ssp, SSCR0, sscr0);
615 sspsp = pxa_ssp_read_reg(ssp, SSPSP);
617 if ((pxa_ssp_get_scr(ssp) == 4) && (width == 16)) {
651 pxa_ssp_write_reg(ssp, SSPSP, sspsp);
661 dev_err(&ssp->pdev->dev, "No TDM timeslot configured\n");
665 dump_registers(ssp);
677 struct ssp_device *ssp = priv->ssp;
682 pxa_ssp_enable(ssp);
685 val = pxa_ssp_read_reg(ssp, SSCR1);
690 pxa_ssp_write_reg(ssp, SSCR1, val);
691 val = pxa_ssp_read_reg(ssp, SSSR);
692 pxa_ssp_write_reg(ssp, SSSR, val);
695 val = pxa_ssp_read_reg(ssp, SSCR1);
700 pxa_ssp_write_reg(ssp, SSCR1, val);
701 pxa_ssp_enable(ssp);
704 val = pxa_ssp_read_reg(ssp, SSCR1);
709 pxa_ssp_write_reg(ssp, SSCR1, val);
712 pxa_ssp_disable(ssp);
715 val = pxa_ssp_read_reg(ssp, SSCR1);
720 pxa_ssp_write_reg(ssp, SSCR1, val);
727 dump_registers(ssp);
742 priv->ssp = pxa_ssp_request(dai->id + 1, "SoC audio");
743 if (priv->ssp == NULL) {
762 pxa_ssp_free(priv->ssp);