Creats common Kconfig and Makefile for Marvell crypto drivers.
Signed-off-by: SrujanaChalla <schalla@marvell.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
 
          It is available with IBM z13 or later.
 
-config CRYPTO_DEV_MARVELL_CESA
-       tristate "Marvell's Cryptographic Engine driver"
-       depends on PLAT_ORION || ARCH_MVEBU
-       select CRYPTO_LIB_AES
-       select CRYPTO_LIB_DES
-       select CRYPTO_SKCIPHER
-       select CRYPTO_HASH
-       select SRAM
-       help
-         This driver allows you to utilize the Cryptographic Engines and
-         Security Accelerator (CESA) which can be found on MVEBU and ORION
-         platforms.
-         This driver supports CPU offload through DMA transfers.
-
 config CRYPTO_DEV_NIAGARA2
        tristate "Niagara2 Stream Processing Unit driver"
        select CRYPTO_LIB_DES
 source "drivers/crypto/qat/Kconfig"
 source "drivers/crypto/cavium/cpt/Kconfig"
 source "drivers/crypto/cavium/nitrox/Kconfig"
+source "drivers/crypto/marvell/Kconfig"
 
 config CRYPTO_DEV_CAVIUM_ZIP
        tristate "Cavium ZIP driver"
 
 obj-$(CONFIG_CRYPTO_DEV_HIFN_795X) += hifn_795x.o
 obj-$(CONFIG_CRYPTO_DEV_IMGTEC_HASH) += img-hash.o
 obj-$(CONFIG_CRYPTO_DEV_IXP4XX) += ixp4xx_crypto.o
-obj-$(CONFIG_CRYPTO_DEV_MARVELL_CESA) += marvell/
+obj-$(CONFIG_CRYPTO_DEV_MARVELL) += marvell/
 obj-$(CONFIG_CRYPTO_DEV_MEDIATEK) += mediatek/
 obj-$(CONFIG_CRYPTO_DEV_MXS_DCP) += mxs-dcp.o
 obj-$(CONFIG_CRYPTO_DEV_NIAGARA2) += n2_crypto.o
 
--- /dev/null
+#
+# Marvell crypto drivers configuration
+#
+
+config CRYPTO_DEV_MARVELL
+       tristate
+
+config CRYPTO_DEV_MARVELL_CESA
+       tristate "Marvell's Cryptographic Engine driver"
+       depends on PLAT_ORION || ARCH_MVEBU
+       select CRYPTO_LIB_AES
+       select CRYPTO_LIB_DES
+       select CRYPTO_SKCIPHER
+       select CRYPTO_HASH
+       select SRAM
+       select CRYPTO_DEV_MARVELL
+       help
+         This driver allows you to utilize the Cryptographic Engines and
+         Security Accelerator (CESA) which can be found on MVEBU and ORION
+         platforms.
+         This driver supports CPU offload through DMA transfers.
 
-# SPDX-License-Identifier: GPL-2.0-only
-obj-$(CONFIG_CRYPTO_DEV_MARVELL_CESA) += marvell-cesa.o
-marvell-cesa-objs := cesa.o cipher.o hash.o tdma.o
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_CRYPTO_DEV_MARVELL_CESA) += cesa/
 
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+obj-$(CONFIG_CRYPTO_DEV_MARVELL_CESA) += marvell-cesa.o
+marvell-cesa-objs := cesa.o cipher.o hash.o tdma.o
 
  * @queue:             fifo of the pending crypto requests
  * @load:              engine load counter, useful for load balancing
  * @chain:             list of the current tdma descriptors being processed
- *                     by this engine.
+ *                     by this engine.
  * @complete_queue:    fifo of the processed requests by the engine
  *
  * Structure storing CESA engine information.
  * @step:      launch the crypto operation on the next chunk
  * @cleanup:   cleanup the crypto request (release associated data)
  * @complete:  complete the request, i.e copy result or context from sram when
- *             needed.
+ *             needed.
  */
 struct mv_cesa_req_ops {
        int (*process)(struct crypto_async_request *req, u32 status);
        for (i = 0; i < cesa_dev->caps->nengines; i++) {
                struct mv_cesa_engine *engine = cesa_dev->engines + i;
                u32 load = atomic_read(&engine->load);
+
                if (load < min_load) {
                        min_load = load;
                        selected = engine;
 
 
        mv_cesa_set_int_mask(engine, CESA_SA_INT_ACCEL0_DONE);
        writel_relaxed(CESA_SA_CFG_PARA_DIS, engine->regs + CESA_SA_CFG);
-       BUG_ON(readl(engine->regs + CESA_SA_CMD) &
-              CESA_SA_CMD_EN_CESA_SA_ACCL0);
+       WARN_ON(readl(engine->regs + CESA_SA_CMD) &
+               CESA_SA_CMD_EN_CESA_SA_ACCL0);
        writel(CESA_SA_CMD_EN_CESA_SA_ACCL0, engine->regs + CESA_SA_CMD);
 }
 
 {
        struct skcipher_request *skreq = skcipher_request_cast(req);
        struct mv_cesa_skcipher_req *creq = skcipher_request_ctx(skreq);
+
        creq->base.engine = engine;
 
        if (mv_cesa_req_get_type(&creq->base) == CESA_DMA_REQ)
        do {
                struct mv_cesa_op_ctx *op;
 
-               op = mv_cesa_dma_add_op(&basereq->chain, op_templ, skip_ctx, flags);
+               op = mv_cesa_dma_add_op(&basereq->chain, op_templ, skip_ctx,
+                                       flags);
                if (IS_ERR(op)) {
                        ret = PTR_ERR(op);
                        goto err_free_tdma;
        } while (mv_cesa_skcipher_req_iter_next_op(&iter));
 
        /* Add output data for IV */
-       ret = mv_cesa_dma_add_result_op(&basereq->chain, CESA_SA_CFG_SRAM_OFFSET,
-                                   CESA_SA_DATA_SRAM_OFFSET,
-                                   CESA_TDMA_SRC_IN_SRAM, flags);
+       ret = mv_cesa_dma_add_result_op(&basereq->chain,
+                                       CESA_SA_CFG_SRAM_OFFSET,
+                                       CESA_SA_DATA_SRAM_OFFSET,
+                                       CESA_TDMA_SRC_IN_SRAM, flags);
 
        if (ret)
                goto err_free_tdma;
 
 
        if (creq->algo_le) {
                __le64 bits = cpu_to_le64(creq->len << 3);
+
                memcpy(buf + padlen, &bits, sizeof(bits));
        } else {
                __be64 bits = cpu_to_be64(creq->len << 3);
+
                memcpy(buf + padlen, &bits, sizeof(bits));
        }
 
        if (!sreq->offset) {
                digsize = crypto_ahash_digestsize(crypto_ahash_reqtfm(req));
                for (i = 0; i < digsize / 4; i++)
-                       writel_relaxed(creq->state[i], engine->regs + CESA_IVDIG(i));
+                       writel_relaxed(creq->state[i],
+                                      engine->regs + CESA_IVDIG(i));
        }
 
        if (creq->cache_ptr)
 
        mv_cesa_set_int_mask(engine, CESA_SA_INT_ACCEL0_DONE);
        writel_relaxed(CESA_SA_CFG_PARA_DIS, engine->regs + CESA_SA_CFG);
-       BUG_ON(readl(engine->regs + CESA_SA_CMD) &
-              CESA_SA_CMD_EN_CESA_SA_ACCL0);
+       WARN_ON(readl(engine->regs + CESA_SA_CMD) &
+               CESA_SA_CMD_EN_CESA_SA_ACCL0);
        writel(CESA_SA_CMD_EN_CESA_SA_ACCL0, engine->regs + CESA_SA_CMD);
 }
 
        digsize = crypto_ahash_digestsize(crypto_ahash_reqtfm(ahashreq));
 
        if (mv_cesa_req_get_type(&creq->base) == CESA_DMA_REQ &&
-           (creq->base.chain.last->flags & CESA_TDMA_TYPE_MSK) == CESA_TDMA_RESULT) {
+           (creq->base.chain.last->flags & CESA_TDMA_TYPE_MSK) ==
+            CESA_TDMA_RESULT) {
                __le32 *data = NULL;
 
                /*
-                * Result is already in the correct endianess when the SA is
+                * Result is already in the correct endianness when the SA is
                 * used
                 */
                data = creq->base.chain.last->op->ctx.hash.hash;
                                                       CESA_IVDIG(i));
                if (creq->last_req) {
                        /*
-                       * Hardware's MD5 digest is in little endian format, but
-                       * SHA in big endian format
-                       */
+                        * Hardware's MD5 digest is in little endian format, but
+                        * SHA in big endian format
+                        */
                        if (creq->algo_le) {
                                __le32 *result = (void *)ahashreq->result;
 
        struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
        bool cached = false;
 
-       if (creq->cache_ptr + req->nbytes < CESA_MAX_HASH_BLOCK_SIZE && !creq->last_req) {
+       if (creq->cache_ptr + req->nbytes < CESA_MAX_HASH_BLOCK_SIZE &&
+           !creq->last_req) {
                cached = true;
 
                if (!req->nbytes)
                        if (!mv_cesa_ahash_req_iter_next_op(&iter))
                                break;
 
-                       op = mv_cesa_dma_add_frag(&basereq->chain, &creq->op_tmpl,
+                       op = mv_cesa_dma_add_frag(&basereq->chain,
+                                                 &creq->op_tmpl,
                                                  frag_len, flags);
                        if (IS_ERR(op)) {
                                ret = PTR_ERR(op);
                        .cra_ctxsize = sizeof(struct mv_cesa_hash_ctx),
                        .cra_init = mv_cesa_ahash_cra_init,
                        .cra_module = THIS_MODULE,
-                }
+               }
        }
 };
 
                        .cra_ctxsize = sizeof(struct mv_cesa_hash_ctx),
                        .cra_init = mv_cesa_ahash_cra_init,
                        .cra_module = THIS_MODULE,
-                }
+               }
        }
 };
 
                        .cra_ctxsize = sizeof(struct mv_cesa_hash_ctx),
                        .cra_init = mv_cesa_ahash_cra_init,
                        .cra_module = THIS_MODULE,
-                }
+               }
        }
 };
 
                        .cra_ctxsize = sizeof(struct mv_cesa_hmac_ctx),
                        .cra_init = mv_cesa_ahmac_cra_init,
                        .cra_module = THIS_MODULE,
-                }
+               }
        }
 };
 
                        .cra_ctxsize = sizeof(struct mv_cesa_hmac_ctx),
                        .cra_init = mv_cesa_ahmac_cra_init,
                        .cra_module = THIS_MODULE,
-                }
+               }
        }
 };
 
                        .cra_ctxsize = sizeof(struct mv_cesa_hmac_ctx),
                        .cra_init = mv_cesa_ahmac_cra_init,
                        .cra_module = THIS_MODULE,
-                }
+               }
        }
 };
 
                       engine->regs + CESA_SA_CFG);
        writel_relaxed(dreq->chain.first->cur_dma,
                       engine->regs + CESA_TDMA_NEXT_ADDR);
-       BUG_ON(readl(engine->regs + CESA_SA_CMD) &
-              CESA_SA_CMD_EN_CESA_SA_ACCL0);
+       WARN_ON(readl(engine->regs + CESA_SA_CMD) &
+               CESA_SA_CMD_EN_CESA_SA_ACCL0);
        writel(CESA_SA_CMD_EN_CESA_SA_ACCL0, engine->regs + CESA_SA_CMD);
 }
 
                        break;
        }
 
-       /* Save the last request in error to engine->req, so that the core
-        * knows which request was fautly */
+       /*
+        * Save the last request in error to engine->req, so that the core
+        * knows which request was fautly
+        */
        if (res) {
                spin_lock_bh(&engine->lock);
                engine->req = req;