blob: 176af3ae9a68392bf1c0c9b3e89a9828614cc871 [file] [log] [blame]
Caesar Wangb4003742016-10-12 08:10:12 +08001/*
2 * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
3 *
dp-armfa3cf0b2017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
Caesar Wangb4003742016-10-12 08:10:12 +08005 */
6
7#ifndef __RK3399_MCU_H__
8#define __RK3399_MCU_H__
9
Xing Zhengb4bcc1d2017-02-24 16:26:11 +080010#include <addressmap.h>
11
Xing Zheng93280b72016-10-26 21:25:26 +080012typedef unsigned int uint32_t;
13
Xing Zhengaae6be42016-10-24 21:06:25 +080014#define mmio_read_32(c) ({unsigned int __v = \
Caesar Wangb4003742016-10-12 08:10:12 +080015 (*(volatile unsigned int *)(c)); __v; })
Xing Zhengaae6be42016-10-24 21:06:25 +080016#define mmio_write_32(c, v) ((*(volatile unsigned int *)(c)) = (v))
Caesar Wangb4003742016-10-12 08:10:12 +080017
Xing Zheng93280b72016-10-26 21:25:26 +080018#define mmio_clrbits_32(addr, clear) \
19 mmio_write_32(addr, (mmio_read_32(addr) & ~(clear)))
20#define mmio_setbits_32(addr, set) \
21 mmio_write_32(addr, (mmio_read_32(addr)) | (set))
22#define mmio_clrsetbits_32(addr, clear, set) \
23 mmio_write_32(addr, (mmio_read_32(addr) & ~(clear)) | (set))
24
Julius Werner84afaaf2017-01-30 18:26:07 -080025#define MIN(a, b) ((a) < (b) ? (a) : (b))
26#define MAX(a, b) ((a) > (b) ? (a) : (b))
27
Lin Huange7c24222016-11-30 16:57:08 +080028void stopwatch_init_usecs_expire(unsigned int usecs);
29int stopwatch_expired(void);
30void stopwatch_reset(void);
Caesar Wangb4003742016-10-12 08:10:12 +080031
32#endif /* __RK3399_MCU_H__ */