unsigned int                    hot:1;
 
        /* Crypto-specific context */
-       unsigned int                    enc:1;
-       unsigned int                    ecb:1;
        struct crypto_ablkcipher        *fallback;
        unsigned int                    key_len;
        uint8_t                         key[AES_KEYSIZE_128];
 };
 
+struct dcp_aes_req_ctx {
+       unsigned int    enc:1;
+       unsigned int    ecb:1;
+};
+
 struct dcp_sha_req_ctx {
        unsigned int    init:1;
        unsigned int    fini:1;
 /*
  * Encryption (AES128)
  */
-static int mxs_dcp_run_aes(struct dcp_async_ctx *actx, int init)
+static int mxs_dcp_run_aes(struct dcp_async_ctx *actx,
+                          struct ablkcipher_request *req, int init)
 {
        struct dcp *sdcp = global_sdcp;
        struct dcp_dma_desc *desc = &sdcp->coh->desc[actx->chan];
+       struct dcp_aes_req_ctx *rctx = ablkcipher_request_ctx(req);
        int ret;
 
        dma_addr_t key_phys = dma_map_single(sdcp->dev, sdcp->coh->aes_key,
        /* Payload contains the key. */
        desc->control0 |= MXS_DCP_CONTROL0_PAYLOAD_KEY;
 
-       if (actx->enc)
+       if (rctx->enc)
                desc->control0 |= MXS_DCP_CONTROL0_CIPHER_ENCRYPT;
        if (init)
                desc->control0 |= MXS_DCP_CONTROL0_CIPHER_INIT;
 
        desc->control1 = MXS_DCP_CONTROL1_CIPHER_SELECT_AES128;
 
-       if (actx->ecb)
+       if (rctx->ecb)
                desc->control1 |= MXS_DCP_CONTROL1_CIPHER_MODE_ECB;
        else
                desc->control1 |= MXS_DCP_CONTROL1_CIPHER_MODE_CBC;
 
        struct ablkcipher_request *req = ablkcipher_request_cast(arq);
        struct dcp_async_ctx *actx = crypto_tfm_ctx(arq->tfm);
+       struct dcp_aes_req_ctx *rctx = ablkcipher_request_ctx(req);
 
        struct scatterlist *dst = req->dst;
        struct scatterlist *src = req->src;
        /* Copy the key from the temporary location. */
        memcpy(key, actx->key, actx->key_len);
 
-       if (!actx->ecb) {
+       if (!rctx->ecb) {
                /* Copy the CBC IV just past the key. */
                memcpy(key + AES_KEYSIZE_128, req->info, AES_KEYSIZE_128);
                /* CBC needs the INIT set. */
                         * submit the buffer.
                         */
                        if (actx->fill == out_off || sg_is_last(src)) {
-                               ret = mxs_dcp_run_aes(actx, init);
+                               ret = mxs_dcp_run_aes(actx, req, init);
                                if (ret)
                                        return ret;
                                init = 0;
        struct dcp *sdcp = global_sdcp;
        struct crypto_async_request *arq = &req->base;
        struct dcp_async_ctx *actx = crypto_tfm_ctx(arq->tfm);
+       struct dcp_aes_req_ctx *rctx = ablkcipher_request_ctx(req);
        int ret;
 
        if (unlikely(actx->key_len != AES_KEYSIZE_128))
                return mxs_dcp_block_fallback(req, enc);
 
-       actx->enc = enc;
-       actx->ecb = ecb;
+       rctx->enc = enc;
+       rctx->ecb = ecb;
        actx->chan = DCP_CHAN_CRYPTO;
 
        mutex_lock(&sdcp->mutex[actx->chan]);
                return PTR_ERR(blk);
 
        actx->fallback = blk;
-       tfm->crt_ablkcipher.reqsize = sizeof(struct dcp_async_ctx);
+       tfm->crt_ablkcipher.reqsize = sizeof(struct dcp_aes_req_ctx);
        return 0;
 }