Searched refs:sdcp (Results 1 - 1 of 1) sorted by relevance

/linux-4.1.27/drivers/crypto/
H A Dmxs-dcp.c153 struct dcp *sdcp = global_sdcp; mxs_dcp_start_dma() local
157 struct dcp_dma_desc *desc = &sdcp->coh->desc[actx->chan]; mxs_dcp_start_dma()
159 dma_addr_t desc_phys = dma_map_single(sdcp->dev, desc, sizeof(*desc), mxs_dcp_start_dma()
162 reinit_completion(&sdcp->completion[chan]); mxs_dcp_start_dma()
165 writel(0xffffffff, sdcp->base + MXS_DCP_CH_N_STAT_CLR(chan)); mxs_dcp_start_dma()
168 writel(desc_phys, sdcp->base + MXS_DCP_CH_N_CMDPTR(chan)); mxs_dcp_start_dma()
171 writel(1, sdcp->base + MXS_DCP_CH_N_SEMA(chan)); mxs_dcp_start_dma()
173 ret = wait_for_completion_timeout(&sdcp->completion[chan], mxs_dcp_start_dma()
176 dev_err(sdcp->dev, "Channel %i timeout (DCP_STAT=0x%08x)\n", mxs_dcp_start_dma()
177 chan, readl(sdcp->base + MXS_DCP_STAT)); mxs_dcp_start_dma()
181 stat = readl(sdcp->base + MXS_DCP_CH_N_STAT(chan)); mxs_dcp_start_dma()
183 dev_err(sdcp->dev, "Channel %i error (CH_STAT=0x%08x)\n", mxs_dcp_start_dma()
188 dma_unmap_single(sdcp->dev, desc_phys, sizeof(*desc), DMA_TO_DEVICE); mxs_dcp_start_dma()
199 struct dcp *sdcp = global_sdcp; mxs_dcp_run_aes() local
200 struct dcp_dma_desc *desc = &sdcp->coh->desc[actx->chan]; mxs_dcp_run_aes()
204 dma_addr_t key_phys = dma_map_single(sdcp->dev, sdcp->coh->aes_key, mxs_dcp_run_aes()
207 dma_addr_t src_phys = dma_map_single(sdcp->dev, sdcp->coh->aes_in_buf, mxs_dcp_run_aes()
209 dma_addr_t dst_phys = dma_map_single(sdcp->dev, sdcp->coh->aes_out_buf, mxs_dcp_run_aes()
241 dma_unmap_single(sdcp->dev, key_phys, 2 * AES_KEYSIZE_128, mxs_dcp_run_aes()
243 dma_unmap_single(sdcp->dev, src_phys, DCP_BUF_SZ, DMA_TO_DEVICE); mxs_dcp_run_aes()
244 dma_unmap_single(sdcp->dev, dst_phys, DCP_BUF_SZ, DMA_FROM_DEVICE); mxs_dcp_run_aes()
251 struct dcp *sdcp = global_sdcp; mxs_dcp_aes_block_crypt() local
262 uint8_t *in_buf = sdcp->coh->aes_in_buf; mxs_dcp_aes_block_crypt()
263 uint8_t *out_buf = sdcp->coh->aes_out_buf; mxs_dcp_aes_block_crypt()
268 uint8_t *key = sdcp->coh->aes_key; mxs_dcp_aes_block_crypt()
344 struct dcp *sdcp = global_sdcp; dcp_chan_thread_aes() local
355 mutex_lock(&sdcp->mutex[chan]); dcp_chan_thread_aes()
356 backlog = crypto_get_backlog(&sdcp->queue[chan]); dcp_chan_thread_aes()
357 arq = crypto_dequeue_request(&sdcp->queue[chan]); dcp_chan_thread_aes()
358 mutex_unlock(&sdcp->mutex[chan]); dcp_chan_thread_aes()
397 struct dcp *sdcp = global_sdcp; mxs_dcp_aes_enqueue() local
410 mutex_lock(&sdcp->mutex[actx->chan]); mxs_dcp_aes_enqueue()
411 ret = crypto_enqueue_request(&sdcp->queue[actx->chan], &req->base); mxs_dcp_aes_enqueue()
412 mutex_unlock(&sdcp->mutex[actx->chan]); mxs_dcp_aes_enqueue()
414 wake_up_process(sdcp->thread[actx->chan]); mxs_dcp_aes_enqueue()
511 struct dcp *sdcp = global_sdcp; mxs_dcp_run_sha() local
519 struct dcp_dma_desc *desc = &sdcp->coh->desc[actx->chan]; mxs_dcp_run_sha()
522 dma_addr_t buf_phys = dma_map_single(sdcp->dev, sdcp->coh->sha_in_buf, mxs_dcp_run_sha()
542 digest_phys = dma_map_single(sdcp->dev, req->result, mxs_dcp_run_sha()
551 dma_unmap_single(sdcp->dev, digest_phys, halg->digestsize, mxs_dcp_run_sha()
554 dma_unmap_single(sdcp->dev, buf_phys, DCP_BUF_SZ, DMA_TO_DEVICE); mxs_dcp_run_sha()
561 struct dcp *sdcp = global_sdcp; dcp_sha_req_to_buf() local
570 uint8_t *in_buf = sdcp->coh->sha_in_buf; dcp_sha_req_to_buf()
637 struct dcp *sdcp = global_sdcp; dcp_chan_thread_sha() local
651 mutex_lock(&sdcp->mutex[chan]); dcp_chan_thread_sha()
652 backlog = crypto_get_backlog(&sdcp->queue[chan]); dcp_chan_thread_sha()
653 arq = crypto_dequeue_request(&sdcp->queue[chan]); dcp_chan_thread_sha()
654 mutex_unlock(&sdcp->mutex[chan]); dcp_chan_thread_sha()
705 struct dcp *sdcp = global_sdcp; dcp_sha_update_fx() local
729 mutex_lock(&sdcp->mutex[actx->chan]); dcp_sha_update_fx()
730 ret = crypto_enqueue_request(&sdcp->queue[actx->chan], &req->base); dcp_sha_update_fx()
731 mutex_unlock(&sdcp->mutex[actx->chan]); dcp_sha_update_fx()
733 wake_up_process(sdcp->thread[actx->chan]); dcp_sha_update_fx()
880 struct dcp *sdcp = context; mxs_dcp_irq() local
884 stat = readl(sdcp->base + MXS_DCP_STAT); mxs_dcp_irq()
890 writel(stat, sdcp->base + MXS_DCP_STAT_CLR); mxs_dcp_irq()
895 complete(&sdcp->completion[i]); mxs_dcp_irq()
903 struct dcp *sdcp = NULL; mxs_dcp_probe() local
923 sdcp = devm_kzalloc(dev, sizeof(*sdcp), GFP_KERNEL); mxs_dcp_probe()
924 if (!sdcp) mxs_dcp_probe()
927 sdcp->dev = dev; mxs_dcp_probe()
928 sdcp->base = devm_ioremap_resource(dev, iores); mxs_dcp_probe()
929 if (IS_ERR(sdcp->base)) mxs_dcp_probe()
930 return PTR_ERR(sdcp->base); mxs_dcp_probe()
934 "dcp-vmi-irq", sdcp); mxs_dcp_probe()
941 "dcp-irq", sdcp); mxs_dcp_probe()
948 sdcp->coh = devm_kzalloc(dev, sizeof(*sdcp->coh) + DCP_ALIGNMENT, mxs_dcp_probe()
950 if (!sdcp->coh) mxs_dcp_probe()
954 sdcp->coh = PTR_ALIGN(sdcp->coh, DCP_ALIGNMENT); mxs_dcp_probe()
957 ret = stmp_reset_block(sdcp->base); mxs_dcp_probe()
964 sdcp->base + MXS_DCP_CTRL); mxs_dcp_probe()
968 sdcp->base + MXS_DCP_CHANNELCTRL); mxs_dcp_probe()
977 writel(0xffff0000, sdcp->base + MXS_DCP_CONTEXT); mxs_dcp_probe()
979 writel(0xffffffff, sdcp->base + MXS_DCP_CH_N_STAT_CLR(i)); mxs_dcp_probe()
980 writel(0xffffffff, sdcp->base + MXS_DCP_STAT_CLR); mxs_dcp_probe()
982 global_sdcp = sdcp; mxs_dcp_probe()
984 platform_set_drvdata(pdev, sdcp); mxs_dcp_probe()
987 mutex_init(&sdcp->mutex[i]); mxs_dcp_probe()
988 init_completion(&sdcp->completion[i]); mxs_dcp_probe()
989 crypto_init_queue(&sdcp->queue[i], 50); mxs_dcp_probe()
993 sdcp->thread[DCP_CHAN_HASH_SHA] = kthread_run(dcp_chan_thread_sha, mxs_dcp_probe()
995 if (IS_ERR(sdcp->thread[DCP_CHAN_HASH_SHA])) { mxs_dcp_probe()
997 return PTR_ERR(sdcp->thread[DCP_CHAN_HASH_SHA]); mxs_dcp_probe()
1000 sdcp->thread[DCP_CHAN_CRYPTO] = kthread_run(dcp_chan_thread_aes, mxs_dcp_probe()
1002 if (IS_ERR(sdcp->thread[DCP_CHAN_CRYPTO])) { mxs_dcp_probe()
1004 ret = PTR_ERR(sdcp->thread[DCP_CHAN_CRYPTO]); mxs_dcp_probe()
1009 sdcp->caps = readl(sdcp->base + MXS_DCP_CAPABILITY1); mxs_dcp_probe()
1011 if (sdcp->caps & MXS_DCP_CAPABILITY1_AES128) { mxs_dcp_probe()
1021 if (sdcp->caps & MXS_DCP_CAPABILITY1_SHA1) { mxs_dcp_probe()
1030 if (sdcp->caps & MXS_DCP_CAPABILITY1_SHA256) { mxs_dcp_probe()
1042 if (sdcp->caps & MXS_DCP_CAPABILITY1_SHA1) mxs_dcp_probe()
1046 if (sdcp->caps & MXS_DCP_CAPABILITY1_AES128) mxs_dcp_probe()
1050 kthread_stop(sdcp->thread[DCP_CHAN_CRYPTO]); mxs_dcp_probe()
1053 kthread_stop(sdcp->thread[DCP_CHAN_HASH_SHA]); mxs_dcp_probe()
1059 struct dcp *sdcp = platform_get_drvdata(pdev); mxs_dcp_remove() local
1061 if (sdcp->caps & MXS_DCP_CAPABILITY1_SHA256) mxs_dcp_remove()
1064 if (sdcp->caps & MXS_DCP_CAPABILITY1_SHA1) mxs_dcp_remove()
1067 if (sdcp->caps & MXS_DCP_CAPABILITY1_AES128) mxs_dcp_remove()
1070 kthread_stop(sdcp->thread[DCP_CHAN_HASH_SHA]); mxs_dcp_remove()
1071 kthread_stop(sdcp->thread[DCP_CHAN_CRYPTO]); mxs_dcp_remove()

Completed in 51 milliseconds