12502709fSJacky Bai /* 2*77850c96SFranck LENORMAND * Copyright (c) 2019-2022 NXP. All rights reserved. 32502709fSJacky Bai * 42502709fSJacky Bai * SPDX-License-Identifier: BSD-3-Clause 52502709fSJacky Bai */ 62502709fSJacky Bai 7*77850c96SFranck LENORMAND #include <common/debug.h> 82502709fSJacky Bai #include <lib/mmio.h> 92502709fSJacky Bai 102502709fSJacky Bai #include <imx8m_caam.h> 112502709fSJacky Bai 12*77850c96SFranck LENORMAND #define HAB_JR0_DID U(0x8011) 13*77850c96SFranck LENORMAND 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 */ 26*77850c96SFranck LENORMAND if (mmio_read_32(CAAM_JR0MID) == HAB_JR0_DID) { 27*77850c96SFranck LENORMAND NOTICE("Do not release JR0 to NS as it can be used by HAB"); 28*77850c96SFranck LENORMAND } else { 292502709fSJacky Bai mmio_write_32(CAAM_JR0MID, CAAM_NS_MID); 30*77850c96SFranck LENORMAND } 31*77850c96SFranck 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