diff options
author | Bryan O'Donoghue <bryan.odonoghue@linaro.org> | 2018-05-25 16:56:52 +0100 |
---|---|---|
committer | Bryan O'Donoghue <bryan.odonoghue@linaro.org> | 2018-09-04 13:36:23 +0100 |
commit | c3334cb1969a047b42f347c748d451e05d8d91ac (patch) | |
tree | 968279a2a11c3a5aa3ec3bb3e834aa2a8a410abd /plat/imx | |
parent | 49a6413447d2893b56b3c8189785680f7b0d95ab (diff) | |
download | platform_external_arm-trusted-firmware-c3334cb1969a047b42f347c748d451e05d8d91ac.tar.gz platform_external_arm-trusted-firmware-c3334cb1969a047b42f347c748d451e05d8d91ac.tar.bz2 platform_external_arm-trusted-firmware-c3334cb1969a047b42f347c748d451e05d8d91ac.zip |
imx: imx_csu: Add a simple CSU layer
- Add a header to define imx_csu_init().
- Defines the Central Security Unit's Config Security Level
permission bits.
- Define CSU_CSL_OPEN_ACCESS permission bitmask
- Run a loop to setup peripheral CSU permissions
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Diffstat (limited to 'plat/imx')
-rw-r--r-- | plat/imx/common/imx_csu.c | 17 | ||||
-rw-r--r-- | plat/imx/common/include/imx_csu.h | 44 |
2 files changed, 61 insertions, 0 deletions
diff --git a/plat/imx/common/imx_csu.c b/plat/imx/common/imx_csu.c new file mode 100644 index 000000000..7c6a63e8a --- /dev/null +++ b/plat/imx/common/imx_csu.c @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#include <mmio.h> +#include <imx_csu.h> +#include <imx_regs.h> + +void imx_csu_init(void) +{ + int i; + uintptr_t *csl_reg = (uintptr_t *)CSU_BASE; + + for (i = 0; i < MXC_MAX_CSU_REGS; i++, csl_reg++) + mmio_write_32((uintptr_t)csl_reg, CSU_CSL_OPEN_ACCESS); +} diff --git a/plat/imx/common/include/imx_csu.h b/plat/imx/common/include/imx_csu.h new file mode 100644 index 000000000..9bf937386 --- /dev/null +++ b/plat/imx/common/include/imx_csu.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#ifndef __IMX_CSU_H__ +#define __IMX_CSU_H__ + +#include <arch.h> + +/* + * Security Reference Manual for i.MX 7Dual and 7Solo Applications Processors, + * Rev. 0, 03/2017 Section 3.3.1 + * + * Config secure level register (CSU_CSLn) + */ +#define CSU_CSL_LOCK_S1 BIT(24) +#define CSU_CSL_NSW_S1 BIT(23) +#define CSU_CSL_NUW_S1 BIT(22) +#define CSU_CSL_SSW_S1 BIT(21) +#define CSU_CSL_SUW_S1 BIT(20) +#define CSU_CSL_NSR_S1 BIT(19) +#define CSU_CSL_NUR_S1 BIT(18) +#define CSU_CSL_SSR_S1 BIT(17) +#define CSU_CSL_SUR_S1 BIT(16) +#define CSU_CSL_LOCK_S2 BIT(8) +#define CSU_CSL_NSW_S2 BIT(7) +#define CSU_CSL_NUW_S2 BIT(6) +#define CSU_CSL_SSW_S2 BIT(5) +#define CSU_CSL_SUW_S2 BIT(4) +#define CSU_CSL_NSR_S2 BIT(3) +#define CSU_CSL_NUR_S2 BIT(2) +#define CSU_CSL_SSR_S2 BIT(1) +#define CSU_CSL_SUR_S2 BIT(0) + +#define CSU_CSL_OPEN_ACCESS (CSU_CSL_NSW_S1 | CSU_CSL_NUW_S1 | CSU_CSL_SSW_S1 |\ + CSU_CSL_SUW_S1 | CSU_CSL_NSR_S1 | CSU_CSL_NUR_S1 |\ + CSU_CSL_SSR_S1 | CSU_CSL_SUR_S1 | CSU_CSL_NSW_S2 |\ + CSU_CSL_NUW_S2 | CSU_CSL_SSW_S2 | CSU_CSL_SUW_S2 |\ + CSU_CSL_NSR_S2 | CSU_CSL_NUR_S2 | CSU_CSL_SSR_S2 |\ + CSU_CSL_SUR_S2) +void imx_csu_init(void); + +#endif /* __IMX_CSU_H__ */ |