return ret;
        }
 
-       if (priv->version == EIP197B && ctx->base.ctxr_dma) {
+       if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr_dma) {
                for (i = 0; i < len / sizeof(u32); i++) {
                        if (ctx->key[i] != cpu_to_le32(aes.key_enc[i])) {
                                ctx->base.needs_inv = true;
                goto badkey;
 
        /* Encryption key */
-       if (priv->version == EIP197B && ctx->base.ctxr_dma &&
+       if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr_dma &&
            memcmp(ctx->key, keys.enckey, keys.enckeylen))
                ctx->base.needs_inv = true;
 
        crypto_aead_set_flags(ctfm, crypto_aead_get_flags(ctfm) &
                                    CRYPTO_TFM_RES_MASK);
 
-       if (priv->version == EIP197B && ctx->base.ctxr_dma &&
+       if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr_dma &&
            (memcmp(ctx->ipad, istate.state, ctx->state_sz) ||
             memcmp(ctx->opad, ostate.state, ctx->state_sz)))
                ctx->base.needs_inv = true;
        struct safexcel_crypto_priv *priv = ctx->priv;
        int ret;
 
-       BUG_ON(priv->version == EIP97IES && sreq->needs_inv);
+       BUG_ON(!(priv->flags & EIP197_TRC_CACHE) && sreq->needs_inv);
 
        if (sreq->needs_inv)
                ret = safexcel_cipher_send_inv(async, ring, request, commands,
        struct safexcel_crypto_priv *priv = ctx->priv;
        int ret;
 
-       BUG_ON(priv->version == EIP97IES && sreq->needs_inv);
+       BUG_ON(!(priv->flags & EIP197_TRC_CACHE) && sreq->needs_inv);
 
        if (sreq->needs_inv)
                ret = safexcel_cipher_send_inv(async, ring, request, commands,
        ctx->mode = mode;
 
        if (ctx->base.ctxr) {
-               if (priv->version == EIP197B && ctx->base.needs_inv) {
+               if (priv->flags & EIP197_TRC_CACHE && ctx->base.needs_inv) {
                        sreq->needs_inv = true;
                        ctx->base.needs_inv = false;
                }
        if (safexcel_cipher_cra_exit(tfm))
                return;
 
-       if (priv->version == EIP197B) {
+       if (priv->flags & EIP197_TRC_CACHE) {
                ret = safexcel_skcipher_exit_inv(tfm);
                if (ret)
                        dev_warn(priv->dev, "skcipher: invalidation error %d\n",
        if (safexcel_cipher_cra_exit(tfm))
                return;
 
-       if (priv->version == EIP197B) {
+       if (priv->flags & EIP197_TRC_CACHE) {
                ret = safexcel_aead_exit_inv(tfm);
                if (ret)
                        dev_warn(priv->dev, "aead: invalidation error %d\n",
 
        struct safexcel_ahash_req *req = ahash_request_ctx(areq);
        int err;
 
-       BUG_ON(priv->version == EIP97IES && req->needs_inv);
+       BUG_ON(!(priv->flags & EIP197_TRC_CACHE) && req->needs_inv);
 
        if (req->needs_inv) {
                req->needs_inv = false;
        req->needs_inv = false;
 
        if (ctx->base.ctxr) {
-               if (priv->version == EIP197B && !ctx->base.needs_inv &&
+               if (priv->flags & EIP197_TRC_CACHE && !ctx->base.needs_inv &&
                    (req->processed[0] || req->processed[1]) &&
                    req->digest == CONTEXT_CONTROL_DIGEST_PRECOMPUTED)
                        /* We're still setting needs_inv here, even though it is
        if (!ctx->base.ctxr)
                return;
 
-       if (priv->version == EIP197B) {
+       if (priv->flags & EIP197_TRC_CACHE) {
                ret = safexcel_ahash_exit_inv(tfm);
                if (ret)
                        dev_warn(priv->dev, "hash: invalidation error %d\n", ret);
        if (ret)
                return ret;
 
-       if (priv->version == EIP197B && ctx->base.ctxr) {
+       if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr) {
                for (i = 0; i < state_sz / sizeof(u32); i++) {
                        if (ctx->ipad[i] != le32_to_cpu(istate.state[i]) ||
                            ctx->opad[i] != le32_to_cpu(ostate.state[i])) {