1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef RK3399_MCU_H 8*91f16700Schasinglulu #define RK3399_MCU_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu #include <addressmap.h> 11*91f16700Schasinglulu 12*91f16700Schasinglulu typedef unsigned int uint32_t; 13*91f16700Schasinglulu 14*91f16700Schasinglulu #define mmio_read_32(c) ({unsigned int __v = \ 15*91f16700Schasinglulu (*(volatile unsigned int *)(c)); __v; }) 16*91f16700Schasinglulu #define mmio_write_32(c, v) ((*(volatile unsigned int *)(c)) = (v)) 17*91f16700Schasinglulu 18*91f16700Schasinglulu #define mmio_clrbits_32(addr, clear) \ 19*91f16700Schasinglulu mmio_write_32(addr, (mmio_read_32(addr) & ~(clear))) 20*91f16700Schasinglulu #define mmio_setbits_32(addr, set) \ 21*91f16700Schasinglulu mmio_write_32(addr, (mmio_read_32(addr)) | (set)) 22*91f16700Schasinglulu #define mmio_clrsetbits_32(addr, clear, set) \ 23*91f16700Schasinglulu mmio_write_32(addr, (mmio_read_32(addr) & ~(clear)) | (set)) 24*91f16700Schasinglulu 25*91f16700Schasinglulu #define MIN(a, b) ((a) < (b) ? (a) : (b)) 26*91f16700Schasinglulu #define MAX(a, b) ((a) > (b) ? (a) : (b)) 27*91f16700Schasinglulu 28*91f16700Schasinglulu void stopwatch_init_usecs_expire(unsigned int usecs); 29*91f16700Schasinglulu int stopwatch_expired(void); 30*91f16700Schasinglulu void stopwatch_reset(void); 31*91f16700Schasinglulu 32*91f16700Schasinglulu #endif /* RK3399_MCU_H */ 33