• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/sound/soc/s3c24xx/
1/*  sound/soc/s3c24xx/s3c-pcm.h
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 as
5 * published by the Free Software Foundation.
6 *
7 */
8
9#ifndef __S3C_PCM_H
10#define __S3C_PCM_H __FILE__
11
12/*Register Offsets */
13#define S3C_PCM_CTL	(0x00)
14#define S3C_PCM_CLKCTL	(0x04)
15#define S3C_PCM_TXFIFO	(0x08)
16#define S3C_PCM_RXFIFO	(0x0C)
17#define S3C_PCM_IRQCTL	(0x10)
18#define S3C_PCM_IRQSTAT	(0x14)
19#define S3C_PCM_FIFOSTAT	(0x18)
20#define S3C_PCM_CLRINT	(0x20)
21
22/* PCM_CTL Bit-Fields */
23#define S3C_PCM_CTL_TXDIPSTICK_MASK		(0x3f)
24#define S3C_PCM_CTL_TXDIPSTICK_SHIFT	(13)
25#define S3C_PCM_CTL_RXDIPSTICK_MSK		(0x3f<<7)
26#define S3C_PCM_CTL_TXDMA_EN		(0x1<<6)
27#define S3C_PCM_CTL_RXDMA_EN		(0x1<<5)
28#define S3C_PCM_CTL_TXMSB_AFTER_FSYNC	(0x1<<4)
29#define S3C_PCM_CTL_RXMSB_AFTER_FSYNC	(0x1<<3)
30#define S3C_PCM_CTL_TXFIFO_EN		(0x1<<2)
31#define S3C_PCM_CTL_RXFIFO_EN		(0x1<<1)
32#define S3C_PCM_CTL_ENABLE			(0x1<<0)
33
34/* PCM_CLKCTL Bit-Fields */
35#define S3C_PCM_CLKCTL_SERCLK_EN		(0x1<<19)
36#define S3C_PCM_CLKCTL_SERCLKSEL_PCLK	(0x1<<18)
37#define S3C_PCM_CLKCTL_SCLKDIV_MASK		(0x1ff)
38#define S3C_PCM_CLKCTL_SYNCDIV_MASK		(0x1ff)
39#define S3C_PCM_CLKCTL_SCLKDIV_SHIFT	(9)
40#define S3C_PCM_CLKCTL_SYNCDIV_SHIFT	(0)
41
42/* PCM_TXFIFO Bit-Fields */
43#define S3C_PCM_TXFIFO_DVALID	(0x1<<16)
44#define S3C_PCM_TXFIFO_DATA_MSK	(0xffff<<0)
45
46/* PCM_RXFIFO Bit-Fields */
47#define S3C_PCM_RXFIFO_DVALID	(0x1<<16)
48#define S3C_PCM_RXFIFO_DATA_MSK	(0xffff<<0)
49
50/* PCM_IRQCTL Bit-Fields */
51#define S3C_PCM_IRQCTL_IRQEN		(0x1<<14)
52#define S3C_PCM_IRQCTL_WRDEN		(0x1<<12)
53#define S3C_PCM_IRQCTL_TXEMPTYEN		(0x1<<11)
54#define S3C_PCM_IRQCTL_TXALMSTEMPTYEN	(0x1<<10)
55#define S3C_PCM_IRQCTL_TXFULLEN		(0x1<<9)
56#define S3C_PCM_IRQCTL_TXALMSTFULLEN	(0x1<<8)
57#define S3C_PCM_IRQCTL_TXSTARVEN		(0x1<<7)
58#define S3C_PCM_IRQCTL_TXERROVRFLEN		(0x1<<6)
59#define S3C_PCM_IRQCTL_RXEMPTEN		(0x1<<5)
60#define S3C_PCM_IRQCTL_RXALMSTEMPTEN	(0x1<<4)
61#define S3C_PCM_IRQCTL_RXFULLEN		(0x1<<3)
62#define S3C_PCM_IRQCTL_RXALMSTFULLEN	(0x1<<2)
63#define S3C_PCM_IRQCTL_RXSTARVEN		(0x1<<1)
64#define S3C_PCM_IRQCTL_RXERROVRFLEN		(0x1<<0)
65
66/* PCM_IRQSTAT Bit-Fields */
67#define S3C_PCM_IRQSTAT_IRQPND		(0x1<<13)
68#define S3C_PCM_IRQSTAT_WRD_XFER		(0x1<<12)
69#define S3C_PCM_IRQSTAT_TXEMPTY		(0x1<<11)
70#define S3C_PCM_IRQSTAT_TXALMSTEMPTY	(0x1<<10)
71#define S3C_PCM_IRQSTAT_TXFULL		(0x1<<9)
72#define S3C_PCM_IRQSTAT_TXALMSTFULL		(0x1<<8)
73#define S3C_PCM_IRQSTAT_TXSTARV		(0x1<<7)
74#define S3C_PCM_IRQSTAT_TXERROVRFL		(0x1<<6)
75#define S3C_PCM_IRQSTAT_RXEMPT		(0x1<<5)
76#define S3C_PCM_IRQSTAT_RXALMSTEMPT		(0x1<<4)
77#define S3C_PCM_IRQSTAT_RXFULL		(0x1<<3)
78#define S3C_PCM_IRQSTAT_RXALMSTFULL		(0x1<<2)
79#define S3C_PCM_IRQSTAT_RXSTARV		(0x1<<1)
80#define S3C_PCM_IRQSTAT_RXERROVRFL		(0x1<<0)
81
82/* PCM_FIFOSTAT Bit-Fields */
83#define S3C_PCM_FIFOSTAT_TXCNT_MSK		(0x3f<<14)
84#define S3C_PCM_FIFOSTAT_TXFIFOEMPTY	(0x1<<13)
85#define S3C_PCM_FIFOSTAT_TXFIFOALMSTEMPTY	(0x1<<12)
86#define S3C_PCM_FIFOSTAT_TXFIFOFULL		(0x1<<11)
87#define S3C_PCM_FIFOSTAT_TXFIFOALMSTFULL	(0x1<<10)
88#define S3C_PCM_FIFOSTAT_RXCNT_MSK		(0x3f<<4)
89#define S3C_PCM_FIFOSTAT_RXFIFOEMPTY	(0x1<<3)
90#define S3C_PCM_FIFOSTAT_RXFIFOALMSTEMPTY	(0x1<<2)
91#define S3C_PCM_FIFOSTAT_RXFIFOFULL		(0x1<<1)
92#define S3C_PCM_FIFOSTAT_RXFIFOALMSTFULL	(0x1<<0)
93
94#define S3C_PCM_CLKSRC_PCLK	0
95#define S3C_PCM_CLKSRC_MUX	1
96
97#define S3C_PCM_SCLK_PER_FS	0
98
99/**
100 * struct s3c_pcm_info - S3C PCM Controller information
101 * @dev: The parent device passed to use from the probe.
102 * @regs: The pointer to the device register block.
103 * @dma_playback: DMA information for playback channel.
104 * @dma_capture: DMA information for capture channel.
105 */
106struct s3c_pcm_info {
107	spinlock_t lock;
108	struct device	*dev;
109	void __iomem	*regs;
110
111	unsigned int sclk_per_fs;
112
113	/* Whether to keep PCMSCLK enabled even when idle(no active xfer) */
114	unsigned int idleclk;
115
116	struct clk	*pclk;
117	struct clk	*cclk;
118
119	struct s3c_dma_params	*dma_playback;
120	struct s3c_dma_params	*dma_capture;
121};
122
123#endif /* __S3C_PCM_H */
124