12502709fSJacky Bai /*
277850c96SFranck LENORMAND * Copyright (c) 2019-2022 NXP. All rights reserved.
32502709fSJacky Bai *
42502709fSJacky Bai * SPDX-License-Identifier: BSD-3-Clause
52502709fSJacky Bai */
62502709fSJacky Bai
777850c96SFranck LENORMAND #include <common/debug.h>
82502709fSJacky Bai #include <lib/mmio.h>
92502709fSJacky Bai
102502709fSJacky Bai #include <imx8m_caam.h>
112502709fSJacky Bai
1277850c96SFranck LENORMAND #define HAB_JR0_DID U(0x8011)
1377850c96SFranck LENORMAND
imx8m_caam_init(void)142502709fSJacky Bai void imx8m_caam_init(void)
152502709fSJacky Bai {
162502709fSJacky Bai uint32_t sm_cmd;
172502709fSJacky Bai
182502709fSJacky Bai /* Dealloc part 0 and 2 with current DID */
192502709fSJacky Bai sm_cmd = (0 << SMC_PART_SHIFT | SMC_CMD_DEALLOC_PART);
202502709fSJacky Bai mmio_write_32(SM_CMD, sm_cmd);
212502709fSJacky Bai
222502709fSJacky Bai sm_cmd = (2 << SMC_PART_SHIFT | SMC_CMD_DEALLOC_PART);
232502709fSJacky Bai mmio_write_32(SM_CMD, sm_cmd);
242502709fSJacky Bai
252502709fSJacky Bai /* config CAAM JRaMID set MID to Cortex A */
2677850c96SFranck LENORMAND if (mmio_read_32(CAAM_JR0MID) == HAB_JR0_DID) {
27*6e24d795SAndrey Zhizhikin NOTICE("Do not release JR0 to NS as it can be used by HAB\n");
2877850c96SFranck LENORMAND } else {
292502709fSJacky Bai mmio_write_32(CAAM_JR0MID, CAAM_NS_MID);
3077850c96SFranck LENORMAND }
3177850c96SFranck LENORMAND
322502709fSJacky Bai mmio_write_32(CAAM_JR1MID, CAAM_NS_MID);
332502709fSJacky Bai mmio_write_32(CAAM_JR2MID, CAAM_NS_MID);
342502709fSJacky Bai
352502709fSJacky Bai /* Alloc partition 0 writing SMPO and SMAGs */
362502709fSJacky Bai mmio_write_32(SM_P0_PERM, 0xff);
372502709fSJacky Bai mmio_write_32(SM_P0_SMAG2, 0xffffffff);
382502709fSJacky Bai mmio_write_32(SM_P0_SMAG1, 0xffffffff);
392502709fSJacky Bai
402502709fSJacky Bai /* Allocate page 0 and 1 to partition 0 with DID set */
412502709fSJacky Bai sm_cmd = (0 << SMC_PAGE_SHIFT | 0 << SMC_PART_SHIFT |
422502709fSJacky Bai SMC_CMD_ALLOC_PAGE);
432502709fSJacky Bai mmio_write_32(SM_CMD, sm_cmd);
442502709fSJacky Bai
452502709fSJacky Bai sm_cmd = (1 << SMC_PAGE_SHIFT | 0 << SMC_PART_SHIFT |
462502709fSJacky Bai SMC_CMD_ALLOC_PAGE);
472502709fSJacky Bai mmio_write_32(SM_CMD, sm_cmd);
482502709fSJacky Bai }
49