68 lines
		
	
	
		
			993 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			993 B
		
	
	
	
		
			C
		
	
	
	
/*
 | 
						|
 * (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);
 |