lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Fri, 27 Apr 2012 11:11:46 -0600
From:	Grant Likely <grant.likely@...retlab.ca>
To:	H Hartley Sweeten <hartleys@...ionengravers.com>,
	Linux Kernel <linux-kernel@...r.kernel.org>
Cc:	spi-devel-general@...ts.sourceforge.net, vinod.koul@...ux.intel.com
Subject: Re: [PATCH] spi/spi-ep93xx.c: use dma_transfer_direction instead of dma_data_direction

On Tue, 17 Apr 2012 18:46:36 -0700, H Hartley Sweeten <hartleys@...ionengravers.com> wrote:
> A new enum indicating the dma channel direction was introduced by:
> 
> commit 49920bc66984a512f4bcc7735a61642cd0e4d6f2
>     dmaengine: add new enum dma_transfer_direction
> 
> The following commit changed spi-ep93xx to use the new enum:
> 
> commit a485df4b4404379786c4bdd258bc528b2617449d
>     spi, serial: move to dma_transfer_direction
> 
> In doing so a sparse warning was introduced: 
> 
> warning: mixing different enum types
>    int enum dma_data_direction  versus
>    int enum dma_transfer_direction
> 
> This is produced because the 'dir' passed in ep93xx_spi_dma_prepare
> is an enum dma_data_direction and is being used to set the
> dma_slave_config 'direction' which is now an enum dma_transfer_direction.
> 
> Fix this by converting spi-ep93xx to use the new enum type in all
> places.
> 
> Signed-off-by: H Hartley Sweeten <hsweeten@...ionengravers.com>
> Cc: Grant Likely <grant.likely@...retlab.ca>
> Cc: Vinod Koul <vinod.koul@...ux.intel.com>

Applied, thanks.

g.

> 
> ---
> 
> diff --git a/drivers/spi/spi-ep93xx.c b/drivers/spi/spi-ep93xx.c
> index 6db2887..e805507 100644
> --- a/drivers/spi/spi-ep93xx.c
> +++ b/drivers/spi/spi-ep93xx.c
> @@ -545,13 +545,12 @@ static void ep93xx_spi_pio_transfer(struct ep93xx_spi *espi)
>   * in case of failure.
>   */
>  static struct dma_async_tx_descriptor *
> -ep93xx_spi_dma_prepare(struct ep93xx_spi *espi, enum dma_data_direction dir)
> +ep93xx_spi_dma_prepare(struct ep93xx_spi *espi, enum dma_transfer_direction dir)
>  {
>  	struct spi_transfer *t = espi->current_msg->state;
>  	struct dma_async_tx_descriptor *txd;
>  	enum dma_slave_buswidth buswidth;
>  	struct dma_slave_config conf;
> -	enum dma_transfer_direction slave_dirn;
>  	struct scatterlist *sg;
>  	struct sg_table *sgt;
>  	struct dma_chan *chan;
> @@ -567,14 +566,13 @@ ep93xx_spi_dma_prepare(struct ep93xx_spi *espi, enum dma_data_direction dir)
>  	memset(&conf, 0, sizeof(conf));
>  	conf.direction = dir;
>  
> -	if (dir == DMA_FROM_DEVICE) {
> +	if (dir == DMA_DEV_TO_MEM) {
>  		chan = espi->dma_rx;
>  		buf = t->rx_buf;
>  		sgt = &espi->rx_sgt;
>  
>  		conf.src_addr = espi->sspdr_phys;
>  		conf.src_addr_width = buswidth;
> -		slave_dirn = DMA_DEV_TO_MEM;
>  	} else {
>  		chan = espi->dma_tx;
>  		buf = t->tx_buf;
> @@ -582,7 +580,6 @@ ep93xx_spi_dma_prepare(struct ep93xx_spi *espi, enum dma_data_direction dir)
>  
>  		conf.dst_addr = espi->sspdr_phys;
>  		conf.dst_addr_width = buswidth;
> -		slave_dirn = DMA_MEM_TO_DEV;
>  	}
>  
>  	ret = dmaengine_slave_config(chan, &conf);
> @@ -633,8 +630,7 @@ ep93xx_spi_dma_prepare(struct ep93xx_spi *espi, enum dma_data_direction dir)
>  	if (!nents)
>  		return ERR_PTR(-ENOMEM);
>  
> -	txd = dmaengine_prep_slave_sg(chan, sgt->sgl, nents,
> -					slave_dirn, DMA_CTRL_ACK);
> +	txd = dmaengine_prep_slave_sg(chan, sgt->sgl, nents, dir, DMA_CTRL_ACK);
>  	if (!txd) {
>  		dma_unmap_sg(chan->device->dev, sgt->sgl, sgt->nents, dir);
>  		return ERR_PTR(-ENOMEM);
> @@ -651,12 +647,12 @@ ep93xx_spi_dma_prepare(struct ep93xx_spi *espi, enum dma_data_direction dir)
>   * unmapped.
>   */
>  static void ep93xx_spi_dma_finish(struct ep93xx_spi *espi,
> -				  enum dma_data_direction dir)
> +				  enum dma_transfer_direction dir)
>  {
>  	struct dma_chan *chan;
>  	struct sg_table *sgt;
>  
> -	if (dir == DMA_FROM_DEVICE) {
> +	if (dir == DMA_DEV_TO_MEM) {
>  		chan = espi->dma_rx;
>  		sgt = &espi->rx_sgt;
>  	} else {
> @@ -677,16 +673,16 @@ static void ep93xx_spi_dma_transfer(struct ep93xx_spi *espi)
>  	struct spi_message *msg = espi->current_msg;
>  	struct dma_async_tx_descriptor *rxd, *txd;
>  
> -	rxd = ep93xx_spi_dma_prepare(espi, DMA_FROM_DEVICE);
> +	rxd = ep93xx_spi_dma_prepare(espi, DMA_DEV_TO_MEM);
>  	if (IS_ERR(rxd)) {
>  		dev_err(&espi->pdev->dev, "DMA RX failed: %ld\n", PTR_ERR(rxd));
>  		msg->status = PTR_ERR(rxd);
>  		return;
>  	}
>  
> -	txd = ep93xx_spi_dma_prepare(espi, DMA_TO_DEVICE);
> +	txd = ep93xx_spi_dma_prepare(espi, DMA_MEM_TO_DEV);
>  	if (IS_ERR(txd)) {
> -		ep93xx_spi_dma_finish(espi, DMA_FROM_DEVICE);
> +		ep93xx_spi_dma_finish(espi, DMA_DEV_TO_MEM);
>  		dev_err(&espi->pdev->dev, "DMA TX failed: %ld\n", PTR_ERR(rxd));
>  		msg->status = PTR_ERR(txd);
>  		return;
> @@ -705,8 +701,8 @@ static void ep93xx_spi_dma_transfer(struct ep93xx_spi *espi)
>  
>  	wait_for_completion(&espi->wait);
>  
> -	ep93xx_spi_dma_finish(espi, DMA_TO_DEVICE);
> -	ep93xx_spi_dma_finish(espi, DMA_FROM_DEVICE);
> +	ep93xx_spi_dma_finish(espi, DMA_MEM_TO_DEV);
> +	ep93xx_spi_dma_finish(espi, DMA_DEV_TO_MEM);
>  }
>  
>  /**

-- 
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ