/*
 * Copyright (c) 2017 Linaro Limited.
 *
 * SPDX-License-Identifier: Apache-2.0
 */
#include <soc.h>
#include <arch/arm/cortex_m/mpu/nxp_mpu.h>

#define FLEXBUS_BASE_ADDRESS 0x08000000
#define SRAM_L_BASE_ADDRESS 0x1FFF0000
#define DEVICE_S_BASE_ADDRESS 0x20030000

static struct nxp_mpu_region mpu_regions[] = {
	/* Region 0 */
	MPU_REGION_ENTRY("FLASH_0",
			 CONFIG_FLASH_BASE_ADDRESS,
			 0x07FFFFFF,
			 REGION_FLASH_ATTR),
	/* Region 1 */
	/*
	 * This region (Flexbus + FlexNVM) is bigger than the FLEXBUS one in
	 * order to save 1 region allocation in the MPU.
	 */
	MPU_REGION_ENTRY("FLEXBUS_0",
			 FLEXBUS_BASE_ADDRESS,
			 0x1BFFFFFF,
			 REGION_IO_ATTR),
	/* Region 2 */
	MPU_REGION_ENTRY("RAM_L_0",
			 SRAM_L_BASE_ADDRESS,
			 0x1FFFFFFF,
			 REGION_RAM_ATTR),
	/* Region 3 */
	MPU_REGION_ENTRY("RAM_U_0",
			 CONFIG_SRAM_BASE_ADDRESS,
			 (CONFIG_SRAM_BASE_ADDRESS +
				 (CONFIG_SRAM_SIZE * 1024) - 1),
			 REGION_RAM_ATTR),
	/* Region 4 */
	MPU_REGION_ENTRY("DEVICE_0",
			 DEVICE_S_BASE_ADDRESS,
			 0xFFFFFFFF,
			 REGION_IO_ATTR),
};

struct nxp_mpu_config mpu_config = {
	.num_regions = ARRAY_SIZE(mpu_regions),
	.mpu_regions = mpu_regions,
};
