xref: /rk3399_ARM-atf/plat/rockchip/rk3399/drivers/m0/include/rk3399_mcu.h (revision 9d068f66b15e644df4961b74b965323c20f21f14)
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