Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[platform/kernel/linux-rpi.git] / drivers / crypto / marvell / cesa / cesa.h
index fa56b45..c1007f2 100644 (file)
@@ -428,6 +428,7 @@ struct mv_cesa_dev {
  * @id:                        engine id
  * @regs:              engine registers
  * @sram:              SRAM memory region
+ * @sram_pool:         SRAM memory region from pool
  * @sram_dma:          DMA address of the SRAM memory region
  * @lock:              engine lock
  * @req:               current crypto request
@@ -448,7 +449,10 @@ struct mv_cesa_dev {
 struct mv_cesa_engine {
        int id;
        void __iomem *regs;
-       void __iomem *sram;
+       union {
+               void __iomem *sram;
+               void *sram_pool;
+       };
        dma_addr_t sram_dma;
        spinlock_t lock;
        struct crypto_async_request *req;
@@ -867,6 +871,31 @@ int mv_cesa_dma_add_op_transfers(struct mv_cesa_tdma_chain *chain,
                                 struct mv_cesa_sg_dma_iter *sgiter,
                                 gfp_t gfp_flags);
 
+size_t mv_cesa_sg_copy(struct mv_cesa_engine *engine,
+                      struct scatterlist *sgl, unsigned int nents,
+                      unsigned int sram_off, size_t buflen, off_t skip,
+                      bool to_sram);
+
+static inline size_t mv_cesa_sg_copy_to_sram(struct mv_cesa_engine *engine,
+                                            struct scatterlist *sgl,
+                                            unsigned int nents,
+                                            unsigned int sram_off,
+                                            size_t buflen, off_t skip)
+{
+       return mv_cesa_sg_copy(engine, sgl, nents, sram_off, buflen, skip,
+                              true);
+}
+
+static inline size_t mv_cesa_sg_copy_from_sram(struct mv_cesa_engine *engine,
+                                              struct scatterlist *sgl,
+                                              unsigned int nents,
+                                              unsigned int sram_off,
+                                              size_t buflen, off_t skip)
+{
+       return mv_cesa_sg_copy(engine, sgl, nents, sram_off, buflen, skip,
+                              false);
+}
+
 /* Algorithm definitions */
 
 extern struct ahash_alg mv_md5_alg;