treewide: remove redundant IS_ERR() before error code check
[linux/fpc-iii.git] / drivers / crypto / cavium / cpt / request_manager.h
blob3514b082eca7df7d1d94a815880ebdf785e968b6
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3 * Copyright (C) 2016 Cavium, Inc.
4 */
6 #ifndef __REQUEST_MANAGER_H
7 #define __REQUEST_MANAGER_H
9 #include "cpt_common.h"
11 #define TIME_IN_RESET_COUNT 5
12 #define COMPLETION_CODE_SIZE 8
13 #define COMPLETION_CODE_INIT 0
14 #define PENDING_THOLD 100
15 #define MAX_SG_IN_CNT 12
16 #define MAX_SG_OUT_CNT 13
17 #define SG_LIST_HDR_SIZE 8
18 #define MAX_BUF_CNT 16
20 union ctrl_info {
21 u32 flags;
22 struct {
23 #if defined(__BIG_ENDIAN_BITFIELD)
24 u32 reserved0:26;
25 u32 grp:3; /* Group bits */
26 u32 dma_mode:2; /* DMA mode */
27 u32 se_req:1;/* To SE core */
28 #else
29 u32 se_req:1; /* To SE core */
30 u32 dma_mode:2; /* DMA mode */
31 u32 grp:3; /* Group bits */
32 u32 reserved0:26;
33 #endif
34 } s;
37 union opcode_info {
38 u16 flags;
39 struct {
40 u8 major;
41 u8 minor;
42 } s;
45 struct cptvf_request {
46 union opcode_info opcode;
47 u16 param1;
48 u16 param2;
49 u16 dlen;
52 struct buf_ptr {
53 u8 *vptr;
54 dma_addr_t dma_addr;
55 u16 size;
58 struct cpt_request_info {
59 u8 incnt; /* Number of input buffers */
60 u8 outcnt; /* Number of output buffers */
61 u16 rlen; /* Output length */
62 union ctrl_info ctrl; /* User control information */
63 struct cptvf_request req; /* Request Information (Core specific) */
65 struct buf_ptr in[MAX_BUF_CNT];
66 struct buf_ptr out[MAX_BUF_CNT];
68 void (*callback)(int, void *); /* Kernel ASYNC request callabck */
69 void *callback_arg; /* Kernel ASYNC request callabck arg */
72 struct sglist_component {
73 union {
74 u64 len;
75 struct {
76 u16 len0;
77 u16 len1;
78 u16 len2;
79 u16 len3;
80 } s;
81 } u;
82 u64 ptr0;
83 u64 ptr1;
84 u64 ptr2;
85 u64 ptr3;
88 struct cpt_info_buffer {
89 struct cpt_vf *cptvf;
90 unsigned long time_in;
91 u8 extra_time;
93 struct cpt_request_info *req;
94 dma_addr_t dptr_baddr;
95 u32 dlen;
96 dma_addr_t rptr_baddr;
97 dma_addr_t comp_baddr;
98 u8 *in_buffer;
99 u8 *out_buffer;
100 u8 *gather_components;
101 u8 *scatter_components;
103 struct pending_entry *pentry;
104 volatile u64 *completion_addr;
105 volatile u64 *alternate_caddr;
109 * CPT_INST_S software command definitions
110 * Words EI (0-3)
112 union vq_cmd_word0 {
113 u64 u64;
114 struct {
115 u16 opcode;
116 u16 param1;
117 u16 param2;
118 u16 dlen;
119 } s;
122 union vq_cmd_word3 {
123 u64 u64;
124 struct {
125 #if defined(__BIG_ENDIAN_BITFIELD)
126 u64 grp:3;
127 u64 cptr:61;
128 #else
129 u64 cptr:61;
130 u64 grp:3;
131 #endif
132 } s;
135 struct cpt_vq_command {
136 union vq_cmd_word0 cmd;
137 u64 dptr;
138 u64 rptr;
139 union vq_cmd_word3 cptr;
142 void vq_post_process(struct cpt_vf *cptvf, u32 qno);
143 int process_request(struct cpt_vf *cptvf, struct cpt_request_info *req);
144 #endif /* __REQUEST_MANAGER_H */