|
@@ -475,6 +475,19 @@ static int cryp_get_device_data(struct cryp_ctx *ctx,
|
|
|
static void cryp_dma_setup_channel(struct cryp_device_data *device_data,
|
|
|
struct device *dev)
|
|
|
{
|
|
|
+ struct dma_slave_config mem2cryp = {
|
|
|
+ .direction = DMA_MEM_TO_DEV,
|
|
|
+ .dst_addr = device_data->phybase + CRYP_DMA_TX_FIFO,
|
|
|
+ .dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES,
|
|
|
+ .dst_maxburst = 4,
|
|
|
+ };
|
|
|
+ struct dma_slave_config cryp2mem = {
|
|
|
+ .direction = DMA_DEV_TO_MEM,
|
|
|
+ .src_addr = device_data->phybase + CRYP_DMA_RX_FIFO,
|
|
|
+ .src_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES,
|
|
|
+ .src_maxburst = 4,
|
|
|
+ };
|
|
|
+
|
|
|
dma_cap_zero(device_data->dma.mask);
|
|
|
dma_cap_set(DMA_SLAVE, device_data->dma.mask);
|
|
|
|
|
@@ -490,6 +503,9 @@ static void cryp_dma_setup_channel(struct cryp_device_data *device_data,
|
|
|
stedma40_filter,
|
|
|
device_data->dma.cfg_cryp2mem);
|
|
|
|
|
|
+ dmaengine_slave_config(device_data->dma.chan_mem2cryp, &mem2cryp);
|
|
|
+ dmaengine_slave_config(device_data->dma.chan_cryp2mem, &cryp2mem);
|
|
|
+
|
|
|
init_completion(&device_data->dma.cryp_dma_complete);
|
|
|
}
|
|
|
|
|
@@ -1431,6 +1447,7 @@ static int ux500_cryp_probe(struct platform_device *pdev)
|
|
|
goto out_kfree;
|
|
|
}
|
|
|
|
|
|
+ device_data->phybase = res->start;
|
|
|
device_data->base = ioremap(res->start, resource_size(res));
|
|
|
if (!device_data->base) {
|
|
|
dev_err(dev, "[%s]: ioremap failed!", __func__);
|