summaryrefslogtreecommitdiff
path: root/bsp/at91/at91sam9260/platform/io.h
blob: 3e41feee9001e2ef97165a51be01b0cdb8495b58 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2011-01-13     weety      first version
 */

#ifndef __ASM_ARCH_IO_H
#define __ASM_ARCH_IO_H

#define AT91_BASE_SYS           0xffffe800

#define IO_SPACE_LIMIT      0xFFFFFFFF

#define readb(a)    (*(volatile unsigned char  *)(a))
#define readw(a)    (*(volatile unsigned short *)(a))
#define readl(a)    (*(volatile unsigned int   *)(a))

#define writeb(v,a) (*(volatile unsigned char  *)(a) = (v))
#define writew(v,a) (*(volatile unsigned short *)(a) = (v))
#define writel(v,a) (*(volatile unsigned int   *)(a) = (v))


rt_inline unsigned int at91_sys_read(unsigned int reg_offset)
{
    unsigned int  addr = AT91_BASE_SYS;

    return readl(addr + reg_offset);
}

rt_inline void at91_sys_write(unsigned int reg_offset, unsigned long value)
{
    unsigned int addr = AT91_BASE_SYS;

    writel(value, addr + reg_offset);
}


#endif