Lines Matching full:ss
3 * sun8i-ss-cipher.c - hardware cryptographic offloader for
20 #include "sun8i-ss.h"
55 /* SS need same numbers of SG (with same length) for source and destination */ in sun8i_ss_need_fallback()
99 struct sun8i_ss_dev *ss = op->ss; in sun8i_ss_cipher() local
113 dev_dbg(ss->dev, "%s %s %u %x IV(%p %u) key=%u\n", __func__, in sun8i_ss_cipher()
123 rctx->op_mode = ss->variant->op_mode[algt->ss_blockmode]; in sun8i_ss_cipher()
124 rctx->method = ss->variant->alg_cipher[algt->ss_algo_id]; in sun8i_ss_cipher()
127 rctx->p_key = dma_map_single(ss->dev, op->key, op->keylen, DMA_TO_DEVICE); in sun8i_ss_cipher()
128 if (dma_mapping_error(ss->dev, rctx->p_key)) { in sun8i_ss_cipher()
129 dev_err(ss->dev, "Cannot DMA MAP KEY\n"); in sun8i_ss_cipher()
153 rctx->p_iv = dma_map_single(ss->dev, rctx->biv, rctx->ivlen, in sun8i_ss_cipher()
155 if (dma_mapping_error(ss->dev, rctx->p_iv)) { in sun8i_ss_cipher()
156 dev_err(ss->dev, "Cannot DMA MAP IV\n"); in sun8i_ss_cipher()
162 nr_sgs = dma_map_sg(ss->dev, areq->src, sg_nents(areq->src), in sun8i_ss_cipher()
165 dev_err(ss->dev, "Invalid sg number %d\n", nr_sgs); in sun8i_ss_cipher()
171 nr_sgs = dma_map_sg(ss->dev, areq->src, sg_nents(areq->src), in sun8i_ss_cipher()
174 dev_err(ss->dev, "Invalid sg number %d\n", nr_sgs); in sun8i_ss_cipher()
178 nr_sgd = dma_map_sg(ss->dev, areq->dst, sg_nents(areq->dst), in sun8i_ss_cipher()
181 dev_err(ss->dev, "Invalid sg number %d\n", nr_sgd); in sun8i_ss_cipher()
196 dev_dbg(ss->dev, "%s total=%u SGS(%d %u off=%d) todo=%u\n", __func__, in sun8i_ss_cipher()
204 dev_err(ss->dev, "remaining len %d\n", len); in sun8i_ss_cipher()
218 dev_dbg(ss->dev, "%s total=%u SGD(%d %u off=%d) todo=%u\n", __func__, in sun8i_ss_cipher()
226 dev_err(ss->dev, "remaining len %d\n", len); in sun8i_ss_cipher()
231 err = sun8i_ss_run_task(ss, rctx, crypto_tfm_alg_name(areq->base.tfm)); in sun8i_ss_cipher()
235 dma_unmap_sg(ss->dev, areq->src, nr_sgs, DMA_BIDIRECTIONAL); in sun8i_ss_cipher()
237 dma_unmap_sg(ss->dev, areq->src, nr_sgs, DMA_TO_DEVICE); in sun8i_ss_cipher()
238 dma_unmap_sg(ss->dev, areq->dst, nr_sgd, DMA_FROM_DEVICE); in sun8i_ss_cipher()
243 dma_unmap_single(ss->dev, rctx->p_iv, rctx->ivlen, in sun8i_ss_cipher()
261 dma_unmap_single(ss->dev, rctx->p_key, op->keylen, DMA_TO_DEVICE); in sun8i_ss_cipher()
293 e = sun8i_ss_get_engine_number(op->ss); in sun8i_ss_skdecrypt()
294 engine = op->ss->flows[e].engine; in sun8i_ss_skdecrypt()
314 e = sun8i_ss_get_engine_number(op->ss); in sun8i_ss_skencrypt()
315 engine = op->ss->flows[e].engine; in sun8i_ss_skencrypt()
333 op->ss = algt->ss; in sun8i_ss_cipher_init()
337 dev_err(op->ss->dev, "ERROR: Cannot allocate fallback for %s %ld\n", in sun8i_ss_cipher_init()
346 dev_info(op->ss->dev, "Fallback for %s is %s\n", in sun8i_ss_cipher_init()
354 err = pm_runtime_get_sync(op->ss->dev); in sun8i_ss_cipher_init()
356 dev_err(op->ss->dev, "pm error %d\n", err); in sun8i_ss_cipher_init()
372 pm_runtime_put_sync(op->ss->dev); in sun8i_ss_cipher_exit()
379 struct sun8i_ss_dev *ss = op->ss; in sun8i_ss_aes_setkey() local
389 dev_dbg(ss->dev, "ERROR: Invalid keylen %u\n", keylen); in sun8i_ss_aes_setkey()
408 struct sun8i_ss_dev *ss = op->ss; in sun8i_ss_des3_setkey() local
411 dev_dbg(ss->dev, "Invalid keylen %u\n", keylen); in sun8i_ss_des3_setkey()