Commit caa9dbb7 authored by Sven Schwermer's avatar Sven Schwermer Committed by Herbert Xu
Browse files

crypto: mxs-dcp - Only set OTP_KEY bit for OTP key



While MXS_DCP_CONTROL0_OTP_KEY is set, the CRYPTO_KEY (DCP_PAES_KEY_OTP)
is used even if the UNIQUE_KEY (DCP_PAES_KEY_UNIQUE) is selected. This
is not clearly documented, but this implementation is consistent with
NXP's downstream kernel fork and optee_os.

Signed-off-by: default avatarSven Schwermer <sven@svenschwermer.de>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent d4880fe6
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -265,12 +265,12 @@ static int mxs_dcp_run_aes(struct dcp_async_ctx *actx,
		    MXS_DCP_CONTROL0_INTERRUPT |
		    MXS_DCP_CONTROL0_ENABLE_CIPHER;

	if (key_referenced)
		/* Set OTP key bit to select the key via KEY_SELECT. */
		desc->control0 |= MXS_DCP_CONTROL0_OTP_KEY;
	else
	if (!key_referenced)
		/* Payload contains the key. */
		desc->control0 |= MXS_DCP_CONTROL0_PAYLOAD_KEY;
	else if (actx->key[0] == DCP_PAES_KEY_OTP)
		/* Set OTP key bit to select the key via KEY_SELECT. */
		desc->control0 |= MXS_DCP_CONTROL0_OTP_KEY;

	if (rctx->enc)
		desc->control0 |= MXS_DCP_CONTROL0_CIPHER_ENCRYPT;