blob: 6be710b100b69fd6f09c61570bb258e8de14cfca [file] [log] [blame]
/****************************************************************************
* arch/arm/src/phy62xx/mcu_phy_bumbee.h
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __ARCH_ARM_SRC_PHY62XX_MCU_PHY_BUMBEE_H
#define __ARCH_ARM_SRC_PHY62XX_MCU_PHY_BUMBEE_H
#ifdef __cplusplus
extern "C"
{
#endif
/****************************************************************************
* Included Files
****************************************************************************/
#include "types.h"
#include "bus_dev.h"
typedef enum
{
MOD_NONE = 0, MOD_CK802_CPU = 0,
MOD_DMA = 3,
MOD_AES = 4,
MOD_IOMUX = 7,
MOD_UART0 = 8,
MOD_I2C0 = 9,
MOD_I2C1 = 10,
MOD_SPI0 = 11,
MOD_SPI1 = 12,
MOD_GPIO = 13,
MOD_QDEC = 15,
MOD_ADCC = 17,
MOD_PWM = 18,
MOD_SPIF = 19,
MOD_VOC = 20,
MOD_TIMER5 = 21,
MOD_TIMER6 = 22,
MOD_UART1 = 25,
MOD_CP_CPU = 0 + 32,
MOD_BB = MOD_CP_CPU + 3,
MOD_TIMER = MOD_CP_CPU + 4,
MOD_WDT = MOD_CP_CPU + 5,
MOD_COM = MOD_CP_CPU + 6,
MOD_KSCAN = MOD_CP_CPU + 7,
MOD_BBREG = MOD_CP_CPU + 9,
BBLL_RST = MOD_CP_CPU + 10, /* can reset,but not gate in here */
BBTX_RST = MOD_CP_CPU + 11, /* can reset,but not gate in here */
BBRX_RST = MOD_CP_CPU + 12, /* can reset,but not gate in here */
BBMIX_RST = MOD_CP_CPU + 13, /* can reset,but not gate in here */
MOD_TIMER1 = MOD_CP_CPU + 21,
MOD_TIMER2 = MOD_CP_CPU + 22,
MOD_TIMER3 = MOD_CP_CPU + 23,
MOD_TIMER4 = MOD_CP_CPU + 24,
MOD_PCLK_CACHE = 0 + 64,
MOD_HCLK_CACHE = MOD_PCLK_CACHE + 1,
MOD_USR0 = 0 + 96,
MOD_USR1 = MOD_USR0 + 1,
MOD_USR2 = MOD_USR0 + 2,
MOD_USR3 = MOD_USR0 + 3,
MOD_USR4 = MOD_USR0 + 4,
MOD_USR5 = MOD_USR0 + 5,
MOD_USR6 = MOD_USR0 + 6,
MOD_USR7 = MOD_USR0 + 7,
MOD_USR8 = MOD_USR0 + 8,
MOD_SYSTEM = 0xff,
} MODULE_e;
/* SW_CLK -->0x4000f008 */
#define _CLK_NONE (BIT(0))
#define _CLK_CK802_CPU (BIT(0))
#define _CLK_DMA (BIT(3))
#define _CLK_AES (BIT(4))
#define _CLK_IOMUX (BIT(7))
#define _CLK_UART0 (BIT(8))
#define _CLK_I2C0 (BIT(9))
#define _CLK_I2C1 (BIT(10))
#define _CLK_SPI0 (BIT(11))
#define _CLK_SPI1 (BIT(12))
#define _CLK_GPIO (BIT(13))
#define _CLK_QDEC (BIT(15))
#define _CLK_ADCC (BIT(17))
#define _CLK_PWM (BIT(18))
#define _CLK_SPIF (BIT(19))
#define _CLK_VOC (BIT(20))
#define _CLK_TIMER5 (BIT(21))
#define _CLK_TIMER6 (BIT(22))
#define _CLK_UART1 (BIT(25))
/* SW_CLK1 -->0x4000f014 */
#define _CLK_M0_CPU (BIT(0))
#define _CLK_BB (BIT(3))
#define _CLK_TIMER (BIT(4))
#define _CLK_WDT (BIT(5))
#define _CLK_COM (BIT(6))
#define _CLK_KSCAN (BIT(7))
#define _CLK_BBREG (BIT(9))
#define _CLK_TIMER1 (BIT(21))
#define _CLK_TIMER2 (BIT(22))
#define _CLK_TIMER3 (BIT(23))
#define _CLK_TIMER4 (BIT(24))
#define BB_IRQ_HANDLER V4_IRQ_HANDLER
#define KSCAN_IRQ_HANDLER V5_IRQ_HANDLER
#define RTC_IRQ_HANDLER V6_IRQ_HANDLER
#define CP_COM_IRQ_HANDLER V7_IRQ_HANDLER
#define AP_COM_IRQ_HANDLER V8_IRQ_HANDLER
#define WDT_IRQ_HANDLER V10_IRQ_HANDLER
#define UART0_IRQ_HANDLER V11_IRQ_HANDLER
#define I2C0_IRQ_HANDLER V12_IRQ_HANDLER
#define I2C1_IRQ_HANDLER V13_IRQ_HANDLER
#define SPI0_IRQ_HANDLER V14_IRQ_HANDLER
#define SPI1_IRQ_HANDLER V15_IRQ_HANDLER
#define GPIO_IRQ_HANDLER V16_IRQ_HANDLER
#define UART1_IRQ_HANDLER V17_IRQ_HANDLER
#define SPIF_IRQ_HANDLER V18_IRQ_HANDLER
#define DMAC_IRQ_HANDLER V19_IRQ_HANDLER
#define TIM1_IRQ_HANDLER V20_IRQ_HANDLER
#define TIM2_IRQ_HANDLER V21_IRQ_HANDLER
#define TIM3_IRQ_HANDLER V22_IRQ_HANDLER
#define TIM4_IRQ_HANDLER V23_IRQ_HANDLER
#define TIM5_IRQ_HANDLER V24_IRQ_HANDLER
#define TIM6_IRQ_HANDLER V25_IRQ_HANDLER
#define AES_IRQ_HANDLER V28_IRQ_HANDLER
#define ADCC_IRQ_HANDLER V29_IRQ_HANDLER
#define QDEC_IRQ_HANDLER V30_IRQ_HANDLER
typedef struct
{
__IO uint32_t CH0_AP_MBOX; /* 0x00 */
__IO uint32_t CH0_CP_MBOX; /* 0x04 */
__IO uint32_t CH1_AP_MBOX; /* 0x08 */
__IO uint32_t CH1_CP_MBOX; /* 0x0c */
__IO uint32_t AP_STATUS; /* 0x10 */
__IO uint32_t CP_STATUS; /* 0x14 */
__IO uint32_t AP_INTEN; /* 0x18 */
__IO uint32_t CP_INTEN; /* 0x1c */
__IO uint32_t remap; /* 0x20 */
__IO uint32_t RXEV_EN; /* 0x24 */
__IO uint32_t STCALIB; /* 0x28 */
__IO uint32_t PERI_MASTER_SELECT; /* 0x2c */
} AP_COM_TypeDef;
typedef struct
{
__IO uint32_t CTRL0; /* 0x40 */
__IO uint32_t CTRL1; /* 0x44 */
uint32_t reserved[13];
__IO uint32_t REMAP_TABLE; /* 0x7c */
__IO uint32_t REMAP_CTRL[32]; /* 0x80 */
} AP_CACHE_TypeDef;
typedef struct
{
__IO uint8_t CR; /* 0x0 */
uint8_t RESERVED0[3];
__IO uint32_t TORR; /* 0x4 */
__O uint32_t CCVR; /* 0x8 */
__IO uint32_t CRR; /* 0xc */
uint8_t STAT; /* 0x10 */
uint8_t reserved1[3];
__IO uint8_t EOI; /* 0x14 */
uint8_t reserved2[3];
} AP_WDT_TypeDef;
typedef struct
{
__IO uint32_t SW_RESET0; /* 0x0 */
__IO uint32_t SW_RESET1; /* 0x4 */
__IO uint32_t SW_CLK; /* 0x8 */
__IO uint32_t SW_RESET2; /* 0xc */
__IO uint32_t SW_RESET3; /* 0x10 */
__IO uint32_t SW_CLK1; /* 0x14 */
__IO uint32_t APB_CLK; /* 0x18 */
__IO uint32_t APB_CLK_UPDATE; /* 0x1c */
__IO uint32_t CACHE_CLOCK_GATE; /* 0x20 */
__IO uint32_t CACHE_RST; /* 0x24 */
__IO uint32_t CACHE_BYPASS; /* 0x28 */
} AP_PCR_TypeDef;
typedef struct
{
__IO uint32_t LoadCount; /* 0x0 */
__IO uint32_t CurrentCount; /* 0x4 */
__IO uint32_t ControlReg; /* 0x8 */
__IO uint32_t EOI; /* 0xc */
__IO uint32_t status; /* 0x10 */
} AP_TIM_TypeDef;
typedef struct
{
__IO uint32_t IntStatus;
__IO uint32_t EOI;
__IO uint32_t unMaskIntStatus;
__IO uint32_t version;
} AP_TIM_SYS_TypeDef;
#if defined ( __CC_ARM )
#pragma anon_unions
#endif
/* Universal Asynchronous Receiver Transmitter (UARTx) */
typedef struct
{
union
{
__I uint8_t RBR;
__IO uint8_t THR;
__IO uint8_t DLL;
uint32_t RESERVED0; /* 0x0 */
};
union
{
__IO uint8_t DLM;
__IO uint32_t IER; /* 0x4 */
};
union
{
__I uint32_t IIR; /* 0x8 */
__IO uint8_t FCR;
};
__IO uint8_t LCR; /* 0xc */
uint8_t RESERVED1[3]; /* Reserved */
__IO uint32_t MCR; /* 0x10 */
__I uint8_t LSR; /* 0x14 */
uint8_t RESERVED2[3]; /* Reserved */
__IO uint32_t MSR; /* 0x18 */
__IO uint8_t SCR; /* 0x1c */
uint8_t RESERVED3[3]; /* Reserved */
__IO uint32_t LPDLL; /* 0x20 */
__IO uint32_t LPDLH; /* 0x24 */
__IO uint32_t recerved[2];
union
{
__IO uint32_t SRBR[16]; /* 0x30~60xc */
__IO uint32_t STHR[16];
};
__IO uint32_t rFAR; /* 0x70 */
__IO uint32_t TFR; /* 0x74 */
__IO uint32_t RFW; /* 0x78 */
__IO uint32_t USR; /* 0x7c */
__IO uint32_t TFL;
__IO uint32_t RFL;
__IO uint32_t SRR;
__IO uint32_t SRTS;
__IO uint32_t SBCR;
__IO uint32_t SDMAM;
__IO uint32_t SFE;
__IO uint32_t SRT;
__IO uint32_t STET; /* 0xa0 */
__IO uint32_t HTX;
__IO uint32_t DMASA; /* 0xa8 */
__IO uint32_t reserved[18];
__IO uint32_t CPR; /* 0xf4 */
__IO uint32_t UCV;
__IO uint32_t CTR;
} AP_UART_TypeDef;
/* Inter-Integrated Circuit (I2C) setup by zjp */
typedef struct
{
__IO uint32_t IC_CON;
__IO uint32_t IC_TAR;
__IO uint32_t IC_SAR;
__IO uint32_t IC_HS_MADDR;
__IO uint32_t IC_DATA_CMD; /* 0x10 */
__IO uint32_t IC_SS_SCL_HCNT;
__IO uint32_t IC_SS_SCL_LCNT;
__IO uint32_t IC_FS_SCL_HCNT;
__IO uint32_t IC_FS_SCL_LCNT; /* 0x20 */
__IO uint32_t IC_HS_SCL_HCNT;
__IO uint32_t IC_HS_SCL_LCNT;
__IO uint32_t IC_INTR_STAT;
__IO uint32_t IC_INTR_MASK; /* 0x30 */
__IO uint32_t IC_RAW_INTR_STAT;
__IO uint32_t IC_RX_TL;
__IO uint32_t IC_TX_TL;
__IO uint32_t IC_CLR_INTR; /* 0x40 */
__IO uint32_t IC_CLR_UNDER;
__IO uint32_t IC_CLR_RX_OVER;
__IO uint32_t IC_CLR_TX_OVER;
__IO uint32_t IC_CLR_RD_REG; /* 0x50 */
__IO uint32_t IC_CLR_TX_ABRT;
__IO uint32_t IC_CLR_RX_DONE;
__IO uint32_t IC_CLR_ACTIVITY;
__IO uint32_t IC_CLR_STOP_DET; /* 0x60 */
__IO uint32_t IC_CLR_START_DET;
__IO uint32_t IC_CLR_GEN_CALL;
__IO uint32_t IC_ENABLE;
__IO uint32_t IC_STATUS; /* 0x70 */
__IO uint32_t IC_TXFLR;
__IO uint32_t IC_RXFLR;
__IO uint32_t IC_SDA_HOLD;
__IO uint32_t IC_TX_ABRT_SOURCE; /* 0x80 */
__IO uint32_t IC_SLV_DATA_NACK_ONLY;
__IO uint32_t IC_DMA_CR;
__IO uint32_t IC_DMA_TDLR;
__IO uint32_t IC_DMA_RDLR; /* 0x90 */
__IO uint32_t IC_SDA_SETUP;
__IO uint32_t IC_ACK_GENERAL_CALL;
__IO uint32_t IC_ENABLE_STATUS;
__IO uint32_t IC_FS_SPKLEN; /* 0xa0 */
__IO uint32_t IC_HS_SPKLEN;
} AP_I2C_TypeDef;
/* Inter IC Sound (I2S) */
typedef struct
{
__IO uint32_t IER;
__IO uint32_t IRER;
__IO uint32_t ITER;
__IO uint32_t CER;
__IO uint32_t CCR;
__IO uint32_t RXFFR;
__IO uint32_t TXFFR;
} AP_I2S_BLOCK_TypeDef;
typedef struct
{
union
{
__IO uint32_t LRBR; /* 0x20 */
__IO uint32_t LTHR; /* 0x20 */
};
union
{
__IO uint32_t RRBR; /* 0x24 */
__IO uint32_t RTHR; /* 0x24 */
};
__IO uint32_t RER; /* 0x28 */
__IO uint32_t TER; /* 0x2c */
__IO uint32_t RCR; /* 0x30 */
__IO uint32_t TCR; /* 0x34 */
__IO uint32_t ISR; /* 0x38 */
__IO uint32_t IMR; /* 0x3c */
__IO uint32_t ROR; /* 0x40 */
__IO uint32_t TOR; /* 0x44 */
__IO uint32_t RFCR; /* 0x48 */
__IO uint32_t TFCR; /* 0x4c */
__IO uint32_t RFF; /* 0x50 */
__IO uint32_t TFF; /* 0x54 */
} AP_I2S_TypeDef;
/* General Purpose Input/Output (GPIO) */
typedef struct
{
__IO uint32_t swporta_dr; /* 0x00 */
__IO uint32_t swporta_ddr; /* 0x04 */
__IO uint32_t swporta_ctl; /* 0x08 */
uint32_t reserved8[9]; /* 0x18-0x2c portC&D */
__IO uint32_t inten; /* 0x30 */
__IO uint32_t intmask; /* 0x34 */
__IO uint32_t inttype_level; /* 0x38 */
__IO uint32_t int_polarity; /* 0x3c */
__I uint32_t int_status; /* 0x40 */
__IO uint32_t raw_instatus; /* 0x44 */
__IO uint32_t debounce; /* 0x48 */
__O uint32_t porta_eoi; /* 0x4c */
__I uint32_t ext_porta; /* 0x50 */
uint32_t reserved9[3]; /* 0x58 0x5c */
__IO uint32_t ls_sync; /* 0x60 */
__I uint32_t id_code; /* 0x64 */
uint32_t reserved10[1]; /* 0x68 */
__I uint32_t ver_id_code; /* 0x6c */
__I uint32_t config_reg2; /* 0x70 */
__I uint32_t config_reg1; /* 0x74 */
} AP_GPIO_TypeDef;
/* -------------------- (SPI) -------------------------------- */
typedef struct
{
__IO uint16_t CR0; /* 0x0 */ /* !< Offset: 0x000 Control Register 0 (R/W) */
uint16_t reserved1;
__IO uint16_t CR1; /* 0x04 */ /* !< Offset: 0x004 Control Register 1 (R/W) */
uint16_t reserved2;
__IO uint8_t SSIEN; /* 0x08 */
uint8_t reserved3[3];
__IO uint8_t MWCR; /* 0x0c */
uint8_t reserved4[3];
__IO uint8_t SER; /* 0x10 */
uint8_t reserved5[3];
__IO uint32_t BAUDR; /* 0x14 */
__IO uint32_t TXFTLR; /* 0x18 */
__IO uint32_t RXFTLR; /* 0x1c */
__O uint32_t TXFLR; /* 0x20 */
__O uint32_t RXFLR; /* 0x24 */
__IO uint8_t SR; /* 0x28 */
uint8_t reserved7[3];
__IO uint32_t IMR; /* 0x2c */
__IO uint32_t ISR; /* 0x30 */
__IO uint32_t RISR; /* 0x34 */
__IO uint32_t TXOICR; /* 0x38 */
__IO uint32_t RXOICR; /* 0x3c */
__IO uint32_t RXUICR; /* 0x40 */
__IO uint32_t MSTICR; /* 0x44 */
__IO uint32_t ICR; /* 0x48 */
__IO uint32_t DMACR; /* 0x4c */
__IO uint32_t DMATDLR; /* 0x50 */
__IO uint32_t DMARDLR; /* 0x54 */
__IO uint32_t IDR; /* 0x5c */
__IO uint32_t SSI_COM_VER; /* 0x5c */
__IO uint32_t DataReg;
} AP_SSI_TypeDef;
typedef struct
{
__IO uint32_t Analog_IO_en; /* 0x00 */
__IO uint32_t SPI_debug_en; /* 0x04 */
__IO uint32_t debug_mux_en; /* 0x08 */
__IO uint32_t full_mux0_en; /* 0x0c */
__IO uint32_t full_mux1_en; /* 0x10 reserved in some soc */
__IO uint32_t gpio_pad_en; /* 0x14 */
__IO uint32_t gpio_sel[9]; /* 0x18 */
__IO uint32_t pad_pe0; /* 0x3c */
__IO uint32_t pad_pe1; /* 0x40 */
__IO uint32_t pad_ps0; /* 0x44 */
__IO uint32_t pad_ps1; /* 0x48 */
__IO uint32_t keyscan_in_en; /* 0x4c */
__IO uint32_t keyscan_out_en; /* 0x50 */
} IOMUX_TypeDef;
typedef struct
{
__IO uint32_t PWROFF; /* 0x00 */
__IO uint32_t PWRSLP; /* 0x04 */
__IO uint32_t IOCTL[3]; /* 0x08 0x0c 0x10 */
__IO uint32_t PMCTL0; /* 0x14 */
__IO uint32_t PMCTL1; /* 0x18 */
__IO uint32_t PMCTL2_0; /* 0x1c */
__IO uint32_t PMCTL2_1; /* 0x20 */
__IO uint32_t RTCCTL; /* 0x24 */
__IO uint32_t RTCCNT; /* 0x28 */
__IO uint32_t RTCCC0; /* 0x2c */
__IO uint32_t RTCCC1; /* 0x30 */
__IO uint32_t RTCCC2; /* 0x34 */
__IO uint32_t RTCFLAG; /* 0x38 */
__IO uint32_t reserved[25];
__IO uint32_t REG_S9; /* 0xa0 */
__IO uint32_t REG_S10; /* 0xa4 */
__IO uint32_t REG_S11; /* 0xa8 */
__IO uint32_t IDLE_REG; /* 0xac */
__IO uint32_t GPIO_WAKEUP_SRC[2]; /* 0xb0 b4 */
__IO uint32_t PCLK_CLK_GATE; /* 0xb8 */
__IO uint32_t XTAL_16M_CTRL; /* 0xbc */
__IO uint32_t SLEEP_R[4]; /* 0xc0 c4 c8 cc */
} AP_AON_TypeDef;
typedef struct
{
__IO uint32_t RTCCTL; /* 0x24 */
__IO uint32_t RTCCNT; /* 0x28 */
__IO uint32_t RTCCC0; /* 0x2c */
__IO uint32_t RTCCC1; /* 0x30 */
__IO uint32_t RTCCC2; /* 0x34 */
__IO uint32_t RTCFLAG; /* 0x38 */
} AP_RTC_TypeDef;
typedef struct
{
__IO uint32_t io_wu_mask_31_0; /* 0xa0 */
__IO uint32_t io_wu_mask_34_32; /* 0xa4 */
} AP_Wakeup_TypeDef;
typedef struct
{
__IO uint32_t CLKSEL; /* 0x3c */
__IO uint32_t CLKHF_CTL0; /* 0x40 */
__IO uint32_t CLKHF_CTL1; /* 0x44 */
__IO uint32_t ANA_CTL; /* 0x48 */
__IO uint32_t mem_0_1_dvs; /* 0x4c */
__IO uint32_t mem_2_3_4_dvs; /* 0x50 */
__IO uint32_t efuse_cfg; /* 0x54 */
__IO uint32_t chip_state; /* 0x58 */
__IO uint32_t cal_rw; /* 0x5c */
__IO uint32_t cal_ro0; /* 0x60 */
__IO uint32_t cal_ro1; /* 0x64 */
__IO uint32_t cal_ro2; /* 0x68 */
__IO uint32_t ADC_CTL0; /* 0x6c */
__IO uint32_t ADC_CTL1; /* 0x70 */
__IO uint32_t ADC_CTL2; /* 0x74 */
__IO uint32_t ADC_CTL3; /* 0x78 */
__IO uint32_t ADC_CTL4; /* 0x7c */
uint32_t reserved1[48];
__IO uint32_t EFUSE_PROG[2]; /* 0x140 */
uint32_t reserved2[6];
__IO uint32_t EFUSE0[2]; /* 0x160 */
__IO uint32_t EFUSE1[2]; /* 0x168 */
__IO uint32_t EFUSE2[2]; /* 0x170 */
__IO uint32_t EFUSE3[2]; /* 0x178 */
__IO uint32_t SECURTY_STATE; /* 0x180 */
} AP_PCRM_TypeDef;
typedef struct
{
__IO uint32_t enable; /* 0x00 */
__IO uint32_t reserve0[2]; /* 0x04~0x08 */
__IO uint32_t control_1; /* 0x0c */
__IO uint32_t control_2; /* 0x10 */
__IO uint32_t control_3; /* 0x14 */
__IO uint32_t control_4; /* 0x18 */
__IO uint32_t compare_reset; /* 0x1c */
__IO uint32_t int_pointer_ch0_ch3; /* 0x20 */
__IO uint32_t int_pointer_ch4_ch7; /* 0x24 */
/* __IO uint32_t int_pointer[2]; */ /* 0x20~0x24 */
__IO uint32_t reserve1[3]; /* 0x28~0x30 */
__IO uint32_t intr_mask; /* 0x34 */
__IO uint32_t intr_clear; /* 0x38 */
__IO uint32_t intr_status; /* 0x3c */
__IO uint32_t compare_cfg[8]; /* 0x40~0x5c */
} AP_ADCC_TypeDef;
typedef struct
{
__IO uint32_t config; /* 0x0,QSPI Configuration Register,R/W */
__IO uint32_t read_instr; /* 0x4,Device Read Instruction Register,R/W */
__IO uint32_t write_instr; /* 0x8,Device Write Instruction Register,R/W */
__IO uint32_t delay; /* 0xC,QSPI Device Delay Register,R/W */
__IO uint32_t rddata_capture; /* 0x10,Read Data Capture Register,R/W */
__IO uint32_t dev_size; /* 0x14,Device Size Register,R/W */
__IO uint32_t sram_part; /* 0x18,SRAM Partition Register,R/W */
__IO uint32_t indirect_ahb_addr_trig; /* 0x1C,Indirect AHB Address Trigger Register,R/W */
__IO uint32_t dma_peripheral; /* 0x20,DMA Peripheral Register,R/W */
__IO uint32_t remap; /* 0x24,Remap Address Register,R/W */
__IO uint32_t mode_bit; /* 0x28,Mode Bit Register,R/W */
__IO uint32_t sram_fill_level; /* 0x2C,SRAM Fill Level Register,RO */
__IO uint32_t tx_threshold; /* 0x30,TX Threshold Register,R/W */
__IO uint32_t rx_threshold; /* 0x34,RX Threshold Register,R/W */
__IO uint32_t wr_completion_ctrl; /* 0x38,Write Completion Control Register,R/W */
__IO uint32_t poll_expire; /* 0x3C,Polling Expiration Register,R/W */
__IO uint32_t int_status; /* 0x40,Interrupt Status Register,R/W */
__IO uint32_t int_mask; /* 0x44,Interrupt Mask,R/W */
__I uint32_t n1[2]; /* 0x48~0x4c,Empty */
__IO uint32_t low_wr_protection; /* 0x50,Lower Write Protection Register,R/W */
__IO uint32_t up_wr_protection; /* 0x54,Upper Write Protection Register,R/W */
__IO uint32_t wr_protection; /* 0x58,Write Protection Register,R/W */
__I uint32_t n2; /* 0x5c,Empty */
__IO uint32_t indirect_rd; /* 0x60,Indirect Read Transfer Register,R/W */
__IO uint32_t indirect_rd_watermark; /* 0x64,Indirect Read Transfer Watermark Register,R/W */
__IO uint32_t indirect_rd_start_addr; /* 0x68,Indirect Read Transfer Start Address Register,R/W */
__IO uint32_t indirect_rd_num; /* 0x6C,Indirect Read Transfer Number Bytes Register,R/W */
__IO uint32_t indirect_wr; /* 0x70,Indirect Write Transfer Register,R/W */
__IO uint32_t indirect_wr_watermark; /* 0x74,Indirect Write Transfer Watermark Register,R/W */
__IO uint32_t indirect_wr_start_addr; /* 0x78,Indirect Write Transfer Start Address Register,R/W */
__IO uint32_t indirect_wr_cnt; /* 0x7C,Indirect Write Transfer Count Register,R/W */
__IO uint32_t indirect_ahb_trig_addr_range; /* 0x80,Indirect AHB Trigger Address Range Register,R/W */
__I uint32_t n3[3]; /* 0x84~0x8c,Empty */
__IO uint32_t fcmd; /* 0x90,Flash Command Register,R/W */
__IO uint32_t fcmd_addr; /* 0x94,Flash Command Address Registers,R/W */
__I uint32_t n4[2]; /* 0x98~0x9c,Empty */
__IO uint32_t fcmd_rddata[2]; /* 0xA0,Flash Command Read Data Register (low-a0, up-a4),RO */
__IO uint32_t fcmd_wrdata[2]; /* 0xA8,Flash Command Write Data Register (low-a8, up-ac),R/W */
__IO uint32_t poll_fstatus; /* 0xB0,Polling Flash Status Register,RO */
/* __IO uint32_t; */ /* 0xFC,Module ID Register,RO */
} AP_SPIF_TypeDef;
typedef struct
{
__IO uint32_t ctrl0; /* 0xc0 */
__IO uint32_t ctrl1; /* 0xc4 */
__IO uint32_t mk_in_en; /* 0xc8 */
__IO uint32_t mkc[6]; /* 0xcc~0xe0 */
} AP_KSCAN_TypeDef;
typedef struct
{
__IO uint32_t pwmen;
} AP_PWM_TypeDef;
typedef struct
{
__IO uint32_t ctrl0;
__IO uint32_t ctrl1;
} AP_PWMCTRL_TypeDef;
typedef struct
{
__IO uint32_t SAR;
__IO uint32_t SAR_H;
__IO uint32_t DAR;
__IO uint32_t DAR_H;
__IO uint32_t LLP;
__IO uint32_t LLP_H;
__IO uint32_t CTL;
__IO uint32_t CTL_H;
__IO uint32_t SSTAT;
__IO uint32_t SSTAT_H;
__IO uint32_t DSTAT;
__IO uint32_t DSTAT_L;
__IO uint32_t SSTATAR;
__IO uint32_t SSTATAR_H;
__IO uint32_t DSTATAR;
__IO uint32_t DSTATAR_H;
__IO uint32_t CFG;
__IO uint32_t CFG_H;
__IO uint32_t rsv[4];
} AP_DMA_CH_TypeDef;
typedef struct
{
__IO uint32_t RawTfr; /* 0x2c0 */
__IO uint32_t RawTfr_H; /* 0x2c4 */
__IO uint32_t RawBlock; /* 0x2c8 */
__IO uint32_t RawBlock_H; /* 0x2cc */
__IO uint32_t RawSrcTran; /* 0x2d0 */
__IO uint32_t RawSrcTran_H; /* 0x2d4 */
__IO uint32_t RawDstTran; /* 0x2d8 */
__IO uint32_t RawDstTran_H; /* 0x2dc */
__IO uint32_t RawErr; /* 0x2e0 */
__IO uint32_t RawErr_H; /* 0x2e4 */
__IO uint32_t StatusTfr; /* 0x2e8 */
__IO uint32_t StatusTfr_H; /* 0x2ec */
__IO uint32_t StatusBlock; /* 0x2f0 */
__IO uint32_t StatusBlock_H; /* 0x2f4 */
__IO uint32_t StatusSrcTran; /* 0x2f8 */
__IO uint32_t StatusSrcTran_H; /* 0x2fc */
__IO uint32_t StatusDstTran; /* 0x300 */
__IO uint32_t StatusDstTran_H; /* 0x304 */
__IO uint32_t StatusErr; /* 0x308 */
__IO uint32_t StatusErr_H; /* 0x30c */
__IO uint32_t MaskTfr; /* 0x310 */
__IO uint32_t MaskTfr_H; /* 0x314 */
__IO uint32_t MaskBlock; /* 0x318 */
__IO uint32_t MaskBlock_H; /* 0x31c */
__IO uint32_t MaskSrcTran; /* 0x320 */
__IO uint32_t MaskSrcTran_H; /* 0x324 */
__IO uint32_t MaskDstTran; /* 0x328 */
__IO uint32_t MaskDstTran_H; /* 0x32c */
__IO uint32_t MaskErr; /* 0x330 */
__IO uint32_t MaskErr_H; /* 0x334 */
__IO uint32_t ClearTfr; /* 0x338 */
__IO uint32_t ClearTfr_H; /* 0x33c */
__IO uint32_t ClearBlock; /* 0x340 */
__IO uint32_t ClearBlock_H; /* 0x344 */
__IO uint32_t ClearSrcTran; /* 0x348 */
__IO uint32_t ClearSrcTran_H; /* 0x34c */
__IO uint32_t ClearDstTran; /* 0x350 */
__IO uint32_t ClearDstTran_H; /* 0x354 */
__IO uint32_t ClearErr; /* 0x358 */
__IO uint32_t ClearErr_H; /* 0x35c */
__IO uint32_t StatusInt; /* 0x360 */
__IO uint32_t StatusInt_H; /* 0x364 */
} AP_DMA_INT_TypeDef;
typedef struct
{
__IO uint32_t ReqSrcReg; /* 0x368 */
__IO uint32_t ReqSrcReg_H; /* 0x36c */
__IO uint32_t ReqDstReg; /* 0x370 */
__IO uint32_t ReqDstReg_H; /* 0x374 */
__IO uint32_t SglReqSrcReg; /* 0x378 */
__IO uint32_t SglReqSrcReg_H; /* 0x37c */
__IO uint32_t SglReqDstReg; /* 0x380 */
__IO uint32_t SglReqDstReg_H; /* 0x384 */
__IO uint32_t LstSrcReg; /* 0x388 */
__IO uint32_t LstSrcReg_H; /* 0x38c */
__IO uint32_t LstDstReg; /* 0x390 */
__IO uint32_t LstDstReg_H; /* 0x394 */
} AP_DMA_SW_HANDSHAKE_TypeDef;
typedef struct
{
__IO uint32_t DmaCfgReg; /* 0x398 */
__IO uint32_t DmaCfgReg_H; /* 0x39c */
__IO uint32_t ChEnReg; /* 0x3a0 */
__IO uint32_t ChEnReg_H; /* 0x3a4 */
__IO uint32_t DmaIdReg; /* 0x3a8 */
__IO uint32_t DmaIdReg_H; /* 0x3ac */
__IO uint32_t DmaTestReg; /* 0x3b0 */
__IO uint32_t DmaTestReg_H; /* 0x3b4 */
__IO uint32_t rsv1[4];
__IO uint32_t DMA_COMP_PARAMS_6; /* 0x3c8 */
__IO uint32_t DMA_COMP_PARAMS_6_H; /* 0x3cc */
__IO uint32_t DMA_COMP_PARAMS_5; /* 0x3d0 */
__IO uint32_t DMA_COMP_PARAMS_5_H; /* 0x3d4 */
__IO uint32_t DMA_COMP_PARAMS_4; /* 0x3d8 */
__IO uint32_t DMA_COMP_PARAMS_4_H; /* 0x3dc */
__IO uint32_t DMA_COMP_PARAMS_3; /* 0x3e0 */
__IO uint32_t DMA_COMP_PARAMS_3_H; /* 0x3e4 */
__IO uint32_t DMA_COMP_PARAMS_2; /* 0x3e8 */
__IO uint32_t DMA_COMP_PARAMS_2_H; /* 0x3ec */
__IO uint32_t DMA_COMP_PARAMS_1; /* 0x3f0 */
__IO uint32_t DMA_COMP_PARAMS_1_H; /* 0x3f4 */
__IO uint32_t DMA_ID; /* 0x3f8 */
__IO uint32_t DMA_ID_H; /* 0x3fc */
} AP_DMA_MISC_TypeDef;
#if defined ( __CC_ARM )
#pragma no_anon_unions
#endif
/****************************************************************************
* Peripheral memory map(AP)
****************************************************************************/
/* Base addresses */
#define AP_APB0_BASE (0x40000000UL)
#define SPIF_BASE_ADDR (0x11000000) /* spif */
#define AP_PCR_BASE (AP_APB0_BASE + 0x0000) /* pcr */ /* APB0 peripherals */
#define AP_TIM1_BASE (AP_APB0_BASE + 0x1000)
#define AP_TIM2_BASE (AP_APB0_BASE + 0x1014)
#define AP_TIM3_BASE (AP_APB0_BASE + 0x1028)
#define AP_TIM4_BASE (AP_APB0_BASE + 0x103c)
#define AP_TIM5_BASE (AP_APB0_BASE + 0x1050)
#define AP_TIM6_BASE (AP_APB0_BASE + 0x1064)
#define AP_TIM_SYS_BASE (AP_APB0_BASE + 0x10a0)
#define AP_WDT_BASE (AP_APB0_BASE + 0x2000)
#define AP_COM_BASE (AP_APB0_BASE + 0x3000) /* com */
#define AP_IOMUX_BASE (AP_APB0_BASE + 0x3800) /* iomux */
#define AP_UART0_BASE (AP_APB0_BASE + 0x4000) /* uart0 */
#define AP_I2C0_BASE (AP_APB0_BASE + 0x5000) /* i2c0 */
#define AP_I2C1_BASE (AP_APB0_BASE + 0x5800) /* i2c1 */
#define AP_SPI0_BASE (AP_APB0_BASE + 0x6000) /* spi0 */
#define AP_SPI1_BASE (AP_APB0_BASE + 0x7000) /* spi1 */
#define AP_GPIOA_BASE (AP_APB0_BASE + 0x8000) /* gpio */
#define AP_UART1_BASE (AP_APB0_BASE + 0x9000) /* uart1 */
#define AP_DMIC_BASE (AP_APB0_BASE + 0xA000)
#define AP_QDEC_BASE (AP_APB0_BASE + 0xB000) /* qdec */
#define AP_CACHE_BASE (AP_APB0_BASE + 0xC000)
#define AP_SPIF_BASE (AP_APB0_BASE + 0xC800) /* spif */
#define AP_KSCAN_BASE (AP_APB0_BASE + 0xD0C0) /* kscan */
#define AP_PWM_BASE (AP_APB0_BASE + 0xE000) /* pwm */
#define AP_AON_BASE (AP_APB0_BASE + 0xF000) /* aon */
#define AP_RTC_BASE (AP_APB0_BASE + 0xF024) /* rtc */
#define AP_PCRM_BASE (AP_APB0_BASE + 0xF03c) /* pcrm */
#define AP_WAKEUP_BASE (AP_APB0_BASE + 0xF0a0) /* wakeup */
#define AP_DMAC_BASE (AP_APB0_BASE + 0x10000) /* dmac */
#define ADCC_BASE_ADDR (AP_APB0_BASE + 0x50000) /* adcc */
/* bb_top */ /* linklayer */
#define SRAM0_BASE_ADDRESS 0x1FFF0000
#define SRAM1_BASE_ADDRESS 0x1FFF4000
#define SRAM2_BASE_ADDRESS 0x1FFF8000
#define AP_PCR ((AP_PCR_TypeDef *) AP_PCR_BASE)
#define AP_TIM1 ((AP_TIM_TypeDef *) AP_TIM1_BASE)
#define AP_TIM2 ((AP_TIM_TypeDef *) AP_TIM2_BASE)
#define AP_TIM3 ((AP_TIM_TypeDef *) AP_TIM3_BASE)
#define AP_TIM4 ((AP_TIM_TypeDef *) AP_TIM4_BASE)
#define AP_TIM5 ((AP_TIM_TypeDef *) AP_TIM5_BASE)
#define AP_TIM6 ((AP_TIM_TypeDef *) AP_TIM6_BASE)
#define AP_TIMS ((AP_TIM_SYS_TypeDef *) AP_TIM_SYS_BASE)
#define AP_WDT ((AP_WDT_TypeDef *) AP_WDT_BASE)
#define AP_COM ((AP_COM_TypeDef *) AP_COM_BASE)
#define AP_IOMUX ((IOMUX_TypeDef *) AP_IOMUX_BASE)
#define AP_UART0 ((AP_UART_TypeDef *) AP_UART0_BASE)
#define AP_I2C0 ((AP_I2C_TypeDef *) AP_I2C0_BASE)
#define AP_I2C1 ((AP_I2C_TypeDef *) AP_I2C1_BASE)
#define AP_SPI0 ((AP_SSI_TypeDef *) AP_SPI0_BASE)
#define AP_SPI1 ((AP_SSI_TypeDef *) AP_SPI1_BASE)
#define AP_GPIO ((AP_GPIO_TypeDef *) AP_GPIOA_BASE)
#define AP_UART1 ((AP_UART_TypeDef *) AP_UART1_BASE)
#define AP_CACHE ((AP_CACHE_TypeDef *) AP_CACHE_BASE)
#define AP_SPIF ((AP_SPIF_TypeDef *) AP_SPIF_BASE)
#define AP_KSCAN ((AP_KSCAN_TypeDef *) AP_KSCAN_BASE)
#define AP_PWM ((AP_PWM_TypeDef *) AP_PWM_BASE)
#define AP_PWM_CTRL(n) ((AP_PWMCTRL_TypeDef *) (AP_PWM_BASE + 4 + n*12))
#define AP_AON ((AP_AON_TypeDef *) AP_AON_BASE)
#define AP_RTC ((AP_RTC_TypeDef *) AP_RTC_BASE)
#define AP_PCRM ((AP_PCRM_TypeDef *) AP_PCRM_BASE)
#define AP_WAKEUP ((AP_Wakeup_TypeDef*) AP_WAKEUP_BASE)
#define AP_ADCC ((AP_ADCC_TypeDef *) ADCC_BASE_ADDR)
#define AP_DMA_CH_CFG(n) ((AP_DMA_CH_TypeDef *) (AP_DMAC_BASE + 0x58*n))
#define AP_DMA_INT ((AP_DMA_INT_TypeDef *) (AP_DMAC_BASE + 0x2c0))
#define AP_DMA_SW_HANDSHAKE ((AP_DMA_SW_HANDSHAKE_TypeDef *) (AP_DMAC_BASE + 0x368))
#define AP_DMA_MISC ((AP_DMA_MISC_TypeDef *) (AP_DMAC_BASE + 0x398))
/****************************************************************************
* Peripheral memory map(CP)
****************************************************************************/
/* Base addresses */
#define IRQ_PRIO_REALTIME 0
#define IRQ_PRIO_HIGH 1
#define IRQ_PRIO_HAL 2
#define IRQ_PRIO_THREAD 3
#define IRQ_PRIO_APP 3
#endif /* __ARCH_ARM_SRC_PHY62XX_MCU_PHY_BUMBEE_H */