18382e17cSCaesar Wang /* 28382e17cSCaesar Wang * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 38382e17cSCaesar Wang * 482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 58382e17cSCaesar Wang */ 68382e17cSCaesar Wang 7*c3cf06f1SAntonio Nino Diaz #ifndef RK3399_MCU_H 8*c3cf06f1SAntonio Nino Diaz #define RK3399_MCU_H 98382e17cSCaesar Wang 101830f790SXing Zheng #include <addressmap.h> 111830f790SXing Zheng 12977001aaSXing Zheng typedef unsigned int uint32_t; 13977001aaSXing Zheng 14a9a4d23aSXing Zheng #define mmio_read_32(c) ({unsigned int __v = \ 158382e17cSCaesar Wang (*(volatile unsigned int *)(c)); __v; }) 16a9a4d23aSXing Zheng #define mmio_write_32(c, v) ((*(volatile unsigned int *)(c)) = (v)) 178382e17cSCaesar Wang 18977001aaSXing Zheng #define mmio_clrbits_32(addr, clear) \ 19977001aaSXing Zheng mmio_write_32(addr, (mmio_read_32(addr) & ~(clear))) 20977001aaSXing Zheng #define mmio_setbits_32(addr, set) \ 21977001aaSXing Zheng mmio_write_32(addr, (mmio_read_32(addr)) | (set)) 22977001aaSXing Zheng #define mmio_clrsetbits_32(addr, clear, set) \ 23977001aaSXing Zheng mmio_write_32(addr, (mmio_read_32(addr) & ~(clear)) | (set)) 24977001aaSXing Zheng 254dbab5d2SJulius Werner #define MIN(a, b) ((a) < (b) ? (a) : (b)) 264dbab5d2SJulius Werner #define MAX(a, b) ((a) > (b) ? (a) : (b)) 274dbab5d2SJulius Werner 2895c3f422SLin Huang void stopwatch_init_usecs_expire(unsigned int usecs); 2995c3f422SLin Huang int stopwatch_expired(void); 3095c3f422SLin Huang void stopwatch_reset(void); 318382e17cSCaesar Wang 32*c3cf06f1SAntonio Nino Diaz #endif /* RK3399_MCU_H */ 33