diff options
Diffstat (limited to 'drivers/crypto/caam/sg_sw_sec4.h')
-rw-r--r-- | drivers/crypto/caam/sg_sw_sec4.h | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/drivers/crypto/caam/sg_sw_sec4.h b/drivers/crypto/caam/sg_sw_sec4.h index b12ff85f4241..ce28a563effc 100644 --- a/drivers/crypto/caam/sg_sw_sec4.h +++ b/drivers/crypto/caam/sg_sw_sec4.h | |||
@@ -116,57 +116,3 @@ static int dma_unmap_sg_chained(struct device *dev, struct scatterlist *sg, | |||
116 | } | 116 | } |
117 | return nents; | 117 | return nents; |
118 | } | 118 | } |
119 | |||
120 | /* Map SG page in kernel virtual address space and copy */ | ||
121 | static inline void sg_map_copy(u8 *dest, struct scatterlist *sg, | ||
122 | int len, int offset) | ||
123 | { | ||
124 | u8 *mapped_addr; | ||
125 | |||
126 | /* | ||
127 | * Page here can be user-space pinned using get_user_pages | ||
128 | * Same must be kmapped before use and kunmapped subsequently | ||
129 | */ | ||
130 | mapped_addr = kmap_atomic(sg_page(sg)); | ||
131 | memcpy(dest, mapped_addr + offset, len); | ||
132 | kunmap_atomic(mapped_addr); | ||
133 | } | ||
134 | |||
135 | /* Copy from len bytes of sg to dest, starting from beginning */ | ||
136 | static inline void sg_copy(u8 *dest, struct scatterlist *sg, unsigned int len) | ||
137 | { | ||
138 | struct scatterlist *current_sg = sg; | ||
139 | int cpy_index = 0, next_cpy_index = current_sg->length; | ||
140 | |||
141 | while (next_cpy_index < len) { | ||
142 | sg_map_copy(dest + cpy_index, current_sg, current_sg->length, | ||
143 | current_sg->offset); | ||
144 | current_sg = scatterwalk_sg_next(current_sg); | ||
145 | cpy_index = next_cpy_index; | ||
146 | next_cpy_index += current_sg->length; | ||
147 | } | ||
148 | if (cpy_index < len) | ||
149 | sg_map_copy(dest + cpy_index, current_sg, len-cpy_index, | ||
150 | current_sg->offset); | ||
151 | } | ||
152 | |||
153 | /* Copy sg data, from to_skip to end, to dest */ | ||
154 | static inline void sg_copy_part(u8 *dest, struct scatterlist *sg, | ||
155 | int to_skip, unsigned int end) | ||
156 | { | ||
157 | struct scatterlist *current_sg = sg; | ||
158 | int sg_index, cpy_index, offset; | ||
159 | |||
160 | sg_index = current_sg->length; | ||
161 | while (sg_index <= to_skip) { | ||
162 | current_sg = scatterwalk_sg_next(current_sg); | ||
163 | sg_index += current_sg->length; | ||
164 | } | ||
165 | cpy_index = sg_index - to_skip; | ||
166 | offset = current_sg->offset + current_sg->length - cpy_index; | ||
167 | sg_map_copy(dest, current_sg, cpy_index, offset); | ||
168 | if (end - sg_index) { | ||
169 | current_sg = scatterwalk_sg_next(current_sg); | ||
170 | sg_copy(dest + cpy_index, current_sg, end - sg_index); | ||
171 | } | ||
172 | } | ||