blob: 2e90694a5f1d2b5040d7b53ed1b811266ef31ca8 [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
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +00007#ifndef RK3399_MCU_H
8#define RK3399_MCU_H
Caesar Wangb4003742016-10-12 08:10:12 +08009
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
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +000032#endif /* RK3399_MCU_H */