mbed library sources. Supersedes mbed-src.

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

Revision:
167:e84263d55307
Child:
169:e3b6fe271b81
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/rtl8195a.h	Wed Jun 21 17:46:44 2017 +0100
@@ -0,0 +1,290 @@
+/*******************************************************************************
+ *Copyright (c) 2013-2016 Realtek Semiconductor Corp, All Rights Reserved
+ * SPDX-License-Identifier: LicenseRef-PBL
+ * 
+ * Licensed under the Permissive Binary License, Version 1.0 (the "License"); 
+ * you may not use this file except in compliance with the License.
+ * 
+ * You may obtain a copy of the License at https://www.mbed.com/licenses/PBL-1.0
+ * 
+ * See the License for the specific language governing permissions and limitations under the License.
+ *******************************************************************************
+ */
+#ifndef _HAL_8195A_H_
+#define _HAL_8195A_H_
+
+#include "platform_autoconf.h"
+#include "basic_types.h"
+#include "section_config.h"
+#include "rtl8195a_sys_on.h"
+#include "rtl8195a_peri_on.h"
+#include "hal_platform.h"
+#include "hal_pinmux.h"
+#include "hal_api.h"
+#include "hal_peri_on.h"
+#include "hal_misc.h"
+#include "hal_irqn.h"
+#include "hal_vector_table.h"
+#include "hal_diag.h"
+#include "hal_spi_flash.h"
+#include "rtl8195a_spi_flash.h"
+//#include "hal_timer.h"
+#include "hal_util.h"
+#include "hal_efuse.h"
+#include "hal_soc_ps_monitor.h"
+#include "diag.h"
+//#include "hal_common.h"
+//#include "hal_soc_ps_monitor.h"
+
+
+// from RDC team
+#ifdef CONFIG_MBED_ENABLED
+// Add for Mbed -OS
+#include <stdint.h>
+#include <stdbool.h>
+#include <stddef.h>
+
+#include "rtl8195a_compiler.h"
+#include "rtl8195a_platform.h"
+
+
+
+#define REG32(reg)      (*(volatile uint32_t *)(reg))
+#define REG16(reg)      (*(volatile uint16_t *)(reg))
+#define REG08(reg)      (*(volatile uint8_t  *)(reg))
+
+#ifndef BIT
+#define BIT(x)          (1 << (x))
+#endif
+#define ARRAY_SIZE(x)   (sizeof(x) / sizeof(*(x)))
+#define ABS(x)          ((x > 0) ?  x : -x)
+#define MAX(x,y)        ((x) < (y) ? (y) : (x))
+#ifndef MIN
+#define MIN(x,y)        ((x) > (y) ? (y) : (x))
+#endif
+
+#define __RTK_READ32(B,A)          (REG32((B) + (A)))
+#define __RTK_READ16(B,A)          (REG16((B) + (A)))
+#define __RTK_READ08(B,A)          (REG08((B) + (A)))
+#define __RTK_WRITE32(B,A,V)       (REG32((B) + (A)) = (V))
+#define __RTK_WRITE16(B,A,V)       (REG32((B) + (A)) = (V))
+#define __RTK_WRITE08(B,A,V)       (REG32((B) + (A)) = (V))
+
+#define __RTK_SETBIT(A,V)          (REG32(A) |= V)
+#define __RTK_CLRBIT(A,V)          (REG32(A) &= ~V)
+#define __RTK_SETMSK(A,M,V)        (REG32(A) = ((REG32(A) & (~M)) | V))
+
+#define PERI_BASE	0x40000000
+
+#define __BUILD_MACRO(name,ctrl)                                 \
+static inline uint32_t                                           \
+__##name##_READ32(uint32_t addr)                                 \
+{                                                                \
+    return __RTK_READ32(ctrl##_BASE,addr);                       \
+}                                                                \
+static inline uint16_t                                           \
+__##name##_READ16(uint32_t addr)                                 \
+{                                                                \
+    return __RTK_READ16(ctrl##_BASE,addr);                       \
+}                                                                \
+static inline uint8_t                                            \
+__##name##_READ08(uint32_t addr)                                 \
+{                                                                \
+    return __RTK_READ08(ctrl##_BASE,addr);                       \
+}                                                                \
+static inline void                                               \
+__##name##_WRITE32(uint32_t addr, uint32_t val)                  \
+{                                                                \
+    __RTK_WRITE32(ctrl##_BASE,addr,val);                         \
+}                                                                \
+static inline void                                               \
+__##name##_WRITE16(uint32_t addr, uint16_t val)                  \
+{                                                                \
+    __RTK_WRITE16(ctrl##_BASE,addr,val);                         \
+}                                                                \
+static inline void                                               \
+__##name##_WRITE08(uint32_t addr, uint8_t val)                   \
+{                                                                \
+    __RTK_WRITE08(ctrl##_BASE,addr,val);                         \
+}                                                                \
+static inline void                                               \
+__##name##_SETBIT(uint32_t addr, uint32_t val)                   \
+{                                                                \
+    __RTK_SETBIT(ctrl##_BASE+addr,val);                          \
+}                                                                \
+static inline void                                               \
+__##name##_CLRBIT(uint32_t addr, uint32_t val)                   \
+{                                                                \
+    __RTK_CLRBIT(ctrl##_BASE+addr,val);                          \
+}                                                                \
+static inline void                                               \
+__##name##_SETMSK(uint32_t addr, uint32_t msk, uint32_t val)     \
+{                                                                \
+    __RTK_SETMSK(ctrl##_BASE+addr,msk,val);                      \
+}                                                                \
+
+//__BUILD_MACRO(RTK_CTRL, CTRL)
+//__BUILD_MACRO(RTK_PERI, PERI)
+//__BUILD_MACRO(RTK_VENDOR, VENDOR)
+//__BUILD_MACRO(RTK_SDRC, SDRC)
+
+__BUILD_MACRO(RTK_CTRL, SYSTEM_CTRL)
+__BUILD_MACRO(RTK_PERI, PERI)
+__BUILD_MACRO(RTK_SDRC, SDR_CTRL)
+__BUILD_MACRO(RTK_VENDOR, VENDOR_REG)
+
+
+#define __BUILD_FCTRL_MACRO(name,ctrl)                           \
+static inline void                                               \
+__##name##_Enable(void)                                          \
+{                                                                \
+    __RTK_PERI_SETBIT(ctrl, BIT_FCTRL_##name);                   \
+}                                                                \
+static inline void                                               \
+__##name##_Disable(void)                                         \
+{                                                                \
+    __RTK_READ32(name##_BASE, 0);                                \
+    __RTK_PERI_CLRBIT(ctrl, BIT_FCTRL_##name);                   \
+}
+
+
+
+#include "rtl8195a_trap.h"
+#include "rtl8195a_clk.h"
+#include "rtl8195a_misc.h"
+#include "rtl8195a_sdio.h"
+//#include "rtl8195a_luart.h"
+
+#endif
+
+
+/* ----------------------------------------------------------------------------
+   -- Cortex M3 Core Configuration
+   ---------------------------------------------------------------------------- */
+
+/*!
+ * @addtogroup Cortex_Core_Configuration Cortex M0 Core Configuration
+ * @{
+ */
+
+#define __CM3_REV                      0x0200    /**< Core revision r0p0 */
+#define __MPU_PRESENT                  1         /**< Defines if an MPU is present or not */
+#define __NVIC_PRIO_BITS               4         /**< Number of priority bits implemented in the NVIC */
+#define __Vendor_SysTickConfig         1         /**< Vendor specific implementation of SysTickConfig is defined */
+
+#include "core_cm3.h"
+
+#ifdef CONFIG_TIMER_EN
+#include "hal_timer.h"
+#endif
+
+#ifdef CONFIG_GDMA_EN
+#include "hal_gdma.h"
+#include "rtl8195a_gdma.h"
+#endif
+
+#ifdef CONFIG_GPIO_EN
+#include "hal_gpio.h"
+#include "rtl8195a_gpio.h"
+#endif
+
+#ifdef CONFIG_SPI_COM_EN
+#include "hal_ssi.h"
+#include "rtl8195a_ssi.h"
+#endif
+
+#ifdef CONFIG_UART_EN
+#include "hal_uart.h"
+#include "rtl8195a_uart.h"
+#endif
+
+#ifdef CONFIG_I2C_EN
+#include "hal_i2c.h"
+#include "rtl8195a_i2c.h"
+#endif
+
+//#ifdef CONFIG_PCM_EN
+//#include "hal_pcm.h"
+//#include "rtl8195a_pcm.h"
+//#endif
+
+#ifdef CONFIG_PWM_EN
+#include "hal_pwm.h"
+#include "rtl8195a_pwm.h"
+#endif
+
+#ifdef CONFIG_I2S_EN
+#include "hal_i2s.h"
+#include "rtl8195a_i2s.h"
+#endif
+
+#ifdef CONFIG_DAC_EN
+#include "hal_dac.h"
+#include "rtl8195a_dac.h"
+#endif
+
+#ifdef CONFIG_ADC_EN
+#include "hal_adc.h"
+#include "rtl8195a_adc.h"
+#endif
+
+#ifdef CONFIG_SDR_EN
+#endif
+
+#ifdef CONFIG_SPIC_EN
+#endif
+
+#ifdef CONFIG_SDIO_DEVICE_EN
+//#include "hal_sdio.h"
+#endif
+
+#ifdef CONFIG_NFC_EN
+//#include "hal_nfc.h"
+//#include "rtl8195a_nfc.h"
+#endif
+
+#ifdef CONFIG_WDG
+#include "rtl8195a_wdt.h"
+#endif
+
+#ifdef CONFIG_USB_EN
+//#include "hal_usb.h"
+//#include "rtl8195a_usb.h"
+#endif
+
+#include "hal_log_uart.h"
+
+#ifdef CONFIG_MII_EN
+//#include "hal_mii.h"
+//#include "rtl8195a_mii.h"
+#endif
+
+// firmware information, located at the header of Image2
+#define FW_VERSION          (0x0100)
+#define FW_SUBVERSION       (0x0001)
+#define FW_CHIP_ID          (0x8195)
+#define FW_CHIP_VER         (0x01)
+#define FW_BUS_TYPE         (0x01)          // the iNIC firmware type: USB/SDIO
+#define FW_INFO_RSV1        (0x00)          // the firmware information reserved
+#define FW_INFO_RSV2        (0x00)          // the firmware information reserved
+#define FW_INFO_RSV3        (0x00)          // the firmware information reserved
+#define FW_INFO_RSV4        (0x00)          // the firmware information reserved
+
+#define FLASH_RESERVED_DATA_BASE		0x8000  // reserve 32K for Image1
+#define FLASH_SYSTEM_DATA_ADDR			0x9000  // reserve 32K+4K for Image1 + Reserved data
+// Flash Map for Calibration data
+#define FLASH_CAL_DATA_BASE				0xA000
+#define FLASH_CAL_DATA_ADDR(_offset)	(FLASH_CAL_DATA_BASE + _offset)
+#define FLASH_CAL_DATA_SIZE				0x1000
+#define FLASH_SECTOR_SIZE				0x1000
+// SPIC Calibration Data
+#define FLASH_SPIC_PARA_OFFSET          0x80
+#define FLASH_SPIC_PARA_BASE            (FLASH_SYSTEM_DATA_ADDR+FLASH_SPIC_PARA_OFFSET)
+// SDRC Calibration Data
+#define FLASH_SDRC_PARA_OFFSET          0x180
+#define FLASH_SDRC_PARA_BASE            (FLASH_SYSTEM_DATA_ADDR+FLASH_SDRC_PARA_OFFSET)
+// ADC Calibration Data
+#define FLASH_ADC_PARA_OFFSET           0x200
+#define FLASH_ADC_PARA_BASE             (FLASH_SYSTEM_DATA_ADDR+FLASH_ADC_PARA_OFFSET)
+
+#endif //_HAL_8195A_H_