📄 jz4730.h
字号:
/* * jz4730.h * * Registers definition of the JZ4730 CPU. * * Copyright (c) 2005-2007 Ingenic Semiconductor Inc. * * This program is free software. */#ifndef __JZ4730_H__#define __JZ4730_H__#ifndef __ASSEMBLY__#define u32 unsigned int#define u16 unsigned short#define u8 unsigned char#define REG8(addr) *((volatile u8 *)(addr))#define REG16(addr) *((volatile u16 *)(addr))#define REG32(addr) *((volatile u32 *)(addr))#else#define REG8(addr) (addr)#define REG16(addr) (addr)#define REG32(addr) (addr)#endif /* !ASSEMBLY */#define HARB_BASE 0xB3000000#define EMC_BASE 0xB3010000#define DMAC_BASE 0xB3020000#define UHC_BASE 0xB3030000#define UDC_BASE 0xB3040000#define LCD_BASE 0xB3050000#define CIM_BASE 0xB3060000#define ETH_BASE 0xB3100000#define NBM_BASE 0xB3F00000#define CPM_BASE 0xB0000000#define INTC_BASE 0xB0001000#define OST_BASE 0xB0002000#define RTC_BASE 0xB0003000#define WDT_BASE 0xB0004000#define GPIO_BASE 0xB0010000#define AIC_BASE 0xB0020000#define MSC_BASE 0xB0021000#define UART0_BASE 0xB0030000#define UART1_BASE 0xB0031000#define UART2_BASE 0xB0032000#define UART3_BASE 0xB0033000#define FIR_BASE 0xB0040000#define SCC_BASE 0xB0041000#define SCC0_BASE 0xB0041000#define I2C_BASE 0xB0042000#define SSI_BASE 0xB0043000#define SCC1_BASE 0xB0044000#define PWM0_BASE 0xB0050000#define PWM1_BASE 0xB0051000#define DES_BASE 0xB0060000#define UPRT_BASE 0xB0061000#define KBC_BASE 0xB0062000/************************************************************************* * MSC *************************************************************************/#define MSC_STRPCL (MSC_BASE + 0x000)#define MSC_STAT (MSC_BASE + 0x004)#define MSC_CLKRT (MSC_BASE + 0x008)#define MSC_CMDAT (MSC_BASE + 0x00C)#define MSC_RESTO (MSC_BASE + 0x010)#define MSC_RDTO (MSC_BASE + 0x014)#define MSC_BLKLEN (MSC_BASE + 0x018)#define MSC_NOB (MSC_BASE + 0x01C)#define MSC_SNOB (MSC_BASE + 0x020)#define MSC_IMASK (MSC_BASE + 0x024)#define MSC_IREG (MSC_BASE + 0x028)#define MSC_CMD (MSC_BASE + 0x02C)#define MSC_ARG (MSC_BASE + 0x030)#define MSC_RES (MSC_BASE + 0x034)#define MSC_RXFIFO (MSC_BASE + 0x038)#define MSC_TXFIFO (MSC_BASE + 0x03C)#define REG_MSC_STRPCL REG16(MSC_STRPCL)#define REG_MSC_STAT REG32(MSC_STAT)#define REG_MSC_CLKRT REG16(MSC_CLKRT)#define REG_MSC_CMDAT REG32(MSC_CMDAT)#define REG_MSC_RESTO REG16(MSC_RESTO)#define REG_MSC_RDTO REG16(MSC_RDTO)#define REG_MSC_BLKLEN REG16(MSC_BLKLEN)#define REG_MSC_NOB REG16(MSC_NOB)#define REG_MSC_SNOB REG16(MSC_SNOB)#define REG_MSC_IMASK REG16(MSC_IMASK)#define REG_MSC_IREG REG16(MSC_IREG)#define REG_MSC_CMD REG8(MSC_CMD)#define REG_MSC_ARG REG32(MSC_ARG)#define REG_MSC_RES REG16(MSC_RES)#define REG_MSC_RXFIFO REG32(MSC_RXFIFO)#define REG_MSC_TXFIFO REG32(MSC_TXFIFO)/* MSC Clock and Control Register (MSC_STRPCL) */#define MSC_STRPCL_EXIT_MULTIPLE (1 << 7)#define MSC_STRPCL_EXIT_TRANSFER (1 << 6)#define MSC_STRPCL_START_READWAIT (1 << 5)#define MSC_STRPCL_STOP_READWAIT (1 << 4)#define MSC_STRPCL_RESET (1 << 3)#define MSC_STRPCL_START_OP (1 << 2)#define MSC_STRPCL_CLOCK_CONTROL_BIT 0#define MSC_STRPCL_CLOCK_CONTROL_MASK (0x3 << MSC_STRPCL_CLOCK_CONTROL_BIT) #define MSC_STRPCL_CLOCK_CONTROL_STOP (0x1 << MSC_STRPCL_CLOCK_CONTROL_BIT) /* Stop MMC/SD clock */ #define MSC_STRPCL_CLOCK_CONTROL_START (0x2 << MSC_STRPCL_CLOCK_CONTROL_BIT) /* Start MMC/SD clock *//* MSC Status Register (MSC_STAT) */#define MSC_STAT_IS_RESETTING (1 << 15)#define MSC_STAT_SDIO_INT_ACTIVE (1 << 14)#define MSC_STAT_PRG_DONE (1 << 13)#define MSC_STAT_DATA_TRAN_DONE (1 << 12)#define MSC_STAT_END_CMD_RES (1 << 11)#define MSC_STAT_DATA_FIFO_AFULL (1 << 10)#define MSC_STAT_IS_READWAIT (1 << 9)#define MSC_STAT_CLK_EN (1 << 8)#define MSC_STAT_DATA_FIFO_FULL (1 << 7)#define MSC_STAT_DATA_FIFO_EMPTY (1 << 6)#define MSC_STAT_CRC_RES_ERR (1 << 5)#define MSC_STAT_CRC_READ_ERROR (1 << 4)#define MSC_STAT_CRC_WRITE_ERROR_BIT 2#define MSC_STAT_CRC_WRITE_ERROR_MASK (0x3 << MSC_STAT_CRC_WRITE_ERROR_BIT) #define MSC_STAT_CRC_WRITE_ERROR_NO (0 << MSC_STAT_CRC_WRITE_ERROR_BIT) /* No error on transmission of data */ #define MSC_STAT_CRC_WRITE_ERROR_YES (1 << MSC_STAT_CRC_WRITE_ERROR_BIT) /* Card observed erroneous transmission of data */ #define MSC_STAT_CRC_WRITE_ERROR_NOSTS (2 << MSC_STAT_CRC_WRITE_ERROR_BIT) /* No CRC status is sent back */#define MSC_STAT_TIME_OUT_RES (1 << 1)#define MSC_STAT_TIME_OUT_READ (1 << 0)/* MSC Bus Clock Control Register (MSC_CLKRT) */#define MSC_CLKRT_CLK_RATE_BIT 0#define MSC_CLKRT_CLK_RATE_MASK (0x7 << MSC_CLKRT_CLK_RATE_BIT) #define MSC_CLKRT_CLK_RATE_DIV_1 (0x0 << MSC_CLKRT_CLK_RATE_BIT) /* CLK_SRC */ #define MSC_CLKRT_CLK_RATE_DIV_2 (0x1 << MSC_CLKRT_CLK_RATE_BIT) /* 1/2 of CLK_SRC */ #define MSC_CLKRT_CLK_RATE_DIV_4 (0x2 << MSC_CLKRT_CLK_RATE_BIT) /* 1/4 of CLK_SRC */ #define MSC_CLKRT_CLK_RATE_DIV_8 (0x3 << MSC_CLKRT_CLK_RATE_BIT) /* 1/8 of CLK_SRC */ #define MSC_CLKRT_CLK_RATE_DIV_16 (0x4 << MSC_CLKRT_CLK_RATE_BIT) /* 1/16 of CLK_SRC */ #define MSC_CLKRT_CLK_RATE_DIV_32 (0x5 << MSC_CLKRT_CLK_RATE_BIT) /* 1/32 of CLK_SRC */ #define MSC_CLKRT_CLK_RATE_DIV_64 (0x6 << MSC_CLKRT_CLK_RATE_BIT) /* 1/64 of CLK_SRC */ #define MSC_CLKRT_CLK_RATE_DIV_128 (0x7 << MSC_CLKRT_CLK_RATE_BIT) /* 1/128 of CLK_SRC *//* MSC Command Sequence Control Register (MSC_CMDAT) */#define MSC_CMDAT_IO_ABORT (1 << 11)#define MSC_CMDAT_BUS_WIDTH_BIT 9#define MSC_CMDAT_BUS_WIDTH_MASK (0x3 << MSC_CMDAT_BUS_WIDTH_BIT) #define MSC_CMDAT_BUS_WIDTH_1BIT (0x0 << MSC_CMDAT_BUS_WIDTH_BIT) /* 1-bit data bus */ #define MSC_CMDAT_BUS_WIDTH_4BIT (0x2 << MSC_CMDAT_BUS_WIDTH_BIT) /* 4-bit data bus */ #define CMDAT_BUS_WIDTH1 (0x0 << MSC_CMDAT_BUS_WIDTH_BIT) #define CMDAT_BUS_WIDTH4 (0x2 << MSC_CMDAT_BUS_WIDTH_BIT)#define MSC_CMDAT_DMA_EN (1 << 8)#define MSC_CMDAT_INIT (1 << 7)#define MSC_CMDAT_BUSY (1 << 6)#define MSC_CMDAT_STREAM_BLOCK (1 << 5)#define MSC_CMDAT_WRITE_READ (1 << 4)#define MSC_CMDAT_DATA_EN (1 << 3)#define MSC_CMDAT_RESPONSE_FORMAT_BIT 0#define MSC_CMDAT_RESPONSE_FORMAT_MASK (0x7 << MSC_CMDAT_RESPONSE_FORMAT_BIT) #define MSC_CMDAT_RESPONSE_FORMAT_NONE (0x0 << MSC_CMDAT_RESPONSE_FORMAT_BIT) /* No response */ #define MSC_CMDAT_RESPONSE_FORMAT_R1 (0x1 << MSC_CMDAT_RESPONSE_FORMAT_BIT) /* Format R1 and R1b */ #define MSC_CMDAT_RESPONSE_FORMAT_R2 (0x2 << MSC_CMDAT_RESPONSE_FORMAT_BIT) /* Format R2 */ #define MSC_CMDAT_RESPONSE_FORMAT_R3 (0x3 << MSC_CMDAT_RESPONSE_FORMAT_BIT) /* Format R3 */ #define MSC_CMDAT_RESPONSE_FORMAT_R4 (0x4 << MSC_CMDAT_RESPONSE_FORMAT_BIT) /* Format R4 */ #define MSC_CMDAT_RESPONSE_FORMAT_R5 (0x5 << MSC_CMDAT_RESPONSE_FORMAT_BIT) /* Format R5 */ #define MSC_CMDAT_RESPONSE_FORMAT_R6 (0x6 << MSC_CMDAT_RESPONSE_FORMAT_BIT) /* Format R6 */#define CMDAT_DMA_EN (1 << 8)#define CMDAT_INIT (1 << 7)#define CMDAT_BUSY (1 << 6)#define CMDAT_STREAM (1 << 5)#define CMDAT_WRITE (1 << 4)#define CMDAT_DATA_EN (1 << 3)/* MSC Interrupts Mask Register (MSC_IMASK) */#define MSC_IMASK_SDIO (1 << 7)#define MSC_IMASK_TXFIFO_WR_REQ (1 << 6)#define MSC_IMASK_RXFIFO_RD_REQ (1 << 5)#define MSC_IMASK_END_CMD_RES (1 << 2)#define MSC_IMASK_PRG_DONE (1 << 1)#define MSC_IMASK_DATA_TRAN_DONE (1 << 0)/* MSC Interrupts Status Register (MSC_IREG) */#define MSC_IREG_SDIO (1 << 7)#define MSC_IREG_TXFIFO_WR_REQ (1 << 6)#define MSC_IREG_RXFIFO_RD_REQ (1 << 5)#define MSC_IREG_END_CMD_RES (1 << 2)#define MSC_IREG_PRG_DONE (1 << 1)#define MSC_IREG_DATA_TRAN_DONE (1 << 0)/************************************************************************* * RTC *************************************************************************/#define RTC_RCR (RTC_BASE + 0x00)#define RTC_RSR (RTC_BASE + 0x04)#define RTC_RSAR (RTC_BASE + 0x08)#define RTC_RGR (RTC_BASE + 0x0c)#define REG_RTC_RCR REG32(RTC_RCR)#define REG_RTC_RSR REG32(RTC_RSR)#define REG_RTC_RSAR REG32(RTC_RSAR)#define REG_RTC_RGR REG32(RTC_RGR)#define RTC_RCR_HZ (1 << 6)#define RTC_RCR_HZIE (1 << 5)#define RTC_RCR_AF (1 << 4)#define RTC_RCR_AIE (1 << 3)#define RTC_RCR_AE (1 << 2)#define RTC_RCR_START (1 << 0)#define RTC_RGR_LOCK (1 << 31)#define RTC_RGR_ADJ_BIT 16#define RTC_RGR_ADJ_MASK (0x3ff << RTC_RGR_ADJ_BIT)#define RTC_RGR_DIV_BIT 0#define RTC_REG_DIV_MASK (0xff << RTC_RGR_DIV_BIT)/************************************************************************* * FIR *************************************************************************/#define FIR_TDR (FIR_BASE + 0x000)#define FIR_RDR (FIR_BASE + 0x004)#define FIR_TFLR (FIR_BASE + 0x008)#define FIR_AR (FIR_BASE + 0x00C)#define FIR_CR1 (FIR_BASE + 0x010)#define FIR_CR2 (FIR_BASE + 0x014)#define FIR_SR (FIR_BASE + 0x018)#define REG_FIR_TDR REG8(FIR_TDR)#define REG_FIR_RDR REG8(FIR_RDR)#define REG_FIR_TFLR REG16(FIR_TFLR)#define REG_FIR_AR REG8(FIR_AR)#define REG_FIR_CR1 REG8(FIR_CR1)#define REG_FIR_CR2 REG16(FIR_CR2)#define REG_FIR_SR REG16(FIR_SR)/* FIR Control Register 1 (FIR_CR1) */#define FIR_CR1_FIRUE (1 << 7)#define FIR_CR1_ACE (1 << 6)#define FIR_CR1_EOUS (1 << 5)#define FIR_CR1_TIIE (1 << 4)#define FIR_CR1_TFIE (1 << 3)#define FIR_CR1_RFIE (1 << 2)#define FIR_CR1_TXE (1 << 1)#define FIR_CR1_RXE (1 << 0)/* FIR Control Register 2 (FIR_CR2) */#define FIR_CR2_SIPE (1 << 10)#define FIR_CR2_BCRC (1 << 9)#define FIR_CR2_TFLRS (1 << 8)#define FIR_CR2_ISS (1 << 7)#define FIR_CR2_LMS (1 << 6)#define FIR_CR2_TPPS (1 << 5)#define FIR_CR2_RPPS (1 << 4)#define FIR_CR2_TTRG_BIT 2#define FIR_CR2_TTRG_MASK (0x3 << FIR_CR2_TTRG_BIT) #define FIR_CR2_TTRG_16 (0 << FIR_CR2_TTRG_BIT) /* Transmit Trigger Level is 16 */ #define FIR_CR2_TTRG_32 (1 << FIR_CR2_TTRG_BIT) /* Transmit Trigger Level is 32 */ #define FIR_CR2_TTRG_64 (2 << FIR_CR2_TTRG_BIT) /* Transmit Trigger Level is 64 */ #define FIR_CR2_TTRG_128 (3 << FIR_CR2_TTRG_BIT) /* Transmit Trigger Level is 128 */#define FIR_CR2_RTRG_BIT 0#define FIR_CR2_RTRG_MASK (0x3 << FIR_CR2_RTRG_BIT) #define FIR_CR2_RTRG_16 (0 << FIR_CR2_RTRG_BIT) /* Receive Trigger Level is 16 */ #define FIR_CR2_RTRG_32 (1 << FIR_CR2_RTRG_BIT) /* Receive Trigger Level is 32 */ #define FIR_CR2_RTRG_64 (2 << FIR_CR2_RTRG_BIT) /* Receive Trigger Level is 64 */ #define FIR_CR2_RTRG_128 (3 << FIR_CR2_RTRG_BIT) /* Receive Trigger Level is 128 *//* FIR Status Register (FIR_SR) */#define FIR_SR_RFW (1 << 12)#define FIR_SR_RFA (1 << 11)#define FIR_SR_TFRTL (1 << 10)#define FIR_SR_RFRTL (1 << 9)#define FIR_SR_URUN (1 << 8)#define FIR_SR_RFTE (1 << 7)#define FIR_SR_ORUN (1 << 6)#define FIR_SR_CRCE (1 << 5)#define FIR_SR_FEND (1 << 4)#define FIR_SR_TFF (1 << 3)#define FIR_SR_RFE (1 << 2)#define FIR_SR_TIDLE (1 << 1)#define FIR_SR_RB (1 << 0)/************************************************************************* * SCC *************************************************************************/#define SCC_DR(base) ((base) + 0x000)#define SCC_FDR(base) ((base) + 0x004)#define SCC_CR(base) ((base) + 0x008)#define SCC_SR(base) ((base) + 0x00C)#define SCC_TFR(base) ((base) + 0x010)#define SCC_EGTR(base) ((base) + 0x014)#define SCC_ECR(base) ((base) + 0x018)#define SCC_RTOR(base) ((base) + 0x01C)#define REG_SCC_DR(base) REG8(SCC_DR(base))#define REG_SCC_FDR(base) REG8(SCC_FDR(base))#define REG_SCC_CR(base) REG32(SCC_CR(base))#define REG_SCC_SR(base) REG16(SCC_SR(base))#define REG_SCC_TFR(base) REG16(SCC_TFR(base))#define REG_SCC_EGTR(base) REG8(SCC_EGTR(base))#define REG_SCC_ECR(base) REG32(SCC_ECR(base))#define REG_SCC_RTOR(base) REG8(SCC_RTOR(base))/* SCC FIFO Data Count Register (SCC_FDR) */#define SCC_FDR_EMPTY 0x00#define SCC_FDR_FULL 0x10/* SCC Control Register (SCC_CR) */#define SCC_CR_SCCE (1 << 31)#define SCC_CR_TRS (1 << 30)#define SCC_CR_T2R (1 << 29)#define SCC_CR_FDIV_BIT 24#define SCC_CR_FDIV_MASK (0x3 << SCC_CR_FDIV_BIT) #define SCC_CR_FDIV_1 (0 << SCC_CR_FDIV_BIT) /* SCC_CLK frequency is the same as device clock */ #define SCC_CR_FDIV_2 (1 << SCC_CR_FDIV_BIT) /* SCC_CLK frequency is half of device clock */#define SCC_CR_FLUSH (1 << 23)#define SCC_CR_TRIG_BIT 16#define SCC_CR_TRIG_MASK (0x3 << SCC_CR_TRIG_BIT) #define SCC_CR_TRIG_1 (0 << SCC_CR_TRIG_BIT) /* Receive/Transmit-FIFO Trigger is 1 */ #define SCC_CR_TRIG_4 (1 << SCC_CR_TRIG_BIT) /* Receive/Transmit-FIFO Trigger is 4 */ #define SCC_CR_TRIG_8 (2 << SCC_CR_TRIG_BIT) /* Receive/Transmit-FIFO Trigger is 8 */ #define SCC_CR_TRIG_14 (3 << SCC_CR_TRIG_BIT) /* Receive/Transmit-FIFO Trigger is 14 */#define SCC_CR_TP (1 << 15)#define SCC_CR_CONV (1 << 14)#define SCC_CR_TXIE (1 << 13)#define SCC_CR_RXIE (1 << 12)#define SCC_CR_TENDIE (1 << 11)#define SCC_CR_RTOIE (1 << 10)#define SCC_CR_ECIE (1 << 9)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -