/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * arch/arm/mach-prima2/include/mach/sirfsoc_usp.h * * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. */ #ifndef _SIRF_USP_H #define _SIRF_USP_H /* USP Registers */ #define USP_MODE1 0x00 #define USP_MODE2 0x04 #define USP_TX_FRAME_CTRL 0x08 #define USP_RX_FRAME_CTRL 0x0C #define USP_TX_RX_ENABLE 0x10 #define USP_INT_ENABLE 0x14 #define USP_INT_STATUS 0x18 #define USP_PIN_IO_DATA 0x1C #define USP_RISC_DSP_MODE 0x20 #define USP_AYSNC_PARAM_REG 0x24 #define USP_IRDA_X_MODE_DIV 0x28 #define USP_SM_CFG 0x2C #define USP_TX_DMA_IO_CTRL 0x100 #define USP_TX_DMA_IO_LEN 0x104 #define USP_TX_FIFO_CTRL 0x108 #define USP_TX_FIFO_LEVEL_CHK 0x10C #define USP_TX_FIFO_OP 0x110 #define USP_TX_FIFO_STATUS 0x114 #define USP_TX_FIFO_DATA 0x118 #define USP_RX_DMA_IO_CTRL 0x120 #define USP_RX_DMA_IO_LEN 0x124 #define USP_RX_FIFO_CTRL 0x128 #define USP_RX_FIFO_LEVEL_CHK 0x12C #define USP_RX_FIFO_OP 0x130 #define USP_RX_FIFO_STATUS 0x134 #define USP_RX_FIFO_DATA 0x138 /* USP MODE register-1 */ #define USP_SYNC_MODE 0x00000001 #define USP_CLOCK_MODE_SLAVE 0x00000002 #define USP_LOOP_BACK_EN 0x00000004 #define USP_HPSIR_EN 0x00000008 #define USP_ENDIAN_CTRL_LSBF 0x00000010 #define USP_EN 0x00000020 #define USP_RXD_ACT_EDGE_FALLING 0x00000040 #define USP_TXD_ACT_EDGE_FALLING 0x00000080 #define USP_RFS_ACT_LEVEL_LOGIC1 0x00000100 #define USP_TFS_ACT_LEVEL_LOGIC1 0x00000200 #define USP_SCLK_IDLE_MODE_TOGGLE 0x00000400 #define USP_SCLK_IDLE_LEVEL_LOGIC1 0x00000800 #define USP_SCLK_PIN_MODE_IO 0x00001000 #define USP_RFS_PIN_MODE_IO 0x00002000 #define USP_TFS_PIN_MODE_IO 0x00004000 #define USP_RXD_PIN_MODE_IO 0x00008000 #define USP_TXD_PIN_MODE_IO 0x00010000 #define USP_SCLK_IO_MODE_INPUT 0x00020000 #define USP_RFS_IO_MODE_INPUT 0x00040000 #define USP_TFS_IO_MODE_INPUT 0x00080000 #define USP_RXD_IO_MODE_INPUT 0x00100000 #define USP_TXD_IO_MODE_INPUT 0x00200000 #define USP_IRDA_WIDTH_DIV_MASK 0x3FC00000 #define USP_IRDA_WIDTH_DIV_OFFSET 0 #define USP_IRDA_IDLE_LEVEL_HIGH 0x40000000 #define USP_TX_UFLOW_REPEAT_ZERO 0x80000000 #define USP_TX_ENDIAN_MODE 0x00000020 #define USP_RX_ENDIAN_MODE 0x00000020 /* USP Mode Register-2 */ #define USP_RXD_DELAY_LEN_MASK 0x000000FF #define USP_RXD_DELAY_LEN_OFFSET 0 #define USP_TXD_DELAY_LEN_MASK 0x0000FF00 #define USP_TXD_DELAY_LEN_OFFSET 8 #define USP_ENA_CTRL_MODE 0x00010000 #define USP_FRAME_CTRL_MODE 0x00020000 #define USP_TFS_SOURCE_MODE 0x00040000 #define USP_TFS_MS_MODE 0x00080000 #define USP_CLK_DIVISOR_MASK 0x7FE00000 #define USP_CLK_DIVISOR_OFFSET 21 #define USP_TFS_CLK_SLAVE_MODE (1<<20) #define USP_RFS_CLK_SLAVE_MODE (1<<19) #define USP_IRDA_DATA_WIDTH 0x80000000 /* USP Transmit Frame Control Register */ #define USP_TXC_DATA_LEN_MASK 0x000000FF #define USP_TXC_DATA_LEN_OFFSET 0 #define USP_TXC_SYNC_LEN_MASK 0x0000FF00 #define USP_TXC_SYNC_LEN_OFFSET 8 #define USP_TXC_FRAME_LEN_MASK 0x00FF0000 #define USP_TXC_FRAME_LEN_OFFSET 16 #define USP_TXC_SHIFTER_LEN_MASK 0x1F000000 #define USP_TXC_SHIFTER_LEN_OFFSET 24 #define USP_TXC_SLAVE_CLK_SAMPLE 0x20000000 #define USP_TXC_CLK_DIVISOR_MASK 0xC0000000 #define USP_TXC_CLK_DIVISOR_OFFSET 30 /* USP Receive Frame Control Register */ #define USP_RXC_DATA_LEN_MASK 0x000000FF #define USP_RXC_DATA_LEN_OFFSET 0 #define USP_RXC_FRAME_LEN_MASK 0x0000FF00 #define USP_RXC_FRAME_LEN_OFFSET 8 #define USP_RXC_SHIFTER_LEN_MASK 0x001F0000 #define USP_RXC_SHIFTER_LEN_OFFSET 16 #define USP_START_EDGE_MODE 0x00800000 #define USP_I2S_SYNC_CHG 0x00200000 #define USP_RXC_CLK_DIVISOR_MASK 0x0F000000 #define USP_RXC_CLK_DIVISOR_OFFSET 24 #define USP_SINGLE_SYNC_MODE 0x00400000 /* Tx - RX Enable Register */ #define USP_RX_ENA 0x00000001 #define USP_TX_ENA 0x00000002 /* USP Interrupt Enable and status Register */ #define USP_RX_DONE_INT 0x00000001 #define USP_TX_DONE_INT 0x00000002 #define USP_RX_OFLOW_INT 0x00000004 #define USP_TX_UFLOW_INT 0x00000008 #define USP_RX_IO_DMA_INT 0x00000010 #define USP_TX_IO_DMA_INT 0x00000020 #define USP_RXFIFO_FULL_INT 0x00000040 #define USP_TXFIFO_EMPTY_INT 0x00000080 #define USP_RXFIFO_THD_INT 0x00000100 #define USP_TXFIFO_THD_INT 0x00000200 #define USP_UART_FRM_ERR_INT 0x00000400 #define USP_RX_TIMEOUT_INT 0x00000800 #define USP_TX_ALLOUT_INT 0x00001000 #define USP_RXD_BREAK_INT 0x00008000 /* All possible TX interruots */ #define USP_TX_INTERRUPT (USP_TX_DONE_INT|USP_TX_UFLOW_INT|\ USP_TX_IO_DMA_INT|\ USP_TXFIFO_EMPTY_INT|\ USP_TXFIFO_THD_INT) /* All possible RX interruots */ #define USP_RX_INTERRUPT (USP_RX_DONE_INT|USP_RX_OFLOW_INT|\ USP_RX_IO_DMA_INT|\ USP_RXFIFO_FULL_INT|\ USP_RXFIFO_THD_INT|\ USP_RX_TIMEOUT_INT) #define USP_INT_ALL 0x1FFF /* USP Pin I/O Data Register */ #define USP_RFS_PIN_VALUE_MASK 0x00000001 #define USP_TFS_PIN_VALUE_MASK 0x00000002 #define USP_RXD_PIN_VALUE_MASK 0x00000004 #define USP_TXD_PIN_VALUE_MASK 0x00000008 #define USP_SCLK_PIN_VALUE_MASK 0x00000010 /* USP RISC/DSP Mode Register */ #define USP_RISC_DSP_SEL 0x00000001 /* USP ASYNC PARAMETER Register*/ #define USP_ASYNC_TIMEOUT_MASK 0x0000FFFF #define USP_ASYNC_TIMEOUT_OFFSET 0 #define USP_ASYNC_TIMEOUT(x) (((x)&USP_ASYNC_TIMEOUT_MASK) \ <