aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/804-crypto-0027-crypto-caam-add-support-for-MOVEB-command.patch
blob: 551be94f3ff688ba4372b451f781cee753321e69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
From fafd87f0b6bc388b811e342ff83c88212041b119 Mon Sep 17 00:00:00 2001
From: Radu Alexe <radu.alexe@nxp.com>
Date: Tue, 6 Jun 2017 12:23:56 +0300
Subject: [PATCH] crypto: caam - add support for MOVEB command

CHAs of SEC work natively in BE mode. When moving
data to the alignment blocks, swapping is needed
for LE platforms. This is done by means of the MOVEB
command. This patch adds support
to DCL for this command.

Signed-off-by: Alex Porosanu <alexandru.porosanu@freescale.com>
Signed-off-by: Radu Alexe <radu.alexe@nxp.com>
---
 drivers/crypto/caam/desc.h        | 1 +
 drivers/crypto/caam/desc_constr.h | 1 +
 2 files changed, 2 insertions(+)

--- a/drivers/crypto/caam/desc.h
+++ b/drivers/crypto/caam/desc.h
@@ -43,6 +43,7 @@
 #define CMD_SEQ_LOAD		(0x03 << CMD_SHIFT)
 #define CMD_FIFO_LOAD		(0x04 << CMD_SHIFT)
 #define CMD_SEQ_FIFO_LOAD	(0x05 << CMD_SHIFT)
+#define CMD_MOVEB		(0x07 << CMD_SHIFT)
 #define CMD_STORE		(0x0a << CMD_SHIFT)
 #define CMD_SEQ_STORE		(0x0b << CMD_SHIFT)
 #define CMD_FIFO_STORE		(0x0c << CMD_SHIFT)
--- a/drivers/crypto/caam/desc_constr.h
+++ b/drivers/crypto/caam/desc_constr.h
@@ -240,6 +240,7 @@ static inline u32 *append_##cmd(u32 * co
 APPEND_CMD_RET(jump, JUMP)
 APPEND_CMD_RET(move, MOVE)
 APPEND_CMD_RET(move_len, MOVE_LEN)
+APPEND_CMD_RET(moveb, MOVEB)
 
 static inline void set_jump_tgt_here(u32 * const desc, u32 *jump_cmd)
 {
mm_mini { struct xencomm_desc _desc; uint64_t address[XENCOMM_MINI_ADDRS]; }; /* Must be called before any hypercall. */ extern void xencomm_init (void); /* To avoid additionnal virt to phys conversion, an opaque structure is presented. */ struct xencomm_handle; extern int xencomm_create(void *buffer, unsigned long bytes, struct xencomm_handle **desc, gfp_t type); extern void xencomm_free(struct xencomm_handle *desc); extern int xencomm_create_mini(struct xencomm_mini *area, int *nbr_area, void *buffer, unsigned long bytes, struct xencomm_handle **ret); /* Translate virtual address to physical address. */ extern unsigned long xencomm_vaddr_to_paddr(unsigned long vaddr); /* Inline version. To be used only on linear space (kernel space). */ static inline struct xencomm_handle * xencomm_create_inline(void *buffer) { unsigned long paddr; paddr = xencomm_vaddr_to_paddr((unsigned long)buffer); return (struct xencomm_handle *)(paddr | XENCOMM_INLINE_FLAG); } #define xen_guest_handle(hnd) ((hnd).p) #endif /* _LINUX_XENCOMM_H_ */