mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/rtl8195a_timer.h@178:79309dc6340a, 2017-11-23 (annotated)
- Committer:
- AnnaBridge
- Date:
- Thu Nov 23 11:57:25 2017 +0000
- Revision:
- 178:79309dc6340a
- Parent:
- 173:e131a1973e81
mbed-dev library. Release version 156
Who changed what in which revision?
User | Revision | Line number | New 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 | |
AnnaBridge | 167:e84263d55307 | 14 | #ifndef _RTL8195A_TIMER_H_ |
AnnaBridge | 167:e84263d55307 | 15 | #define _RTL8195A_TIMER_H_ |
AnnaBridge | 167:e84263d55307 | 16 | |
AnnaBridge | 167:e84263d55307 | 17 | |
AnnaBridge | 173:e131a1973e81 | 18 | #define TIMER_TICK_US 32 |
AnnaBridge | 167:e84263d55307 | 19 | |
AnnaBridge | 167:e84263d55307 | 20 | #define TIMER_LOAD_COUNT_OFF 0x00 |
AnnaBridge | 167:e84263d55307 | 21 | #define TIMER_CURRENT_VAL_OFF 0x04 |
AnnaBridge | 167:e84263d55307 | 22 | #define TIMER_CTL_REG_OFF 0x08 |
AnnaBridge | 167:e84263d55307 | 23 | #define TIMER_EOI_OFF 0x0c |
AnnaBridge | 167:e84263d55307 | 24 | #define TIMER_INT_STATUS_OFF 0x10 |
AnnaBridge | 167:e84263d55307 | 25 | #define TIMER_INTERVAL 0x14 |
AnnaBridge | 167:e84263d55307 | 26 | #define TIMERS_INT_STATUS_OFF 0xa0 |
AnnaBridge | 167:e84263d55307 | 27 | #define TIMERS_EOI_OFF 0xa4 |
AnnaBridge | 167:e84263d55307 | 28 | #define TIMERS_RAW_INT_STATUS_OFF 0xa8 |
AnnaBridge | 167:e84263d55307 | 29 | #define TIMERS_COMP_VER_OFF 0xac |
AnnaBridge | 167:e84263d55307 | 30 | |
AnnaBridge | 167:e84263d55307 | 31 | #define MAX_TIMER_VECTOR_TABLE_NUM 6 |
AnnaBridge | 167:e84263d55307 | 32 | |
AnnaBridge | 167:e84263d55307 | 33 | #define HAL_TIMER_READ32(addr) (*((volatile u32*)(TIMER_REG_BASE + addr)))//HAL_READ32(TIMER_REG_BASE, addr) |
AnnaBridge | 167:e84263d55307 | 34 | #define HAL_TIMER_WRITE32(addr, value) ((*((volatile u32*)(TIMER_REG_BASE + addr))) = value)//HAL_WRITE32(TIMER_REG_BASE, addr, value) |
AnnaBridge | 167:e84263d55307 | 35 | #define HAL_TIMER_READ16(addr) (*((volatile u16*)(TIMER_REG_BASE + addr)))//HAL_READ16(TIMER_REG_BASE, addr) |
AnnaBridge | 167:e84263d55307 | 36 | #define HAL_TIMER_WRITE16(addr, value) ((*((volatile u16*)(TIMER_REG_BASE + addr))) = value)//HAL_WRITE16(TIMER_REG_BASE, addr, value) |
AnnaBridge | 167:e84263d55307 | 37 | #define HAL_TIMER_READ8(addr) (*((volatile u8*)(TIMER_REG_BASE + addr)))//HAL_READ8(TIMER_REG_BASE, addr) |
AnnaBridge | 167:e84263d55307 | 38 | #define HAL_TIMER_WRITE8(addr, value) ((*((volatile u8*)(TIMER_REG_BASE + addr))) = value)//HAL_WRITE8(TIMER_REG_BASE, addr, value) |
AnnaBridge | 167:e84263d55307 | 39 | |
AnnaBridge | 167:e84263d55307 | 40 | _LONG_CALL_ u32 |
AnnaBridge | 167:e84263d55307 | 41 | HalGetTimerIdRtl8195a( |
AnnaBridge | 167:e84263d55307 | 42 | IN u32 *TimerID |
AnnaBridge | 167:e84263d55307 | 43 | ); |
AnnaBridge | 167:e84263d55307 | 44 | |
AnnaBridge | 167:e84263d55307 | 45 | _LONG_CALL_ BOOL |
AnnaBridge | 167:e84263d55307 | 46 | HalTimerInitRtl8195a( |
AnnaBridge | 167:e84263d55307 | 47 | IN VOID *Data |
AnnaBridge | 167:e84263d55307 | 48 | ); |
AnnaBridge | 167:e84263d55307 | 49 | |
AnnaBridge | 167:e84263d55307 | 50 | _LONG_CALL_ u32 |
AnnaBridge | 167:e84263d55307 | 51 | HalTimerReadCountRtl8195a( |
AnnaBridge | 167:e84263d55307 | 52 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 53 | ); |
AnnaBridge | 167:e84263d55307 | 54 | |
AnnaBridge | 167:e84263d55307 | 55 | _LONG_CALL_ VOID |
AnnaBridge | 167:e84263d55307 | 56 | HalTimerIrqClearRtl8195a( |
AnnaBridge | 167:e84263d55307 | 57 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 58 | ); |
AnnaBridge | 167:e84263d55307 | 59 | |
AnnaBridge | 167:e84263d55307 | 60 | _LONG_CALL_ VOID |
AnnaBridge | 167:e84263d55307 | 61 | HalTimerDisRtl8195a( |
AnnaBridge | 167:e84263d55307 | 62 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 63 | ); |
AnnaBridge | 167:e84263d55307 | 64 | |
AnnaBridge | 167:e84263d55307 | 65 | _LONG_CALL_ VOID |
AnnaBridge | 167:e84263d55307 | 66 | HalTimerEnRtl8195a( |
AnnaBridge | 167:e84263d55307 | 67 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 68 | ); |
AnnaBridge | 167:e84263d55307 | 69 | |
AnnaBridge | 167:e84263d55307 | 70 | _LONG_CALL_ VOID |
AnnaBridge | 167:e84263d55307 | 71 | HalTimerDumpRegRtl8195a( |
AnnaBridge | 167:e84263d55307 | 72 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 73 | ); |
AnnaBridge | 167:e84263d55307 | 74 | |
AnnaBridge | 167:e84263d55307 | 75 | // ROM Code patch |
AnnaBridge | 167:e84263d55307 | 76 | HAL_Status |
AnnaBridge | 167:e84263d55307 | 77 | HalTimerInitRtl8195a_Patch( |
AnnaBridge | 167:e84263d55307 | 78 | IN VOID *Data |
AnnaBridge | 167:e84263d55307 | 79 | ); |
AnnaBridge | 167:e84263d55307 | 80 | |
AnnaBridge | 167:e84263d55307 | 81 | u32 |
AnnaBridge | 167:e84263d55307 | 82 | HalTimerReadCountRtl8195a_Patch( |
AnnaBridge | 167:e84263d55307 | 83 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 84 | ); |
AnnaBridge | 167:e84263d55307 | 85 | |
AnnaBridge | 167:e84263d55307 | 86 | VOID |
AnnaBridge | 167:e84263d55307 | 87 | HalTimerReLoadRtl8195a_Patch( |
AnnaBridge | 167:e84263d55307 | 88 | IN u32 TimerId, |
AnnaBridge | 167:e84263d55307 | 89 | IN u32 LoadUs |
AnnaBridge | 167:e84263d55307 | 90 | ); |
AnnaBridge | 167:e84263d55307 | 91 | |
AnnaBridge | 167:e84263d55307 | 92 | u32 |
AnnaBridge | 167:e84263d55307 | 93 | HalTimerReadCountRtl8195a_Patch( |
AnnaBridge | 167:e84263d55307 | 94 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 95 | ); |
AnnaBridge | 167:e84263d55307 | 96 | |
AnnaBridge | 178:79309dc6340a | 97 | VOID |
AnnaBridge | 178:79309dc6340a | 98 | HalTimerSync( |
AnnaBridge | 178:79309dc6340a | 99 | IN u32 TimerId |
AnnaBridge | 178:79309dc6340a | 100 | ); |
AnnaBridge | 178:79309dc6340a | 101 | |
AnnaBridge | 167:e84263d55307 | 102 | VOID |
AnnaBridge | 167:e84263d55307 | 103 | HalTimerIrqEnRtl8195a( |
AnnaBridge | 167:e84263d55307 | 104 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 105 | ); |
AnnaBridge | 167:e84263d55307 | 106 | |
AnnaBridge | 167:e84263d55307 | 107 | VOID |
AnnaBridge | 167:e84263d55307 | 108 | HalTimerIrqDisRtl8195a( |
AnnaBridge | 167:e84263d55307 | 109 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 110 | ); |
AnnaBridge | 167:e84263d55307 | 111 | |
AnnaBridge | 167:e84263d55307 | 112 | VOID |
AnnaBridge | 167:e84263d55307 | 113 | HalTimerClearIsrRtl8195a( |
AnnaBridge | 167:e84263d55307 | 114 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 115 | ); |
AnnaBridge | 167:e84263d55307 | 116 | |
AnnaBridge | 167:e84263d55307 | 117 | VOID |
AnnaBridge | 167:e84263d55307 | 118 | HalTimerEnRtl8195a_Patch( |
AnnaBridge | 167:e84263d55307 | 119 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 120 | ); |
AnnaBridge | 167:e84263d55307 | 121 | |
AnnaBridge | 167:e84263d55307 | 122 | VOID |
AnnaBridge | 167:e84263d55307 | 123 | HalTimerDisRtl8195a_Patch( |
AnnaBridge | 167:e84263d55307 | 124 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 125 | ); |
AnnaBridge | 167:e84263d55307 | 126 | |
AnnaBridge | 167:e84263d55307 | 127 | VOID |
AnnaBridge | 167:e84263d55307 | 128 | HalTimerDeInitRtl8195a_Patch( |
AnnaBridge | 167:e84263d55307 | 129 | IN VOID *Data |
AnnaBridge | 167:e84263d55307 | 130 | ); |
AnnaBridge | 167:e84263d55307 | 131 | |
AnnaBridge | 167:e84263d55307 | 132 | #if defined(CONFIG_CHIP_C_CUT) || defined(CONFIG_CHIP_E_CUT) |
AnnaBridge | 167:e84263d55307 | 133 | |
AnnaBridge | 167:e84263d55307 | 134 | __weak _LONG_CALL_ |
AnnaBridge | 167:e84263d55307 | 135 | VOID |
AnnaBridge | 167:e84263d55307 | 136 | HalTimerIrq2To7HandleV02( |
AnnaBridge | 167:e84263d55307 | 137 | IN VOID *Data |
AnnaBridge | 167:e84263d55307 | 138 | ); |
AnnaBridge | 167:e84263d55307 | 139 | |
AnnaBridge | 167:e84263d55307 | 140 | __weak _LONG_CALL_ROM_ |
AnnaBridge | 167:e84263d55307 | 141 | HAL_Status |
AnnaBridge | 167:e84263d55307 | 142 | HalTimerIrqRegisterRtl8195aV02( |
AnnaBridge | 167:e84263d55307 | 143 | IN VOID *Data |
AnnaBridge | 167:e84263d55307 | 144 | ); |
AnnaBridge | 167:e84263d55307 | 145 | |
AnnaBridge | 167:e84263d55307 | 146 | __weak _LONG_CALL_ |
AnnaBridge | 167:e84263d55307 | 147 | HAL_Status |
AnnaBridge | 167:e84263d55307 | 148 | HalTimerInitRtl8195aV02( |
AnnaBridge | 167:e84263d55307 | 149 | IN VOID *Data |
AnnaBridge | 167:e84263d55307 | 150 | ); |
AnnaBridge | 167:e84263d55307 | 151 | |
AnnaBridge | 167:e84263d55307 | 152 | __weak _LONG_CALL_ |
AnnaBridge | 167:e84263d55307 | 153 | u32 |
AnnaBridge | 167:e84263d55307 | 154 | HalTimerReadCountRtl8195aV02( |
AnnaBridge | 167:e84263d55307 | 155 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 156 | ); |
AnnaBridge | 167:e84263d55307 | 157 | |
AnnaBridge | 167:e84263d55307 | 158 | __weak _LONG_CALL_ |
AnnaBridge | 167:e84263d55307 | 159 | VOID |
AnnaBridge | 167:e84263d55307 | 160 | HalTimerReLoadRtl8195aV02( |
AnnaBridge | 167:e84263d55307 | 161 | IN u32 TimerId, |
AnnaBridge | 167:e84263d55307 | 162 | IN u32 LoadUs |
AnnaBridge | 167:e84263d55307 | 163 | ); |
AnnaBridge | 167:e84263d55307 | 164 | |
AnnaBridge | 167:e84263d55307 | 165 | __weak _LONG_CALL_ROM_ |
AnnaBridge | 167:e84263d55307 | 166 | HAL_Status |
AnnaBridge | 167:e84263d55307 | 167 | HalTimerIrqUnRegisterRtl8195aV02( |
AnnaBridge | 167:e84263d55307 | 168 | IN VOID *Data |
AnnaBridge | 167:e84263d55307 | 169 | ); |
AnnaBridge | 167:e84263d55307 | 170 | |
AnnaBridge | 167:e84263d55307 | 171 | __weak _LONG_CALL_ |
AnnaBridge | 167:e84263d55307 | 172 | VOID |
AnnaBridge | 167:e84263d55307 | 173 | HalTimerDeInitRtl8195aV02( |
AnnaBridge | 167:e84263d55307 | 174 | IN VOID *Data |
AnnaBridge | 167:e84263d55307 | 175 | ); |
AnnaBridge | 167:e84263d55307 | 176 | |
AnnaBridge | 167:e84263d55307 | 177 | #endif // end of "#ifdef CONFIG_CHIP_C_CUT" |
AnnaBridge | 167:e84263d55307 | 178 | |
AnnaBridge | 167:e84263d55307 | 179 | #ifdef CONFIG_CHIP_E_CUT |
AnnaBridge | 167:e84263d55307 | 180 | _LONG_CALL_ VOID |
AnnaBridge | 167:e84263d55307 | 181 | HalTimerReLoadRtl8195a_V04( |
AnnaBridge | 167:e84263d55307 | 182 | IN u32 TimerId, |
AnnaBridge | 167:e84263d55307 | 183 | IN u32 LoadUs |
AnnaBridge | 167:e84263d55307 | 184 | ); |
AnnaBridge | 167:e84263d55307 | 185 | |
AnnaBridge | 167:e84263d55307 | 186 | _LONG_CALL_ HAL_Status |
AnnaBridge | 167:e84263d55307 | 187 | HalTimerInitRtl8195a_V04( |
AnnaBridge | 167:e84263d55307 | 188 | IN VOID *Data |
AnnaBridge | 167:e84263d55307 | 189 | ); |
AnnaBridge | 167:e84263d55307 | 190 | #endif // #ifdef CONFIG_CHIP_E_CUT |
AnnaBridge | 167:e84263d55307 | 191 | |
AnnaBridge | 167:e84263d55307 | 192 | // HAL functions wrapper |
AnnaBridge | 167:e84263d55307 | 193 | #ifndef CONFIG_RELEASE_BUILD_LIBRARIES |
AnnaBridge | 167:e84263d55307 | 194 | static __inline HAL_Status |
AnnaBridge | 167:e84263d55307 | 195 | HalTimerInit( |
AnnaBridge | 167:e84263d55307 | 196 | IN VOID *Data |
AnnaBridge | 167:e84263d55307 | 197 | ) |
AnnaBridge | 167:e84263d55307 | 198 | { |
AnnaBridge | 167:e84263d55307 | 199 | #ifdef CONFIG_CHIP_E_CUT |
AnnaBridge | 167:e84263d55307 | 200 | return (HalTimerInitRtl8195a_V04(Data)); |
AnnaBridge | 167:e84263d55307 | 201 | #else |
AnnaBridge | 167:e84263d55307 | 202 | return (HalTimerInitRtl8195a_Patch(Data)); |
AnnaBridge | 167:e84263d55307 | 203 | #endif |
AnnaBridge | 167:e84263d55307 | 204 | } |
AnnaBridge | 167:e84263d55307 | 205 | |
AnnaBridge | 167:e84263d55307 | 206 | static __inline VOID |
AnnaBridge | 167:e84263d55307 | 207 | HalTimerEnable( |
AnnaBridge | 167:e84263d55307 | 208 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 209 | ) |
AnnaBridge | 167:e84263d55307 | 210 | { |
AnnaBridge | 167:e84263d55307 | 211 | HalTimerIrqEnRtl8195a(TimerId); |
AnnaBridge | 167:e84263d55307 | 212 | HalTimerEnRtl8195a_Patch(TimerId); |
AnnaBridge | 167:e84263d55307 | 213 | } |
AnnaBridge | 167:e84263d55307 | 214 | |
AnnaBridge | 167:e84263d55307 | 215 | static __inline VOID |
AnnaBridge | 167:e84263d55307 | 216 | HalTimerDisable( |
AnnaBridge | 167:e84263d55307 | 217 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 218 | ) |
AnnaBridge | 167:e84263d55307 | 219 | { |
AnnaBridge | 167:e84263d55307 | 220 | HalTimerDisRtl8195a_Patch(TimerId); |
AnnaBridge | 167:e84263d55307 | 221 | } |
AnnaBridge | 167:e84263d55307 | 222 | |
AnnaBridge | 167:e84263d55307 | 223 | static __inline VOID |
AnnaBridge | 167:e84263d55307 | 224 | HalTimerClearIsr( |
AnnaBridge | 167:e84263d55307 | 225 | IN u32 TimerId |
AnnaBridge | 167:e84263d55307 | 226 | ) |
AnnaBridge | 167:e84263d55307 | 227 | { |
AnnaBridge | 167:e84263d55307 | 228 | HalTimerClearIsrRtl8195a(TimerId); |
AnnaBridge | 167:e84263d55307 | 229 | } |
AnnaBridge | 167:e84263d55307 | 230 | |
AnnaBridge | 167:e84263d55307 | 231 | static __inline VOID |
AnnaBridge | 167:e84263d55307 | 232 | HalTimerReLoad( |
AnnaBridge | 167:e84263d55307 | 233 | IN u32 TimerId, |
AnnaBridge | 167:e84263d55307 | 234 | IN u32 LoadUs |
AnnaBridge | 167:e84263d55307 | 235 | ) |
AnnaBridge | 167:e84263d55307 | 236 | { |
AnnaBridge | 167:e84263d55307 | 237 | #ifdef CONFIG_CHIP_E_CUT |
AnnaBridge | 167:e84263d55307 | 238 | HalTimerReLoadRtl8195a_V04(TimerId, LoadUs); |
AnnaBridge | 167:e84263d55307 | 239 | #else |
AnnaBridge | 167:e84263d55307 | 240 | HalTimerReLoadRtl8195a_Patch(TimerId, LoadUs); |
AnnaBridge | 167:e84263d55307 | 241 | #endif |
AnnaBridge | 167:e84263d55307 | 242 | } |
AnnaBridge | 167:e84263d55307 | 243 | |
AnnaBridge | 167:e84263d55307 | 244 | #if defined(CONFIG_CHIP_A_CUT) || defined(CONFIG_CHIP_B_CUT) |
AnnaBridge | 167:e84263d55307 | 245 | |
AnnaBridge | 167:e84263d55307 | 246 | static __inline VOID |
AnnaBridge | 167:e84263d55307 | 247 | HalTimerDeInit( |
AnnaBridge | 167:e84263d55307 | 248 | IN VOID *Data |
AnnaBridge | 167:e84263d55307 | 249 | ) |
AnnaBridge | 167:e84263d55307 | 250 | { |
AnnaBridge | 167:e84263d55307 | 251 | HalTimerDeInitRtl8195a_Patch(Data); |
AnnaBridge | 167:e84263d55307 | 252 | } |
AnnaBridge | 167:e84263d55307 | 253 | |
AnnaBridge | 167:e84263d55307 | 254 | #else |
AnnaBridge | 167:e84263d55307 | 255 | |
AnnaBridge | 167:e84263d55307 | 256 | static __inline VOID |
AnnaBridge | 167:e84263d55307 | 257 | HalTimerDeInit( |
AnnaBridge | 167:e84263d55307 | 258 | IN VOID *Data |
AnnaBridge | 167:e84263d55307 | 259 | ) |
AnnaBridge | 167:e84263d55307 | 260 | { |
AnnaBridge | 167:e84263d55307 | 261 | HalTimerDeInitRtl8195aV02(Data); |
AnnaBridge | 167:e84263d55307 | 262 | } |
AnnaBridge | 167:e84263d55307 | 263 | |
AnnaBridge | 167:e84263d55307 | 264 | #endif // end of "#ifndef CONFIG_CHIP_C_CUT" |
AnnaBridge | 167:e84263d55307 | 265 | #endif // #ifndef CONFIG_RELEASE_BUILD_LIBRARIES |
AnnaBridge | 167:e84263d55307 | 266 | #endif //_RTL8195A_TIMER_H_ |