1 /*
2  * Copyright (c) 2006-2021, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2011-01-13     weety      first version
9  */
10 
11 #ifndef __ASM_ARCH_IO_H
12 #define __ASM_ARCH_IO_H
13 
14 #define AT91_BASE_SYS           0xffffe800
15 
16 #define IO_SPACE_LIMIT      0xFFFFFFFF
17 
18 #define readb(a)    (*(volatile unsigned char  *)(a))
19 #define readw(a)    (*(volatile unsigned short *)(a))
20 #define readl(a)    (*(volatile unsigned int   *)(a))
21 
22 #define writeb(v,a) (*(volatile unsigned char  *)(a) = (v))
23 #define writew(v,a) (*(volatile unsigned short *)(a) = (v))
24 #define writel(v,a) (*(volatile unsigned int   *)(a) = (v))
25 
26 
at91_sys_read(unsigned int reg_offset)27 rt_inline unsigned int at91_sys_read(unsigned int reg_offset)
28 {
29     unsigned int  addr = AT91_BASE_SYS;
30 
31     return readl(addr + reg_offset);
32 }
33 
at91_sys_write(unsigned int reg_offset,unsigned long value)34 rt_inline void at91_sys_write(unsigned int reg_offset, unsigned long value)
35 {
36     unsigned int addr = AT91_BASE_SYS;
37 
38     writel(value, addr + reg_offset);
39 }
40 
41 
42 #endif
43 
44