cryp              106 drivers/crypto/mediatek/mtk-aes.c 	struct mtk_cryp *cryp;
cryp              154 drivers/crypto/mediatek/mtk-aes.c static inline u32 mtk_aes_read(struct mtk_cryp *cryp, u32 offset)
cryp              156 drivers/crypto/mediatek/mtk-aes.c 	return readl_relaxed(cryp->base + offset);
cryp              159 drivers/crypto/mediatek/mtk-aes.c static inline void mtk_aes_write(struct mtk_cryp *cryp,
cryp              162 drivers/crypto/mediatek/mtk-aes.c 	writel_relaxed(value, cryp->base + offset);
cryp              167 drivers/crypto/mediatek/mtk-aes.c 	struct mtk_cryp *cryp = NULL;
cryp              171 drivers/crypto/mediatek/mtk-aes.c 	if (!ctx->cryp) {
cryp              173 drivers/crypto/mediatek/mtk-aes.c 			cryp = tmp;
cryp              176 drivers/crypto/mediatek/mtk-aes.c 		ctx->cryp = cryp;
cryp              178 drivers/crypto/mediatek/mtk-aes.c 		cryp = ctx->cryp;
cryp              182 drivers/crypto/mediatek/mtk-aes.c 	return cryp;
cryp              262 drivers/crypto/mediatek/mtk-aes.c static inline int mtk_aes_complete(struct mtk_cryp *cryp,
cryp              277 drivers/crypto/mediatek/mtk-aes.c static int mtk_aes_xmit(struct mtk_cryp *cryp, struct mtk_aes_rec *aes)
cryp              279 drivers/crypto/mediatek/mtk-aes.c 	struct mtk_ring *ring = cryp->ring[aes->id];
cryp              333 drivers/crypto/mediatek/mtk-aes.c 	mtk_aes_write(cryp, RDR_PREP_COUNT(aes->id), MTK_DESC_CNT(dlen));
cryp              334 drivers/crypto/mediatek/mtk-aes.c 	mtk_aes_write(cryp, CDR_PREP_COUNT(aes->id), MTK_DESC_CNT(slen));
cryp              339 drivers/crypto/mediatek/mtk-aes.c static void mtk_aes_unmap(struct mtk_cryp *cryp, struct mtk_aes_rec *aes)
cryp              343 drivers/crypto/mediatek/mtk-aes.c 	dma_unmap_single(cryp->dev, ctx->ct_dma, sizeof(ctx->info),
cryp              347 drivers/crypto/mediatek/mtk-aes.c 		dma_unmap_sg(cryp->dev, aes->src.sg, aes->src.nents,
cryp              353 drivers/crypto/mediatek/mtk-aes.c 		dma_unmap_sg(cryp->dev, aes->dst.sg, aes->dst.nents,
cryp              359 drivers/crypto/mediatek/mtk-aes.c 		dma_unmap_sg(cryp->dev, aes->src.sg, aes->src.nents,
cryp              371 drivers/crypto/mediatek/mtk-aes.c static int mtk_aes_map(struct mtk_cryp *cryp, struct mtk_aes_rec *aes)
cryp              376 drivers/crypto/mediatek/mtk-aes.c 	ctx->ct_dma = dma_map_single(cryp->dev, info, sizeof(*info),
cryp              378 drivers/crypto/mediatek/mtk-aes.c 	if (unlikely(dma_mapping_error(cryp->dev, ctx->ct_dma)))
cryp              384 drivers/crypto/mediatek/mtk-aes.c 		aes->src.sg_len = dma_map_sg(cryp->dev, aes->src.sg,
cryp              391 drivers/crypto/mediatek/mtk-aes.c 		aes->src.sg_len = dma_map_sg(cryp->dev, aes->src.sg,
cryp              396 drivers/crypto/mediatek/mtk-aes.c 		aes->dst.sg_len = dma_map_sg(cryp->dev, aes->dst.sg,
cryp              399 drivers/crypto/mediatek/mtk-aes.c 			dma_unmap_sg(cryp->dev, aes->src.sg, aes->src.nents,
cryp              405 drivers/crypto/mediatek/mtk-aes.c 	return mtk_aes_xmit(cryp, aes);
cryp              408 drivers/crypto/mediatek/mtk-aes.c 	dma_unmap_single(cryp->dev, ctx->ct_dma, sizeof(*info), DMA_TO_DEVICE);
cryp              410 drivers/crypto/mediatek/mtk-aes.c 	return mtk_aes_complete(cryp, aes, -EINVAL);
cryp              414 drivers/crypto/mediatek/mtk-aes.c static void mtk_aes_info_init(struct mtk_cryp *cryp, struct mtk_aes_rec *aes,
cryp              463 drivers/crypto/mediatek/mtk-aes.c static int mtk_aes_dma(struct mtk_cryp *cryp, struct mtk_aes_rec *aes,
cryp              485 drivers/crypto/mediatek/mtk-aes.c 			return mtk_aes_complete(cryp, aes, -ENOMEM);
cryp              504 drivers/crypto/mediatek/mtk-aes.c 	mtk_aes_info_init(cryp, aes, len + padlen);
cryp              506 drivers/crypto/mediatek/mtk-aes.c 	return mtk_aes_map(cryp, aes);
cryp              509 drivers/crypto/mediatek/mtk-aes.c static int mtk_aes_handle_queue(struct mtk_cryp *cryp, u8 id,
cryp              512 drivers/crypto/mediatek/mtk-aes.c 	struct mtk_aes_rec *aes = cryp->aes[id];
cryp              544 drivers/crypto/mediatek/mtk-aes.c 	return ctx->start(cryp, aes);
cryp              547 drivers/crypto/mediatek/mtk-aes.c static int mtk_aes_transfer_complete(struct mtk_cryp *cryp,
cryp              550 drivers/crypto/mediatek/mtk-aes.c 	return mtk_aes_complete(cryp, aes, 0);
cryp              553 drivers/crypto/mediatek/mtk-aes.c static int mtk_aes_start(struct mtk_cryp *cryp, struct mtk_aes_rec *aes)
cryp              561 drivers/crypto/mediatek/mtk-aes.c 	return mtk_aes_dma(cryp, aes, req->src, req->dst, req->nbytes);
cryp              570 drivers/crypto/mediatek/mtk-aes.c static int mtk_aes_ctr_transfer(struct mtk_cryp *cryp, struct mtk_aes_rec *aes)
cryp              583 drivers/crypto/mediatek/mtk-aes.c 		return mtk_aes_transfer_complete(cryp, aes);
cryp              617 drivers/crypto/mediatek/mtk-aes.c 	return mtk_aes_dma(cryp, aes, src, dst, datalen);
cryp              620 drivers/crypto/mediatek/mtk-aes.c static int mtk_aes_ctr_start(struct mtk_cryp *cryp, struct mtk_aes_rec *aes)
cryp              633 drivers/crypto/mediatek/mtk-aes.c 	return mtk_aes_ctr_transfer(cryp, aes);
cryp              669 drivers/crypto/mediatek/mtk-aes.c 	struct mtk_cryp *cryp;
cryp              671 drivers/crypto/mediatek/mtk-aes.c 	cryp = mtk_aes_find_dev(ctx);
cryp              672 drivers/crypto/mediatek/mtk-aes.c 	if (!cryp)
cryp              678 drivers/crypto/mediatek/mtk-aes.c 	return mtk_aes_handle_queue(cryp, !(mode & AES_FLAGS_ENCRYPT),
cryp              867 drivers/crypto/mediatek/mtk-aes.c static int mtk_aes_gcm_tag_verify(struct mtk_cryp *cryp,
cryp              870 drivers/crypto/mediatek/mtk-aes.c 	u32 status = cryp->ring[aes->id]->res_prev->ct;
cryp              872 drivers/crypto/mediatek/mtk-aes.c 	return mtk_aes_complete(cryp, aes, (status & AES_AUTH_TAG_ERR) ?
cryp              877 drivers/crypto/mediatek/mtk-aes.c static void mtk_aes_gcm_info_init(struct mtk_cryp *cryp,
cryp              915 drivers/crypto/mediatek/mtk-aes.c static int mtk_aes_gcm_dma(struct mtk_cryp *cryp, struct mtk_aes_rec *aes,
cryp              933 drivers/crypto/mediatek/mtk-aes.c 			return mtk_aes_complete(cryp, aes, -ENOMEM);
cryp              952 drivers/crypto/mediatek/mtk-aes.c 	mtk_aes_gcm_info_init(cryp, aes, len);
cryp              954 drivers/crypto/mediatek/mtk-aes.c 	return mtk_aes_map(cryp, aes);
cryp              958 drivers/crypto/mediatek/mtk-aes.c static int mtk_aes_gcm_start(struct mtk_cryp *cryp, struct mtk_aes_rec *aes)
cryp              980 drivers/crypto/mediatek/mtk-aes.c 	return mtk_aes_gcm_dma(cryp, aes, req->src, req->dst, len);
cryp              988 drivers/crypto/mediatek/mtk-aes.c 	struct mtk_cryp *cryp;
cryp              991 drivers/crypto/mediatek/mtk-aes.c 	cryp = mtk_aes_find_dev(ctx);
cryp              992 drivers/crypto/mediatek/mtk-aes.c 	if (!cryp)
cryp             1004 drivers/crypto/mediatek/mtk-aes.c 	return mtk_aes_handle_queue(cryp, enc, &req->base);
cryp             1163 drivers/crypto/mediatek/mtk-aes.c 	mtk_aes_handle_queue(aes->cryp, aes->id, NULL);
cryp             1169 drivers/crypto/mediatek/mtk-aes.c 	struct mtk_cryp *cryp = aes->cryp;
cryp             1171 drivers/crypto/mediatek/mtk-aes.c 	mtk_aes_unmap(cryp, aes);
cryp             1172 drivers/crypto/mediatek/mtk-aes.c 	aes->resume(cryp, aes);
cryp             1178 drivers/crypto/mediatek/mtk-aes.c 	struct mtk_cryp *cryp = aes->cryp;
cryp             1179 drivers/crypto/mediatek/mtk-aes.c 	u32 val = mtk_aes_read(cryp, RDR_STAT(aes->id));
cryp             1181 drivers/crypto/mediatek/mtk-aes.c 	mtk_aes_write(cryp, RDR_STAT(aes->id), val);
cryp             1184 drivers/crypto/mediatek/mtk-aes.c 		mtk_aes_write(cryp, RDR_PROC_COUNT(aes->id), MTK_CNT_RST);
cryp             1185 drivers/crypto/mediatek/mtk-aes.c 		mtk_aes_write(cryp, RDR_THRESH(aes->id),
cryp             1190 drivers/crypto/mediatek/mtk-aes.c 		dev_warn(cryp->dev, "AES interrupt when no active requests.\n");
cryp             1201 drivers/crypto/mediatek/mtk-aes.c static int mtk_aes_record_init(struct mtk_cryp *cryp)
cryp             1203 drivers/crypto/mediatek/mtk-aes.c 	struct mtk_aes_rec **aes = cryp->aes;
cryp             1216 drivers/crypto/mediatek/mtk-aes.c 		aes[i]->cryp = cryp;
cryp             1242 drivers/crypto/mediatek/mtk-aes.c static void mtk_aes_record_free(struct mtk_cryp *cryp)
cryp             1247 drivers/crypto/mediatek/mtk-aes.c 		tasklet_kill(&cryp->aes[i]->done_task);
cryp             1248 drivers/crypto/mediatek/mtk-aes.c 		tasklet_kill(&cryp->aes[i]->queue_task);
cryp             1250 drivers/crypto/mediatek/mtk-aes.c 		free_page((unsigned long)cryp->aes[i]->buf);
cryp             1251 drivers/crypto/mediatek/mtk-aes.c 		kfree(cryp->aes[i]);
cryp             1288 drivers/crypto/mediatek/mtk-aes.c int mtk_cipher_alg_register(struct mtk_cryp *cryp)
cryp             1292 drivers/crypto/mediatek/mtk-aes.c 	INIT_LIST_HEAD(&cryp->aes_list);
cryp             1295 drivers/crypto/mediatek/mtk-aes.c 	ret = mtk_aes_record_init(cryp);
cryp             1299 drivers/crypto/mediatek/mtk-aes.c 	ret = devm_request_irq(cryp->dev, cryp->irq[MTK_RING0], mtk_aes_irq,
cryp             1300 drivers/crypto/mediatek/mtk-aes.c 			       0, "mtk-aes", cryp->aes[0]);
cryp             1302 drivers/crypto/mediatek/mtk-aes.c 		dev_err(cryp->dev, "unable to request AES irq.\n");
cryp             1306 drivers/crypto/mediatek/mtk-aes.c 	ret = devm_request_irq(cryp->dev, cryp->irq[MTK_RING1], mtk_aes_irq,
cryp             1307 drivers/crypto/mediatek/mtk-aes.c 			       0, "mtk-aes", cryp->aes[1]);
cryp             1309 drivers/crypto/mediatek/mtk-aes.c 		dev_err(cryp->dev, "unable to request AES irq.\n");
cryp             1314 drivers/crypto/mediatek/mtk-aes.c 	mtk_aes_write(cryp, AIC_ENABLE_SET(MTK_RING0), MTK_IRQ_RDR0);
cryp             1315 drivers/crypto/mediatek/mtk-aes.c 	mtk_aes_write(cryp, AIC_ENABLE_SET(MTK_RING1), MTK_IRQ_RDR1);
cryp             1318 drivers/crypto/mediatek/mtk-aes.c 	list_add_tail(&cryp->aes_list, &mtk_aes.dev_list);
cryp             1329 drivers/crypto/mediatek/mtk-aes.c 	list_del(&cryp->aes_list);
cryp             1332 drivers/crypto/mediatek/mtk-aes.c 	mtk_aes_record_free(cryp);
cryp             1335 drivers/crypto/mediatek/mtk-aes.c 	dev_err(cryp->dev, "mtk-aes initialization failed.\n");
cryp             1339 drivers/crypto/mediatek/mtk-aes.c void mtk_cipher_alg_release(struct mtk_cryp *cryp)
cryp             1342 drivers/crypto/mediatek/mtk-aes.c 	list_del(&cryp->aes_list);
cryp             1346 drivers/crypto/mediatek/mtk-aes.c 	mtk_aes_record_free(cryp);
cryp              120 drivers/crypto/mediatek/mtk-platform.c static void mtk_desc_ring_link(struct mtk_cryp *cryp, u32 mask)
cryp              123 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_DFSE_THR_CTRL_EN | mask, cryp->base + DFE_THR_CTRL);
cryp              124 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_DFSE_THR_CTRL_EN | mask, cryp->base + DSE_THR_CTRL);
cryp              127 drivers/crypto/mediatek/mtk-platform.c static void mtk_dfe_dse_buf_setup(struct mtk_cryp *cryp,
cryp              140 drivers/crypto/mediatek/mtk-platform.c 	       cryp->base + DFE_CFG);
cryp              144 drivers/crypto/mediatek/mtk-platform.c 	       cryp->base + DSE_CFG);
cryp              148 drivers/crypto/mediatek/mtk-platform.c 	       cryp->base + PE_IN_DBUF_THRESH);
cryp              152 drivers/crypto/mediatek/mtk-platform.c 	       cryp->base + PE_IN_TBUF_THRESH);
cryp              156 drivers/crypto/mediatek/mtk-platform.c 	       cryp->base + PE_OUT_DBUF_THRESH);
cryp              158 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + PE_OUT_TBUF_THRESH);
cryp              159 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + PE_OUT_BUF_CTRL);
cryp              162 drivers/crypto/mediatek/mtk-platform.c static int mtk_dfe_dse_state_check(struct mtk_cryp *cryp)
cryp              168 drivers/crypto/mediatek/mtk-platform.c 	val = readl(cryp->base + DFE_THR_STAT);
cryp              170 drivers/crypto/mediatek/mtk-platform.c 		val = readl(cryp->base + DSE_THR_STAT);
cryp              177 drivers/crypto/mediatek/mtk-platform.c 		writel(0, cryp->base + DFE_THR_CTRL);
cryp              178 drivers/crypto/mediatek/mtk-platform.c 		writel(0, cryp->base + DSE_THR_CTRL);
cryp              186 drivers/crypto/mediatek/mtk-platform.c static int mtk_dfe_dse_reset(struct mtk_cryp *cryp)
cryp              191 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_DFSE_THR_CTRL_RESET, cryp->base + DFE_THR_CTRL);
cryp              192 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + DFE_PRIO_0);
cryp              193 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + DFE_PRIO_1);
cryp              194 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + DFE_PRIO_2);
cryp              195 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + DFE_PRIO_3);
cryp              197 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_DFSE_THR_CTRL_RESET, cryp->base + DSE_THR_CTRL);
cryp              198 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + DSE_PRIO_0);
cryp              199 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + DSE_PRIO_1);
cryp              200 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + DSE_PRIO_2);
cryp              201 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + DSE_PRIO_3);
cryp              203 drivers/crypto/mediatek/mtk-platform.c 	err = mtk_dfe_dse_state_check(cryp);
cryp              210 drivers/crypto/mediatek/mtk-platform.c static void mtk_cmd_desc_ring_setup(struct mtk_cryp *cryp,
cryp              218 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + CDR_CFG(i));
cryp              221 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_CNT_RST, cryp->base + CDR_PREP_COUNT(i));
cryp              222 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_CNT_RST, cryp->base + CDR_PROC_COUNT(i));
cryp              224 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + CDR_PREP_PNTR(i));
cryp              225 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + CDR_PROC_PNTR(i));
cryp              226 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + CDR_DMA_CFG(i));
cryp              229 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + CDR_BASE_ADDR_HI(i));
cryp              230 drivers/crypto/mediatek/mtk-platform.c 	writel(cryp->ring[i]->cmd_dma, cryp->base + CDR_BASE_ADDR_LO(i));
cryp              232 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_DESC_RING_SZ, cryp->base + CDR_RING_SIZE(i));
cryp              235 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_CDR_STAT_CLR, cryp->base + CDR_STAT(i));
cryp              244 drivers/crypto/mediatek/mtk-platform.c 	       cryp->base + CDR_DESC_SIZE(i));
cryp              248 drivers/crypto/mediatek/mtk-platform.c 		   cryp->base + CDR_CFG(i));
cryp              251 drivers/crypto/mediatek/mtk-platform.c static void mtk_res_desc_ring_setup(struct mtk_cryp *cryp,
cryp              258 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + RDR_CFG(i));
cryp              261 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_CNT_RST, cryp->base + RDR_PREP_COUNT(i));
cryp              262 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_CNT_RST, cryp->base + RDR_PROC_COUNT(i));
cryp              264 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + RDR_PREP_PNTR(i));
cryp              265 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + RDR_PROC_PNTR(i));
cryp              266 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + RDR_DMA_CFG(i));
cryp              269 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + RDR_BASE_ADDR_HI(i));
cryp              270 drivers/crypto/mediatek/mtk-platform.c 	writel(cryp->ring[i]->res_dma, cryp->base + RDR_BASE_ADDR_LO(i));
cryp              272 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_DESC_RING_SZ, cryp->base + RDR_RING_SIZE(i));
cryp              273 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_RDR_STAT_CLR, cryp->base + RDR_STAT(i));
cryp              281 drivers/crypto/mediatek/mtk-platform.c 	       cryp->base + RDR_THRESH(i));
cryp              289 drivers/crypto/mediatek/mtk-platform.c 	       cryp->base + RDR_DESC_SIZE(i));
cryp              298 drivers/crypto/mediatek/mtk-platform.c 		   cryp->base + RDR_CFG(i));
cryp              301 drivers/crypto/mediatek/mtk-platform.c static int mtk_packet_engine_setup(struct mtk_cryp *cryp)
cryp              307 drivers/crypto/mediatek/mtk-platform.c 	cap.hia_ver = readl(cryp->base + HIA_VERSION);
cryp              308 drivers/crypto/mediatek/mtk-platform.c 	cap.hia_opt = readl(cryp->base + HIA_OPTIONS);
cryp              309 drivers/crypto/mediatek/mtk-platform.c 	cap.hw_opt = readl(cryp->base + EIP97_OPTIONS);
cryp              315 drivers/crypto/mediatek/mtk-platform.c 	writel(0, cryp->base + EIP97_MST_CTRL);
cryp              318 drivers/crypto/mediatek/mtk-platform.c 	val = readl(cryp->base + HIA_MST_CTRL);
cryp              321 drivers/crypto/mediatek/mtk-platform.c 	writel(val, cryp->base + HIA_MST_CTRL);
cryp              323 drivers/crypto/mediatek/mtk-platform.c 	err = mtk_dfe_dse_reset(cryp);
cryp              325 drivers/crypto/mediatek/mtk-platform.c 		dev_err(cryp->dev, "Failed to reset DFE and DSE.\n");
cryp              329 drivers/crypto/mediatek/mtk-platform.c 	mtk_dfe_dse_buf_setup(cryp, &cap);
cryp              332 drivers/crypto/mediatek/mtk-platform.c 	mtk_desc_ring_link(cryp, 0xf);
cryp              335 drivers/crypto/mediatek/mtk-platform.c 		mtk_cmd_desc_ring_setup(cryp, i, &cap);
cryp              336 drivers/crypto/mediatek/mtk-platform.c 		mtk_res_desc_ring_setup(cryp, i, &cap);
cryp              340 drivers/crypto/mediatek/mtk-platform.c 	       cryp->base + PE_TOKEN_CTRL_STAT);
cryp              343 drivers/crypto/mediatek/mtk-platform.c 	writel(MTK_AIC_G_CLR, cryp->base + AIC_G_ACK);
cryp              350 drivers/crypto/mediatek/mtk-platform.c 	       cryp->base + PE_INTERRUPT_CTRL_STAT);
cryp              355 drivers/crypto/mediatek/mtk-platform.c static int mtk_aic_cap_check(struct mtk_cryp *cryp, int hw)
cryp              360 drivers/crypto/mediatek/mtk-platform.c 		val = readl(cryp->base + AIC_G_VERSION);
cryp              362 drivers/crypto/mediatek/mtk-platform.c 		val = readl(cryp->base + AIC_VERSION(hw));
cryp              369 drivers/crypto/mediatek/mtk-platform.c 		val = readl(cryp->base + AIC_G_OPTIONS);
cryp              371 drivers/crypto/mediatek/mtk-platform.c 		val = readl(cryp->base + AIC_OPTIONS(hw));
cryp              380 drivers/crypto/mediatek/mtk-platform.c static int mtk_aic_init(struct mtk_cryp *cryp, int hw)
cryp              384 drivers/crypto/mediatek/mtk-platform.c 	err = mtk_aic_cap_check(cryp, hw);
cryp              390 drivers/crypto/mediatek/mtk-platform.c 		writel(0, cryp->base + AIC_G_ENABLE_CTRL);
cryp              391 drivers/crypto/mediatek/mtk-platform.c 		writel(0, cryp->base + AIC_G_POL_CTRL);
cryp              392 drivers/crypto/mediatek/mtk-platform.c 		writel(0, cryp->base + AIC_G_TYPE_CTRL);
cryp              393 drivers/crypto/mediatek/mtk-platform.c 		writel(0, cryp->base + AIC_G_ENABLE_SET);
cryp              395 drivers/crypto/mediatek/mtk-platform.c 		writel(0, cryp->base + AIC_ENABLE_CTRL(hw));
cryp              396 drivers/crypto/mediatek/mtk-platform.c 		writel(0, cryp->base + AIC_POL_CTRL(hw));
cryp              397 drivers/crypto/mediatek/mtk-platform.c 		writel(0, cryp->base + AIC_TYPE_CTRL(hw));
cryp              398 drivers/crypto/mediatek/mtk-platform.c 		writel(0, cryp->base + AIC_ENABLE_SET(hw));
cryp              404 drivers/crypto/mediatek/mtk-platform.c static int mtk_accelerator_init(struct mtk_cryp *cryp)
cryp              410 drivers/crypto/mediatek/mtk-platform.c 		err = mtk_aic_init(cryp, i);
cryp              412 drivers/crypto/mediatek/mtk-platform.c 			dev_err(cryp->dev, "Failed to initialize AIC.\n");
cryp              418 drivers/crypto/mediatek/mtk-platform.c 	err = mtk_packet_engine_setup(cryp);
cryp              420 drivers/crypto/mediatek/mtk-platform.c 		dev_err(cryp->dev, "Failed to configure packet engine.\n");
cryp              427 drivers/crypto/mediatek/mtk-platform.c static void mtk_desc_dma_free(struct mtk_cryp *cryp)
cryp              432 drivers/crypto/mediatek/mtk-platform.c 		dma_free_coherent(cryp->dev, MTK_DESC_RING_SZ,
cryp              433 drivers/crypto/mediatek/mtk-platform.c 				  cryp->ring[i]->res_base,
cryp              434 drivers/crypto/mediatek/mtk-platform.c 				  cryp->ring[i]->res_dma);
cryp              435 drivers/crypto/mediatek/mtk-platform.c 		dma_free_coherent(cryp->dev, MTK_DESC_RING_SZ,
cryp              436 drivers/crypto/mediatek/mtk-platform.c 				  cryp->ring[i]->cmd_base,
cryp              437 drivers/crypto/mediatek/mtk-platform.c 				  cryp->ring[i]->cmd_dma);
cryp              438 drivers/crypto/mediatek/mtk-platform.c 		kfree(cryp->ring[i]);
cryp              442 drivers/crypto/mediatek/mtk-platform.c static int mtk_desc_ring_alloc(struct mtk_cryp *cryp)
cryp              444 drivers/crypto/mediatek/mtk-platform.c 	struct mtk_ring **ring = cryp->ring;
cryp              452 drivers/crypto/mediatek/mtk-platform.c 		ring[i]->cmd_base = dma_alloc_coherent(cryp->dev,
cryp              459 drivers/crypto/mediatek/mtk-platform.c 		ring[i]->res_base = dma_alloc_coherent(cryp->dev,
cryp              473 drivers/crypto/mediatek/mtk-platform.c 		dma_free_coherent(cryp->dev, MTK_DESC_RING_SZ,
cryp              475 drivers/crypto/mediatek/mtk-platform.c 		dma_free_coherent(cryp->dev, MTK_DESC_RING_SZ,
cryp              484 drivers/crypto/mediatek/mtk-platform.c 	struct mtk_cryp *cryp;
cryp              487 drivers/crypto/mediatek/mtk-platform.c 	cryp = devm_kzalloc(&pdev->dev, sizeof(*cryp), GFP_KERNEL);
cryp              488 drivers/crypto/mediatek/mtk-platform.c 	if (!cryp)
cryp              491 drivers/crypto/mediatek/mtk-platform.c 	cryp->base = devm_platform_ioremap_resource(pdev, 0);
cryp              492 drivers/crypto/mediatek/mtk-platform.c 	if (IS_ERR(cryp->base))
cryp              493 drivers/crypto/mediatek/mtk-platform.c 		return PTR_ERR(cryp->base);
cryp              496 drivers/crypto/mediatek/mtk-platform.c 		cryp->irq[i] = platform_get_irq(pdev, i);
cryp              497 drivers/crypto/mediatek/mtk-platform.c 		if (cryp->irq[i] < 0)
cryp              498 drivers/crypto/mediatek/mtk-platform.c 			return cryp->irq[i];
cryp              501 drivers/crypto/mediatek/mtk-platform.c 	cryp->clk_cryp = devm_clk_get(&pdev->dev, "cryp");
cryp              502 drivers/crypto/mediatek/mtk-platform.c 	if (IS_ERR(cryp->clk_cryp))
cryp              505 drivers/crypto/mediatek/mtk-platform.c 	cryp->dev = &pdev->dev;
cryp              506 drivers/crypto/mediatek/mtk-platform.c 	pm_runtime_enable(cryp->dev);
cryp              507 drivers/crypto/mediatek/mtk-platform.c 	pm_runtime_get_sync(cryp->dev);
cryp              509 drivers/crypto/mediatek/mtk-platform.c 	err = clk_prepare_enable(cryp->clk_cryp);
cryp              514 drivers/crypto/mediatek/mtk-platform.c 	err = mtk_desc_ring_alloc(cryp);
cryp              516 drivers/crypto/mediatek/mtk-platform.c 		dev_err(cryp->dev, "Unable to allocate descriptor rings.\n");
cryp              521 drivers/crypto/mediatek/mtk-platform.c 	err = mtk_accelerator_init(cryp);
cryp              523 drivers/crypto/mediatek/mtk-platform.c 		dev_err(cryp->dev, "Failed to initialize cryptographic engine.\n");
cryp              527 drivers/crypto/mediatek/mtk-platform.c 	err = mtk_cipher_alg_register(cryp);
cryp              529 drivers/crypto/mediatek/mtk-platform.c 		dev_err(cryp->dev, "Unable to register cipher algorithm.\n");
cryp              533 drivers/crypto/mediatek/mtk-platform.c 	err = mtk_hash_alg_register(cryp);
cryp              535 drivers/crypto/mediatek/mtk-platform.c 		dev_err(cryp->dev, "Unable to register hash algorithm.\n");
cryp              539 drivers/crypto/mediatek/mtk-platform.c 	platform_set_drvdata(pdev, cryp);
cryp              543 drivers/crypto/mediatek/mtk-platform.c 	mtk_cipher_alg_release(cryp);
cryp              545 drivers/crypto/mediatek/mtk-platform.c 	mtk_dfe_dse_reset(cryp);
cryp              547 drivers/crypto/mediatek/mtk-platform.c 	mtk_desc_dma_free(cryp);
cryp              549 drivers/crypto/mediatek/mtk-platform.c 	clk_disable_unprepare(cryp->clk_cryp);
cryp              551 drivers/crypto/mediatek/mtk-platform.c 	pm_runtime_put_sync(cryp->dev);
cryp              552 drivers/crypto/mediatek/mtk-platform.c 	pm_runtime_disable(cryp->dev);
cryp              559 drivers/crypto/mediatek/mtk-platform.c 	struct mtk_cryp *cryp = platform_get_drvdata(pdev);
cryp              561 drivers/crypto/mediatek/mtk-platform.c 	mtk_hash_alg_release(cryp);
cryp              562 drivers/crypto/mediatek/mtk-platform.c 	mtk_cipher_alg_release(cryp);
cryp              563 drivers/crypto/mediatek/mtk-platform.c 	mtk_desc_dma_free(cryp);
cryp              565 drivers/crypto/mediatek/mtk-platform.c 	clk_disable_unprepare(cryp->clk_cryp);
cryp              567 drivers/crypto/mediatek/mtk-platform.c 	pm_runtime_put_sync(cryp->dev);
cryp              568 drivers/crypto/mediatek/mtk-platform.c 	pm_runtime_disable(cryp->dev);
cryp              122 drivers/crypto/mediatek/mtk-platform.h typedef int (*mtk_aes_fn)(struct mtk_cryp *cryp, struct mtk_aes_rec *aes);
cryp              146 drivers/crypto/mediatek/mtk-platform.h 	struct mtk_cryp *cryp;
cryp              183 drivers/crypto/mediatek/mtk-platform.h 	struct mtk_cryp *cryp;
cryp              226 drivers/crypto/mediatek/mtk-platform.h int mtk_cipher_alg_register(struct mtk_cryp *cryp);
cryp              227 drivers/crypto/mediatek/mtk-platform.h void mtk_cipher_alg_release(struct mtk_cryp *cryp);
cryp              228 drivers/crypto/mediatek/mtk-platform.h int mtk_hash_alg_register(struct mtk_cryp *cryp);
cryp              229 drivers/crypto/mediatek/mtk-platform.h void mtk_hash_alg_release(struct mtk_cryp *cryp);
cryp              105 drivers/crypto/mediatek/mtk-sha.c 	struct mtk_cryp *cryp;
cryp              124 drivers/crypto/mediatek/mtk-sha.c static int mtk_sha_handle_queue(struct mtk_cryp *cryp, u8 id,
cryp              127 drivers/crypto/mediatek/mtk-sha.c static inline u32 mtk_sha_read(struct mtk_cryp *cryp, u32 offset)
cryp              129 drivers/crypto/mediatek/mtk-sha.c 	return readl_relaxed(cryp->base + offset);
cryp              132 drivers/crypto/mediatek/mtk-sha.c static inline void mtk_sha_write(struct mtk_cryp *cryp,
cryp              135 drivers/crypto/mediatek/mtk-sha.c 	writel_relaxed(value, cryp->base + offset);
cryp              155 drivers/crypto/mediatek/mtk-sha.c 	struct mtk_cryp *cryp = NULL;
cryp              159 drivers/crypto/mediatek/mtk-sha.c 	if (!tctx->cryp) {
cryp              161 drivers/crypto/mediatek/mtk-sha.c 			cryp = tmp;
cryp              164 drivers/crypto/mediatek/mtk-sha.c 		tctx->cryp = cryp;
cryp              166 drivers/crypto/mediatek/mtk-sha.c 		cryp = tctx->cryp;
cryp              173 drivers/crypto/mediatek/mtk-sha.c 	tctx->id = cryp->rec;
cryp              174 drivers/crypto/mediatek/mtk-sha.c 	cryp->rec = !cryp->rec;
cryp              178 drivers/crypto/mediatek/mtk-sha.c 	return cryp;
cryp              320 drivers/crypto/mediatek/mtk-sha.c static int mtk_sha_info_update(struct mtk_cryp *cryp,
cryp              338 drivers/crypto/mediatek/mtk-sha.c 	ctx->ct_dma = dma_map_single(cryp->dev, info, sizeof(*info),
cryp              340 drivers/crypto/mediatek/mtk-sha.c 	if (unlikely(dma_mapping_error(cryp->dev, ctx->ct_dma))) {
cryp              341 drivers/crypto/mediatek/mtk-sha.c 		dev_err(cryp->dev, "dma %zu bytes error\n", sizeof(*info));
cryp              421 drivers/crypto/mediatek/mtk-sha.c static int mtk_sha_xmit(struct mtk_cryp *cryp, struct mtk_sha_rec *sha,
cryp              426 drivers/crypto/mediatek/mtk-sha.c 	struct mtk_ring *ring = cryp->ring[sha->id];
cryp              430 drivers/crypto/mediatek/mtk-sha.c 	err = mtk_sha_info_update(cryp, sha, len1, len2);
cryp              462 drivers/crypto/mediatek/mtk-sha.c 	mtk_sha_write(cryp, RDR_PREP_COUNT(sha->id), MTK_DESC_CNT(count));
cryp              463 drivers/crypto/mediatek/mtk-sha.c 	mtk_sha_write(cryp, CDR_PREP_COUNT(sha->id), MTK_DESC_CNT(count));
cryp              468 drivers/crypto/mediatek/mtk-sha.c static int mtk_sha_dma_map(struct mtk_cryp *cryp,
cryp              473 drivers/crypto/mediatek/mtk-sha.c 	ctx->dma_addr = dma_map_single(cryp->dev, ctx->buffer,
cryp              475 drivers/crypto/mediatek/mtk-sha.c 	if (unlikely(dma_mapping_error(cryp->dev, ctx->dma_addr))) {
cryp              476 drivers/crypto/mediatek/mtk-sha.c 		dev_err(cryp->dev, "dma map error\n");
cryp              482 drivers/crypto/mediatek/mtk-sha.c 	return mtk_sha_xmit(cryp, sha, ctx->dma_addr, count, 0, 0);
cryp              485 drivers/crypto/mediatek/mtk-sha.c static int mtk_sha_update_slow(struct mtk_cryp *cryp,
cryp              496 drivers/crypto/mediatek/mtk-sha.c 	dev_dbg(cryp->dev, "slow: bufcnt: %zu\n", ctx->bufcnt);
cryp              507 drivers/crypto/mediatek/mtk-sha.c 		return mtk_sha_dma_map(cryp, sha, ctx, count);
cryp              512 drivers/crypto/mediatek/mtk-sha.c static int mtk_sha_update_start(struct mtk_cryp *cryp,
cryp              523 drivers/crypto/mediatek/mtk-sha.c 		return mtk_sha_update_slow(cryp, sha);
cryp              528 drivers/crypto/mediatek/mtk-sha.c 		return mtk_sha_update_slow(cryp, sha);
cryp              532 drivers/crypto/mediatek/mtk-sha.c 		return mtk_sha_update_slow(cryp, sha);
cryp              562 drivers/crypto/mediatek/mtk-sha.c 		ctx->dma_addr = dma_map_single(cryp->dev, ctx->buffer,
cryp              564 drivers/crypto/mediatek/mtk-sha.c 		if (unlikely(dma_mapping_error(cryp->dev, ctx->dma_addr))) {
cryp              565 drivers/crypto/mediatek/mtk-sha.c 			dev_err(cryp->dev, "dma map bytes error\n");
cryp              575 drivers/crypto/mediatek/mtk-sha.c 			return mtk_sha_xmit(cryp, sha, ctx->dma_addr,
cryp              580 drivers/crypto/mediatek/mtk-sha.c 			if (!dma_map_sg(cryp->dev, ctx->sg, 1, DMA_TO_DEVICE)) {
cryp              581 drivers/crypto/mediatek/mtk-sha.c 				dev_err(cryp->dev, "dma_map_sg error\n");
cryp              586 drivers/crypto/mediatek/mtk-sha.c 			return mtk_sha_xmit(cryp, sha, sg_dma_address(ctx->sg),
cryp              591 drivers/crypto/mediatek/mtk-sha.c 	if (!dma_map_sg(cryp->dev, ctx->sg, 1, DMA_TO_DEVICE)) {
cryp              592 drivers/crypto/mediatek/mtk-sha.c 		dev_err(cryp->dev, "dma_map_sg  error\n");
cryp              598 drivers/crypto/mediatek/mtk-sha.c 	return mtk_sha_xmit(cryp, sha, sg_dma_address(ctx->sg),
cryp              602 drivers/crypto/mediatek/mtk-sha.c static int mtk_sha_final_req(struct mtk_cryp *cryp,
cryp              614 drivers/crypto/mediatek/mtk-sha.c 	return mtk_sha_dma_map(cryp, sha, ctx, count);
cryp              635 drivers/crypto/mediatek/mtk-sha.c static void mtk_sha_finish_req(struct mtk_cryp *cryp,
cryp              650 drivers/crypto/mediatek/mtk-sha.c static int mtk_sha_handle_queue(struct mtk_cryp *cryp, u8 id,
cryp              653 drivers/crypto/mediatek/mtk-sha.c 	struct mtk_sha_rec *sha = cryp->sha[id];
cryp              688 drivers/crypto/mediatek/mtk-sha.c 		err = mtk_sha_update_start(cryp, sha);
cryp              691 drivers/crypto/mediatek/mtk-sha.c 			err = mtk_sha_final_req(cryp, sha);
cryp              693 drivers/crypto/mediatek/mtk-sha.c 		err = mtk_sha_final_req(cryp, sha);
cryp              698 drivers/crypto/mediatek/mtk-sha.c 		mtk_sha_finish_req(cryp, sha, err);
cryp              710 drivers/crypto/mediatek/mtk-sha.c 	return mtk_sha_handle_queue(tctx->cryp, tctx->id, req);
cryp              713 drivers/crypto/mediatek/mtk-sha.c static void mtk_sha_unmap(struct mtk_cryp *cryp, struct mtk_sha_rec *sha)
cryp              717 drivers/crypto/mediatek/mtk-sha.c 	dma_unmap_single(cryp->dev, ctx->ct_dma, sizeof(ctx->info),
cryp              721 drivers/crypto/mediatek/mtk-sha.c 		dma_unmap_sg(cryp->dev, ctx->sg, 1, DMA_TO_DEVICE);
cryp              728 drivers/crypto/mediatek/mtk-sha.c 			dma_unmap_single(cryp->dev, ctx->dma_addr,
cryp              732 drivers/crypto/mediatek/mtk-sha.c 		dma_unmap_single(cryp->dev, ctx->dma_addr,
cryp              736 drivers/crypto/mediatek/mtk-sha.c static void mtk_sha_complete(struct mtk_cryp *cryp,
cryp              741 drivers/crypto/mediatek/mtk-sha.c 	err = mtk_sha_update_start(cryp, sha);
cryp              743 drivers/crypto/mediatek/mtk-sha.c 		mtk_sha_finish_req(cryp, sha, err);
cryp              852 drivers/crypto/mediatek/mtk-sha.c 	struct mtk_cryp *cryp = NULL;
cryp              854 drivers/crypto/mediatek/mtk-sha.c 	cryp = mtk_sha_find_dev(tctx);
cryp              855 drivers/crypto/mediatek/mtk-sha.c 	if (!cryp)
cryp             1173 drivers/crypto/mediatek/mtk-sha.c 	mtk_sha_handle_queue(sha->cryp, sha->id - MTK_RING2, NULL);
cryp             1179 drivers/crypto/mediatek/mtk-sha.c 	struct mtk_cryp *cryp = sha->cryp;
cryp             1181 drivers/crypto/mediatek/mtk-sha.c 	mtk_sha_unmap(cryp, sha);
cryp             1182 drivers/crypto/mediatek/mtk-sha.c 	mtk_sha_complete(cryp, sha);
cryp             1188 drivers/crypto/mediatek/mtk-sha.c 	struct mtk_cryp *cryp = sha->cryp;
cryp             1189 drivers/crypto/mediatek/mtk-sha.c 	u32 val = mtk_sha_read(cryp, RDR_STAT(sha->id));
cryp             1191 drivers/crypto/mediatek/mtk-sha.c 	mtk_sha_write(cryp, RDR_STAT(sha->id), val);
cryp             1194 drivers/crypto/mediatek/mtk-sha.c 		mtk_sha_write(cryp, RDR_PROC_COUNT(sha->id), MTK_CNT_RST);
cryp             1195 drivers/crypto/mediatek/mtk-sha.c 		mtk_sha_write(cryp, RDR_THRESH(sha->id),
cryp             1200 drivers/crypto/mediatek/mtk-sha.c 		dev_warn(cryp->dev, "SHA interrupt when no active requests.\n");
cryp             1209 drivers/crypto/mediatek/mtk-sha.c static int mtk_sha_record_init(struct mtk_cryp *cryp)
cryp             1211 drivers/crypto/mediatek/mtk-sha.c 	struct mtk_sha_rec **sha = cryp->sha;
cryp             1219 drivers/crypto/mediatek/mtk-sha.c 		sha[i]->cryp = cryp;
cryp             1234 drivers/crypto/mediatek/mtk-sha.c 	cryp->rec = 1;
cryp             1244 drivers/crypto/mediatek/mtk-sha.c static void mtk_sha_record_free(struct mtk_cryp *cryp)
cryp             1249 drivers/crypto/mediatek/mtk-sha.c 		tasklet_kill(&cryp->sha[i]->done_task);
cryp             1250 drivers/crypto/mediatek/mtk-sha.c 		tasklet_kill(&cryp->sha[i]->queue_task);
cryp             1252 drivers/crypto/mediatek/mtk-sha.c 		kfree(cryp->sha[i]);
cryp             1296 drivers/crypto/mediatek/mtk-sha.c int mtk_hash_alg_register(struct mtk_cryp *cryp)
cryp             1300 drivers/crypto/mediatek/mtk-sha.c 	INIT_LIST_HEAD(&cryp->sha_list);
cryp             1303 drivers/crypto/mediatek/mtk-sha.c 	err = mtk_sha_record_init(cryp);
cryp             1307 drivers/crypto/mediatek/mtk-sha.c 	err = devm_request_irq(cryp->dev, cryp->irq[MTK_RING2], mtk_sha_irq,
cryp             1308 drivers/crypto/mediatek/mtk-sha.c 			       0, "mtk-sha", cryp->sha[0]);
cryp             1310 drivers/crypto/mediatek/mtk-sha.c 		dev_err(cryp->dev, "unable to request sha irq0.\n");
cryp             1314 drivers/crypto/mediatek/mtk-sha.c 	err = devm_request_irq(cryp->dev, cryp->irq[MTK_RING3], mtk_sha_irq,
cryp             1315 drivers/crypto/mediatek/mtk-sha.c 			       0, "mtk-sha", cryp->sha[1]);
cryp             1317 drivers/crypto/mediatek/mtk-sha.c 		dev_err(cryp->dev, "unable to request sha irq1.\n");
cryp             1322 drivers/crypto/mediatek/mtk-sha.c 	mtk_sha_write(cryp, AIC_ENABLE_SET(MTK_RING2), MTK_IRQ_RDR2);
cryp             1323 drivers/crypto/mediatek/mtk-sha.c 	mtk_sha_write(cryp, AIC_ENABLE_SET(MTK_RING3), MTK_IRQ_RDR3);
cryp             1326 drivers/crypto/mediatek/mtk-sha.c 	list_add_tail(&cryp->sha_list, &mtk_sha.dev_list);
cryp             1337 drivers/crypto/mediatek/mtk-sha.c 	list_del(&cryp->sha_list);
cryp             1340 drivers/crypto/mediatek/mtk-sha.c 	mtk_sha_record_free(cryp);
cryp             1343 drivers/crypto/mediatek/mtk-sha.c 	dev_err(cryp->dev, "mtk-sha initialization failed.\n");
cryp             1347 drivers/crypto/mediatek/mtk-sha.c void mtk_hash_alg_release(struct mtk_cryp *cryp)
cryp             1350 drivers/crypto/mediatek/mtk-sha.c 	list_del(&cryp->sha_list);
cryp             1354 drivers/crypto/mediatek/mtk-sha.c 	mtk_sha_record_free(cryp);
cryp              107 drivers/crypto/stm32/stm32-cryp.c #define _walked_in              (cryp->in_walk.offset - cryp->in_sg->offset)
cryp              108 drivers/crypto/stm32/stm32-cryp.c #define _walked_out             (cryp->out_walk.offset - cryp->out_sg->offset)
cryp              118 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp       *cryp;
cryp              179 drivers/crypto/stm32/stm32-cryp.c static inline bool is_aes(struct stm32_cryp *cryp)
cryp              181 drivers/crypto/stm32/stm32-cryp.c 	return cryp->flags & FLG_AES;
cryp              184 drivers/crypto/stm32/stm32-cryp.c static inline bool is_des(struct stm32_cryp *cryp)
cryp              186 drivers/crypto/stm32/stm32-cryp.c 	return cryp->flags & FLG_DES;
cryp              189 drivers/crypto/stm32/stm32-cryp.c static inline bool is_tdes(struct stm32_cryp *cryp)
cryp              191 drivers/crypto/stm32/stm32-cryp.c 	return cryp->flags & FLG_TDES;
cryp              194 drivers/crypto/stm32/stm32-cryp.c static inline bool is_ecb(struct stm32_cryp *cryp)
cryp              196 drivers/crypto/stm32/stm32-cryp.c 	return cryp->flags & FLG_ECB;
cryp              199 drivers/crypto/stm32/stm32-cryp.c static inline bool is_cbc(struct stm32_cryp *cryp)
cryp              201 drivers/crypto/stm32/stm32-cryp.c 	return cryp->flags & FLG_CBC;
cryp              204 drivers/crypto/stm32/stm32-cryp.c static inline bool is_ctr(struct stm32_cryp *cryp)
cryp              206 drivers/crypto/stm32/stm32-cryp.c 	return cryp->flags & FLG_CTR;
cryp              209 drivers/crypto/stm32/stm32-cryp.c static inline bool is_gcm(struct stm32_cryp *cryp)
cryp              211 drivers/crypto/stm32/stm32-cryp.c 	return cryp->flags & FLG_GCM;
cryp              214 drivers/crypto/stm32/stm32-cryp.c static inline bool is_ccm(struct stm32_cryp *cryp)
cryp              216 drivers/crypto/stm32/stm32-cryp.c 	return cryp->flags & FLG_CCM;
cryp              219 drivers/crypto/stm32/stm32-cryp.c static inline bool is_encrypt(struct stm32_cryp *cryp)
cryp              221 drivers/crypto/stm32/stm32-cryp.c 	return cryp->flags & FLG_ENCRYPT;
cryp              224 drivers/crypto/stm32/stm32-cryp.c static inline bool is_decrypt(struct stm32_cryp *cryp)
cryp              226 drivers/crypto/stm32/stm32-cryp.c 	return !is_encrypt(cryp);
cryp              229 drivers/crypto/stm32/stm32-cryp.c static inline u32 stm32_cryp_read(struct stm32_cryp *cryp, u32 ofst)
cryp              231 drivers/crypto/stm32/stm32-cryp.c 	return readl_relaxed(cryp->regs + ofst);
cryp              234 drivers/crypto/stm32/stm32-cryp.c static inline void stm32_cryp_write(struct stm32_cryp *cryp, u32 ofst, u32 val)
cryp              236 drivers/crypto/stm32/stm32-cryp.c 	writel_relaxed(val, cryp->regs + ofst);
cryp              239 drivers/crypto/stm32/stm32-cryp.c static inline int stm32_cryp_wait_busy(struct stm32_cryp *cryp)
cryp              243 drivers/crypto/stm32/stm32-cryp.c 	return readl_relaxed_poll_timeout(cryp->regs + CRYP_SR, status,
cryp              247 drivers/crypto/stm32/stm32-cryp.c static inline int stm32_cryp_wait_enable(struct stm32_cryp *cryp)
cryp              251 drivers/crypto/stm32/stm32-cryp.c 	return readl_relaxed_poll_timeout(cryp->regs + CRYP_CR, status,
cryp              255 drivers/crypto/stm32/stm32-cryp.c static inline int stm32_cryp_wait_output(struct stm32_cryp *cryp)
cryp              259 drivers/crypto/stm32/stm32-cryp.c 	return readl_relaxed_poll_timeout(cryp->regs + CRYP_SR, status,
cryp              263 drivers/crypto/stm32/stm32-cryp.c static int stm32_cryp_read_auth_tag(struct stm32_cryp *cryp);
cryp              267 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp *tmp, *cryp = NULL;
cryp              270 drivers/crypto/stm32/stm32-cryp.c 	if (!ctx->cryp) {
cryp              272 drivers/crypto/stm32/stm32-cryp.c 			cryp = tmp;
cryp              275 drivers/crypto/stm32/stm32-cryp.c 		ctx->cryp = cryp;
cryp              277 drivers/crypto/stm32/stm32-cryp.c 		cryp = ctx->cryp;
cryp              282 drivers/crypto/stm32/stm32-cryp.c 	return cryp;
cryp              313 drivers/crypto/stm32/stm32-cryp.c static int stm32_cryp_check_io_aligned(struct stm32_cryp *cryp)
cryp              317 drivers/crypto/stm32/stm32-cryp.c 	ret = stm32_cryp_check_aligned(cryp->in_sg, cryp->total_in,
cryp              318 drivers/crypto/stm32/stm32-cryp.c 				       cryp->hw_blocksize);
cryp              322 drivers/crypto/stm32/stm32-cryp.c 	ret = stm32_cryp_check_aligned(cryp->out_sg, cryp->total_out,
cryp              323 drivers/crypto/stm32/stm32-cryp.c 				       cryp->hw_blocksize);
cryp              342 drivers/crypto/stm32/stm32-cryp.c static int stm32_cryp_copy_sgs(struct stm32_cryp *cryp)
cryp              347 drivers/crypto/stm32/stm32-cryp.c 	if (!stm32_cryp_check_io_aligned(cryp)) {
cryp              348 drivers/crypto/stm32/stm32-cryp.c 		cryp->sgs_copied = 0;
cryp              352 drivers/crypto/stm32/stm32-cryp.c 	total_in = ALIGN(cryp->total_in, cryp->hw_blocksize);
cryp              356 drivers/crypto/stm32/stm32-cryp.c 	total_out = ALIGN(cryp->total_out, cryp->hw_blocksize);
cryp              361 drivers/crypto/stm32/stm32-cryp.c 		dev_err(cryp->dev, "Can't allocate pages when unaligned\n");
cryp              362 drivers/crypto/stm32/stm32-cryp.c 		cryp->sgs_copied = 0;
cryp              366 drivers/crypto/stm32/stm32-cryp.c 	sg_copy_buf(buf_in, cryp->in_sg, 0, cryp->total_in, 0);
cryp              368 drivers/crypto/stm32/stm32-cryp.c 	sg_init_one(&cryp->in_sgl, buf_in, total_in);
cryp              369 drivers/crypto/stm32/stm32-cryp.c 	cryp->in_sg = &cryp->in_sgl;
cryp              370 drivers/crypto/stm32/stm32-cryp.c 	cryp->in_sg_len = 1;
cryp              372 drivers/crypto/stm32/stm32-cryp.c 	sg_init_one(&cryp->out_sgl, buf_out, total_out);
cryp              373 drivers/crypto/stm32/stm32-cryp.c 	cryp->out_sg_save = cryp->out_sg;
cryp              374 drivers/crypto/stm32/stm32-cryp.c 	cryp->out_sg = &cryp->out_sgl;
cryp              375 drivers/crypto/stm32/stm32-cryp.c 	cryp->out_sg_len = 1;
cryp              377 drivers/crypto/stm32/stm32-cryp.c 	cryp->sgs_copied = 1;
cryp              382 drivers/crypto/stm32/stm32-cryp.c static void stm32_cryp_hw_write_iv(struct stm32_cryp *cryp, u32 *iv)
cryp              387 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_IV0LR, cpu_to_be32(*iv++));
cryp              388 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_IV0RR, cpu_to_be32(*iv++));
cryp              390 drivers/crypto/stm32/stm32-cryp.c 	if (is_aes(cryp)) {
cryp              391 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_IV1LR, cpu_to_be32(*iv++));
cryp              392 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_IV1RR, cpu_to_be32(*iv++));
cryp              396 drivers/crypto/stm32/stm32-cryp.c static void stm32_cryp_get_iv(struct stm32_cryp *cryp)
cryp              398 drivers/crypto/stm32/stm32-cryp.c 	struct ablkcipher_request *req = cryp->req;
cryp              404 drivers/crypto/stm32/stm32-cryp.c 	*tmp++ = cpu_to_be32(stm32_cryp_read(cryp, CRYP_IV0LR));
cryp              405 drivers/crypto/stm32/stm32-cryp.c 	*tmp++ = cpu_to_be32(stm32_cryp_read(cryp, CRYP_IV0RR));
cryp              407 drivers/crypto/stm32/stm32-cryp.c 	if (is_aes(cryp)) {
cryp              408 drivers/crypto/stm32/stm32-cryp.c 		*tmp++ = cpu_to_be32(stm32_cryp_read(cryp, CRYP_IV1LR));
cryp              409 drivers/crypto/stm32/stm32-cryp.c 		*tmp++ = cpu_to_be32(stm32_cryp_read(cryp, CRYP_IV1RR));
cryp              429 drivers/crypto/stm32/stm32-cryp.c static u32 stm32_cryp_get_hw_mode(struct stm32_cryp *cryp)
cryp              431 drivers/crypto/stm32/stm32-cryp.c 	if (is_aes(cryp) && is_ecb(cryp))
cryp              434 drivers/crypto/stm32/stm32-cryp.c 	if (is_aes(cryp) && is_cbc(cryp))
cryp              437 drivers/crypto/stm32/stm32-cryp.c 	if (is_aes(cryp) && is_ctr(cryp))
cryp              440 drivers/crypto/stm32/stm32-cryp.c 	if (is_aes(cryp) && is_gcm(cryp))
cryp              443 drivers/crypto/stm32/stm32-cryp.c 	if (is_aes(cryp) && is_ccm(cryp))
cryp              446 drivers/crypto/stm32/stm32-cryp.c 	if (is_des(cryp) && is_ecb(cryp))
cryp              449 drivers/crypto/stm32/stm32-cryp.c 	if (is_des(cryp) && is_cbc(cryp))
cryp              452 drivers/crypto/stm32/stm32-cryp.c 	if (is_tdes(cryp) && is_ecb(cryp))
cryp              455 drivers/crypto/stm32/stm32-cryp.c 	if (is_tdes(cryp) && is_cbc(cryp))
cryp              458 drivers/crypto/stm32/stm32-cryp.c 	dev_err(cryp->dev, "Unknown mode\n");
cryp              462 drivers/crypto/stm32/stm32-cryp.c static unsigned int stm32_cryp_get_input_text_len(struct stm32_cryp *cryp)
cryp              464 drivers/crypto/stm32/stm32-cryp.c 	return is_encrypt(cryp) ? cryp->areq->cryptlen :
cryp              465 drivers/crypto/stm32/stm32-cryp.c 				  cryp->areq->cryptlen - cryp->authsize;
cryp              468 drivers/crypto/stm32/stm32-cryp.c static int stm32_cryp_gcm_init(struct stm32_cryp *cryp, u32 cfg)
cryp              474 drivers/crypto/stm32/stm32-cryp.c 	memcpy(iv, cryp->areq->iv, 12);
cryp              476 drivers/crypto/stm32/stm32-cryp.c 	cryp->gcm_ctr = GCM_CTR_INIT;
cryp              477 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_hw_write_iv(cryp, iv);
cryp              479 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg | CR_PH_INIT | CR_CRYPEN);
cryp              482 drivers/crypto/stm32/stm32-cryp.c 	ret = stm32_cryp_wait_enable(cryp);
cryp              484 drivers/crypto/stm32/stm32-cryp.c 		dev_err(cryp->dev, "Timeout (gcm init)\n");
cryp              489 drivers/crypto/stm32/stm32-cryp.c static int stm32_cryp_ccm_init(struct stm32_cryp *cryp, u32 cfg)
cryp              497 drivers/crypto/stm32/stm32-cryp.c 	memcpy(iv, cryp->areq->iv, AES_BLOCK_SIZE);
cryp              500 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_hw_write_iv(cryp, (u32 *)iv);
cryp              505 drivers/crypto/stm32/stm32-cryp.c 	b0[0] |= (8 * ((cryp->authsize - 2) / 2));
cryp              507 drivers/crypto/stm32/stm32-cryp.c 	if (cryp->areq->assoclen)
cryp              510 drivers/crypto/stm32/stm32-cryp.c 	textlen = stm32_cryp_get_input_text_len(cryp);
cryp              516 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg | CR_PH_INIT | CR_CRYPEN);
cryp              522 drivers/crypto/stm32/stm32-cryp.c 		if (!cryp->caps->padding_wa)
cryp              524 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_DIN, *d++);
cryp              528 drivers/crypto/stm32/stm32-cryp.c 	ret = stm32_cryp_wait_enable(cryp);
cryp              530 drivers/crypto/stm32/stm32-cryp.c 		dev_err(cryp->dev, "Timeout (ccm init)\n");
cryp              535 drivers/crypto/stm32/stm32-cryp.c static int stm32_cryp_hw_init(struct stm32_cryp *cryp)
cryp              540 drivers/crypto/stm32/stm32-cryp.c 	pm_runtime_get_sync(cryp->dev);
cryp              543 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_IMSCR, 0);
cryp              546 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_hw_write_key(cryp);
cryp              551 drivers/crypto/stm32/stm32-cryp.c 	switch (cryp->ctx->keylen) {
cryp              566 drivers/crypto/stm32/stm32-cryp.c 	hw_mode = stm32_cryp_get_hw_mode(cryp);
cryp              571 drivers/crypto/stm32/stm32-cryp.c 	if (is_decrypt(cryp) &&
cryp              573 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_CR, cfg | CR_AES_KP | CR_CRYPEN);
cryp              576 drivers/crypto/stm32/stm32-cryp.c 		ret = stm32_cryp_wait_busy(cryp);
cryp              578 drivers/crypto/stm32/stm32-cryp.c 			dev_err(cryp->dev, "Timeout (key preparation)\n");
cryp              585 drivers/crypto/stm32/stm32-cryp.c 	if (is_decrypt(cryp))
cryp              589 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp              596 drivers/crypto/stm32/stm32-cryp.c 			ret = stm32_cryp_ccm_init(cryp, cfg);
cryp              598 drivers/crypto/stm32/stm32-cryp.c 			ret = stm32_cryp_gcm_init(cryp, cfg);
cryp              604 drivers/crypto/stm32/stm32-cryp.c 		if (cryp->areq->assoclen) {
cryp              606 drivers/crypto/stm32/stm32-cryp.c 		} else if (stm32_cryp_get_input_text_len(cryp)) {
cryp              608 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp              619 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_hw_write_iv(cryp, (u32 *)cryp->req->info);
cryp              629 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp              631 drivers/crypto/stm32/stm32-cryp.c 	cryp->flags &= ~FLG_CCM_PADDED_WA;
cryp              636 drivers/crypto/stm32/stm32-cryp.c static void stm32_cryp_finish_req(struct stm32_cryp *cryp, int err)
cryp              638 drivers/crypto/stm32/stm32-cryp.c 	if (!err && (is_gcm(cryp) || is_ccm(cryp)))
cryp              640 drivers/crypto/stm32/stm32-cryp.c 		err = stm32_cryp_read_auth_tag(cryp);
cryp              642 drivers/crypto/stm32/stm32-cryp.c 	if (!err && (!(is_gcm(cryp) || is_ccm(cryp))))
cryp              643 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_get_iv(cryp);
cryp              645 drivers/crypto/stm32/stm32-cryp.c 	if (cryp->sgs_copied) {
cryp              649 drivers/crypto/stm32/stm32-cryp.c 		buf_in = sg_virt(&cryp->in_sgl);
cryp              650 drivers/crypto/stm32/stm32-cryp.c 		buf_out = sg_virt(&cryp->out_sgl);
cryp              652 drivers/crypto/stm32/stm32-cryp.c 		sg_copy_buf(buf_out, cryp->out_sg_save, 0,
cryp              653 drivers/crypto/stm32/stm32-cryp.c 			    cryp->total_out_save, 1);
cryp              655 drivers/crypto/stm32/stm32-cryp.c 		len = ALIGN(cryp->total_in_save, cryp->hw_blocksize);
cryp              659 drivers/crypto/stm32/stm32-cryp.c 		len = ALIGN(cryp->total_out_save, cryp->hw_blocksize);
cryp              664 drivers/crypto/stm32/stm32-cryp.c 	pm_runtime_mark_last_busy(cryp->dev);
cryp              665 drivers/crypto/stm32/stm32-cryp.c 	pm_runtime_put_autosuspend(cryp->dev);
cryp              667 drivers/crypto/stm32/stm32-cryp.c 	if (is_gcm(cryp) || is_ccm(cryp))
cryp              668 drivers/crypto/stm32/stm32-cryp.c 		crypto_finalize_aead_request(cryp->engine, cryp->areq, err);
cryp              670 drivers/crypto/stm32/stm32-cryp.c 		crypto_finalize_ablkcipher_request(cryp->engine, cryp->req,
cryp              673 drivers/crypto/stm32/stm32-cryp.c 	memset(cryp->ctx->key, 0, cryp->ctx->keylen);
cryp              676 drivers/crypto/stm32/stm32-cryp.c static int stm32_cryp_cpu_start(struct stm32_cryp *cryp)
cryp              679 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_IMSCR, IMSCR_IN | IMSCR_OUT);
cryp              722 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp *cryp = stm32_cryp_find_dev(ctx);
cryp              724 drivers/crypto/stm32/stm32-cryp.c 	if (!cryp)
cryp              729 drivers/crypto/stm32/stm32-cryp.c 	return crypto_transfer_ablkcipher_request_to_engine(cryp->engine, req);
cryp              736 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp *cryp = stm32_cryp_find_dev(ctx);
cryp              738 drivers/crypto/stm32/stm32-cryp.c 	if (!cryp)
cryp              743 drivers/crypto/stm32/stm32-cryp.c 	return crypto_transfer_aead_request_to_engine(cryp->engine, req);
cryp              915 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp *cryp;
cryp              925 drivers/crypto/stm32/stm32-cryp.c 	cryp = ctx->cryp;
cryp              927 drivers/crypto/stm32/stm32-cryp.c 	if (!cryp)
cryp              933 drivers/crypto/stm32/stm32-cryp.c 	ctx->cryp = cryp;
cryp              935 drivers/crypto/stm32/stm32-cryp.c 	cryp->flags = (cryp->flags & ~FLG_MODE_MASK) | rctx->mode;
cryp              936 drivers/crypto/stm32/stm32-cryp.c 	cryp->hw_blocksize = is_aes(cryp) ? AES_BLOCK_SIZE : DES_BLOCK_SIZE;
cryp              937 drivers/crypto/stm32/stm32-cryp.c 	cryp->ctx = ctx;
cryp              940 drivers/crypto/stm32/stm32-cryp.c 		cryp->req = req;
cryp              941 drivers/crypto/stm32/stm32-cryp.c 		cryp->areq = NULL;
cryp              942 drivers/crypto/stm32/stm32-cryp.c 		cryp->total_in = req->nbytes;
cryp              943 drivers/crypto/stm32/stm32-cryp.c 		cryp->total_out = cryp->total_in;
cryp              966 drivers/crypto/stm32/stm32-cryp.c 		cryp->areq = areq;
cryp              967 drivers/crypto/stm32/stm32-cryp.c 		cryp->req = NULL;
cryp              968 drivers/crypto/stm32/stm32-cryp.c 		cryp->authsize = crypto_aead_authsize(crypto_aead_reqtfm(areq));
cryp              969 drivers/crypto/stm32/stm32-cryp.c 		cryp->total_in = areq->assoclen + areq->cryptlen;
cryp              970 drivers/crypto/stm32/stm32-cryp.c 		if (is_encrypt(cryp))
cryp              972 drivers/crypto/stm32/stm32-cryp.c 			cryp->total_out = cryp->total_in + cryp->authsize;
cryp              975 drivers/crypto/stm32/stm32-cryp.c 			cryp->total_out = cryp->total_in - cryp->authsize;
cryp              978 drivers/crypto/stm32/stm32-cryp.c 	cryp->total_in_save = cryp->total_in;
cryp              979 drivers/crypto/stm32/stm32-cryp.c 	cryp->total_out_save = cryp->total_out;
cryp              981 drivers/crypto/stm32/stm32-cryp.c 	cryp->in_sg = req ? req->src : areq->src;
cryp              982 drivers/crypto/stm32/stm32-cryp.c 	cryp->out_sg = req ? req->dst : areq->dst;
cryp              983 drivers/crypto/stm32/stm32-cryp.c 	cryp->out_sg_save = cryp->out_sg;
cryp              985 drivers/crypto/stm32/stm32-cryp.c 	cryp->in_sg_len = sg_nents_for_len(cryp->in_sg, cryp->total_in);
cryp              986 drivers/crypto/stm32/stm32-cryp.c 	if (cryp->in_sg_len < 0) {
cryp              987 drivers/crypto/stm32/stm32-cryp.c 		dev_err(cryp->dev, "Cannot get in_sg_len\n");
cryp              988 drivers/crypto/stm32/stm32-cryp.c 		ret = cryp->in_sg_len;
cryp              992 drivers/crypto/stm32/stm32-cryp.c 	cryp->out_sg_len = sg_nents_for_len(cryp->out_sg, cryp->total_out);
cryp              993 drivers/crypto/stm32/stm32-cryp.c 	if (cryp->out_sg_len < 0) {
cryp              994 drivers/crypto/stm32/stm32-cryp.c 		dev_err(cryp->dev, "Cannot get out_sg_len\n");
cryp              995 drivers/crypto/stm32/stm32-cryp.c 		ret = cryp->out_sg_len;
cryp              999 drivers/crypto/stm32/stm32-cryp.c 	ret = stm32_cryp_copy_sgs(cryp);
cryp             1003 drivers/crypto/stm32/stm32-cryp.c 	scatterwalk_start(&cryp->in_walk, cryp->in_sg);
cryp             1004 drivers/crypto/stm32/stm32-cryp.c 	scatterwalk_start(&cryp->out_walk, cryp->out_sg);
cryp             1006 drivers/crypto/stm32/stm32-cryp.c 	if (is_gcm(cryp) || is_ccm(cryp)) {
cryp             1008 drivers/crypto/stm32/stm32-cryp.c 		scatterwalk_advance(&cryp->out_walk, cryp->areq->assoclen);
cryp             1009 drivers/crypto/stm32/stm32-cryp.c 		cryp->total_out -= cryp->areq->assoclen;
cryp             1012 drivers/crypto/stm32/stm32-cryp.c 	ret = stm32_cryp_hw_init(cryp);
cryp             1033 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp *cryp = ctx->cryp;
cryp             1035 drivers/crypto/stm32/stm32-cryp.c 	if (!cryp)
cryp             1038 drivers/crypto/stm32/stm32-cryp.c 	return stm32_cryp_cpu_start(cryp);
cryp             1054 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp *cryp = ctx->cryp;
cryp             1056 drivers/crypto/stm32/stm32-cryp.c 	if (!cryp)
cryp             1059 drivers/crypto/stm32/stm32-cryp.c 	if (unlikely(!cryp->areq->assoclen &&
cryp             1060 drivers/crypto/stm32/stm32-cryp.c 		     !stm32_cryp_get_input_text_len(cryp))) {
cryp             1062 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_finish_req(cryp, 0);
cryp             1066 drivers/crypto/stm32/stm32-cryp.c 	return stm32_cryp_cpu_start(cryp);
cryp             1069 drivers/crypto/stm32/stm32-cryp.c static u32 *stm32_cryp_next_out(struct stm32_cryp *cryp, u32 *dst,
cryp             1072 drivers/crypto/stm32/stm32-cryp.c 	scatterwalk_advance(&cryp->out_walk, n);
cryp             1074 drivers/crypto/stm32/stm32-cryp.c 	if (unlikely(cryp->out_sg->length == _walked_out)) {
cryp             1075 drivers/crypto/stm32/stm32-cryp.c 		cryp->out_sg = sg_next(cryp->out_sg);
cryp             1076 drivers/crypto/stm32/stm32-cryp.c 		if (cryp->out_sg) {
cryp             1077 drivers/crypto/stm32/stm32-cryp.c 			scatterwalk_start(&cryp->out_walk, cryp->out_sg);
cryp             1078 drivers/crypto/stm32/stm32-cryp.c 			return (sg_virt(cryp->out_sg) + _walked_out);
cryp             1085 drivers/crypto/stm32/stm32-cryp.c static u32 *stm32_cryp_next_in(struct stm32_cryp *cryp, u32 *src,
cryp             1088 drivers/crypto/stm32/stm32-cryp.c 	scatterwalk_advance(&cryp->in_walk, n);
cryp             1090 drivers/crypto/stm32/stm32-cryp.c 	if (unlikely(cryp->in_sg->length == _walked_in)) {
cryp             1091 drivers/crypto/stm32/stm32-cryp.c 		cryp->in_sg = sg_next(cryp->in_sg);
cryp             1092 drivers/crypto/stm32/stm32-cryp.c 		if (cryp->in_sg) {
cryp             1093 drivers/crypto/stm32/stm32-cryp.c 			scatterwalk_start(&cryp->in_walk, cryp->in_sg);
cryp             1094 drivers/crypto/stm32/stm32-cryp.c 			return (sg_virt(cryp->in_sg) + _walked_in);
cryp             1101 drivers/crypto/stm32/stm32-cryp.c static int stm32_cryp_read_auth_tag(struct stm32_cryp *cryp)
cryp             1109 drivers/crypto/stm32/stm32-cryp.c 	cfg = stm32_cryp_read(cryp, CRYP_CR);
cryp             1116 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1118 drivers/crypto/stm32/stm32-cryp.c 	if (is_gcm(cryp)) {
cryp             1120 drivers/crypto/stm32/stm32-cryp.c 		size_bit = cryp->areq->assoclen * 8;
cryp             1121 drivers/crypto/stm32/stm32-cryp.c 		if (cryp->caps->swap_final)
cryp             1124 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_DIN, 0);
cryp             1125 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_DIN, size_bit);
cryp             1127 drivers/crypto/stm32/stm32-cryp.c 		size_bit = is_encrypt(cryp) ? cryp->areq->cryptlen :
cryp             1128 drivers/crypto/stm32/stm32-cryp.c 				cryp->areq->cryptlen - AES_BLOCK_SIZE;
cryp             1130 drivers/crypto/stm32/stm32-cryp.c 		if (cryp->caps->swap_final)
cryp             1133 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_DIN, 0);
cryp             1134 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_DIN, size_bit);
cryp             1140 drivers/crypto/stm32/stm32-cryp.c 		memcpy(iv, cryp->areq->iv, AES_BLOCK_SIZE);
cryp             1144 drivers/crypto/stm32/stm32-cryp.c 			if (!cryp->caps->padding_wa)
cryp             1146 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_write(cryp, CRYP_DIN, *iv32++);
cryp             1151 drivers/crypto/stm32/stm32-cryp.c 	ret = stm32_cryp_wait_output(cryp);
cryp             1153 drivers/crypto/stm32/stm32-cryp.c 		dev_err(cryp->dev, "Timeout (read tag)\n");
cryp             1157 drivers/crypto/stm32/stm32-cryp.c 	if (is_encrypt(cryp)) {
cryp             1159 drivers/crypto/stm32/stm32-cryp.c 		dst = sg_virt(cryp->out_sg) + _walked_out;
cryp             1162 drivers/crypto/stm32/stm32-cryp.c 			if (cryp->total_out >= sizeof(u32)) {
cryp             1164 drivers/crypto/stm32/stm32-cryp.c 				*dst = stm32_cryp_read(cryp, CRYP_DOUT);
cryp             1166 drivers/crypto/stm32/stm32-cryp.c 				dst = stm32_cryp_next_out(cryp, dst,
cryp             1168 drivers/crypto/stm32/stm32-cryp.c 				cryp->total_out -= sizeof(u32);
cryp             1169 drivers/crypto/stm32/stm32-cryp.c 			} else if (!cryp->total_out) {
cryp             1171 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_read(cryp, CRYP_DOUT);
cryp             1174 drivers/crypto/stm32/stm32-cryp.c 				d32 = stm32_cryp_read(cryp, CRYP_DOUT);
cryp             1177 drivers/crypto/stm32/stm32-cryp.c 				for (j = 0; j < cryp->total_out; j++) {
cryp             1179 drivers/crypto/stm32/stm32-cryp.c 					dst = stm32_cryp_next_out(cryp, dst, 1);
cryp             1181 drivers/crypto/stm32/stm32-cryp.c 				cryp->total_out = 0;
cryp             1188 drivers/crypto/stm32/stm32-cryp.c 		scatterwalk_map_and_copy(in_tag, cryp->in_sg,
cryp             1189 drivers/crypto/stm32/stm32-cryp.c 					 cryp->total_in_save - cryp->authsize,
cryp             1190 drivers/crypto/stm32/stm32-cryp.c 					 cryp->authsize, 0);
cryp             1193 drivers/crypto/stm32/stm32-cryp.c 			out_tag[i] = stm32_cryp_read(cryp, CRYP_DOUT);
cryp             1195 drivers/crypto/stm32/stm32-cryp.c 		if (crypto_memneq(in_tag, out_tag, cryp->authsize))
cryp             1201 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1206 drivers/crypto/stm32/stm32-cryp.c static void stm32_cryp_check_ctr_counter(struct stm32_cryp *cryp)
cryp             1210 drivers/crypto/stm32/stm32-cryp.c 	if (unlikely(cryp->last_ctr[3] == 0xFFFFFFFF)) {
cryp             1211 drivers/crypto/stm32/stm32-cryp.c 		cryp->last_ctr[3] = 0;
cryp             1212 drivers/crypto/stm32/stm32-cryp.c 		cryp->last_ctr[2]++;
cryp             1213 drivers/crypto/stm32/stm32-cryp.c 		if (!cryp->last_ctr[2]) {
cryp             1214 drivers/crypto/stm32/stm32-cryp.c 			cryp->last_ctr[1]++;
cryp             1215 drivers/crypto/stm32/stm32-cryp.c 			if (!cryp->last_ctr[1])
cryp             1216 drivers/crypto/stm32/stm32-cryp.c 				cryp->last_ctr[0]++;
cryp             1219 drivers/crypto/stm32/stm32-cryp.c 		cr = stm32_cryp_read(cryp, CRYP_CR);
cryp             1220 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_CR, cr & ~CR_CRYPEN);
cryp             1222 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_hw_write_iv(cryp, (u32 *)cryp->last_ctr);
cryp             1224 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_CR, cr);
cryp             1227 drivers/crypto/stm32/stm32-cryp.c 	cryp->last_ctr[0] = stm32_cryp_read(cryp, CRYP_IV0LR);
cryp             1228 drivers/crypto/stm32/stm32-cryp.c 	cryp->last_ctr[1] = stm32_cryp_read(cryp, CRYP_IV0RR);
cryp             1229 drivers/crypto/stm32/stm32-cryp.c 	cryp->last_ctr[2] = stm32_cryp_read(cryp, CRYP_IV1LR);
cryp             1230 drivers/crypto/stm32/stm32-cryp.c 	cryp->last_ctr[3] = stm32_cryp_read(cryp, CRYP_IV1RR);
cryp             1233 drivers/crypto/stm32/stm32-cryp.c static bool stm32_cryp_irq_read_data(struct stm32_cryp *cryp)
cryp             1241 drivers/crypto/stm32/stm32-cryp.c 	if (is_encrypt(cryp) && (is_gcm(cryp) || is_ccm(cryp)))
cryp             1242 drivers/crypto/stm32/stm32-cryp.c 		tag_size = cryp->authsize;
cryp             1246 drivers/crypto/stm32/stm32-cryp.c 	dst = sg_virt(cryp->out_sg) + _walked_out;
cryp             1248 drivers/crypto/stm32/stm32-cryp.c 	for (i = 0; i < cryp->hw_blocksize / sizeof(u32); i++) {
cryp             1249 drivers/crypto/stm32/stm32-cryp.c 		if (likely(cryp->total_out - tag_size >= sizeof(u32))) {
cryp             1251 drivers/crypto/stm32/stm32-cryp.c 			*dst = stm32_cryp_read(cryp, CRYP_DOUT);
cryp             1253 drivers/crypto/stm32/stm32-cryp.c 			dst = stm32_cryp_next_out(cryp, dst, sizeof(u32));
cryp             1254 drivers/crypto/stm32/stm32-cryp.c 			cryp->total_out -= sizeof(u32);
cryp             1255 drivers/crypto/stm32/stm32-cryp.c 		} else if (cryp->total_out == tag_size) {
cryp             1257 drivers/crypto/stm32/stm32-cryp.c 			d32 = stm32_cryp_read(cryp, CRYP_DOUT);
cryp             1260 drivers/crypto/stm32/stm32-cryp.c 			d32 = stm32_cryp_read(cryp, CRYP_DOUT);
cryp             1263 drivers/crypto/stm32/stm32-cryp.c 			for (j = 0; j < cryp->total_out - tag_size; j++) {
cryp             1265 drivers/crypto/stm32/stm32-cryp.c 				dst = stm32_cryp_next_out(cryp, dst, 1);
cryp             1267 drivers/crypto/stm32/stm32-cryp.c 			cryp->total_out = tag_size;
cryp             1271 drivers/crypto/stm32/stm32-cryp.c 	return !(cryp->total_out - tag_size) || !cryp->total_in;
cryp             1274 drivers/crypto/stm32/stm32-cryp.c static void stm32_cryp_irq_write_block(struct stm32_cryp *cryp)
cryp             1282 drivers/crypto/stm32/stm32-cryp.c 	if (is_decrypt(cryp) && (is_gcm(cryp) || is_ccm(cryp)))
cryp             1283 drivers/crypto/stm32/stm32-cryp.c 		tag_size = cryp->authsize;
cryp             1287 drivers/crypto/stm32/stm32-cryp.c 	src = sg_virt(cryp->in_sg) + _walked_in;
cryp             1289 drivers/crypto/stm32/stm32-cryp.c 	for (i = 0; i < cryp->hw_blocksize / sizeof(u32); i++) {
cryp             1290 drivers/crypto/stm32/stm32-cryp.c 		if (likely(cryp->total_in - tag_size >= sizeof(u32))) {
cryp             1292 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_write(cryp, CRYP_DIN, *src);
cryp             1294 drivers/crypto/stm32/stm32-cryp.c 			src = stm32_cryp_next_in(cryp, src, sizeof(u32));
cryp             1295 drivers/crypto/stm32/stm32-cryp.c 			cryp->total_in -= sizeof(u32);
cryp             1296 drivers/crypto/stm32/stm32-cryp.c 		} else if (cryp->total_in == tag_size) {
cryp             1298 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_write(cryp, CRYP_DIN, 0);
cryp             1302 drivers/crypto/stm32/stm32-cryp.c 			for (j = 0; j < cryp->total_in - tag_size; j++) {
cryp             1304 drivers/crypto/stm32/stm32-cryp.c 				src = stm32_cryp_next_in(cryp, src, 1);
cryp             1307 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_write(cryp, CRYP_DIN, *(u32 *)d8);
cryp             1308 drivers/crypto/stm32/stm32-cryp.c 			cryp->total_in = tag_size;
cryp             1313 drivers/crypto/stm32/stm32-cryp.c static void stm32_cryp_irq_write_gcm_padded_data(struct stm32_cryp *cryp)
cryp             1317 drivers/crypto/stm32/stm32-cryp.c 	size_t total_in_ori = cryp->total_in;
cryp             1318 drivers/crypto/stm32/stm32-cryp.c 	struct scatterlist *out_sg_ori = cryp->out_sg;
cryp             1324 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_IMSCR, 0);
cryp             1325 drivers/crypto/stm32/stm32-cryp.c 	cfg = stm32_cryp_read(cryp, CRYP_CR);
cryp             1327 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1330 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_IV1RR, cryp->gcm_ctr - 2);
cryp             1335 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1339 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1342 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_irq_write_block(cryp);
cryp             1343 drivers/crypto/stm32/stm32-cryp.c 	cryp->total_in = total_in_ori;
cryp             1344 drivers/crypto/stm32/stm32-cryp.c 	err = stm32_cryp_wait_output(cryp);
cryp             1346 drivers/crypto/stm32/stm32-cryp.c 		dev_err(cryp->dev, "Timeout (write gcm header)\n");
cryp             1347 drivers/crypto/stm32/stm32-cryp.c 		return stm32_cryp_finish_req(cryp, err);
cryp             1351 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_irq_read_data(cryp);
cryp             1353 drivers/crypto/stm32/stm32-cryp.c 				 cryp->total_in_save - total_in_ori,
cryp             1359 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1364 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1368 drivers/crypto/stm32/stm32-cryp.c 		if (cryp->total_in)
cryp             1369 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_write(cryp, CRYP_DIN, tmp[i]);
cryp             1371 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_write(cryp, CRYP_DIN, 0);
cryp             1373 drivers/crypto/stm32/stm32-cryp.c 		cryp->total_in -= min_t(size_t, sizeof(u32), cryp->total_in);
cryp             1377 drivers/crypto/stm32/stm32-cryp.c 	err = stm32_cryp_wait_output(cryp);
cryp             1379 drivers/crypto/stm32/stm32-cryp.c 		dev_err(cryp->dev, "Timeout (write gcm header)\n");
cryp             1380 drivers/crypto/stm32/stm32-cryp.c 		return stm32_cryp_finish_req(cryp, err);
cryp             1384 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_read(cryp, CRYP_DOUT);
cryp             1387 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_finish_req(cryp, 0);
cryp             1390 drivers/crypto/stm32/stm32-cryp.c static void stm32_cryp_irq_set_npblb(struct stm32_cryp *cryp)
cryp             1395 drivers/crypto/stm32/stm32-cryp.c 	cfg = stm32_cryp_read(cryp, CRYP_CR);
cryp             1397 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1399 drivers/crypto/stm32/stm32-cryp.c 	payload_bytes = is_decrypt(cryp) ? cryp->total_in - cryp->authsize :
cryp             1400 drivers/crypto/stm32/stm32-cryp.c 					   cryp->total_in;
cryp             1401 drivers/crypto/stm32/stm32-cryp.c 	cfg |= (cryp->hw_blocksize - payload_bytes) << CR_NBPBL_SHIFT;
cryp             1403 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1406 drivers/crypto/stm32/stm32-cryp.c static void stm32_cryp_irq_write_ccm_padded_data(struct stm32_cryp *cryp)
cryp             1411 drivers/crypto/stm32/stm32-cryp.c 	size_t last_total_out, total_in_ori = cryp->total_in;
cryp             1412 drivers/crypto/stm32/stm32-cryp.c 	struct scatterlist *out_sg_ori = cryp->out_sg;
cryp             1416 drivers/crypto/stm32/stm32-cryp.c 	cryp->flags |= FLG_CCM_PADDED_WA;
cryp             1419 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_IMSCR, 0);
cryp             1421 drivers/crypto/stm32/stm32-cryp.c 	cfg = stm32_cryp_read(cryp, CRYP_CR);
cryp             1423 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1426 drivers/crypto/stm32/stm32-cryp.c 	iv1tmp = stm32_cryp_read(cryp, CRYP_CSGCMCCM0R + 7 * 4);
cryp             1430 drivers/crypto/stm32/stm32-cryp.c 		cstmp1[i] = stm32_cryp_read(cryp, CRYP_CSGCMCCM0R + i * 4);
cryp             1433 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_IV1RR, iv1tmp);
cryp             1438 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1442 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1445 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_irq_write_block(cryp);
cryp             1446 drivers/crypto/stm32/stm32-cryp.c 	cryp->total_in = total_in_ori;
cryp             1447 drivers/crypto/stm32/stm32-cryp.c 	err = stm32_cryp_wait_output(cryp);
cryp             1449 drivers/crypto/stm32/stm32-cryp.c 		dev_err(cryp->dev, "Timeout (wite ccm padded data)\n");
cryp             1450 drivers/crypto/stm32/stm32-cryp.c 		return stm32_cryp_finish_req(cryp, err);
cryp             1454 drivers/crypto/stm32/stm32-cryp.c 	last_total_out = cryp->total_out;
cryp             1455 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_irq_read_data(cryp);
cryp             1459 drivers/crypto/stm32/stm32-cryp.c 				 cryp->total_out_save - last_total_out,
cryp             1464 drivers/crypto/stm32/stm32-cryp.c 		cstmp2[i] = stm32_cryp_read(cryp, CRYP_CSGCMCCM0R + i * 4);
cryp             1469 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1474 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1480 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_DIN, tmp[i]);
cryp             1484 drivers/crypto/stm32/stm32-cryp.c 	err = stm32_cryp_wait_busy(cryp);
cryp             1486 drivers/crypto/stm32/stm32-cryp.c 		dev_err(cryp->dev, "Timeout (wite ccm padded data)\n");
cryp             1489 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_finish_req(cryp, err);
cryp             1492 drivers/crypto/stm32/stm32-cryp.c static void stm32_cryp_irq_write_data(struct stm32_cryp *cryp)
cryp             1494 drivers/crypto/stm32/stm32-cryp.c 	if (unlikely(!cryp->total_in)) {
cryp             1495 drivers/crypto/stm32/stm32-cryp.c 		dev_warn(cryp->dev, "No more data to process\n");
cryp             1499 drivers/crypto/stm32/stm32-cryp.c 	if (unlikely(cryp->total_in < AES_BLOCK_SIZE &&
cryp             1500 drivers/crypto/stm32/stm32-cryp.c 		     (stm32_cryp_get_hw_mode(cryp) == CR_AES_GCM) &&
cryp             1501 drivers/crypto/stm32/stm32-cryp.c 		     is_encrypt(cryp))) {
cryp             1503 drivers/crypto/stm32/stm32-cryp.c 		if (cryp->caps->padding_wa)
cryp             1505 drivers/crypto/stm32/stm32-cryp.c 			return stm32_cryp_irq_write_gcm_padded_data(cryp);
cryp             1508 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_irq_set_npblb(cryp);
cryp             1511 drivers/crypto/stm32/stm32-cryp.c 	if (unlikely((cryp->total_in - cryp->authsize < AES_BLOCK_SIZE) &&
cryp             1512 drivers/crypto/stm32/stm32-cryp.c 		     (stm32_cryp_get_hw_mode(cryp) == CR_AES_CCM) &&
cryp             1513 drivers/crypto/stm32/stm32-cryp.c 		     is_decrypt(cryp))) {
cryp             1515 drivers/crypto/stm32/stm32-cryp.c 		if (cryp->caps->padding_wa)
cryp             1517 drivers/crypto/stm32/stm32-cryp.c 			return stm32_cryp_irq_write_ccm_padded_data(cryp);
cryp             1520 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_irq_set_npblb(cryp);
cryp             1523 drivers/crypto/stm32/stm32-cryp.c 	if (is_aes(cryp) && is_ctr(cryp))
cryp             1524 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_check_ctr_counter(cryp);
cryp             1526 drivers/crypto/stm32/stm32-cryp.c 	stm32_cryp_irq_write_block(cryp);
cryp             1529 drivers/crypto/stm32/stm32-cryp.c static void stm32_cryp_irq_write_gcm_header(struct stm32_cryp *cryp)
cryp             1535 drivers/crypto/stm32/stm32-cryp.c 	src = sg_virt(cryp->in_sg) + _walked_in;
cryp             1538 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_DIN, *src);
cryp             1540 drivers/crypto/stm32/stm32-cryp.c 		src = stm32_cryp_next_in(cryp, src, sizeof(u32));
cryp             1541 drivers/crypto/stm32/stm32-cryp.c 		cryp->total_in -= min_t(size_t, sizeof(u32), cryp->total_in);
cryp             1544 drivers/crypto/stm32/stm32-cryp.c 		if ((cryp->total_in_save - cryp->total_in) ==
cryp             1545 drivers/crypto/stm32/stm32-cryp.c 				cryp->areq->assoclen) {
cryp             1548 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_write(cryp, CRYP_DIN, 0);
cryp             1551 drivers/crypto/stm32/stm32-cryp.c 			err = stm32_cryp_wait_busy(cryp);
cryp             1553 drivers/crypto/stm32/stm32-cryp.c 				dev_err(cryp->dev, "Timeout (gcm header)\n");
cryp             1554 drivers/crypto/stm32/stm32-cryp.c 				return stm32_cryp_finish_req(cryp, err);
cryp             1557 drivers/crypto/stm32/stm32-cryp.c 			if (stm32_cryp_get_input_text_len(cryp)) {
cryp             1559 drivers/crypto/stm32/stm32-cryp.c 				cfg = stm32_cryp_read(cryp, CRYP_CR);
cryp             1561 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1566 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1569 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_write(cryp, CRYP_IMSCR, 0);
cryp             1570 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_finish_req(cryp, 0);
cryp             1576 drivers/crypto/stm32/stm32-cryp.c 		if (!cryp->total_in)
cryp             1581 drivers/crypto/stm32/stm32-cryp.c static void stm32_cryp_irq_write_ccm_header(struct stm32_cryp *cryp)
cryp             1588 drivers/crypto/stm32/stm32-cryp.c 	src = sg_virt(cryp->in_sg) + _walked_in;
cryp             1589 drivers/crypto/stm32/stm32-cryp.c 	alen = cryp->areq->assoclen;
cryp             1592 drivers/crypto/stm32/stm32-cryp.c 		if (cryp->areq->assoclen <= 65280) {
cryp             1597 drivers/crypto/stm32/stm32-cryp.c 			src = stm32_cryp_next_in(cryp, src, 1);
cryp             1599 drivers/crypto/stm32/stm32-cryp.c 			src = stm32_cryp_next_in(cryp, src, 1);
cryp             1601 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_write(cryp, CRYP_DIN, *(u32 *)d8);
cryp             1604 drivers/crypto/stm32/stm32-cryp.c 			cryp->total_in -= min_t(size_t, 2, cryp->total_in);
cryp             1612 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_write(cryp, CRYP_DIN, *(u32 *)d8);
cryp             1618 drivers/crypto/stm32/stm32-cryp.c 			src = stm32_cryp_next_in(cryp, src, 1);
cryp             1620 drivers/crypto/stm32/stm32-cryp.c 			src = stm32_cryp_next_in(cryp, src, 1);
cryp             1622 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_write(cryp, CRYP_DIN, *(u32 *)d8);
cryp             1625 drivers/crypto/stm32/stm32-cryp.c 			cryp->total_in -= min_t(size_t, 2, cryp->total_in);
cryp             1635 drivers/crypto/stm32/stm32-cryp.c 			src = stm32_cryp_next_in(cryp, src, 1);
cryp             1637 drivers/crypto/stm32/stm32-cryp.c 			cryp->total_in -= min_t(size_t, 1, cryp->total_in);
cryp             1638 drivers/crypto/stm32/stm32-cryp.c 			if ((cryp->total_in_save - cryp->total_in) == alen)
cryp             1642 drivers/crypto/stm32/stm32-cryp.c 		stm32_cryp_write(cryp, CRYP_DIN, *(u32 *)d8);
cryp             1644 drivers/crypto/stm32/stm32-cryp.c 		if ((cryp->total_in_save - cryp->total_in) == alen) {
cryp             1647 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_write(cryp, CRYP_DIN, 0);
cryp             1650 drivers/crypto/stm32/stm32-cryp.c 			err = stm32_cryp_wait_busy(cryp);
cryp             1652 drivers/crypto/stm32/stm32-cryp.c 				dev_err(cryp->dev, "Timeout (ccm header)\n");
cryp             1653 drivers/crypto/stm32/stm32-cryp.c 				return stm32_cryp_finish_req(cryp, err);
cryp             1656 drivers/crypto/stm32/stm32-cryp.c 			if (stm32_cryp_get_input_text_len(cryp)) {
cryp             1658 drivers/crypto/stm32/stm32-cryp.c 				cfg = stm32_cryp_read(cryp, CRYP_CR);
cryp             1660 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1665 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_write(cryp, CRYP_CR, cfg);
cryp             1668 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_write(cryp, CRYP_IMSCR, 0);
cryp             1669 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_finish_req(cryp, 0);
cryp             1679 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp *cryp = arg;
cryp             1682 drivers/crypto/stm32/stm32-cryp.c 	if (cryp->irq_status & MISR_OUT)
cryp             1684 drivers/crypto/stm32/stm32-cryp.c 		if (unlikely(stm32_cryp_irq_read_data(cryp))) {
cryp             1686 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_write(cryp, CRYP_IMSCR, 0);
cryp             1687 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_finish_req(cryp, 0);
cryp             1691 drivers/crypto/stm32/stm32-cryp.c 	if (cryp->irq_status & MISR_IN) {
cryp             1692 drivers/crypto/stm32/stm32-cryp.c 		if (is_gcm(cryp)) {
cryp             1693 drivers/crypto/stm32/stm32-cryp.c 			ph = stm32_cryp_read(cryp, CRYP_CR) & CR_PH_MASK;
cryp             1696 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_irq_write_gcm_header(cryp);
cryp             1699 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_irq_write_data(cryp);
cryp             1700 drivers/crypto/stm32/stm32-cryp.c 			cryp->gcm_ctr++;
cryp             1701 drivers/crypto/stm32/stm32-cryp.c 		} else if (is_ccm(cryp)) {
cryp             1702 drivers/crypto/stm32/stm32-cryp.c 			ph = stm32_cryp_read(cryp, CRYP_CR) & CR_PH_MASK;
cryp             1705 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_irq_write_ccm_header(cryp);
cryp             1708 drivers/crypto/stm32/stm32-cryp.c 				stm32_cryp_irq_write_data(cryp);
cryp             1711 drivers/crypto/stm32/stm32-cryp.c 			stm32_cryp_irq_write_data(cryp);
cryp             1720 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp *cryp = arg;
cryp             1722 drivers/crypto/stm32/stm32-cryp.c 	cryp->irq_status = stm32_cryp_read(cryp, CRYP_MISR);
cryp             1937 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp *cryp;
cryp             1941 drivers/crypto/stm32/stm32-cryp.c 	cryp = devm_kzalloc(dev, sizeof(*cryp), GFP_KERNEL);
cryp             1942 drivers/crypto/stm32/stm32-cryp.c 	if (!cryp)
cryp             1945 drivers/crypto/stm32/stm32-cryp.c 	cryp->caps = of_device_get_match_data(dev);
cryp             1946 drivers/crypto/stm32/stm32-cryp.c 	if (!cryp->caps)
cryp             1949 drivers/crypto/stm32/stm32-cryp.c 	cryp->dev = dev;
cryp             1951 drivers/crypto/stm32/stm32-cryp.c 	cryp->regs = devm_platform_ioremap_resource(pdev, 0);
cryp             1952 drivers/crypto/stm32/stm32-cryp.c 	if (IS_ERR(cryp->regs))
cryp             1953 drivers/crypto/stm32/stm32-cryp.c 		return PTR_ERR(cryp->regs);
cryp             1961 drivers/crypto/stm32/stm32-cryp.c 					dev_name(dev), cryp);
cryp             1967 drivers/crypto/stm32/stm32-cryp.c 	cryp->clk = devm_clk_get(dev, NULL);
cryp             1968 drivers/crypto/stm32/stm32-cryp.c 	if (IS_ERR(cryp->clk)) {
cryp             1970 drivers/crypto/stm32/stm32-cryp.c 		return PTR_ERR(cryp->clk);
cryp             1973 drivers/crypto/stm32/stm32-cryp.c 	ret = clk_prepare_enable(cryp->clk);
cryp             1975 drivers/crypto/stm32/stm32-cryp.c 		dev_err(cryp->dev, "Failed to enable clock\n");
cryp             1993 drivers/crypto/stm32/stm32-cryp.c 	platform_set_drvdata(pdev, cryp);
cryp             1996 drivers/crypto/stm32/stm32-cryp.c 	list_add(&cryp->list, &cryp_list.dev_list);
cryp             2000 drivers/crypto/stm32/stm32-cryp.c 	cryp->engine = crypto_engine_alloc_init(dev, 1);
cryp             2001 drivers/crypto/stm32/stm32-cryp.c 	if (!cryp->engine) {
cryp             2007 drivers/crypto/stm32/stm32-cryp.c 	ret = crypto_engine_start(cryp->engine);
cryp             2033 drivers/crypto/stm32/stm32-cryp.c 	crypto_engine_exit(cryp->engine);
cryp             2036 drivers/crypto/stm32/stm32-cryp.c 	list_del(&cryp->list);
cryp             2044 drivers/crypto/stm32/stm32-cryp.c 	clk_disable_unprepare(cryp->clk);
cryp             2051 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp *cryp = platform_get_drvdata(pdev);
cryp             2054 drivers/crypto/stm32/stm32-cryp.c 	if (!cryp)
cryp             2057 drivers/crypto/stm32/stm32-cryp.c 	ret = pm_runtime_get_sync(cryp->dev);
cryp             2064 drivers/crypto/stm32/stm32-cryp.c 	crypto_engine_exit(cryp->engine);
cryp             2067 drivers/crypto/stm32/stm32-cryp.c 	list_del(&cryp->list);
cryp             2070 drivers/crypto/stm32/stm32-cryp.c 	pm_runtime_disable(cryp->dev);
cryp             2071 drivers/crypto/stm32/stm32-cryp.c 	pm_runtime_put_noidle(cryp->dev);
cryp             2073 drivers/crypto/stm32/stm32-cryp.c 	clk_disable_unprepare(cryp->clk);
cryp             2081 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp *cryp = dev_get_drvdata(dev);
cryp             2083 drivers/crypto/stm32/stm32-cryp.c 	clk_disable_unprepare(cryp->clk);
cryp             2090 drivers/crypto/stm32/stm32-cryp.c 	struct stm32_cryp *cryp = dev_get_drvdata(dev);
cryp             2093 drivers/crypto/stm32/stm32-cryp.c 	ret = clk_prepare_enable(cryp->clk);
cryp             2095 drivers/crypto/stm32/stm32-cryp.c 		dev_err(cryp->dev, "Failed to prepare_enable clock\n");