}
 
 #ifdef CONFIG_CRYPTO_DEV_QCE_SHA
-static u32 qce_auth_cfg(unsigned long flags, u32 key_size)
+static u32 qce_auth_cfg(unsigned long flags, u32 key_size, u32 auth_size)
 {
        u32 cfg = 0;
 
-       if (IS_AES(flags) && (IS_CCM(flags) || IS_CMAC(flags)))
+       if (IS_CCM(flags) || IS_CMAC(flags))
                cfg |= AUTH_ALG_AES << AUTH_ALG_SHIFT;
        else
                cfg |= AUTH_ALG_SHA << AUTH_ALG_SHIFT;
                cfg |= AUTH_SIZE_SHA256 << AUTH_SIZE_SHIFT;
        else if (IS_CMAC(flags))
                cfg |= AUTH_SIZE_ENUM_16_BYTES << AUTH_SIZE_SHIFT;
+       else if (IS_CCM(flags))
+               cfg |= (auth_size - 1) << AUTH_SIZE_SHIFT;
 
        if (IS_SHA1(flags) || IS_SHA256(flags))
                cfg |= AUTH_MODE_HASH << AUTH_MODE_SHIFT;
-       else if (IS_SHA1_HMAC(flags) || IS_SHA256_HMAC(flags) ||
-                IS_CBC(flags) || IS_CTR(flags))
+       else if (IS_SHA1_HMAC(flags) || IS_SHA256_HMAC(flags))
                cfg |= AUTH_MODE_HMAC << AUTH_MODE_SHIFT;
-       else if (IS_AES(flags) && IS_CCM(flags))
+       else if (IS_CCM(flags))
                cfg |= AUTH_MODE_CCM << AUTH_MODE_SHIFT;
-       else if (IS_AES(flags) && IS_CMAC(flags))
+       else if (IS_CMAC(flags))
                cfg |= AUTH_MODE_CMAC << AUTH_MODE_SHIFT;
 
        if (IS_SHA(flags) || IS_SHA_HMAC(flags))
        if (IS_CCM(flags))
                cfg |= QCE_MAX_NONCE_WORDS << AUTH_NONCE_NUM_WORDS_SHIFT;
 
-       if (IS_CBC(flags) || IS_CTR(flags) || IS_CCM(flags) ||
-           IS_CMAC(flags))
-               cfg |= BIT(AUTH_LAST_SHIFT) | BIT(AUTH_FIRST_SHIFT);
-
        return cfg;
 }
 
                qce_clear_array(qce, REG_AUTH_KEY0, 16);
                qce_clear_array(qce, REG_AUTH_BYTECNT0, 4);
 
-               auth_cfg = qce_auth_cfg(rctx->flags, rctx->authklen);
+               auth_cfg = qce_auth_cfg(rctx->flags, rctx->authklen, digestsize);
        }
 
        if (IS_SHA_HMAC(rctx->flags) || IS_CMAC(rctx->flags)) {
                qce_write_array(qce, REG_AUTH_BYTECNT0,
                                (u32 *)rctx->byte_count, 2);
 
-       auth_cfg = qce_auth_cfg(rctx->flags, 0);
+       auth_cfg = qce_auth_cfg(rctx->flags, 0, digestsize);
 
        if (rctx->last_blk)
                auth_cfg |= BIT(AUTH_LAST_SHIFT);