1#
2# Define the cryptographic algorithm to be built
3#
4
5#
6# CAAM Debug: define 3x32 bits value (same bit used to debug a module)
7# CFG_DBG_CAAM_TRACE  Module print trace
8# CFG_DBG_CAAM_DESC   Module descriptor dump
9# CFG_DBG_CAAM_BUF    Module buffer dump
10#
11# DBG_HAL    BIT32(0)  // HAL trace
12# DBG_CTRL   BIT32(1)  // Controller trace
13# DBG_MEM    BIT32(2)  // Memory utility trace
14# DBG_SGT    BIT32(3)  // Scatter Gather trace
15# DBG_PWR    BIT32(4)  // Power trace
16# DBG_JR     BIT32(5)  // Job Ring trace
17# DBG_RNG    BIT32(6)  // RNG trace
18# DBG_HASH   BIT32(7)  // Hash trace
19# DBG_RSA    BIT32(8)  // RSA trace
20# DBG_CIPHER BIT32(9)  // Cipher trace
21# DBG_DMAOBJ BIT32(11) // DMA Object Trace
22CFG_DBG_CAAM_TRACE ?= BIT32(1)
23CFG_DBG_CAAM_DESC ?= 0x0
24CFG_DBG_CAAM_BUF ?= 0x0
25
26CFG_CAAM_64BIT ?= y
27
28# Number of entries by which SGT entries must be allocated
29# On layerscape, SGT entries are loaded by burst of 4
30$(call force, CFG_CAAM_SGT_ALIGN,4)
31
32# Enable the BLOB module used for the hardware unique key
33CFG_NXP_CAAM_BLOB_DRV ?= y
34
35$(call force, CFG_CAAM_SIZE_ALIGN,1)
36
37#
38# CAAM Job Ring configuration
39#  - Normal boot settings
40#  - HAB support boot settings
41#
42$(call force,CFG_JR_BLOCK_SIZE,0x10000)
43$(call force,CFG_JR_INDEX,2)  # Default JR index used
44
45ifneq (,$(filter $(PLATFORM_FLAVOR),ls1012afrwy))
46$(call force,CFG_CAAM_BIG_ENDIAN,y)
47$(call force,CFG_JR_INT,105)
48else ifneq (,$(filter $(PLATFORM_FLAVOR),ls1012ardb))
49$(call force,CFG_CAAM_BIG_ENDIAN,y)
50$(call force,CFG_JR_INT,105)
51else ifneq (,$(filter $(PLATFORM_FLAVOR),ls1021atwr))
52$(call force,CFG_CAAM_LITTLE_ENDIAN,y)
53$(call force,CFG_JR_INT,137)
54else ifneq (,$(filter $(PLATFORM_FLAVOR),ls1021aqds))
55$(call force,CFG_CAAM_LITTLE_ENDIAN,y)
56$(call force,CFG_JR_INT,137)
57else ifneq (,$(filter $(PLATFORM_FLAVOR),ls1043ardb))
58$(call force,CFG_CAAM_BIG_ENDIAN,y)
59$(call force,CFG_JR_INT,105)
60else ifneq (,$(filter $(PLATFORM_FLAVOR),ls1046ardb))
61$(call force,CFG_CAAM_BIG_ENDIAN,y)
62$(call force,CFG_JR_INT,137)
63else ifneq (,$(filter $(PLATFORM_FLAVOR),ls1088ardb))
64$(call force,CFG_CAAM_LITTLE_ENDIAN,y)
65$(call force,CFG_JR_INT,175)
66$(call force,CFG_NXP_CAAM_SGT_V2,y)
67else ifneq (,$(filter $(PLATFORM_FLAVOR),ls2088ardb))
68$(call force,CFG_CAAM_LITTLE_ENDIAN,y)
69$(call force,CFG_JR_INT,175)
70$(call force,CFG_NXP_CAAM_SGT_V2,y)
71else ifneq (,$(filter $(PLATFORM_FLAVOR),ls1028ardb))
72$(call force,CFG_CAAM_LITTLE_ENDIAN,y)
73$(call force,CFG_JR_INT,175)
74$(call force,CFG_NXP_CAAM_SGT_V2,y)
75else ifneq (,$(filter $(PLATFORM_FLAVOR),lx2160aqds))
76$(call force,CFG_CAAM_LITTLE_ENDIAN,y)
77$(call force,CFG_JR_INT, 174)
78$(call force,CFG_NB_JOBS_QUEUE, 80)  # Default JR index used
79$(call force,CFG_NXP_CAAM_SGT_V2,y)
80else ifneq (,$(filter $(PLATFORM_FLAVOR),lx2160ardb))
81$(call force,CFG_CAAM_LITTLE_ENDIAN,y)
82$(call force,CFG_JR_INT, 174)
83$(call force,CFG_NB_JOBS_QUEUE, 80)  # Default JR index used
84$(call force,CFG_NXP_CAAM_SGT_V2,y)
85endif
86
87# Version of the SGT implementation to use
88ifneq ($(CFG_NXP_CAAM_SGT_V2),y)
89$(call force,CFG_NXP_CAAM_SGT_V1,y)
90endif
91
92#
93# Configuration of the Crypto Driver
94#
95ifeq ($(CFG_CRYPTO_DRIVER),y)
96
97$(call force, CFG_NXP_CAAM_RUNTIME_JR, y)
98
99#
100# Definition of all HW accelerations for all LS
101#
102$(call force, CFG_NXP_CAAM_RNG_DRV, y)
103$(call force, CFG_WITH_SOFTWARE_PRNG,n)
104
105# Force to 'y' the CFG_NXP_CAAM_xxx_DRV to enable the CAAM HW driver
106# and enable the associated CFG_CRYPTO_DRV_xxx Crypto driver
107# API
108#
109# Example: Enable CFG_CRYPTO_DRV_HASH and CFG_NXP_CAAM_HASH_DRV
110#     $(eval $(call cryphw-enable-drv-hw, HASH))
111define cryphw-enable-drv-hw
112_var := $(strip $(1))
113$$(call force, CFG_NXP_CAAM_$$(_var)_DRV, y)
114$$(call force, CFG_CRYPTO_DRV_$$(_var), y)
115endef
116
117# Return 'y' if at least one of the variable
118# CFG_CRYPTO_xxx_HW is 'y'
119cryphw-one-enabled = $(call cfg-one-enabled, \
120                        $(foreach v,$(1), CFG_NXP_CAAM_$(v)_DRV))
121
122# Definition of the HW and Cryto Driver Algorithm supported by all LS
123$(eval $(call cryphw-enable-drv-hw, HASH))
124$(eval $(call cryphw-enable-drv-hw, CIPHER))
125$(call force, CFG_NXP_CAAM_HMAC_DRV,y)
126$(call force, CFG_NXP_CAAM_CMAC_DRV,y)
127$(eval $(call cryphw-enable-drv-hw, RSA))
128$(eval $(call cryphw-enable-drv-hw, ECC))
129$(eval $(call cryphw-enable-drv-hw, DH))
130$(eval $(call cryphw-enable-drv-hw, DSA))
131
132# Define the RSA Private Key Format used by the CAAM
133#   Format #1: (n, d)
134#   Format #2: (p, q, d)
135#   Format #3: (p, q, dp, dq, qp)
136CFG_NXP_CAAM_RSA_KEY_FORMAT ?= 3
137
138$(call force, CFG_NXP_CAAM_ACIPHER_DRV, $(call cryphw-one-enabled, RSA ECC DH DSA))
139$(call force, CFG_CRYPTO_DRV_MAC, $(call cryphw-one-enabled, HMAC CMAC))
140
141#
142# Enable Cryptographic Driver interface
143#
144CFG_CRYPTO_DRV_ACIPHER ?= $(CFG_NXP_CAAM_ACIPHER_DRV)
145
146endif
147