308 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			308 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-only */
 | |
| /*
 | |
|  * ALSA SoC McASP Audio Layer for TI DAVINCI processor
 | |
|  *
 | |
|  * MCASP related definitions
 | |
|  *
 | |
|  * Author: Nirmal Pandey <n-pandey@ti.com>,
 | |
|  *         Suresh Rajashekara <suresh.r@ti.com>
 | |
|  *         Steve Chen <schen@.mvista.com>
 | |
|  *
 | |
|  * Copyright:   (C) 2009 MontaVista Software, Inc., <source@mvista.com>
 | |
|  * Copyright:   (C) 2009  Texas Instruments, India
 | |
|  */
 | |
| 
 | |
| #ifndef DAVINCI_MCASP_H
 | |
| #define DAVINCI_MCASP_H
 | |
| 
 | |
| /*
 | |
|  * McASP register definitions
 | |
|  */
 | |
| #define DAVINCI_MCASP_PID_REG		0x00
 | |
| #define DAVINCI_MCASP_PWREMUMGT_REG	0x04
 | |
| 
 | |
| #define DAVINCI_MCASP_PFUNC_REG		0x10
 | |
| #define DAVINCI_MCASP_PDIR_REG		0x14
 | |
| #define DAVINCI_MCASP_PDOUT_REG		0x18
 | |
| #define DAVINCI_MCASP_PDSET_REG		0x1c
 | |
| 
 | |
| #define DAVINCI_MCASP_PDCLR_REG		0x20
 | |
| 
 | |
| #define DAVINCI_MCASP_TLGC_REG		0x30
 | |
| #define DAVINCI_MCASP_TLMR_REG		0x34
 | |
| 
 | |
| #define DAVINCI_MCASP_GBLCTL_REG	0x44
 | |
| #define DAVINCI_MCASP_AMUTE_REG		0x48
 | |
| #define DAVINCI_MCASP_LBCTL_REG		0x4c
 | |
| 
 | |
| #define DAVINCI_MCASP_TXDITCTL_REG	0x50
 | |
| 
 | |
| #define DAVINCI_MCASP_GBLCTLR_REG	0x60
 | |
| #define DAVINCI_MCASP_RXMASK_REG	0x64
 | |
| #define DAVINCI_MCASP_RXFMT_REG		0x68
 | |
| #define DAVINCI_MCASP_RXFMCTL_REG	0x6c
 | |
| 
 | |
| #define DAVINCI_MCASP_ACLKRCTL_REG	0x70
 | |
| #define DAVINCI_MCASP_AHCLKRCTL_REG	0x74
 | |
| #define DAVINCI_MCASP_RXTDM_REG		0x78
 | |
| #define DAVINCI_MCASP_EVTCTLR_REG	0x7c
 | |
| 
 | |
| #define DAVINCI_MCASP_RXSTAT_REG	0x80
 | |
| #define DAVINCI_MCASP_RXTDMSLOT_REG	0x84
 | |
| #define DAVINCI_MCASP_RXCLKCHK_REG	0x88
 | |
| #define DAVINCI_MCASP_REVTCTL_REG	0x8c
 | |
| 
 | |
| #define DAVINCI_MCASP_GBLCTLX_REG	0xa0
 | |
| #define DAVINCI_MCASP_TXMASK_REG	0xa4
 | |
| #define DAVINCI_MCASP_TXFMT_REG		0xa8
 | |
| #define DAVINCI_MCASP_TXFMCTL_REG	0xac
 | |
| 
 | |
| #define DAVINCI_MCASP_ACLKXCTL_REG	0xb0
 | |
| #define DAVINCI_MCASP_AHCLKXCTL_REG	0xb4
 | |
| #define DAVINCI_MCASP_TXTDM_REG		0xb8
 | |
| #define DAVINCI_MCASP_EVTCTLX_REG	0xbc
 | |
| 
 | |
| #define DAVINCI_MCASP_TXSTAT_REG	0xc0
 | |
| #define DAVINCI_MCASP_TXTDMSLOT_REG	0xc4
 | |
| #define DAVINCI_MCASP_TXCLKCHK_REG	0xc8
 | |
| #define DAVINCI_MCASP_XEVTCTL_REG	0xcc
 | |
| 
 | |
| /* Left(even TDM Slot) Channel Status Register File */
 | |
| #define DAVINCI_MCASP_DITCSRA_REG	0x100
 | |
| /* Right(odd TDM slot) Channel Status Register File */
 | |
| #define DAVINCI_MCASP_DITCSRB_REG	0x118
 | |
| /* Left(even TDM slot) User Data Register File */
 | |
| #define DAVINCI_MCASP_DITUDRA_REG	0x130
 | |
| /* Right(odd TDM Slot) User Data Register File */
 | |
| #define DAVINCI_MCASP_DITUDRB_REG	0x148
 | |
| 
 | |
| /* Serializer n Control Register */
 | |
| #define DAVINCI_MCASP_XRSRCTL_BASE_REG	0x180
 | |
| #define DAVINCI_MCASP_XRSRCTL_REG(n)	(DAVINCI_MCASP_XRSRCTL_BASE_REG + \
 | |
| 						(n << 2))
 | |
| 
 | |
| /* Transmit Buffer for Serializer n */
 | |
| #define DAVINCI_MCASP_TXBUF_REG(n)	(0x200 + (n << 2))
 | |
| /* Receive Buffer for Serializer n */
 | |
| #define DAVINCI_MCASP_RXBUF_REG(n)	(0x280 + (n << 2))
 | |
| 
 | |
| /* McASP FIFO Registers */
 | |
| #define DAVINCI_MCASP_V2_AFIFO_BASE	(0x1010)
 | |
| #define DAVINCI_MCASP_V3_AFIFO_BASE	(0x1000)
 | |
| 
 | |
| /* FIFO register offsets from AFIFO base */
 | |
| #define MCASP_WFIFOCTL_OFFSET		(0x0)
 | |
| #define MCASP_WFIFOSTS_OFFSET		(0x4)
 | |
| #define MCASP_RFIFOCTL_OFFSET		(0x8)
 | |
| #define MCASP_RFIFOSTS_OFFSET		(0xc)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_PWREMUMGT_REG - Power Down and Emulation Management
 | |
|  *     Register Bits
 | |
|  */
 | |
| #define MCASP_FREE	BIT(0)
 | |
| #define MCASP_SOFT	BIT(1)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_PFUNC_REG - Pin Function / GPIO Enable Register Bits
 | |
|  * DAVINCI_MCASP_PDIR_REG - Pin Direction Register Bits
 | |
|  * DAVINCI_MCASP_PDOUT_REG - Pin output in GPIO mode
 | |
|  * DAVINCI_MCASP_PDSET_REG - Pin input in GPIO mode
 | |
|  */
 | |
| #define PIN_BIT_AXR(n)	(n)
 | |
| #define PIN_BIT_AMUTE	25
 | |
| #define PIN_BIT_ACLKX	26
 | |
| #define PIN_BIT_AHCLKX	27
 | |
| #define PIN_BIT_AFSX	28
 | |
| #define PIN_BIT_ACLKR	29
 | |
| #define PIN_BIT_AHCLKR	30
 | |
| #define PIN_BIT_AFSR	31
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_TXDITCTL_REG - Transmit DIT Control Register Bits
 | |
|  */
 | |
| #define DITEN	BIT(0)	/* Transmit DIT mode enable/disable */
 | |
| #define VA	BIT(2)
 | |
| #define VB	BIT(3)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_TXFMT_REG - Transmit Bitstream Format Register Bits
 | |
|  */
 | |
| #define TXROT(val)	(val)
 | |
| #define TXSEL		BIT(3)
 | |
| #define TXSSZ(val)	(val<<4)
 | |
| #define TXPBIT(val)	(val<<8)
 | |
| #define TXPAD(val)	(val<<13)
 | |
| #define TXORD		BIT(15)
 | |
| #define FSXDLY(val)	(val<<16)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_RXFMT_REG - Receive Bitstream Format Register Bits
 | |
|  */
 | |
| #define RXROT(val)	(val)
 | |
| #define RXSEL		BIT(3)
 | |
| #define RXSSZ(val)	(val<<4)
 | |
| #define RXPBIT(val)	(val<<8)
 | |
| #define RXPAD(val)	(val<<13)
 | |
| #define RXORD		BIT(15)
 | |
| #define FSRDLY(val)	(val<<16)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_TXFMCTL_REG -  Transmit Frame Control Register Bits
 | |
|  */
 | |
| #define FSXPOL		BIT(0)
 | |
| #define AFSXE		BIT(1)
 | |
| #define FSXDUR		BIT(4)
 | |
| #define FSXMOD(val)	(val<<7)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_RXFMCTL_REG - Receive Frame Control Register Bits
 | |
|  */
 | |
| #define FSRPOL		BIT(0)
 | |
| #define AFSRE		BIT(1)
 | |
| #define FSRDUR		BIT(4)
 | |
| #define FSRMOD(val)	(val<<7)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_ACLKXCTL_REG - Transmit Clock Control Register Bits
 | |
|  */
 | |
| #define ACLKXDIV(val)	(val)
 | |
| #define ACLKXE		BIT(5)
 | |
| #define TX_ASYNC	BIT(6)
 | |
| #define ACLKXPOL	BIT(7)
 | |
| #define ACLKXDIV_MASK	0x1f
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_ACLKRCTL_REG Receive Clock Control Register Bits
 | |
|  */
 | |
| #define ACLKRDIV(val)	(val)
 | |
| #define ACLKRE		BIT(5)
 | |
| #define RX_ASYNC	BIT(6)
 | |
| #define ACLKRPOL	BIT(7)
 | |
| #define ACLKRDIV_MASK	0x1f
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_AHCLKXCTL_REG - High Frequency Transmit Clock Control
 | |
|  *     Register Bits
 | |
|  */
 | |
| #define AHCLKXDIV(val)	(val)
 | |
| #define AHCLKXPOL	BIT(14)
 | |
| #define AHCLKXE		BIT(15)
 | |
| #define AHCLKXDIV_MASK	0xfff
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_AHCLKRCTL_REG - High Frequency Receive Clock Control
 | |
|  *     Register Bits
 | |
|  */
 | |
| #define AHCLKRDIV(val)	(val)
 | |
| #define AHCLKRPOL	BIT(14)
 | |
| #define AHCLKRE		BIT(15)
 | |
| #define AHCLKRDIV_MASK	0xfff
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_XRSRCTL_BASE_REG -  Serializer Control Register Bits
 | |
|  */
 | |
| #define MODE(val)	(val)
 | |
| #define DISMOD_3STATE	(0x0)
 | |
| #define DISMOD_LOW	(0x2 << 2)
 | |
| #define DISMOD_HIGH	(0x3 << 2)
 | |
| #define DISMOD_VAL(x)	((x) << 2)
 | |
| #define DISMOD_MASK	DISMOD_HIGH
 | |
| #define TXSTATE		BIT(4)
 | |
| #define RXSTATE		BIT(5)
 | |
| #define SRMOD_MASK	3
 | |
| #define SRMOD_INACTIVE	0
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_LBCTL_REG - Loop Back Control Register Bits
 | |
|  */
 | |
| #define LBEN		BIT(0)
 | |
| #define LBORD		BIT(1)
 | |
| #define LBGENMODE(val)	(val<<2)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_TXTDMSLOT_REG - Transmit TDM Slot Register configuration
 | |
|  */
 | |
| #define TXTDMS(n)	(1<<n)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_RXTDMSLOT_REG - Receive TDM Slot Register configuration
 | |
|  */
 | |
| #define RXTDMS(n)	(1<<n)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_GBLCTL_REG -  Global Control Register Bits
 | |
|  */
 | |
| #define RXCLKRST	BIT(0)	/* Receiver Clock Divider Reset */
 | |
| #define RXHCLKRST	BIT(1)	/* Receiver High Frequency Clock Divider */
 | |
| #define RXSERCLR	BIT(2)	/* Receiver Serializer Clear */
 | |
| #define RXSMRST		BIT(3)	/* Receiver State Machine Reset */
 | |
| #define RXFSRST		BIT(4)	/* Frame Sync Generator Reset */
 | |
| #define TXCLKRST	BIT(8)	/* Transmitter Clock Divider Reset */
 | |
| #define TXHCLKRST	BIT(9)	/* Transmitter High Frequency Clock Divider*/
 | |
| #define TXSERCLR	BIT(10)	/* Transmit Serializer Clear */
 | |
| #define TXSMRST		BIT(11)	/* Transmitter State Machine Reset */
 | |
| #define TXFSRST		BIT(12)	/* Frame Sync Generator Reset */
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_TXSTAT_REG - Transmitter Status Register Bits
 | |
|  * DAVINCI_MCASP_RXSTAT_REG - Receiver Status Register Bits
 | |
|  */
 | |
| #define XRERR		BIT(8) /* Transmit/Receive error */
 | |
| #define XRDATA		BIT(5) /* Transmit/Receive data ready */
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_AMUTE_REG -  Mute Control Register Bits
 | |
|  */
 | |
| #define MUTENA(val)	(val)
 | |
| #define MUTEINPOL	BIT(2)
 | |
| #define MUTEINENA	BIT(3)
 | |
| #define MUTEIN		BIT(4)
 | |
| #define MUTER		BIT(5)
 | |
| #define MUTEX		BIT(6)
 | |
| #define MUTEFSR		BIT(7)
 | |
| #define MUTEFSX		BIT(8)
 | |
| #define MUTEBADCLKR	BIT(9)
 | |
| #define MUTEBADCLKX	BIT(10)
 | |
| #define MUTERXDMAERR	BIT(11)
 | |
| #define MUTETXDMAERR	BIT(12)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_REVTCTL_REG - Receiver DMA Event Control Register bits
 | |
|  */
 | |
| #define RXDATADMADIS	BIT(0)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_XEVTCTL_REG - Transmitter DMA Event Control Register bits
 | |
|  */
 | |
| #define TXDATADMADIS	BIT(0)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_EVTCTLR_REG - Receiver Interrupt Control Register Bits
 | |
|  */
 | |
| #define ROVRN		BIT(0)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_EVTCTLX_REG - Transmitter Interrupt Control Register Bits
 | |
|  */
 | |
| #define XUNDRN		BIT(0)
 | |
| 
 | |
| /*
 | |
|  * DAVINCI_MCASP_W[R]FIFOCTL - Write/Read FIFO Control Register bits
 | |
|  */
 | |
| #define FIFO_ENABLE	BIT(16)
 | |
| #define NUMEVT_MASK	(0xFF << 8)
 | |
| #define NUMEVT(x)	(((x) & 0xFF) << 8)
 | |
| #define NUMDMA_MASK	(0xFF)
 | |
| 
 | |
| /* Source of High-frequency transmit/receive clock */
 | |
| #define MCASP_CLK_HCLK_AHCLK		0 /* AHCLKX/R */
 | |
| #define MCASP_CLK_HCLK_AUXCLK		1 /* Internal functional clock */
 | |
| 
 | |
| /* clock divider IDs */
 | |
| #define MCASP_CLKDIV_AUXCLK		0 /* HCLK divider from AUXCLK */
 | |
| #define MCASP_CLKDIV_BCLK		1 /* BCLK divider from HCLK */
 | |
| #define MCASP_CLKDIV_BCLK_FS_RATIO	2 /* to set BCLK FS ration */
 | |
| 
 | |
| #endif	/* DAVINCI_MCASP_H */
 |