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: Sven Schwermer <sven@svenschwermer.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
                    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;