| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- #ifndef _AMT630HV160_RDC_H_
- #define _AMT630HV160_RDC_H_
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define RDC_DDR ((rdc_ddr_t *)REGS_RDC_DDR_BASE)
- #define RDC_SRAM ((rdc_sram_t *)REGS_RDC_SRAM_BASE)
- #define RDC_DDR_IRQ_CPU (1<<4) // 该中断产生时将触发CPU中断
- #define RDC_DDR_IRQ_MCU (1<<3) // 该中断产生时将触发MCU中断
- #define RDC_DDR_IRQ_CHBUS (1<<2) // 该中断产生时将触发CPU中断
- #define RDC_DDR_IRQ_GBUS (1<<1) // 该中断产生时将触发CPU中断
- #define RDC_DDR_IRQ_VBUS (1<<0) // 该中断产生时将触发CPU中断
- #define RDC_SRAM_IRQ_MCU (1<<1) // 该中断产生时将触发MCU中断
- #define RDC_SRAM_IRQ_OTHER (1<<0) // 该中断产生时将触发CPU中断
- typedef enum{
- RDC_M_LCD = 0,
- RDC_M_ITU,
- RDC_M_MFC,
- RDC_M_GPU,
- RDC_M_QOI,
- RDC_M_BLEND,
- RDC_M_PXP,
- RDC_M_WRAP,
- RDC_M_DMA,
- RDC_M_USB,
- RDC_M_SD0,
- RDC_M_SD1,
- RDC_M_ETH,
- RDC_M_MCU,
- RDC_M_CPU,
- }rdc_master_e;
- typedef struct{
- __IO uint32_t CTRL;
- __IO uint32_t RESERVED_04[3];
- __IO uint32_t BLK_MAX;
- __IO uint32_t BLK_CFG;
- __IO uint32_t BLK_IDX_ADDR;
- __IO uint32_t BLK_LUT;
- __IO uint32_t IRQ_STAT;
- __IO uint32_t IRQ_CLEAR;
- __IO uint32_t IRQ_ENABLE;
- __IO uint32_t IRQ_INFO1_VBUS;
- __IO uint32_t IRQ_INFO2_VBUS;
- __IO uint32_t IRQ_INFO1_GBUS;
- __IO uint32_t IRQ_INFO2_GBUS;
- __IO uint32_t IRQ_INFO1_CHBUS;
- __IO uint32_t IRQ_INFO2_CHBUS;
- __IO uint32_t IRQ_INFO1_MCU;
- __IO uint32_t IRQ_INFO2_MCU;
- __IO uint32_t IRQ_INFO1_CPU;
- __IO uint32_t IRQ_INFO2_CPU;
- __IO uint32_t IRQ_SET;
- __IO uint32_t LUT_MASTER_SEL;
- }rdc_ddr_t;
- typedef struct{
- __IO uint32_t CTRL;
- __IO uint32_t RESERVED_04[3];
- __IO uint32_t BLK_MAX;
- __IO uint32_t BLK_CFG;
- __IO uint32_t RESERVED_10[1];
- __IO uint32_t BLK_LUT;
- __IO uint32_t IRQ_STAT;
- __IO uint32_t IRQ_CLEAR;
- __IO uint32_t IRQ_ENABLE;
- __IO uint32_t IRQ_INFO1_OTHERS;
- __IO uint32_t IRQ_INFO2_OTHERS;
- __IO uint32_t RESERVED_34[4];
- __IO uint32_t IRQ_INFO1_MCU;
- __IO uint32_t IRQ_INFO2_MCU;
- __IO uint32_t RESERVED2[2];
- __IO uint32_t IRQ_SET;
- __IO uint32_t LUT_MASTER_SEL;
- }rdc_sram_t;
- typedef struct {
- uint32_t violation_addr;
- uint32_t AxPROT:1;
- uint32_t ERR_MULTI:1;
- uint32_t ERR_BOTH:1;
- uint32_t WnR:1;
- uint16_t AxID;
- }rdc_irq_info_t;
- void rdc_init(void);
- /*
- *@param:
- * access:
- * 0: not allow access 1: allow access
- *@note:
- * seg size = 1 MB.
- * seg max = 512.
- */
- int rdc_ddr_set_master_mem_range(rdc_ddr_t *rdc, rdc_master_e rdc_master,
- uint32_t seg_start, uint32_t seg_end, uint8_t access);
- /*
- *@brief:
- * start with seg_offset to find the first eligible region.
- *@param:
- * access:
- * 0: not allow access 1: allow access
- *@note:
- * seg size = 1 MB.
- * seg max = 512.
- */
- int rdc_ddr_get_master_mem_range(rdc_ddr_t *rdc, rdc_master_e rdc_master,
- uint32_t seg_offset,
- uint32_t *seg_start, uint32_t *seg_end, uint8_t access);
- /*
- *@brief:
- * 获取master在某段上的访问权限。
- *@return:
- * 0: 不允许访问 1: 允许访问
- */
- int rdc_ddr_get_master_mem_seg_access_sta(rdc_ddr_t *rdc,
- rdc_master_e rdc_master, uint32_t seg);
- /*
- *@param
- * access:
- * 0: not allow access 1: allow access
- *@note:
- * seg size = 128 KB.
- * seg max = 32.
- */
- int rdc_sram_set_master_mem_range(rdc_sram_t *rdc, rdc_master_e rdc_master,
- uint32_t seg_start, uint32_t seg_end, uint8_t access);
- /*
- *@brief:
- * start with seg_offset to find the first eligible region.
- *@param:
- * access:
- * 0: not allow access 1: allow access
- *@note:
- * seg size = 128 KB.
- * seg max = 32.
- */
- int rdc_sram_get_master_mem_range(rdc_sram_t *rdc, rdc_master_e rdc_master,
- uint32_t seg_offset,
- uint32_t *seg_start, uint32_t *seg_end, uint8_t access);
- /*
- *@brief:
- * 获取master在某段上的访问权限。
- *@return:
- * 0: 不允许访问 1: 允许访问
- */
- int rdc_sram_get_master_mem_seg_access_sta(rdc_sram_t *rdc,
- rdc_master_e rdc_master, uint32_t seg);
- #ifdef __cplusplus
- }
- #endif
- #endif /* _AMT630HV160_RDC_H_ */
|