mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Jun 21 17:46:44 2017 +0100
Revision:
167:e84263d55307
Child:
169:e3b6fe271b81
This updates the lib to the mbed lib v 145

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 167:e84263d55307 1 /*******************************************************************************
AnnaBridge 167:e84263d55307 2 *Copyright (c) 2013-2016 Realtek Semiconductor Corp, All Rights Reserved
AnnaBridge 167:e84263d55307 3 * SPDX-License-Identifier: LicenseRef-PBL
AnnaBridge 167:e84263d55307 4 *
AnnaBridge 167:e84263d55307 5 * Licensed under the Permissive Binary License, Version 1.0 (the "License");
AnnaBridge 167:e84263d55307 6 * you may not use this file except in compliance with the License.
AnnaBridge 167:e84263d55307 7 *
AnnaBridge 167:e84263d55307 8 * You may obtain a copy of the License at https://www.mbed.com/licenses/PBL-1.0
AnnaBridge 167:e84263d55307 9 *
AnnaBridge 167:e84263d55307 10 * See the License for the specific language governing permissions and limitations under the License.
AnnaBridge 167:e84263d55307 11 *******************************************************************************
AnnaBridge 167:e84263d55307 12 */
AnnaBridge 167:e84263d55307 13 #ifndef _HAL_8195A_H_
AnnaBridge 167:e84263d55307 14 #define _HAL_8195A_H_
AnnaBridge 167:e84263d55307 15
AnnaBridge 167:e84263d55307 16 #include "platform_autoconf.h"
AnnaBridge 167:e84263d55307 17 #include "basic_types.h"
AnnaBridge 167:e84263d55307 18 #include "section_config.h"
AnnaBridge 167:e84263d55307 19 #include "rtl8195a_sys_on.h"
AnnaBridge 167:e84263d55307 20 #include "rtl8195a_peri_on.h"
AnnaBridge 167:e84263d55307 21 #include "hal_platform.h"
AnnaBridge 167:e84263d55307 22 #include "hal_pinmux.h"
AnnaBridge 167:e84263d55307 23 #include "hal_api.h"
AnnaBridge 167:e84263d55307 24 #include "hal_peri_on.h"
AnnaBridge 167:e84263d55307 25 #include "hal_misc.h"
AnnaBridge 167:e84263d55307 26 #include "hal_irqn.h"
AnnaBridge 167:e84263d55307 27 #include "hal_vector_table.h"
AnnaBridge 167:e84263d55307 28 #include "hal_diag.h"
AnnaBridge 167:e84263d55307 29 #include "hal_spi_flash.h"
AnnaBridge 167:e84263d55307 30 #include "rtl8195a_spi_flash.h"
AnnaBridge 167:e84263d55307 31 //#include "hal_timer.h"
AnnaBridge 167:e84263d55307 32 #include "hal_util.h"
AnnaBridge 167:e84263d55307 33 #include "hal_efuse.h"
AnnaBridge 167:e84263d55307 34 #include "hal_soc_ps_monitor.h"
AnnaBridge 167:e84263d55307 35 #include "diag.h"
AnnaBridge 167:e84263d55307 36 //#include "hal_common.h"
AnnaBridge 167:e84263d55307 37 //#include "hal_soc_ps_monitor.h"
AnnaBridge 167:e84263d55307 38
AnnaBridge 167:e84263d55307 39
AnnaBridge 167:e84263d55307 40 // from RDC team
AnnaBridge 167:e84263d55307 41 #ifdef CONFIG_MBED_ENABLED
AnnaBridge 167:e84263d55307 42 // Add for Mbed -OS
AnnaBridge 167:e84263d55307 43 #include <stdint.h>
AnnaBridge 167:e84263d55307 44 #include <stdbool.h>
AnnaBridge 167:e84263d55307 45 #include <stddef.h>
AnnaBridge 167:e84263d55307 46
AnnaBridge 167:e84263d55307 47 #include "rtl8195a_compiler.h"
AnnaBridge 167:e84263d55307 48 #include "rtl8195a_platform.h"
AnnaBridge 167:e84263d55307 49
AnnaBridge 167:e84263d55307 50
AnnaBridge 167:e84263d55307 51
AnnaBridge 167:e84263d55307 52 #define REG32(reg) (*(volatile uint32_t *)(reg))
AnnaBridge 167:e84263d55307 53 #define REG16(reg) (*(volatile uint16_t *)(reg))
AnnaBridge 167:e84263d55307 54 #define REG08(reg) (*(volatile uint8_t *)(reg))
AnnaBridge 167:e84263d55307 55
AnnaBridge 167:e84263d55307 56 #ifndef BIT
AnnaBridge 167:e84263d55307 57 #define BIT(x) (1 << (x))
AnnaBridge 167:e84263d55307 58 #endif
AnnaBridge 167:e84263d55307 59 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))
AnnaBridge 167:e84263d55307 60 #define ABS(x) ((x > 0) ? x : -x)
AnnaBridge 167:e84263d55307 61 #define MAX(x,y) ((x) < (y) ? (y) : (x))
AnnaBridge 167:e84263d55307 62 #ifndef MIN
AnnaBridge 167:e84263d55307 63 #define MIN(x,y) ((x) > (y) ? (y) : (x))
AnnaBridge 167:e84263d55307 64 #endif
AnnaBridge 167:e84263d55307 65
AnnaBridge 167:e84263d55307 66 #define __RTK_READ32(B,A) (REG32((B) + (A)))
AnnaBridge 167:e84263d55307 67 #define __RTK_READ16(B,A) (REG16((B) + (A)))
AnnaBridge 167:e84263d55307 68 #define __RTK_READ08(B,A) (REG08((B) + (A)))
AnnaBridge 167:e84263d55307 69 #define __RTK_WRITE32(B,A,V) (REG32((B) + (A)) = (V))
AnnaBridge 167:e84263d55307 70 #define __RTK_WRITE16(B,A,V) (REG32((B) + (A)) = (V))
AnnaBridge 167:e84263d55307 71 #define __RTK_WRITE08(B,A,V) (REG32((B) + (A)) = (V))
AnnaBridge 167:e84263d55307 72
AnnaBridge 167:e84263d55307 73 #define __RTK_SETBIT(A,V) (REG32(A) |= V)
AnnaBridge 167:e84263d55307 74 #define __RTK_CLRBIT(A,V) (REG32(A) &= ~V)
AnnaBridge 167:e84263d55307 75 #define __RTK_SETMSK(A,M,V) (REG32(A) = ((REG32(A) & (~M)) | V))
AnnaBridge 167:e84263d55307 76
AnnaBridge 167:e84263d55307 77 #define PERI_BASE 0x40000000
AnnaBridge 167:e84263d55307 78
AnnaBridge 167:e84263d55307 79 #define __BUILD_MACRO(name,ctrl) \
AnnaBridge 167:e84263d55307 80 static inline uint32_t \
AnnaBridge 167:e84263d55307 81 __##name##_READ32(uint32_t addr) \
AnnaBridge 167:e84263d55307 82 { \
AnnaBridge 167:e84263d55307 83 return __RTK_READ32(ctrl##_BASE,addr); \
AnnaBridge 167:e84263d55307 84 } \
AnnaBridge 167:e84263d55307 85 static inline uint16_t \
AnnaBridge 167:e84263d55307 86 __##name##_READ16(uint32_t addr) \
AnnaBridge 167:e84263d55307 87 { \
AnnaBridge 167:e84263d55307 88 return __RTK_READ16(ctrl##_BASE,addr); \
AnnaBridge 167:e84263d55307 89 } \
AnnaBridge 167:e84263d55307 90 static inline uint8_t \
AnnaBridge 167:e84263d55307 91 __##name##_READ08(uint32_t addr) \
AnnaBridge 167:e84263d55307 92 { \
AnnaBridge 167:e84263d55307 93 return __RTK_READ08(ctrl##_BASE,addr); \
AnnaBridge 167:e84263d55307 94 } \
AnnaBridge 167:e84263d55307 95 static inline void \
AnnaBridge 167:e84263d55307 96 __##name##_WRITE32(uint32_t addr, uint32_t val) \
AnnaBridge 167:e84263d55307 97 { \
AnnaBridge 167:e84263d55307 98 __RTK_WRITE32(ctrl##_BASE,addr,val); \
AnnaBridge 167:e84263d55307 99 } \
AnnaBridge 167:e84263d55307 100 static inline void \
AnnaBridge 167:e84263d55307 101 __##name##_WRITE16(uint32_t addr, uint16_t val) \
AnnaBridge 167:e84263d55307 102 { \
AnnaBridge 167:e84263d55307 103 __RTK_WRITE16(ctrl##_BASE,addr,val); \
AnnaBridge 167:e84263d55307 104 } \
AnnaBridge 167:e84263d55307 105 static inline void \
AnnaBridge 167:e84263d55307 106 __##name##_WRITE08(uint32_t addr, uint8_t val) \
AnnaBridge 167:e84263d55307 107 { \
AnnaBridge 167:e84263d55307 108 __RTK_WRITE08(ctrl##_BASE,addr,val); \
AnnaBridge 167:e84263d55307 109 } \
AnnaBridge 167:e84263d55307 110 static inline void \
AnnaBridge 167:e84263d55307 111 __##name##_SETBIT(uint32_t addr, uint32_t val) \
AnnaBridge 167:e84263d55307 112 { \
AnnaBridge 167:e84263d55307 113 __RTK_SETBIT(ctrl##_BASE+addr,val); \
AnnaBridge 167:e84263d55307 114 } \
AnnaBridge 167:e84263d55307 115 static inline void \
AnnaBridge 167:e84263d55307 116 __##name##_CLRBIT(uint32_t addr, uint32_t val) \
AnnaBridge 167:e84263d55307 117 { \
AnnaBridge 167:e84263d55307 118 __RTK_CLRBIT(ctrl##_BASE+addr,val); \
AnnaBridge 167:e84263d55307 119 } \
AnnaBridge 167:e84263d55307 120 static inline void \
AnnaBridge 167:e84263d55307 121 __##name##_SETMSK(uint32_t addr, uint32_t msk, uint32_t val) \
AnnaBridge 167:e84263d55307 122 { \
AnnaBridge 167:e84263d55307 123 __RTK_SETMSK(ctrl##_BASE+addr,msk,val); \
AnnaBridge 167:e84263d55307 124 } \
AnnaBridge 167:e84263d55307 125
AnnaBridge 167:e84263d55307 126 //__BUILD_MACRO(RTK_CTRL, CTRL)
AnnaBridge 167:e84263d55307 127 //__BUILD_MACRO(RTK_PERI, PERI)
AnnaBridge 167:e84263d55307 128 //__BUILD_MACRO(RTK_VENDOR, VENDOR)
AnnaBridge 167:e84263d55307 129 //__BUILD_MACRO(RTK_SDRC, SDRC)
AnnaBridge 167:e84263d55307 130
AnnaBridge 167:e84263d55307 131 __BUILD_MACRO(RTK_CTRL, SYSTEM_CTRL)
AnnaBridge 167:e84263d55307 132 __BUILD_MACRO(RTK_PERI, PERI)
AnnaBridge 167:e84263d55307 133 __BUILD_MACRO(RTK_SDRC, SDR_CTRL)
AnnaBridge 167:e84263d55307 134 __BUILD_MACRO(RTK_VENDOR, VENDOR_REG)
AnnaBridge 167:e84263d55307 135
AnnaBridge 167:e84263d55307 136
AnnaBridge 167:e84263d55307 137 #define __BUILD_FCTRL_MACRO(name,ctrl) \
AnnaBridge 167:e84263d55307 138 static inline void \
AnnaBridge 167:e84263d55307 139 __##name##_Enable(void) \
AnnaBridge 167:e84263d55307 140 { \
AnnaBridge 167:e84263d55307 141 __RTK_PERI_SETBIT(ctrl, BIT_FCTRL_##name); \
AnnaBridge 167:e84263d55307 142 } \
AnnaBridge 167:e84263d55307 143 static inline void \
AnnaBridge 167:e84263d55307 144 __##name##_Disable(void) \
AnnaBridge 167:e84263d55307 145 { \
AnnaBridge 167:e84263d55307 146 __RTK_READ32(name##_BASE, 0); \
AnnaBridge 167:e84263d55307 147 __RTK_PERI_CLRBIT(ctrl, BIT_FCTRL_##name); \
AnnaBridge 167:e84263d55307 148 }
AnnaBridge 167:e84263d55307 149
AnnaBridge 167:e84263d55307 150
AnnaBridge 167:e84263d55307 151
AnnaBridge 167:e84263d55307 152 #include "rtl8195a_trap.h"
AnnaBridge 167:e84263d55307 153 #include "rtl8195a_clk.h"
AnnaBridge 167:e84263d55307 154 #include "rtl8195a_misc.h"
AnnaBridge 167:e84263d55307 155 #include "rtl8195a_sdio.h"
AnnaBridge 167:e84263d55307 156 //#include "rtl8195a_luart.h"
AnnaBridge 167:e84263d55307 157
AnnaBridge 167:e84263d55307 158 #endif
AnnaBridge 167:e84263d55307 159
AnnaBridge 167:e84263d55307 160
AnnaBridge 167:e84263d55307 161 /* ----------------------------------------------------------------------------
AnnaBridge 167:e84263d55307 162 -- Cortex M3 Core Configuration
AnnaBridge 167:e84263d55307 163 ---------------------------------------------------------------------------- */
AnnaBridge 167:e84263d55307 164
AnnaBridge 167:e84263d55307 165 /*!
AnnaBridge 167:e84263d55307 166 * @addtogroup Cortex_Core_Configuration Cortex M0 Core Configuration
AnnaBridge 167:e84263d55307 167 * @{
AnnaBridge 167:e84263d55307 168 */
AnnaBridge 167:e84263d55307 169
AnnaBridge 167:e84263d55307 170 #define __CM3_REV 0x0200 /**< Core revision r0p0 */
AnnaBridge 167:e84263d55307 171 #define __MPU_PRESENT 1 /**< Defines if an MPU is present or not */
AnnaBridge 167:e84263d55307 172 #define __NVIC_PRIO_BITS 4 /**< Number of priority bits implemented in the NVIC */
AnnaBridge 167:e84263d55307 173 #define __Vendor_SysTickConfig 1 /**< Vendor specific implementation of SysTickConfig is defined */
AnnaBridge 167:e84263d55307 174
AnnaBridge 167:e84263d55307 175 #include "core_cm3.h"
AnnaBridge 167:e84263d55307 176
AnnaBridge 167:e84263d55307 177 #ifdef CONFIG_TIMER_EN
AnnaBridge 167:e84263d55307 178 #include "hal_timer.h"
AnnaBridge 167:e84263d55307 179 #endif
AnnaBridge 167:e84263d55307 180
AnnaBridge 167:e84263d55307 181 #ifdef CONFIG_GDMA_EN
AnnaBridge 167:e84263d55307 182 #include "hal_gdma.h"
AnnaBridge 167:e84263d55307 183 #include "rtl8195a_gdma.h"
AnnaBridge 167:e84263d55307 184 #endif
AnnaBridge 167:e84263d55307 185
AnnaBridge 167:e84263d55307 186 #ifdef CONFIG_GPIO_EN
AnnaBridge 167:e84263d55307 187 #include "hal_gpio.h"
AnnaBridge 167:e84263d55307 188 #include "rtl8195a_gpio.h"
AnnaBridge 167:e84263d55307 189 #endif
AnnaBridge 167:e84263d55307 190
AnnaBridge 167:e84263d55307 191 #ifdef CONFIG_SPI_COM_EN
AnnaBridge 167:e84263d55307 192 #include "hal_ssi.h"
AnnaBridge 167:e84263d55307 193 #include "rtl8195a_ssi.h"
AnnaBridge 167:e84263d55307 194 #endif
AnnaBridge 167:e84263d55307 195
AnnaBridge 167:e84263d55307 196 #ifdef CONFIG_UART_EN
AnnaBridge 167:e84263d55307 197 #include "hal_uart.h"
AnnaBridge 167:e84263d55307 198 #include "rtl8195a_uart.h"
AnnaBridge 167:e84263d55307 199 #endif
AnnaBridge 167:e84263d55307 200
AnnaBridge 167:e84263d55307 201 #ifdef CONFIG_I2C_EN
AnnaBridge 167:e84263d55307 202 #include "hal_i2c.h"
AnnaBridge 167:e84263d55307 203 #include "rtl8195a_i2c.h"
AnnaBridge 167:e84263d55307 204 #endif
AnnaBridge 167:e84263d55307 205
AnnaBridge 167:e84263d55307 206 //#ifdef CONFIG_PCM_EN
AnnaBridge 167:e84263d55307 207 //#include "hal_pcm.h"
AnnaBridge 167:e84263d55307 208 //#include "rtl8195a_pcm.h"
AnnaBridge 167:e84263d55307 209 //#endif
AnnaBridge 167:e84263d55307 210
AnnaBridge 167:e84263d55307 211 #ifdef CONFIG_PWM_EN
AnnaBridge 167:e84263d55307 212 #include "hal_pwm.h"
AnnaBridge 167:e84263d55307 213 #include "rtl8195a_pwm.h"
AnnaBridge 167:e84263d55307 214 #endif
AnnaBridge 167:e84263d55307 215
AnnaBridge 167:e84263d55307 216 #ifdef CONFIG_I2S_EN
AnnaBridge 167:e84263d55307 217 #include "hal_i2s.h"
AnnaBridge 167:e84263d55307 218 #include "rtl8195a_i2s.h"
AnnaBridge 167:e84263d55307 219 #endif
AnnaBridge 167:e84263d55307 220
AnnaBridge 167:e84263d55307 221 #ifdef CONFIG_DAC_EN
AnnaBridge 167:e84263d55307 222 #include "hal_dac.h"
AnnaBridge 167:e84263d55307 223 #include "rtl8195a_dac.h"
AnnaBridge 167:e84263d55307 224 #endif
AnnaBridge 167:e84263d55307 225
AnnaBridge 167:e84263d55307 226 #ifdef CONFIG_ADC_EN
AnnaBridge 167:e84263d55307 227 #include "hal_adc.h"
AnnaBridge 167:e84263d55307 228 #include "rtl8195a_adc.h"
AnnaBridge 167:e84263d55307 229 #endif
AnnaBridge 167:e84263d55307 230
AnnaBridge 167:e84263d55307 231 #ifdef CONFIG_SDR_EN
AnnaBridge 167:e84263d55307 232 #endif
AnnaBridge 167:e84263d55307 233
AnnaBridge 167:e84263d55307 234 #ifdef CONFIG_SPIC_EN
AnnaBridge 167:e84263d55307 235 #endif
AnnaBridge 167:e84263d55307 236
AnnaBridge 167:e84263d55307 237 #ifdef CONFIG_SDIO_DEVICE_EN
AnnaBridge 167:e84263d55307 238 //#include "hal_sdio.h"
AnnaBridge 167:e84263d55307 239 #endif
AnnaBridge 167:e84263d55307 240
AnnaBridge 167:e84263d55307 241 #ifdef CONFIG_NFC_EN
AnnaBridge 167:e84263d55307 242 //#include "hal_nfc.h"
AnnaBridge 167:e84263d55307 243 //#include "rtl8195a_nfc.h"
AnnaBridge 167:e84263d55307 244 #endif
AnnaBridge 167:e84263d55307 245
AnnaBridge 167:e84263d55307 246 #ifdef CONFIG_WDG
AnnaBridge 167:e84263d55307 247 #include "rtl8195a_wdt.h"
AnnaBridge 167:e84263d55307 248 #endif
AnnaBridge 167:e84263d55307 249
AnnaBridge 167:e84263d55307 250 #ifdef CONFIG_USB_EN
AnnaBridge 167:e84263d55307 251 //#include "hal_usb.h"
AnnaBridge 167:e84263d55307 252 //#include "rtl8195a_usb.h"
AnnaBridge 167:e84263d55307 253 #endif
AnnaBridge 167:e84263d55307 254
AnnaBridge 167:e84263d55307 255 #include "hal_log_uart.h"
AnnaBridge 167:e84263d55307 256
AnnaBridge 167:e84263d55307 257 #ifdef CONFIG_MII_EN
AnnaBridge 167:e84263d55307 258 //#include "hal_mii.h"
AnnaBridge 167:e84263d55307 259 //#include "rtl8195a_mii.h"
AnnaBridge 167:e84263d55307 260 #endif
AnnaBridge 167:e84263d55307 261
AnnaBridge 167:e84263d55307 262 // firmware information, located at the header of Image2
AnnaBridge 167:e84263d55307 263 #define FW_VERSION (0x0100)
AnnaBridge 167:e84263d55307 264 #define FW_SUBVERSION (0x0001)
AnnaBridge 167:e84263d55307 265 #define FW_CHIP_ID (0x8195)
AnnaBridge 167:e84263d55307 266 #define FW_CHIP_VER (0x01)
AnnaBridge 167:e84263d55307 267 #define FW_BUS_TYPE (0x01) // the iNIC firmware type: USB/SDIO
AnnaBridge 167:e84263d55307 268 #define FW_INFO_RSV1 (0x00) // the firmware information reserved
AnnaBridge 167:e84263d55307 269 #define FW_INFO_RSV2 (0x00) // the firmware information reserved
AnnaBridge 167:e84263d55307 270 #define FW_INFO_RSV3 (0x00) // the firmware information reserved
AnnaBridge 167:e84263d55307 271 #define FW_INFO_RSV4 (0x00) // the firmware information reserved
AnnaBridge 167:e84263d55307 272
AnnaBridge 167:e84263d55307 273 #define FLASH_RESERVED_DATA_BASE 0x8000 // reserve 32K for Image1
AnnaBridge 167:e84263d55307 274 #define FLASH_SYSTEM_DATA_ADDR 0x9000 // reserve 32K+4K for Image1 + Reserved data
AnnaBridge 167:e84263d55307 275 // Flash Map for Calibration data
AnnaBridge 167:e84263d55307 276 #define FLASH_CAL_DATA_BASE 0xA000
AnnaBridge 167:e84263d55307 277 #define FLASH_CAL_DATA_ADDR(_offset) (FLASH_CAL_DATA_BASE + _offset)
AnnaBridge 167:e84263d55307 278 #define FLASH_CAL_DATA_SIZE 0x1000
AnnaBridge 167:e84263d55307 279 #define FLASH_SECTOR_SIZE 0x1000
AnnaBridge 167:e84263d55307 280 // SPIC Calibration Data
AnnaBridge 167:e84263d55307 281 #define FLASH_SPIC_PARA_OFFSET 0x80
AnnaBridge 167:e84263d55307 282 #define FLASH_SPIC_PARA_BASE (FLASH_SYSTEM_DATA_ADDR+FLASH_SPIC_PARA_OFFSET)
AnnaBridge 167:e84263d55307 283 // SDRC Calibration Data
AnnaBridge 167:e84263d55307 284 #define FLASH_SDRC_PARA_OFFSET 0x180
AnnaBridge 167:e84263d55307 285 #define FLASH_SDRC_PARA_BASE (FLASH_SYSTEM_DATA_ADDR+FLASH_SDRC_PARA_OFFSET)
AnnaBridge 167:e84263d55307 286 // ADC Calibration Data
AnnaBridge 167:e84263d55307 287 #define FLASH_ADC_PARA_OFFSET 0x200
AnnaBridge 167:e84263d55307 288 #define FLASH_ADC_PARA_BASE (FLASH_SYSTEM_DATA_ADDR+FLASH_ADC_PARA_OFFSET)
AnnaBridge 167:e84263d55307 289
AnnaBridge 167:e84263d55307 290 #endif //_HAL_8195A_H_