diff --git a/chip/g/dcrypto/aes.c b/chip/g/dcrypto/aes.c index e42c43d58d..f5cc0e6d8f 100644 --- a/chip/g/dcrypto/aes.c +++ b/chip/g/dcrypto/aes.c @@ -16,6 +16,13 @@ static void set_control_register( GWRITE_FIELD(KEYMGR, AES_CTRL, ENC_MODE, encrypt); GWRITE_FIELD(KEYMGR, AES_CTRL, CTR_ENDIAN, CTRL_CTR_BIG_ENDIAN); GWRITE_FIELD(KEYMGR, AES_CTRL, ENABLE, CTRL_ENABLE); + + /* Turn off random nops (which are enabled by default). */ + GWRITE_FIELD(KEYMGR, AES_RAND_STALL_CTL, STALL_EN, 0); + /* Configure random nop percentage at 25%. */ + GWRITE_FIELD(KEYMGR, AES_RAND_STALL_CTL, FREQ, 1); + /* Now turn on random nops. */ + GWRITE_FIELD(KEYMGR, AES_RAND_STALL_CTL, STALL_EN, 1); } static int wait_read_data(volatile uint32_t *addr) diff --git a/chip/g/dcrypto/app_cipher.c b/chip/g/dcrypto/app_cipher.c index 32c507cd65..a416720633 100644 --- a/chip/g/dcrypto/app_cipher.c +++ b/chip/g/dcrypto/app_cipher.c @@ -94,6 +94,12 @@ static int aes_init(struct APPKEY_CTX *ctx, enum dcrypto_appid appid, GWRITE_FIELD(KEYMGR, AES_CTRL, ENC_MODE, ENCRYPT_MODE); GWRITE_FIELD(KEYMGR, AES_CTRL, CTR_ENDIAN, CTRL_CTR_BIG_ENDIAN); + /* + * For fixed-key, bulk ciphering, turn off random nops (which + * are enabled by default). + */ + GWRITE_FIELD(KEYMGR, AES_RAND_STALL_CTL, STALL_EN, 0); + /* Enable hidden key usage, each appid gets its own * USR, with USR0 starting at 0x2a0. */