/*
 * Copyright (c) 2017 Synopsys.
 *
 * SPDX-License-Identifier: Apache-2.0
 */
#ifndef _ARC_MPU_H_
#define _ARC_MPU_H_



#define AUX_MPU_RDP_UE  0x008    /* allow user execution */
#define AUX_MPU_RDP_UW  0x010    /* allow user write */
#define AUX_MPU_RDP_UR  0x020    /* allow user read */
#define AUX_MPU_RDP_KE  0x040    /* only allow kernel execution */
#define AUX_MPU_RDP_KW  0x080    /* only allow kernel write */
#define AUX_MPU_RDP_KR  0x100    /* only allow kernel read */



/* Some helper defines for common regions */
#define REGION_RAM_ATTR(size) \
			(AUX_MPU_RDP_UW | AUX_MPU_RDP_UR | \
			 AUX_MPU_RDP_KW | AUX_MPU_RDP_KR | \
			 size)

#define REGION_FLASH_ATTR(size) \
			(AUX_MPU_RDP_UE | AUX_MPU_RDP_UR | \
			 AUX_MPU_RDP_KE | AUX_MPU_RDP_KR | \
			 size)

#define REGION_IO_ATTR(size) \
			(AUX_MPU_RDP_UW | AUX_MPU_RDP_UR | \
			 AUX_MPU_RDP_KW | AUX_MPU_RDP_KR | \
			 size)

#define REGION_ALL_ATTR(size) \
			(AUX_MPU_RDP_UW | AUX_MPU_RDP_UR | \
			 AUX_MPU_RDP_KW | AUX_MPU_RDP_KR | \
			 AUX_MPU_RDP_KE | AUX_MPU_RDP_UE | \
			 size)


#define REGION_32B      0x200
#define REGION_64B      0x201
#define REGION_128B     0x202
#define REGION_256B     0x203
#define REGION_512B     0x400
#define REGION_1K       0x401
#define REGION_2K       0x402
#define REGION_4K       0x403
#define REGION_8K       0x600
#define REGION_16K      0x601
#define REGION_32K      0x602
#define REGION_64K      0x603
#define REGION_128K     0x800
#define REGION_256K     0x801
#define REGION_512K     0x802
#define REGION_1M       0x803
#define REGION_2M       0xA00
#define REGION_4M       0xA01
#define REGION_8M       0xA02
#define REGION_16M      0xA03
#define REGION_32M      0xC00
#define REGION_64M      0xC01
#define REGION_128M     0xC02
#define REGION_256M     0xC03
#define REGION_512M     0xE00
#define REGION_1G       0xE01
#define REGION_2G       0xE02
#define REGION_4G       0xE03

/* Region definition data structure */
struct arc_mpu_region {
	/* Region Base Address */
	u32_t base;
	/* Region Name */
	const char *name;
	/* Region Attributes */
	u32_t attr;
};

#define MPU_REGION_ENTRY(_name, _base, _attr) \
	{\
		.name = _name, \
		.base = _base, \
		.attr = _attr, \
	}

/* MPU configuration data structure */
struct arc_mpu_config {
	/* Number of regions */
	u32_t num_regions;
	/* Regions */
	struct arc_mpu_region *mpu_regions;
};

/* Reference to the MPU configuration */
extern struct arc_mpu_config mpu_config;

#endif /* _ARC_CORE_MPU_H_ */
