MLK-18044-1: crypto: caam: Add CAAM support to i.MX8M platforms
This patch enable CAAM support for i.MX8M platforms. Signed-off-by: Aymen Sghaier <aymen.sghaier@nxp.com> (cherry picked from commit 1fc92e6e34b06bdee81240ce06326aca1d9c02d8)
This commit is contained in:
		
							parent
							
								
									5d797db35d
								
							
						
					
					
						commit
						b0f889b77b
					
				| 
						 | 
				
			
			@ -611,6 +611,9 @@ config ARCH_IMX8
 | 
			
		|||
config ARCH_IMX8M
 | 
			
		||||
	bool "NXP i.MX8M platform"
 | 
			
		||||
	select ARM64
 | 
			
		||||
	select SYS_FSL_HAS_SEC if SECURE_BOOT
 | 
			
		||||
	select SYS_FSL_SEC_COMPAT_4
 | 
			
		||||
	select SYS_FSL_SEC_LE
 | 
			
		||||
	select DM
 | 
			
		||||
	select SUPPORT_SPL
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2017 NXP
 | 
			
		||||
 * Copyright 2017-2018 NXP
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -129,6 +129,16 @@
 | 
			
		|||
#define DDRC_IPS_BASE_ADDR(X)	(0x3d400000 + ((X) * 0x2000000))
 | 
			
		||||
#define DDR_CSD1_BASE_ADDR	0x40000000
 | 
			
		||||
 | 
			
		||||
#define CAAM_ARB_BASE_ADDR              (0x00100000)
 | 
			
		||||
#define CAAM_ARB_END_ADDR               (0x00107FFF)
 | 
			
		||||
#define CAAM_IPS_BASE_ADDR              (0x30900000)
 | 
			
		||||
#define CONFIG_SYS_FSL_SEC_OFFSET       (0)
 | 
			
		||||
#define CONFIG_SYS_FSL_SEC_ADDR         (CAAM_IPS_BASE_ADDR + \
 | 
			
		||||
					 CONFIG_SYS_FSL_SEC_OFFSET)
 | 
			
		||||
#define CONFIG_SYS_FSL_JR0_OFFSET       (0x1000)
 | 
			
		||||
#define CONFIG_SYS_FSL_JR0_ADDR         (CONFIG_SYS_FSL_SEC_ADDR + \
 | 
			
		||||
					 CONFIG_SYS_FSL_JR0_OFFSET)
 | 
			
		||||
#define CONFIG_SYS_FSL_MAX_NUM_OF_SEC   1
 | 
			
		||||
#if !defined(__ASSEMBLY__)
 | 
			
		||||
#include <asm/types.h>
 | 
			
		||||
#include <linux/bitops.h>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@ if ARCH_IMX8M
 | 
			
		|||
 | 
			
		||||
config IMX8M
 | 
			
		||||
	bool
 | 
			
		||||
	select HAS_CAAM
 | 
			
		||||
	select ROM_UNIFIED_SECTIONS
 | 
			
		||||
 | 
			
		||||
choice
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
 * Basic job descriptor construction
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright 2014 Freescale Semiconductor, Inc.
 | 
			
		||||
 * Copyright 2018 NXP
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			@ -14,7 +15,8 @@
 | 
			
		|||
#include "jobdesc.h"
 | 
			
		||||
#include "rsa_caam.h"
 | 
			
		||||
 | 
			
		||||
#if defined(CONFIG_MX6) || defined(CONFIG_MX7) || defined(CONFIG_MX7ULP)
 | 
			
		||||
#if defined(CONFIG_MX6) || defined(CONFIG_MX7) || defined(CONFIG_MX7ULP) || \
 | 
			
		||||
		defined(CONFIG_IMX8M)
 | 
			
		||||
/*!
 | 
			
		||||
 * Secure memory run command
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@
 | 
			
		|||
 * Common internal memory map for some Freescale SoCs
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright 2014 Freescale Semiconductor, Inc.
 | 
			
		||||
 * Copyright 2018 NXP
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -152,7 +153,8 @@ typedef struct ccsr_sec {
 | 
			
		|||
 | 
			
		||||
struct jr_regs {
 | 
			
		||||
#if defined(CONFIG_SYS_FSL_SEC_LE) && \
 | 
			
		||||
	!(defined(CONFIG_MX6) || defined(CONFIG_MX7) || defined(CONFIG_MX7ULP))
 | 
			
		||||
	!(defined(CONFIG_MX6) || defined(CONFIG_MX7) || \
 | 
			
		||||
	  defined(CONFIG_MX7ULP) || defined(CONFIG_IMX8M))
 | 
			
		||||
	u32 irba_l;
 | 
			
		||||
	u32 irba_h;
 | 
			
		||||
#else
 | 
			
		||||
| 
						 | 
				
			
			@ -166,7 +168,8 @@ struct jr_regs {
 | 
			
		|||
	u32 rsvd3;
 | 
			
		||||
	u32 irja;
 | 
			
		||||
#if defined(CONFIG_SYS_FSL_SEC_LE) && \
 | 
			
		||||
	!(defined(CONFIG_MX6) || defined(CONFIG_MX7) || defined(CONFIG_MX7ULP))
 | 
			
		||||
	!(defined(CONFIG_MX6) || defined(CONFIG_MX7) || \
 | 
			
		||||
	  defined(CONFIG_MX7ULP) || defined(CONFIG_IMX8M))
 | 
			
		||||
	u32 orba_l;
 | 
			
		||||
	u32 orba_h;
 | 
			
		||||
#else
 | 
			
		||||
| 
						 | 
				
			
			@ -199,7 +202,8 @@ struct jr_regs {
 | 
			
		|||
 */
 | 
			
		||||
struct sg_entry {
 | 
			
		||||
#if defined(CONFIG_SYS_FSL_SEC_LE) && \
 | 
			
		||||
	!(defined(CONFIG_MX6) || defined(CONFIG_MX7) || defined(CONFIG_MX7ULP))
 | 
			
		||||
	!(defined(CONFIG_MX6) || defined(CONFIG_MX7) || \
 | 
			
		||||
	  defined(CONFIG_MX7ULP) || defined(CONFIG_IMX8M))
 | 
			
		||||
	uint32_t addr_lo;	/* Memory Address - lo */
 | 
			
		||||
	uint32_t addr_hi;	/* Memory Address of start of buffer - hi */
 | 
			
		||||
#else
 | 
			
		||||
| 
						 | 
				
			
			@ -220,7 +224,8 @@ struct sg_entry {
 | 
			
		|||
 | 
			
		||||
#define BLOB_SIZE(x)		((x) + 32 + 16) /* Blob buffer size */
 | 
			
		||||
 | 
			
		||||
#if defined(CONFIG_MX6) || defined(CONFIG_MX7) || defined(CONFIG_MX7ULP)
 | 
			
		||||
#if defined(CONFIG_MX6) || defined(CONFIG_MX7) || \
 | 
			
		||||
	defined(CONFIG_MX7ULP) || defined(CONFIG_IMX8M)
 | 
			
		||||
/* Job Ring Base Address */
 | 
			
		||||
#define JR_BASE_ADDR(x) (CONFIG_SYS_FSL_SEC_ADDR + 0x1000 * (x + 1))
 | 
			
		||||
/* Secure Memory Offset varies accross versions */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue