350 lines
15 KiB
C
350 lines
15 KiB
C
|
/*
|
||
|
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||
|
*
|
||
|
* SPDX-License-Identifier: Apache-2.0
|
||
|
*
|
||
|
* Change Logs:
|
||
|
* Date Author Notes
|
||
|
*/
|
||
|
#ifndef __AM33XX_H__
|
||
|
#define __AM33XX_H__
|
||
|
|
||
|
#define REG32(x) (*((volatile unsigned int *)(x)))
|
||
|
#define REG16(x) (*((volatile unsigned short *)(x)))
|
||
|
|
||
|
/** Cache Line size in ARM Cortex-A8. */
|
||
|
#define AM33XX_CACHELINE_SIZE (64)
|
||
|
|
||
|
/** @brief Base address of AINTC memory mapped registers */
|
||
|
#define AM33XX_AINTC_REGS (0x48200000)
|
||
|
|
||
|
|
||
|
/** @brief Base addresses of control module registers */
|
||
|
#define AM33XX_CTLM_REGS (0x44e10000)
|
||
|
|
||
|
/** @brief Base addresses of USB memory mapped registers */
|
||
|
#define AM33XX_USB_0_BASE (0x47401400)
|
||
|
#define AM33XX_USB_1_BASE (0x47401C00)
|
||
|
/** @brief Base addresses of SPI memory mapped registers */
|
||
|
#define AM33XX_SPI_0_REGS (0x48030000)
|
||
|
#define AM33XX_SPI_1_REGS (0x481A0000)
|
||
|
|
||
|
/** @brief Base addresses of GPIO memory mapped registers */
|
||
|
#define AM33XX_GPIO_0_REGS (0x44E07000)
|
||
|
#define AM33XX_GPIO_1_REGS (0x4804C000)
|
||
|
#define AM33XX_GPIO_2_REGS (0x481AC000)
|
||
|
#define AM33XX_GPIO_3_REGS (0x481AE000)
|
||
|
|
||
|
/** @brief Base addresses of DMTIMER memory mapped registers */
|
||
|
#define AM33XX_DMTIMER_0_REGS (0x44E05000)
|
||
|
#define AM33XX_DMTIMER_1_REGS (0x44E31000)
|
||
|
#define AM33XX_DMTIMER_2_REGS (0x48040000)
|
||
|
#define AM33XX_DMTIMER_3_REGS (0x48042000)
|
||
|
#define AM33XX_DMTIMER_4_REGS (0x48044000)
|
||
|
#define AM33XX_DMTIMER_5_REGS (0x48046000)
|
||
|
#define AM33XX_DMTIMER_6_REGS (0x48048000)
|
||
|
#define AM33XX_DMTIMER_7_REGS (0x4804A000)
|
||
|
|
||
|
/** @brief Base address of MMC memory mapped registers */
|
||
|
#define AM33XX_MMCHS_0_REGS (0x48060000)
|
||
|
#define AM33XX_MMCHS_1_REGS (0x481D8000)
|
||
|
#define AM33XX_MMCHS_2_REGS (0x47810000)
|
||
|
|
||
|
/** @brief Base address of GPMC memory mapped registers */
|
||
|
#define AM33XX_GPMC_0_REGS (0x50000000)
|
||
|
|
||
|
/** @brief Base address of GPMC memory mapped registers */
|
||
|
#define AM33XX_ELM_0_REGS (0x48080000)
|
||
|
|
||
|
/** @brief Base address of I2C memory mapped registers */
|
||
|
#define AM33XX_I2C_0_REGS (0x44E0B000)
|
||
|
#define AM33XX_I2C_1_REGS (0x4802A000)
|
||
|
#define AM33XX_I2C_2_REGS (0x4819C000)
|
||
|
|
||
|
/** @brief Base address of WDT memory mapped registers */
|
||
|
#define AM33XX_WDT_0_REGS (0x44E33000)
|
||
|
#define AM33XX_WDT_1_REGS (0x44E35000)
|
||
|
|
||
|
/** @brief Base address of WDT memory mapped registers */
|
||
|
#define AM33XX_CPSW_SS_REGS (0x4A100000)
|
||
|
#define AM33XX_CPSW_MDIO_REGS (0x4A101000)
|
||
|
#define AM33XX_CPSW_WR_REGS (0x4A101200)
|
||
|
#define AM33XX_CPSW_CPDMA_REGS (0x4A100800)
|
||
|
#define AM33XX_CPSW_ALE_REGS (0x4A100D00)
|
||
|
#define AM33XX_CPSW_STAT_REGS (0x4A100900)
|
||
|
#define AM33XX_CPSW_PORT_0_REGS (0x4A100100)
|
||
|
#define AM33XX_CPSW_PORT_1_REGS (0x4A100200)
|
||
|
#define AM33XX_CPSW_SLIVER_1_REGS (0x4A100D80)
|
||
|
#define AM33XX_CPSW_PORT_2_REGS (0x4A100300)
|
||
|
#define AM33XX_CPSW_SLIVER_2_REGS (0x4A100DC0)
|
||
|
#define AM33XX_CPSW_CPPI_RAM_REGS (0x4A102000)
|
||
|
|
||
|
/** @brief Base address of McASP memory mapped registers */
|
||
|
#define AM33XX_MCASP_1_CTRL_REGS (0x4803C000)
|
||
|
#define AM33XX_MCASP_1_FIFO_REGS (AM33XX_MCASP_1_CTRL_REGS + 0x1000)
|
||
|
#define AM33XX_MCASP_1_DATA_REGS (0x46400000)
|
||
|
|
||
|
/** @brief Base address of EMIF memory mapped registers */
|
||
|
#define AM33XX_EMIF_0_REGS (0x4C000000)
|
||
|
|
||
|
/** @brief Base addresses of RTC memory mapped registers */
|
||
|
#define AM33XX_RTC_0_REGS (0x44E3E000)
|
||
|
|
||
|
#define CM_PER(base) ((base) + 0)
|
||
|
#define CM_PER_L4LS_CLKSTCTRL(base) (CM_PER(base) + 0)
|
||
|
#define CM_PER_UART1_CLKCTRL(base) (CM_PER(base) + 0x6C)
|
||
|
#define CM_PER_UART2_CLKCTRL(base) (CM_PER(base) + 0x70)
|
||
|
#define CM_PER_UART3_CLKCTRL(base) (CM_PER(base) + 0x74)
|
||
|
#define CM_PER_UART4_CLKCTRL(base) (CM_PER(base) + 0x78)
|
||
|
#define CM_PER_UART5_CLKCTRL(base) (CM_PER(base) + 0x38)
|
||
|
#define CM_WKUP(base) ((base) + 0x400)
|
||
|
#define CM_DPLL(base) ((base) + 0x500)
|
||
|
#define CM_MPU(base) ((base) + 0x600)
|
||
|
#define CM_DEVICE(base) ((base) + 0x700)
|
||
|
#define CM_RTC(base) ((base) + 0x800)
|
||
|
#define CM_GFX(base) ((base) + 0x900)
|
||
|
#define CM_CEFUSE(base) ((base) + 0xA00)
|
||
|
#define OCP_AM33XXKET_RAM(base) ((base) + 0xB00)
|
||
|
#define PRM_PER(base) ((base) + 0xC00)
|
||
|
#define PRM_PER_PWRSTST(base) (PRM_PER(base) + 0x008)
|
||
|
#define PRM_PER_PWRSTCTRL(base) (PRM_PER(base) + 0x00C)
|
||
|
#define PRM_WKUP(base) ((base) + 0xD00)
|
||
|
#define PRM_MPU(base) ((base) + 0xE00)
|
||
|
#define PRM_DEVICE(base) ((base) + 0xF00)
|
||
|
#define PRM_RTC(base) ((base) + 0x1000)
|
||
|
#define PRM_GFX(base) ((base) + 0x1100)
|
||
|
#define PRM_CEFUSE(base) ((base) + 0x1200)
|
||
|
|
||
|
/** @brief Base addresses of PRCM memory mapped registers */
|
||
|
#define AM33XX_PRCM_REGS (0x44E00000)
|
||
|
#define AM33XX_CM_PER_REGS CM_PER(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_CM_WKUP_REGS CM_WKUP(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_CM_DPLL_REGS CM_DPLL(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_CM_MPU_REGS CM_MPU(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_CM_DEVICE_REGS CM_DEVICE(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_CM_RTC_REGS CM_RTC(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_CM_GFX_REGS CM_GFX(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_CM_CEFUSE_REGS CM_CEFUSE(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_OCP_AM33XXKET_RAM_REGS OCP_AM33XXKET_RAM(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_PRM_PER_REGS PRM_PER(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_PRM_WKUP_REGS PRM_WKUP(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_PRM_MPU_REGS PRM_MPU(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_PRM_DEVICE_REGS PRM_DEVICE(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_PRM_RTC_REGS PRM_RTC(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_PRM_GFX_REGS PRM_GFX(AM33XX_PRCM_REGS)
|
||
|
#define AM33XX_PRM_CEFUSE_REGS PRM_CEFUSE(AM33XX_PRCM_REGS)
|
||
|
|
||
|
/** @brief Base address of control module memory mapped registers */
|
||
|
#define AM33XX_CONTROL_REGS (0x44E10000)
|
||
|
|
||
|
|
||
|
/** @brief Base address of Channel controller memory mapped registers */
|
||
|
#define AM33XX_EDMA30CC_0_REGS (0x49000000)
|
||
|
|
||
|
/** @brief Base address of DCAN module memory mapped registers */
|
||
|
#define AM33XX_DCAN_0_REGS (0x481CC000)
|
||
|
#define AM33XX_DCAN_1_REGS (0x481D0000)
|
||
|
|
||
|
/******************************************************************************\
|
||
|
* Parameterizable Configuration:- These are fed directly from the RTL
|
||
|
* parameters for the given AM33XX
|
||
|
\******************************************************************************/
|
||
|
#define TPCC_MUX(n) 0xF90 + ((n) * 4)
|
||
|
|
||
|
|
||
|
#define AM33XX_LCDC_0_REGS 0x4830E000
|
||
|
|
||
|
#define AM33XX_ADC_TSC_0_REGS 0x44E0D000
|
||
|
|
||
|
/** @brief Base addresses of PWMSS memory mapped registers. */
|
||
|
|
||
|
#define AM33XX_PWMSS0_REGS (0x48300000)
|
||
|
#define AM33XX_PWMSS1_REGS (0x48302000)
|
||
|
#define AM33XX_PWMSS2_REGS (0x48304000)
|
||
|
|
||
|
#define AM33XX_ECAP_REGS (0x00000100)
|
||
|
#define AM33XX_EQEP_REGS (0x00000180)
|
||
|
#define AM33XX_EPWM_REGS (0x00000200)
|
||
|
|
||
|
#define AM33XX_ECAP_0_REGS (AM33XX_PWMSS0_REGS + AM33XX_ECAP_REGS)
|
||
|
#define AM33XX_ECAP_1_REGS (AM33XX_PWMSS1_REGS + AM33XX_ECAP_REGS)
|
||
|
#define AM33XX_ECAP_2_REGS (AM33XX_PWMSS2_REGS + AM33XX_ECAP_REGS)
|
||
|
|
||
|
#define AM33XX_EQEP_0_REGS (AM33XX_PWMSS0_REGS + AM33XX_EQEP_REGS)
|
||
|
#define AM33XX_EQEP_1_REGS (AM33XX_PWMSS1_REGS + AM33XX_EQEP_REGS)
|
||
|
#define AM33XX_EQEP_2_REGS (AM33XX_PWMSS2_REGS + AM33XX_EQEP_REGS)
|
||
|
|
||
|
#define AM33XX_EPWM_0_REGS (AM33XX_PWMSS0_REGS + AM33XX_EPWM_REGS)
|
||
|
#define AM33XX_EPWM_1_REGS (AM33XX_PWMSS1_REGS + AM33XX_EPWM_REGS)
|
||
|
#define AM33XX_EPWM_2_REGS (AM33XX_PWMSS2_REGS + AM33XX_EPWM_REGS)
|
||
|
|
||
|
#define AM33XX_EPWM_MODULE_FREQ 100
|
||
|
|
||
|
/* PRCM registers */
|
||
|
#define CM_PER_L4LS_CLKSTCTRL_REG(base) REG32((base) + 0x0)
|
||
|
#define CM_PER_UART1_CLKCTRL_REG(base) REG32(CM_PER_UART1_CLKCTRL(base))
|
||
|
#define CM_PER_UART2_CLKCTRL_REG(base) REG32(CM_PER_UART2_CLKCTRL(base))
|
||
|
#define CM_PER_UART3_CLKCTRL_REG(base) REG32(CM_PER_UART3_CLKCTRL(base))
|
||
|
#define CM_PER_UART4_CLKCTRL_REG(base) REG32(CM_PER_UART4_CLKCTRL(base))
|
||
|
#define CM_PER_UART5_CLKCTRL_REG(base) REG32(CM_PER_UART5_CLKCTRL(base))
|
||
|
|
||
|
#define CM_PER_TIMER7_CLKCTRL(base) REG32((base) + 0x7C)
|
||
|
#define CM_PER_TIMER2_CLKCTRL(base) REG32((base) + 0x80)
|
||
|
|
||
|
#define PRM_PER_PWRSTST_REG(base) REG32(PRM_PER_PWRSTST(base))
|
||
|
#define PRM_PER_PWRSTCTRL_REG(base) REG32(PRM_PER_PWRSTCTRL(base))
|
||
|
|
||
|
#define CM_DPLL_CLKSEL_TIMER7_CLK(base) REG32(CM_DPLL(base) + 0x4)
|
||
|
#define CM_DPLL_CLKSEL_TIMER2_CLK(base) REG32(CM_DPLL(base) + 0x8)
|
||
|
|
||
|
/* timer registers */
|
||
|
#define DMTIMER_TIDR(base) REG32(base + 0x0)
|
||
|
#define DMTIMER_TIOCP_CFG(base) REG32(base + 0x10)
|
||
|
#define DMTIMER_IRQ_EOI(base) REG32(base + 0x20)
|
||
|
#define DMTIMER_IRQSTATUS_RAW(base) REG32(base + 0x24)
|
||
|
#define DMTIMER_IRQSTATUS(base) REG32(base + 0x28)
|
||
|
#define DMTIMER_IRQENABLE_SET(base) REG32(base + 0x2C)
|
||
|
#define DMTIMER_IRQENABLE_CLR(base) REG32(base + 0x30)
|
||
|
#define DMTIMER_IRQWAKEEN(base) REG32(base + 0x34)
|
||
|
#define DMTIMER_TCLR(base) REG32(base + 0x38)
|
||
|
#define DMTIMER_TCRR(base) REG32(base + 0x3C)
|
||
|
#define DMTIMER_TLDR(base) REG32(base + 0x40)
|
||
|
#define DMTIMER_TTGR(base) REG32(base + 0x44)
|
||
|
#define DMTIMER_TWPS(base) REG32(base + 0x48)
|
||
|
#define DMTIMER_TMAR(base) REG32(base + 0x4C)
|
||
|
#define DMTIMER_TCAR(base, n) REG32(base + 0x50 + (((n) - 1) * 8))
|
||
|
#define DMTIMER_TSICR(base) REG32(base + 0x54)
|
||
|
|
||
|
#define EMU_INT 0
|
||
|
#define COMMTX_INT 1
|
||
|
#define COMMRX_INT 2
|
||
|
#define BENCH_INT 3
|
||
|
#define ELM_IRQ_INT 4
|
||
|
#define NMI_INT 7
|
||
|
#define L3DEBUG_INT 9
|
||
|
#define L3APP_INT 10
|
||
|
#define PRCM_INT 11
|
||
|
#define EDMACOMP_INT 12
|
||
|
#define EDMAMPERR_INT 13
|
||
|
#define EDMAERR_INT 14
|
||
|
#define ADC_TSC_GEN_INT 16
|
||
|
#define USBSS_INT 17
|
||
|
#define USB_INT0 18
|
||
|
#define USB_INT1 19
|
||
|
#define PRU_ICSS_EVTOUT0_INT 20
|
||
|
#define PRU_ICSS_EVTOUT1_INT 21
|
||
|
#define PRU_ICSS_EVTOUT2_INT 22
|
||
|
#define PRU_ICSS_EVTOUT3_INT 23
|
||
|
#define PRU_ICSS_EVTOUT4_INT 24
|
||
|
#define PRU_ICSS_EVTOUT5_INT 25
|
||
|
#define PRU_ICSS_EVTOUT6_INT 26
|
||
|
#define PRU_ICSS_EVTOUT7_INT 27
|
||
|
#define MMCSD1_INT 28
|
||
|
#define MMCSD2_INT 29
|
||
|
#define I2C2_INT 30
|
||
|
#define ECAP0_INT 31
|
||
|
#define GPIO_INT2A 32
|
||
|
#define GPIO_INT2B 33
|
||
|
#define USBWAKEUP_INT 34
|
||
|
#define LCDC_INT 36
|
||
|
#define GFX_INT 37
|
||
|
#define EPWM2_INT 39
|
||
|
#define CPSW_RXTHR0_INT 40
|
||
|
#define CPSW_RX_INT0 41
|
||
|
#define CPSW_TX_INT0 42
|
||
|
#define CPSW_MISC0_INT 43
|
||
|
#define UART3_INT 44
|
||
|
#define UART4_INT 45
|
||
|
#define UART5_INT 46
|
||
|
#define ECAP1_INT 47
|
||
|
#define DCAN0_INT0 52
|
||
|
#define DCAN0_INT1 53
|
||
|
#define DCAN0_PARITY 54
|
||
|
#define DCAN1_INT0 55
|
||
|
#define DCAN1_INT1 56
|
||
|
#define DCAN1_PARITY 57
|
||
|
#define EPWM0_TZINT 58
|
||
|
#define EPWM1_TZINT 59
|
||
|
#define EPWM2_TZINT 60
|
||
|
#define ECAP2_INT 61
|
||
|
#define GPIO_INT3A 62
|
||
|
#define GPIO_INT3B 63
|
||
|
#define MMCSD0_INT 64
|
||
|
#define MCSPI0_INT 65
|
||
|
#define TINT0 66
|
||
|
#define TINT1_1MS 67
|
||
|
#define TINT2 68
|
||
|
#define TINT3 69
|
||
|
#define I2C0_INT 70
|
||
|
#define I2C1_INT 71
|
||
|
#define UART0_INT 72
|
||
|
#define UART1_INT 73
|
||
|
#define UART2_INT 74
|
||
|
#define RTC_INT 75
|
||
|
#define RTC_ALARM_INT 76
|
||
|
#define MB_INT0 77
|
||
|
#define M3_TXEV 78
|
||
|
#define EQEP0_INT 79
|
||
|
#define MACTX_INT0 80
|
||
|
#define MCARX_INT0 81
|
||
|
#define MCATX_INT1 82
|
||
|
#define MCARX_INT1 83
|
||
|
#define EPWM0_INT 86
|
||
|
#define EPWM1_INT 87
|
||
|
#define EQEP1_INT 88
|
||
|
#define EQEP2_INT 89
|
||
|
#define DMA_INTR_PIN2 90
|
||
|
#define WDT1_INT 91
|
||
|
#define TINT4 92
|
||
|
#define TINT5 93
|
||
|
#define TINT6 94
|
||
|
#define TINT7 95
|
||
|
#define GPIO_INT0A 96
|
||
|
#define GPIO_INT0B 97
|
||
|
#define GPIO_INT1A 98
|
||
|
#define GPIO_INT1B 99
|
||
|
#define GPMC_INT 100
|
||
|
#define DDRERR0 101
|
||
|
#define TCERR_INT0 112
|
||
|
#define TCERR_INT1 113
|
||
|
#define TCERR_INT2 114
|
||
|
#define ADC_TSC_PEN_INT 115
|
||
|
#define SMRFLX_MPU 120
|
||
|
#define SMRFLX_CORE 121
|
||
|
#define DMA_INTR_PIN0 123
|
||
|
#define DMA_INTR_PIN1 124
|
||
|
#define MCSPI1_INT 125
|
||
|
|
||
|
struct rt_hw_register
|
||
|
{
|
||
|
unsigned long r0;
|
||
|
unsigned long r1;
|
||
|
unsigned long r2;
|
||
|
unsigned long r3;
|
||
|
unsigned long r4;
|
||
|
unsigned long r5;
|
||
|
unsigned long r6;
|
||
|
unsigned long r7;
|
||
|
unsigned long r8;
|
||
|
unsigned long r9;
|
||
|
unsigned long r10;
|
||
|
unsigned long fp;
|
||
|
unsigned long ip;
|
||
|
unsigned long sp;
|
||
|
unsigned long lr;
|
||
|
unsigned long pc;
|
||
|
unsigned long cpsr;
|
||
|
unsigned long ORIG_r0;
|
||
|
};
|
||
|
|
||
|
#define USERMODE 0x10
|
||
|
#define FIQMODE 0x11
|
||
|
#define IRQMODE 0x12
|
||
|
#define SVCMODE 0x13
|
||
|
#define ABORTMODE 0x17
|
||
|
#define UNDEFMODE 0x1b
|
||
|
#define MODEMASK 0x1f
|
||
|
#define NOINT 0xc0
|
||
|
|
||
|
#endif
|