Files
MilkV-Duo/u-boot-2021.10/board/cvitek/cv180x/cv180x_reg.h
sam.xiang 3a4bcfca2f [uboot] porting cvitek asic chips:
1. add cvitek folders to u-boot-2021.10
	2. add cv183x/cv182x part
	3. add cv181x/cv180x part

Change-Id: I6dc2e5ff509dbab16bd60bfb3fd61852da5e01f6
2023-03-10 20:31:12 +08:00

187 lines
5.1 KiB
C

#ifndef __CV180X_REG_H__
#define __CV180X_REG_H__
#define TOP_BASE 0x03000000
#define PINMUX_BASE (TOP_BASE + 0x1000)
#define WATCHDOG_BASE (TOP_BASE + 0x00010000)
#define RTC_BASE 0x05026000
/*
* RTC info registers
*/
#define RTC_INFO0 (RTC_BASE + 0x1C)
/*
* General purpose registers
*/
#define GP_REG0 (TOP_BASE + 0x80)
#define GP_REG1 (TOP_BASE + 0x84)
#define GP_REG2 (TOP_BASE + 0x88
#define GP_REG3 (TOP_BASE + 0x8C)
#define GP_REG4 (TOP_BASE + 0x90)
#define GP_REG5 (TOP_BASE + 0x94)
#define GP_REG6 (TOP_BASE + 0x98)
#define GP_REG7 (TOP_BASE + 0x9C)
#define GP_REG8 (TOP_BASE + 0xA0)
#define GP_REG9 (TOP_BASE + 0xA4)
#define GP_REG10 (TOP_BASE + 0xA8)
/*
* Pinmux definitions
*/
#define PINMUX_UART0 0
#define PINMUX_UART1 1
#define PINMUX_UART2 2
#define PINMUX_UART3 3
#define PINMUX_UART3_2 4
#define PINMUX_I2C0 5
#define PINMUX_I2C1 6
#define PINMUX_I2C2 7
#define PINMUX_I2C3 8
#define PINMUX_I2C4 9
#define PINMUX_I2C4_2 10
#define PINMUX_SPI0 11
#define PINMUX_SPI1 12
#define PINMUX_SPI2 13
#define PINMUX_SPI2_2 14
#define PINMUX_SPI3 15
#define PINMUX_SPI3_2 16
#define PINMUX_I2S0 17
#define PINMUX_I2S1 18
#define PINMUX_I2S2 19
#define PINMUX_I2S3 20
#define PINMUX_USBID 21
#define PINMUX_SDIO0 22
#define PINMUX_SDIO1 23
#define PINMUX_ND 24
#define PINMUX_EMMC 25
#define PINMUX_SPI_NOR 26
#define PINMUX_SPI_NAND 27
#define PINMUX_CAM0 28
#define PINMUX_CAM1 29
#define PINMUX_PCM0 30
#define PINMUX_PCM1 31
#define PINMUX_CSI0 32
#define PINMUX_CSI1 33
#define PINMUX_CSI2 34
#define PINMUX_DSI 35
#define PINMUX_VI0 36
#define PINMUX_VO 37
#define PINMUX_RMII1 38
#define PINMUX_EPHY_LED 39
#define PINMUX_I80 40
#define PINMUX_LVDS 41
#define PINMUX_USB 42
#define PINMUX_USB_VBUS_DET (PINMUX_BASE + 0x108)
#define REG_TOP_USB_ECO (TOP_BASE + 0xB4)
#define BIT_TOP_USB_ECO_RX_FLUSH 0x80
/* rst */
#define REG_TOP_SOFT_RST 0x3000
#define BIT_TOP_SOFT_RST_USB BIT(11)
#define BIT_TOP_SOFT_RST_SDIO BIT(14)
#define BIT_TOP_SOFT_RST_NAND BIT(12)
#define REG_TOP_USB_CTRSTS (TOP_BASE + 0x38)
#define REG_TOP_CONF_INFO (TOP_BASE + 0x4)
#define BIT_TOP_CONF_INFO_VBUS BIT(9)
#define REG_TOP_USB_PHY_CTRL (TOP_BASE + 0x48)
#define BIT_TOP_USB_PHY_CTRL_EXTVBUS BIT(0)
#define USB_PHY_ID_OVERRIDE_ENABLE BIT(6)
#define USB_PHY_ID_VALUE BIT(7)
#define REG_TOP_DDR_ADDR_MODE (TOP_BASE + 0x64)
/* irq */
#define IRQ_LEVEL 0
#define IRQ_EDGE 3
/* usb */
#define USB_BASE 0x04340000
/* ethernet phy */
#define ETH_PHY_BASE 0x03009000
#define ETH_PHY_INIT_MASK 0xFFFFFFF9
#define ETH_PHY_SHUTDOWN BIT(1)
#define ETH_PHY_POWERUP 0xFFFFFFFD
#define ETH_PHY_RESET 0xFFFFFFFB
#define ETH_PHY_RESET_N BIT(2)
#define ETH_PHY_LED_LOW_ACTIVE BIT(3)
/* watchdog */
#define CONFIG_DW_WDT_BASE WATCHDOG_BASE
#define CONFIG_DW_WDT_CLOCK_KHZ 25000
#define DW_WDT_CR 0x00
#define DW_WDT_TORR 0x04
#define DW_WDT_CRR 0x0C
#define DW_WDT_CR_EN_OFFSET 0x00
#define DW_WDT_CR_RMOD_OFFSET 0x01
#define DW_WDT_CR_RMOD_VAL 0x00
#define DW_WDT_CRR_RESTART_VAL 0x76
/* SDIO Wifi */
#define WIFI_CHIP_EN_BGA BIT(18)
#define WIFI_CHIP_EN_QFN BIT(2)
/* RTC */
#define RTC_SYS_BASE 0x05000000
#define RTC_MACRO_BASE (RTC_SYS_BASE + 0x00026400)
#define RTC_MACRO_DA_SOC_READY 0x8C
#define RTC_MACRO_RO_T 0xA8
#define RTC_CORE_SRAM_BASE (RTC_SYS_BASE + 0x00026800)
#define RTC_CORE_SRAM_SIZE 0x0800 // 2KB
#define REG_RTC_CTRL_BASE (RTC_SYS_BASE + 0x00025000)
#define RTC_CTRL0_UNLOCKKEY 0x4
#define RTC_CTRL0 0x8
#define RTC_CTRL0_STATUS0 0xC
#define RTCSYS_RST_CTRL 0x18
#define REG_RTC_BASE (RTC_SYS_BASE + 0x00026000)
#define RTC_EN_PWR_WAKEUP 0xBC
#define RTC_EN_SHDN_REQ 0xC0
#define RTC_EN_PWR_CYC_REQ 0xC8
#define RTC_EN_WARM_RST_REQ 0xCC
#define RTC_EN_WDT_RST_REQ 0xE0
#define RTC_EN_SUSPEND_REQ 0xE4
#define RTC_PG_REG 0xF0
#define RTC_ST_ON_REASON 0xF8
#define REG_RTC_ST_ON_REASON (REG_RTC_BASE + RTC_ST_ON_REASON)
#define RTCSYS_F32KLESS_BASE (RTC_SYS_BASE + 0x0002A000)
#define RTC_INTERNAL_32K 0
#define RTC_EXTERNAL_32K 1
/* eFuse */
#define EFUSE_BASE (TOP_BASE + 0x00050000)
/* AXI SRAM */
#define AXI_SRAM_BASE 0x0E000000
#define AXI_SRAM_SIZE 0x40
#define EFUSE_SW_INFO_ADDR (AXI_SRAM_BASE)
#define EFUSE_SW_INFO_SIZE 4
#define BOOT_SOURCE_FLAG_ADDR (EFUSE_SW_INFO_ADDR + EFUSE_SW_INFO_SIZE)
#define BOOT_SOURCE_FLAG_SIZE 4
#define MAGIC_NUM_USB_DL 0x4D474E31 // MGN1
#define MAGIC_NUM_SD_DL 0x4D474E32 // MGN2
#define BOOT_LOG_LEN_ADDR (BOOT_SOURCE_FLAG_ADDR + BOOT_SOURCE_FLAG_SIZE) // 0x0E000008
#define BOOT_LOG_LEN_SIZE 4
#define TIME_RECORDS_ADDR (AXI_SRAM_BASE + 0x10) // 0x0E000010
/* from fsbl/plat/cv180x/include/platform_def.h struct _time_records { ... } */
#define TIME_RECORDS_FIELD_UBOOT_START (TIME_RECORDS_ADDR + 0x10)
#define TIME_RECORDS_FIELD_BOOTCMD_START (TIME_RECORDS_ADDR + 0x12)
#define TIME_RECORDS_FIELD_DECOMPRESS_KERNEL_START (TIME_RECORDS_ADDR + 0x14)
#define TIME_RECORDS_FIELD_KERNEL_START (TIME_RECORDS_ADDR + 0x16)
#endif /* __CV180X_REG_H__ */