123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- /*****************************************************************************
- *
- * Copyright Andes Technology Corporation 2014
- * All Rights Reserved.
- *
- * Revision History:
- *
- * Jan.11.2014 Created.
- ****************************************************************************/
- #ifndef __AE210_DEFS_H__
- #define __AE210_DEFS_H__
- /*****************************************************************************
- * AHB_SLAVE_4_7 - AE210P AHB
- ****************************************************************************/
- /*****************************************************************************
- * BMC (APB Decoder)- AE210P AHB
- ****************************************************************************/
- /*****************************************************************************
- * OSC - AE210P OSC
- ****************************************************************************/
- /* OSC control Register (+0x00) */
- #define OSC_CTRL_OVL_SZ_SHIFT 24
- #define OSC_CTRL_OVLVALID_SHIFT 31
- #define OSC_CTRL_OVL_SZ_MASK 0x07000000
- #define OSC_CTRL_OVLVALID_MASK 0x80000000
- /* OSC Fixed Region Size Register (+0x04) */
- #define OSC_OVLFS_OVL_FSZ_MASK 0x000FFFFF
- /* OSC Overlay Region Base Register (+0x08) */
- #define OSC_OVLBASE_OVL_BASE_MASK 0x000FFFFF
- /* OSC Overlay Region End Register (+0x0C) */
- #define OSC_OVLEND_OVL_END_MASK 0x001FFFFF
- /*****************************************************************************
- * DMAC - AE210P AHB
- ****************************************************************************/
- /*****************************************************************************
- * AHB_SLAVE_0_3 - AE210P AHB
- ****************************************************************************/
- //TODO
- //finish this table
- /*****************************************************************************
- * APBBR(N/A) - AE210P AHB to APB Bridge
- ****************************************************************************/
- /*****************************************************************************
- * SMU - AE210P Core APB
- ****************************************************************************/
- /*****************************************************************************
- * UARTx - AE210P Core APB
- ****************************************************************************/
- /* Macros for specifying which UART to use. */
- #define UARTC_NUM_DEVICES 2
- /* IER Register (+0x04) */
- #define UARTC_IER_RDR 0x01 /* Data Ready Enable */
- #define UARTC_IER_THRE 0x02 /* THR Empty Enable */
- #define UARTC_IER_RLS 0x04 /* Receive Line Status Enable */
- #define UARTC_CIER_MS 0x08 /* Modem Staus Enable */
- /* IIR Register (+0x08) */
- #define UARTC_IIR_NONE 0x01 /* No interrupt pending */
- #define UARTC_IIR_RLS 0x06 /* Receive Line Status */
- #define UARTC_IIR_RDR 0x04 /* Receive Data Ready */
- #define UARTC_IIR_RTO 0x0c /* Receive Time Out */
- #define UARTC_IIR_THRE 0x02 /* THR Empty */
- #define UARTC_IIR_MODEM 0x00 /* Modem Status */
- #define UARTC_IIR_INT_MASK 0x0f /* Initerrupt Status Bits Mask */
- #define UARTC_IIR_TFIFO_FULL 0x10 /* TX FIFO full */
- #define UARTC_IIR_FIFO_EN 0xc0 /* FIFO mode is enabled, set when FCR[0] is 1 */
- /* FCR Register (+0x08) */
- #define UARTC_FCR_FIFO_EN 0x01 /* FIFO Enable */
- #define UARTC_FCR_RFIFO_RESET 0x02 /* Rx FIFO Reset */
- #define UARTC_FCR_TFIFO_RESET 0x04 /* Tx FIFO Reset */
- #define UARTC_FCR_DMA_EN 0x08 /* Select UART DMA mode */
- #define UARTC_FCR_TFIFO16_TRGL1 0x00 /* TX 16-byte FIFO int trigger level - 1 char */
- #define UARTC_FCR_TFIFO16_TRGL3 0x10 /* TX 16-byte FIFO int trigger level - 3 char */
- #define UARTC_FCR_TFIFO16_TRGL9 0x20 /* TX 16-byte FIFO int trigger level - 9 char */
- #define UARTC_FCR_TFIFO16_TRGL13 0x30 /* TX 16-byte FIFO int trigger level - 13 char */
- #define UARTC_FCR_RFIFO16_TRGL1 0x00 /* RX 16-byte FIFO int trigger level - 1 char */
- #define UARTC_FCR_RFIFO16_TRGL4 0x40 /* RX 16-byte FIFO int trigger level - 4 char */
- #define UARTC_FCR_RFIFO16_TRGL8 0x80 /* RX 16-byte FIFO int trigger level - 8 char */
- #define UARTC_FCR_RFIFO16_TRGL14 0xc0 /* RX 16-byte FIFO int trigger level - 14 char */
- /* FCR Register (+0x08) */
- #define UARTC_FCR_FIFO_EN_MASK 0x01 /* FIFO Enable */
- #define UARTC_FCR_FIFO_EN_BIT 0
- #define UARTC_FCR_RFIFO_RESET_MASK 0x02 /* Rx FIFO Reset */
- #define UARTC_FCR_RFIFO_RESET_BIT 1
- #define UARTC_FCR_TFIFO_RESET_MASK 0x04 /* Tx FIFO Reset */
- #define UARTC_FCR_TFIFO_RESET_BIT 2
- #define UARTC_FCR_DMA_EN_MASK 0x08 /* Select UART DMA mode */
- #define UARTC_FCR_DMA_EN_BIT 3
- #define UARTC_FCR_TXFIFO_TRGL_MASK 0x30 /* TX FIFO int trigger level */
- #define UARTC_FCR_TXFIFO_TRGL_SHIFT 4
- #define UARTC_FCR_RXFIFO_TRGL_MASK 0xc0 /* RX FIFO int trigger level */
- #define UARTC_FCR_RXFIFO_TRGL_SHIFT 6
- /* LCR Register (+0x0c) */
- #define UARTC_LCR_BITS5 0x00
- #define UARTC_LCR_BITS6 0x01
- #define UARTC_LCR_BITS7 0x02
- #define UARTC_LCR_BITS8 0x03
- #define UARTC_LCR_STOP1 0x00
- #define UARTC_LCR_STOP2 0x04
- #define UARTC_LCR_PARITY_EN 0x08 /* Parity Enable */
- #define UARTC_LCR_PARITY_NONE 0x00 /* No Parity Check */
- #define UARTC_LCR_PARITY_EVEN 0x18 /* Even Parity */
- #define UARTC_LCR_PARITY_ODD 0x08 /* Odd Parity */
- #if 0
- #define UARTC_LCR_PARITY_1 0x21 /* 1 Parity Bit */
- #define UARTC_LCR_PARITY_0 0x31 /* 0 Parity Bit */
- #endif
- #define UARTC_LCR_SETBREAK 0x40 /* Set Break condition */
- #define UARTC_LCR_DLAB 0x80 /* Divisor Latch Access Bit */
- /* MCR Register (+0x10) */
- #define UARTC_MCR_DTR 0x01 /* Data Terminal Ready */
- #define UARTC_MCR_RTS 0x02 /* Request to Send */
- #define UARTC_MCR_OUT1 0x04 /* output1 */
- #define UARTC_MCR_OUT2 0x08 /* output2 or global interrupt enable */
- #define UARTC_MCR_LPBK 0x10 /* loopback mode */
- #define UARTC_MCR_DMAMODE2 0x20 /* DMA mode2 */
- #define UARTC_MCR_OUT3 0x40 /* output 3 */
- /* LSR Register (+0x14) */
- #define UARTC_LSR_RDR 0x1 /* Data Ready */
- #define UARTC_LSR_OE 0x2 /* Overrun Error */
- #define UARTC_LSR_PE 0x4 /* Parity Error */
- #define UARTC_LSR_FE 0x8 /* Framing Error */
- #define UARTC_LSR_BI 0x10 /* Break Interrupt */
- #define UARTC_LSR_THRE 0x20 /* THR/FIFO Empty */
- #define UARTC_LSR_TE 0x40 /* THR/FIFO and TFR Empty */
- #define UARTC_LSR_DE 0x80 /* FIFO Data Error */
- /* MSR Register (+0x18) */
- #define UARTC_MSR_DELTACTS 0x1 /* Delta CTS */
- #define UARTC_MSR_DELTADSR 0x2 /* Delta DSR */
- #define UARTC_MSR_TERI 0x4 /* Trailing Edge RI */
- #define UARTC_MSR_DELTACD 0x8 /* Delta CD */
- #define UARTC_MSR_CTS 0x10 /* Clear To Send */
- #define UARTC_MSR_DSR 0x20 /* Data Set Ready */
- #define UARTC_MSR_RI 0x40 /* Ring Indicator */
- #define UARTC_MSR_DCD 0x80 /* Data Carrier Detect */
- /* MDR register (+0x20) */
- #define UARTC_MDR_MODE_SEL_SHIFT 0
- #define UARTC_MDR_SIP_BYCPU_BIT 2
- #define UARTC_MDR_FMEND_MD_BIT 3
- #define UARTC_MDR_DMA_EN_BIT 4
- #define UARTC_MDR_FIR_INV_RX_BIT 5
- #define UARTC_MDR_IR_INV_TX_BIT 6
- #define UARTC_MDR_MODE_SEL_MASK 0x03
- #define UARTC_MDR_SIP_BYCPU_MASK 0x04 /* 0: 1.6us end pulse; 1: depends on ACR[4] */
- #define UARTC_MDR_FMEND_MD_MASK 0x08 /* 0: Frame length counter method; 1: Set end of transmission bit method */
- #define UARTC_MDR_DMA_EN_MASK 0x10 /* Enable DMA mode. (PIO int should turn off) */
- #define UARTC_MDR_FIR_INV_RX_MASK 0x20 /* (FIR only) Invert receiver input signal */
- #define UARTC_MDR_IR_INV_TX_MASK 0x40 /* (FIR/SIR) Invert pulse during transmission */
- #define UARTC_MDR_MODE_UART 0
- #define UARTC_MDR_MODE_SIR 1
- #define UARTC_MDR_MODE_FIR 2
- /* ACR register (+0x24) */
- #define UARTC_ACR_IR_TX_EN 0x01
- #define UARTC_ACR_IR_RX_EN 0x02
- #define UARTC_ACR_FIR_SETEOT 0x04
- /*****************************************************************************
- * PIT - AG101 Core APB
- ****************************************************************************/
- /* Interrupt Enable Register */
- #define PIT_CH_NUM_MASK 0x7
- /* Channel & Interrupt Enable Reg */
- #define PIT_C0_TMR0_EN 0x1
- #define PIT_C0_TMR1_EN 0x2
- #define PIT_C0_TMR2_EN 0x4
- #define PIT_C0_TMR3_EN 0x8
- #define PIT_C1_TMR0_EN 0x10
- #define PIT_C1_TMR1_EN 0x20
- #define PIT_C1_TMR2_EN 0x40
- #define PIT_C1_TMR3_EN 0x80
- #define PIT_C2_TMR0_EN 0x100
- #define PIT_C2_TMR1_EN 0x200
- #define PIT_C2_TMR2_EN 0x400
- #define PIT_C2_TMR3_EN 0x800
- #define PIT_C3_TMR0_EN 0x1000
- #define PIT_C3_TMR1_EN 0x2000
- #define PIT_C3_TMR2_EN 0x4000
- #define PIT_C3_TMR3_EN 0x8000
- /* Interrupt Status Register */
- /* Clean Timer interrupt pending bit, write 1 clean */
- #define PIT_C0_TMR0_PEND_W1C 0x1
- #define PIT_C0_TMR1_PEND_W1C 0x2
- #define PIT_C0_TMR2_PEND_W1C 0x4
- #define PIT_C0_TMR3_PEND_W1C 0x8
- #define PIT_C1_TMR0_PEND_W1C 0x10
- #define PIT_C1_TMR1_PEND_W1C 0x20
- #define PIT_C1_TMR2_PEND_W1C 0x40
- #define PIT_C1_TMR3_PEND_W1C 0x80
- #define PIT_C2_TMR0_PEND_W1C 0x100
- #define PIT_C2_TMR1_PEND_W1C 0x200
- #define PIT_C2_TMR2_PEND_W1C 0x400
- #define PIT_C2_TMR3_PEND_W1C 0x800
- #define PIT_C3_TMR0_PEND_W1C 0x1000
- #define PIT_C3_TMR1_PEND_W1C 0x2000
- #define PIT_C3_TMR2_PEND_W1C 0x4000
- #define PIT_C3_TMR3_PEND_W1C 0x8000
- /* channel 0~3 control register */
- /* ChClk*/
- #define PIT_CH_CTL_APBCLK 0x8
- /* ChMode*/
- #define PIT_CH_CTL_TMR32 0x1
- #define PIT_CH_CTL_TMR16 0x2
- #define PIT_CH_CTL_TMR8 0x3
- #define PIT_CH_CTL_PWM 0x4
- #define PIT_CH_CTL_MIX16 0x6
- #define PIT_CH_CTL_MIX8 0x7
- /*****************************************************************************
- * WDT - AG101 Core APB
- ****************************************************************************/
- //TODO
- //finish this table
- /*****************************************************************************
- * RTC - AE210P APB
- ****************************************************************************/
- //TODO
- //Finish this table
- /*****************************************************************************
- * GPIO - AE210P APB
- ****************************************************************************/
- /*****************************************************************************
- * I2C - AG101 Core APB
- ****************************************************************************/
- /*****************************************************************************
- * SPI1 - AG101 Core APB
- ****************************************************************************/
- /*****************************************************************************
- * SPI2 - AG101 Core APB
- ****************************************************************************/
- /*****************************************************************************
- * APB_SLAVE_0_4 - AG101 Core APB
- ****************************************************************************/
- /*****************************************************************************
- * Interface & Definitions
- ****************************************************************************/
- /* TODO: timer-polling method */
- #if (defined(CONFIG_CPU_ICACHE_ENABLE) && defined(CONFIG_CPU_DCACHE_ENABLE))
- #define _nds_kwait(count) \
- do { \
- volatile uint32_t i = 0; \
- while (i++ < (uint32_t)(count)) \
- ; \
- } while(0)
- #else
- #define _nds_kwait(count) \
- do { \
- volatile uint32_t i = 0; \
- uint32_t c = (count > 0x10) ? count / 0x10 : 0x10; \
- while (i++ < (uint32_t)(c)) \
- ; \
- } while(0)
- #endif
- #endif /* __AE210P_DEFS_H__ */
|