Merge tag 'xilinx-for-v2017.09' of git://www.denx.de/git/u-boot-microblaze
[oweals/u-boot.git] / arch / arm / include / asm / armv7m_mpu.h
1 /*
2  * (C) Copyright 2017
3  * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8 enum region_number {
9         REGION_0 = 0,
10         REGION_1,
11         REGION_2,
12         REGION_3,
13         REGION_4,
14         REGION_5,
15         REGION_6,
16         REGION_7,
17 };
18
19 enum ap {
20         NO_ACCESS = 0,
21         PRIV_RW_USR_NO,
22         PRIV_RW_USR_RO,
23         PRIV_RW_USR_RW,
24         UNPREDICTABLE,
25         PRIV_RO_USR_NO,
26         PRIV_RO_USR_RO,
27 };
28
29 enum mr_attr {
30         STRONG_ORDER = 0,
31         SHARED_WRITE_BUFFERED,
32         O_I_WT_NO_WR_ALLOC,
33         O_I_WB_NO_WR_ALLOC,
34         O_I_NON_CACHEABLE,
35         O_I_WB_RD_WR_ALLOC,
36         DEVICE_NON_SHARED,
37 };
38 enum size {
39         REGION_8MB = 22,
40         REGION_16MB,
41         REGION_32MB,
42         REGION_64MB,
43         REGION_128MB,
44         REGION_256MB,
45         REGION_512MB,
46         REGION_1GB,
47         REGION_2GB,
48         REGION_4GB,
49 };
50
51 enum xn {
52         XN_DIS = 0,
53         XN_EN,
54 };
55
56 struct mpu_region_config {
57         uint32_t start_addr;
58         enum region_number region_no;
59         enum xn xn;
60         enum ap ap;
61         enum mr_attr mr_attr;
62         enum size reg_size;
63 };
64
65 void disable_mpu(void);
66 void enable_mpu(void);
67 void mpu_config(struct mpu_region_config *reg_config);