/* 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 0 x00
#define DAVINCI_MCASP_PWREMUMGT_REG 0 x04
#define DAVINCI_MCASP_PFUNC_REG 0 x10
#define DAVINCI_MCASP_PDIR_REG 0 x14
#define DAVINCI_MCASP_PDOUT_REG 0 x18
#define DAVINCI_MCASP_PDSET_REG 0 x1c
#define DAVINCI_MCASP_PDCLR_REG 0 x20
#define DAVINCI_MCASP_TLGC_REG 0 x30
#define DAVINCI_MCASP_TLMR_REG 0 x34
#define DAVINCI_MCASP_GBLCTL_REG 0 x44
#define DAVINCI_MCASP_AMUTE_REG 0 x48
#define DAVINCI_MCASP_LBCTL_REG 0 x4c
#define DAVINCI_MCASP_TXDITCTL_REG 0 x50
#define DAVINCI_MCASP_GBLCTLR_REG 0 x60
#define DAVINCI_MCASP_RXMASK_REG 0 x64
#define DAVINCI_MCASP_RXFMT_REG 0 x68
#define DAVINCI_MCASP_RXFMCTL_REG 0 x6c
#define DAVINCI_MCASP_ACLKRCTL_REG 0 x70
#define DAVINCI_MCASP_AHCLKRCTL_REG 0 x74
#define DAVINCI_MCASP_RXTDM_REG 0 x78
#define DAVINCI_MCASP_EVTCTLR_REG 0 x7c
#define DAVINCI_MCASP_RXSTAT_REG 0 x80
#define DAVINCI_MCASP_RXTDMSLOT_REG 0 x84
#define DAVINCI_MCASP_RXCLKCHK_REG 0 x88
#define DAVINCI_MCASP_REVTCTL_REG 0 x8c
#define DAVINCI_MCASP_GBLCTLX_REG 0 xa0
#define DAVINCI_MCASP_TXMASK_REG 0 xa4
#define DAVINCI_MCASP_TXFMT_REG 0 xa8
#define DAVINCI_MCASP_TXFMCTL_REG 0 xac
#define DAVINCI_MCASP_ACLKXCTL_REG 0 xb0
#define DAVINCI_MCASP_AHCLKXCTL_REG 0 xb4
#define DAVINCI_MCASP_TXTDM_REG 0 xb8
#define DAVINCI_MCASP_EVTCTLX_REG 0 xbc
#define DAVINCI_MCASP_TXSTAT_REG 0 xc0
#define DAVINCI_MCASP_TXTDMSLOT_REG 0 xc4
#define DAVINCI_MCASP_TXCLKCHK_REG 0 xc8
#define DAVINCI_MCASP_XEVTCTL_REG 0 xcc
/* Left(even TDM Slot) Channel Status Register File */
#define DAVINCI_MCASP_DITCSRA_REG 0 x100
/* Right(odd TDM slot) Channel Status Register File */
#define DAVINCI_MCASP_DITCSRB_REG 0 x118
/* Left(even TDM slot) User Data Register File */
#define DAVINCI_MCASP_DITUDRA_REG 0 x130
/* Right(odd TDM Slot) User Data Register File */
#define DAVINCI_MCASP_DITUDRB_REG 0 x148
/* Serializer n Control Register */
#define DAVINCI_MCASP_XRSRCTL_BASE_REG 0 x180
#define DAVINCI_MCASP_XRSRCTL_REG(n) (DAVINCI_MCASP_XRSRCTL_BASE_REG + \
(n << 2 ))
/* Transmit Buffer for Serializer n */
#define DAVINCI_MCASP_TXBUF_REG(n) (0 x200 + (n << 2 ))
/* Receive Buffer for Serializer n */
#define DAVINCI_MCASP_RXBUF_REG(n) (0 x280 + (n << 2 ))
/* McASP FIFO Registers */
#define DAVINCI_MCASP_V2_AFIFO_BASE (0 x1010)
#define DAVINCI_MCASP_V3_AFIFO_BASE (0 x1000)
/* FIFO register offsets from AFIFO base */
#define MCASP_WFIFOCTL_OFFSET (0 x0)
#define MCASP_WFIFOSTS_OFFSET (0 x4)
#define MCASP_RFIFOCTL_OFFSET (0 x8)
#define MCASP_RFIFOSTS_OFFSET (0 xc)
/*
* 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 0 x1f
/*
* 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 0 x1f
/*
* 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 0 xfff
/*
* 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 0 xfff
/*
* DAVINCI_MCASP_XRSRCTL_BASE_REG - Serializer Control Register Bits
*/
#define MODE(val) (val)
#define DISMOD_3STATE (0 x0)
#define DISMOD_LOW (0 x2 << 2 )
#define DISMOD_HIGH (0 x3 << 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 (0 xFF << 8 )
#define NUMEVT(x) (((x) & 0 xFF) << 8 )
#define NUMDMA_MASK (0 xFF)
/* 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 */
Messung V0.5 in Prozent C=96 H=93 G=94
¤ Dauer der Verarbeitung: 0.8 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland