/* * (C) Copyright 2017 * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com. * * SPDX-License-Identifier: GPL-2.0+ */ enum region_number { REGION_0 = 0, REGION_1, REGION_2, REGION_3, REGION_4, REGION_5, REGION_6, REGION_7, }; enum ap { NO_ACCESS = 0, PRIV_RW_USR_NO, PRIV_RW_USR_RO, PRIV_RW_USR_RW, UNPREDICTABLE, PRIV_RO_USR_NO, PRIV_RO_USR_RO, }; enum mr_attr { STRONG_ORDER = 0, SHARED_WRITE_BUFFERED, O_I_WT_NO_WR_ALLOC, O_I_WB_NO_WR_ALLOC, O_I_NON_CACHEABLE, O_I_WB_RD_WR_ALLOC, DEVICE_NON_SHARED, }; enum size { REGION_8MB = 22, REGION_16MB, REGION_32MB, REGION_64MB, REGION_128MB, REGION_256MB, REGION_512MB, REGION_1GB, REGION_2GB, REGION_4GB, }; enum xn { XN_DIS = 0, XN_EN, }; struct mpu_region_config { uint32_t start_addr; enum region_number region_no; enum xn xn; enum ap ap; enum mr_attr mr_attr; enum size reg_size; }; void disable_mpu(void); void enable_mpu(void); void mpu_config(struct mpu_region_config *reg_config);