|
@@ -122,6 +122,13 @@ static void hash_dma_setup_channel(struct hash_device_data *device_data,
|
|
|
struct device *dev)
|
|
|
{
|
|
|
struct hash_platform_data *platform_data = dev->platform_data;
|
|
|
+ struct dma_slave_config conf = {
|
|
|
+ .direction = DMA_MEM_TO_DEV,
|
|
|
+ .dst_addr = device_data->phybase + HASH_DMA_FIFO,
|
|
|
+ .dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES,
|
|
|
+ .dst_maxburst = 16,
|
|
|
+ };
|
|
|
+
|
|
|
dma_cap_zero(device_data->dma.mask);
|
|
|
dma_cap_set(DMA_SLAVE, device_data->dma.mask);
|
|
|
|
|
@@ -131,6 +138,8 @@ static void hash_dma_setup_channel(struct hash_device_data *device_data,
|
|
|
platform_data->dma_filter,
|
|
|
device_data->dma.cfg_mem2hash);
|
|
|
|
|
|
+ dmaengine_slave_config(device_data->dma.chan_mem2hash, &conf);
|
|
|
+
|
|
|
init_completion(&device_data->dma.complete);
|
|
|
}
|
|
|
|
|
@@ -1699,6 +1708,7 @@ static int ux500_hash_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!",
|