mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	crypto: atmel-tdes - Retire dma_request_slave_channel_compat()
The driver no longer boots in legacy mode, only via DT. This makes the dma_request_slave_channel_compat() redundant. If ever the filter function would be executed it will return false as the dma_slave is not really initialized. Switch to use dma_request_chan() which would allow legacy boot if ever needed again by configuring dma_slave_map for the DMA driver. At the same time skip allocating memory for dma_slave as it is not used anymore. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
		
							parent
							
								
									db28512f48
								
							
						
					
					
						commit
						45a536e3a7
					
				
					 1 changed files with 13 additions and 34 deletions
				
			
		| 
						 | 
					@ -739,31 +739,17 @@ static int atmel_tdes_crypt(struct skcipher_request *req, unsigned long mode)
 | 
				
			||||||
	return atmel_tdes_handle_queue(ctx->dd, req);
 | 
						return atmel_tdes_handle_queue(ctx->dd, req);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool atmel_tdes_filter(struct dma_chan *chan, void *slave)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct at_dma_slave	*sl = slave;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (sl && sl->dma_dev == chan->device->dev) {
 | 
					 | 
				
			||||||
		chan->private = sl;
 | 
					 | 
				
			||||||
		return true;
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		return false;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int atmel_tdes_dma_init(struct atmel_tdes_dev *dd,
 | 
					static int atmel_tdes_dma_init(struct atmel_tdes_dev *dd,
 | 
				
			||||||
			struct crypto_platform_data *pdata)
 | 
								struct crypto_platform_data *pdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	dma_cap_mask_t mask;
 | 
						int ret;
 | 
				
			||||||
 | 
					 | 
				
			||||||
	dma_cap_zero(mask);
 | 
					 | 
				
			||||||
	dma_cap_set(DMA_SLAVE, mask);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Try to grab 2 DMA channels */
 | 
						/* Try to grab 2 DMA channels */
 | 
				
			||||||
	dd->dma_lch_in.chan = dma_request_slave_channel_compat(mask,
 | 
						dd->dma_lch_in.chan = dma_request_chan(dd->dev, "tx");
 | 
				
			||||||
			atmel_tdes_filter, &pdata->dma_slave->rxdata, dd->dev, "tx");
 | 
						if (IS_ERR(dd->dma_lch_in.chan)) {
 | 
				
			||||||
	if (!dd->dma_lch_in.chan)
 | 
							ret = PTR_ERR(dd->dma_lch_in.chan);
 | 
				
			||||||
		goto err_dma_in;
 | 
							goto err_dma_in;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dd->dma_lch_in.dma_conf.direction = DMA_MEM_TO_DEV;
 | 
						dd->dma_lch_in.dma_conf.direction = DMA_MEM_TO_DEV;
 | 
				
			||||||
	dd->dma_lch_in.dma_conf.dst_addr = dd->phys_base +
 | 
						dd->dma_lch_in.dma_conf.dst_addr = dd->phys_base +
 | 
				
			||||||
| 
						 | 
					@ -776,10 +762,11 @@ static int atmel_tdes_dma_init(struct atmel_tdes_dev *dd,
 | 
				
			||||||
		DMA_SLAVE_BUSWIDTH_4_BYTES;
 | 
							DMA_SLAVE_BUSWIDTH_4_BYTES;
 | 
				
			||||||
	dd->dma_lch_in.dma_conf.device_fc = false;
 | 
						dd->dma_lch_in.dma_conf.device_fc = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dd->dma_lch_out.chan = dma_request_slave_channel_compat(mask,
 | 
						dd->dma_lch_out.chan = dma_request_chan(dd->dev, "rx");
 | 
				
			||||||
			atmel_tdes_filter, &pdata->dma_slave->txdata, dd->dev, "rx");
 | 
						if (IS_ERR(dd->dma_lch_out.chan)) {
 | 
				
			||||||
	if (!dd->dma_lch_out.chan)
 | 
							ret = PTR_ERR(dd->dma_lch_out.chan);
 | 
				
			||||||
		goto err_dma_out;
 | 
							goto err_dma_out;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dd->dma_lch_out.dma_conf.direction = DMA_DEV_TO_MEM;
 | 
						dd->dma_lch_out.dma_conf.direction = DMA_DEV_TO_MEM;
 | 
				
			||||||
	dd->dma_lch_out.dma_conf.src_addr = dd->phys_base +
 | 
						dd->dma_lch_out.dma_conf.src_addr = dd->phys_base +
 | 
				
			||||||
| 
						 | 
					@ -797,8 +784,9 @@ static int atmel_tdes_dma_init(struct atmel_tdes_dev *dd,
 | 
				
			||||||
err_dma_out:
 | 
					err_dma_out:
 | 
				
			||||||
	dma_release_channel(dd->dma_lch_in.chan);
 | 
						dma_release_channel(dd->dma_lch_in.chan);
 | 
				
			||||||
err_dma_in:
 | 
					err_dma_in:
 | 
				
			||||||
 | 
						if (ret != -EPROBE_DEFER)
 | 
				
			||||||
		dev_warn(dd->dev, "no DMA channel available\n");
 | 
							dev_warn(dd->dev, "no DMA channel available\n");
 | 
				
			||||||
	return -ENODEV;
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void atmel_tdes_dma_cleanup(struct atmel_tdes_dev *dd)
 | 
					static void atmel_tdes_dma_cleanup(struct atmel_tdes_dev *dd)
 | 
				
			||||||
| 
						 | 
					@ -1229,12 +1217,6 @@ static struct crypto_platform_data *atmel_tdes_of_init(struct platform_device *p
 | 
				
			||||||
	if (!pdata)
 | 
						if (!pdata)
 | 
				
			||||||
		return ERR_PTR(-ENOMEM);
 | 
							return ERR_PTR(-ENOMEM);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pdata->dma_slave = devm_kzalloc(&pdev->dev,
 | 
					 | 
				
			||||||
					sizeof(*(pdata->dma_slave)),
 | 
					 | 
				
			||||||
					GFP_KERNEL);
 | 
					 | 
				
			||||||
	if (!pdata->dma_slave)
 | 
					 | 
				
			||||||
		return ERR_PTR(-ENOMEM);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return pdata;
 | 
						return pdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#else /* CONFIG_OF */
 | 
					#else /* CONFIG_OF */
 | 
				
			||||||
| 
						 | 
					@ -1328,10 +1310,7 @@ static int atmel_tdes_probe(struct platform_device *pdev)
 | 
				
			||||||
				goto err_pdata;
 | 
									goto err_pdata;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (!pdata->dma_slave) {
 | 
					
 | 
				
			||||||
			err = -ENXIO;
 | 
					 | 
				
			||||||
			goto err_pdata;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		err = atmel_tdes_dma_init(tdes_dd, pdata);
 | 
							err = atmel_tdes_dma_init(tdes_dd, pdata);
 | 
				
			||||||
		if (err)
 | 
							if (err)
 | 
				
			||||||
			goto err_tdes_dma;
 | 
								goto err_tdes_dma;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue