[PATCH V2 1/8] serial: at91: correct definition from DMA to PDC

Jean-Christophe PLAGNIOL-VILLARD plagnioj at jcrosoft.com
Thu Jul 18 03:49:52 EDT 2013


On 10:43 Tue 16 Jul     , Elen Song wrote:
> The DMA is available since at91sam9x5 socs, before that, we use PDC.
> 
> Signed-off-by: Elen Song <elen.song at atmel.com>
> ---
>  drivers/tty/serial/atmel_serial.c |   71 +++++++++++++++++++------------------
>  1 file changed, 36 insertions(+), 35 deletions(-)
> 
> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
> index 3467462..6c71ccf 100644
> --- a/drivers/tty/serial/atmel_serial.c
> +++ b/drivers/tty/serial/atmel_serial.c
> @@ -140,11 +140,11 @@ struct atmel_uart_port {
>  	u32			backup_imr;	/* IMR saved during suspend */
>  	int			break_active;	/* break being received */
>  
> -	short			use_dma_rx;	/* enable PDC receiver */
> +	short			use_pdc_rx;	/* enable PDC receiver */
	as this is a boolean you should update the type too
>  	short			pdc_rx_idx;	/* current PDC RX buffer */
>  	struct atmel_dma_buffer	pdc_rx[2];	/* PDC receier */
>  
> -	short			use_dma_tx;	/* enable PDC transmitter */
> +	short			use_pdc_tx;	/* enable PDC transmitter */
ditto
>  	struct atmel_dma_buffer	pdc_tx;		/* PDC transmitter */
>  
>  	struct tasklet_struct	tasklet;
> @@ -181,26 +181,26 @@ to_atmel_uart_port(struct uart_port *uart)
>  }
>  
>  #ifdef CONFIG_SERIAL_ATMEL_PDC
> -static bool atmel_use_dma_rx(struct uart_port *port)
> +static bool atmel_use_pdc_rx(struct uart_port *port)
>  {
>  	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
>  
> -	return atmel_port->use_dma_rx;
> +	return atmel_port->use_pdc_rx;
>  }
>  
> -static bool atmel_use_dma_tx(struct uart_port *port)
> +static bool atmel_use_pdc_tx(struct uart_port *port)
>  {
>  	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
>  
> -	return atmel_port->use_dma_tx;
> +	return atmel_port->use_pdc_tx;
>  }
>  #else
> -static bool atmel_use_dma_rx(struct uart_port *port)
> +static bool atmel_use_pdc_rx(struct uart_port *port)
>  {
>  	return false;
>  }
>  
> -static bool atmel_use_dma_tx(struct uart_port *port)
> +static bool atmel_use_pdc_tx(struct uart_port *port)
>  {
>  	return false;
>  }
> @@ -233,7 +233,7 @@ void atmel_config_rs485(struct uart_port *port, struct serial_rs485 *rs485conf)
>  		mode |= ATMEL_US_USMODE_RS485;
>  	} else {
>  		dev_dbg(port->dev, "Setting UART to RS232\n");
> -		if (atmel_use_dma_tx(port))
> +		if (atmel_use_pdc_tx(port))
>  			atmel_port->tx_done_mask = ATMEL_US_ENDTX |
>  				ATMEL_US_TXBUFE;
>  		else
> @@ -345,7 +345,7 @@ static void atmel_stop_tx(struct uart_port *port)
>  {
>  	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
>  
> -	if (atmel_use_dma_tx(port)) {
> +	if (atmel_use_pdc_tx(port)) {
>  		/* disable PDC transmit */
>  		UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS);
>  	}
> @@ -364,7 +364,7 @@ static void atmel_start_tx(struct uart_port *port)
>  {
>  	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
>  
> -	if (atmel_use_dma_tx(port)) {
> +	if (atmel_use_pdc_tx(port)) {
>  		if (UART_GET_PTSR(port) & ATMEL_PDC_TXTEN)
>  			/* The transmitter is already running.  Yes, we
>  			   really need this.*/
> @@ -390,7 +390,7 @@ static void atmel_start_rx(struct uart_port *port)
>  
>  	UART_PUT_CR(port, ATMEL_US_RXEN);
>  
> -	if (atmel_use_dma_rx(port)) {
> +	if (atmel_use_pdc_rx(port)) {
>  		/* enable PDC controller */
>  		UART_PUT_IER(port, ATMEL_US_ENDRX | ATMEL_US_TIMEOUT |
>  			port->read_status_mask);
> @@ -407,7 +407,7 @@ static void atmel_stop_rx(struct uart_port *port)
>  {
>  	UART_PUT_CR(port, ATMEL_US_RXDIS);
>  
> -	if (atmel_use_dma_rx(port)) {
> +	if (atmel_use_pdc_rx(port)) {
>  		/* disable PDC receive */
>  		UART_PUT_PTCR(port, ATMEL_PDC_RXTDIS);
>  		UART_PUT_IDR(port, ATMEL_US_ENDRX | ATMEL_US_TIMEOUT |
> @@ -572,7 +572,7 @@ atmel_handle_receive(struct uart_port *port, unsigned int pending)
>  {
>  	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
>  
> -	if (atmel_use_dma_rx(port)) {
> +	if (atmel_use_pdc_rx(port)) {
>  		/*
>  		 * PDC receive. Just schedule the tasklet and let it
>  		 * figure out the details.
> @@ -661,7 +661,7 @@ static irqreturn_t atmel_interrupt(int irq, void *dev_id)
>  /*
>   * Called from tasklet with ENDTX and TXBUFE interrupts disabled.
>   */
> -static void atmel_tx_dma(struct uart_port *port)
> +static void atmel_tx_pdc(struct uart_port *port)
>  {
>  	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
>  	struct circ_buf *xmit = &port->state->xmit;
> @@ -778,7 +778,7 @@ static void atmel_rx_from_ring(struct uart_port *port)
>  	spin_lock(&port->lock);
>  }
>  
> -static void atmel_rx_from_dma(struct uart_port *port)
> +static void atmel_rx_from_pdc(struct uart_port *port)
>  {
>  	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
>  	struct tty_port *tport = &port->state->port;
> @@ -868,8 +868,8 @@ static void atmel_tasklet_func(unsigned long data)
>  	/* The interrupt handler does not take the lock */
>  	spin_lock(&port->lock);
>  
> -	if (atmel_use_dma_tx(port))
> -		atmel_tx_dma(port);
> +	if (atmel_use_pdc_tx(port))
> +		atmel_tx_pdc(port);
>  	else
>  		atmel_tx_chars(port);
>  
> @@ -893,8 +893,8 @@ static void atmel_tasklet_func(unsigned long data)
>  		atmel_port->irq_status_prev = status;
>  	}
>  
> -	if (atmel_use_dma_rx(port))
> -		atmel_rx_from_dma(port);
> +	if (atmel_use_pdc_rx(port))
> +		atmel_rx_from_pdc(port);
>  	else
>  		atmel_rx_from_ring(port);
>  
> @@ -930,7 +930,7 @@ static int atmel_startup(struct uart_port *port)
>  	/*
>  	 * Initialize DMA (if necessary)
>  	 */
> -	if (atmel_use_dma_rx(port)) {
> +	if (atmel_use_pdc_rx(port)) {
>  		int i;
>  
>  		for (i = 0; i < 2; i++) {
> @@ -964,7 +964,7 @@ static int atmel_startup(struct uart_port *port)
>  		UART_PUT_RNPR(port, atmel_port->pdc_rx[1].dma_addr);
>  		UART_PUT_RNCR(port, PDC_BUFFER_SIZE);
>  	}
> -	if (atmel_use_dma_tx(port)) {
> +	if (atmel_use_pdc_tx(port)) {
>  		struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx;
>  		struct circ_buf *xmit = &port->state->xmit;
>  
> @@ -1000,7 +1000,7 @@ static int atmel_startup(struct uart_port *port)
>  	/* enable xmit & rcvr */
>  	UART_PUT_CR(port, ATMEL_US_TXEN | ATMEL_US_RXEN);
>  
> -	if (atmel_use_dma_rx(port)) {
> +	if (atmel_use_pdc_rx(port)) {
>  		/* set UART timeout */
>  		UART_PUT_RTOR(port, PDC_RX_TIMEOUT);
>  		UART_PUT_CR(port, ATMEL_US_STTTO);
> @@ -1031,7 +1031,7 @@ static void atmel_shutdown(struct uart_port *port)
>  	/*
>  	 * Shut-down the DMA.
>  	 */
> -	if (atmel_use_dma_rx(port)) {
> +	if (atmel_use_pdc_rx(port)) {
>  		int i;
>  
>  		for (i = 0; i < 2; i++) {
> @@ -1044,7 +1044,7 @@ static void atmel_shutdown(struct uart_port *port)
>  			kfree(pdc->buf);
>  		}
>  	}
> -	if (atmel_use_dma_tx(port)) {
> +	if (atmel_use_pdc_tx(port)) {
>  		struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx;
>  
>  		dma_unmap_single(port->dev,
> @@ -1080,7 +1080,7 @@ static void atmel_flush_buffer(struct uart_port *port)
>  {
>  	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
>  
> -	if (atmel_use_dma_tx(port)) {
> +	if (atmel_use_pdc_tx(port)) {
>  		UART_PUT_TCR(port, 0);
>  		atmel_port->pdc_tx.ofs = 0;
>  	}
> @@ -1193,7 +1193,7 @@ static void atmel_set_termios(struct uart_port *port, struct ktermios *termios,
>  	if (termios->c_iflag & (BRKINT | PARMRK))
>  		port->read_status_mask |= ATMEL_US_RXBRK;
>  
> -	if (atmel_use_dma_rx(port))
> +	if (atmel_use_pdc_rx(port))
>  		/* need to enable error interrupts */
>  		UART_PUT_IER(port, port->read_status_mask);
>  
> @@ -1430,13 +1430,14 @@ static void atmel_of_init_port(struct atmel_uart_port *atmel_port,
>  
>  	/* DMA/PDC usage specification */
>  	if (of_get_property(np, "atmel,use-dma-rx", NULL))
> -		atmel_port->use_dma_rx	= 1;
> +		atmel_port->use_pdc_rx	= 1;
>  	else
> -		atmel_port->use_dma_rx	= 0;
> +		atmel_port->use_pdc_rx	= 0;
> +
>  	if (of_get_property(np, "atmel,use-dma-tx", NULL))
> -		atmel_port->use_dma_tx	= 1;
> +		atmel_port->use_pdc_tx	= 1;
>  	else
> -		atmel_port->use_dma_tx	= 0;
> +		atmel_port->use_pdc_tx	= 0;
>  
>  	/* rs485 properties */
>  	if (of_property_read_u32_array(np, "rs485-rts-delay",
> @@ -1467,8 +1468,8 @@ static void atmel_init_port(struct atmel_uart_port *atmel_port,
>  	if (pdev->dev.of_node) {
>  		atmel_of_init_port(atmel_port, pdev->dev.of_node);
>  	} else {
> -		atmel_port->use_dma_rx	= pdata->use_dma_rx;
> -		atmel_port->use_dma_tx	= pdata->use_dma_tx;
> +		atmel_port->use_pdc_rx	= pdata->use_dma_rx;
> +		atmel_port->use_pdc_tx	= pdata->use_dma_tx;
>  		atmel_port->rs485	= pdata->rs485;
>  	}
>  
> @@ -1505,7 +1506,7 @@ static void atmel_init_port(struct atmel_uart_port *atmel_port,
>  	/* Use TXEMPTY for interrupt when rs485 else TXRDY or ENDTX|TXBUFE */
>  	if (atmel_port->rs485.flags & SER_RS485_ENABLED)
>  		atmel_port->tx_done_mask = ATMEL_US_TXEMPTY;
> -	else if (atmel_use_dma_tx(port)) {
> +	else if (atmel_use_pdc_tx(port)) {
>  		port->fifosize = PDC_BUFFER_SIZE;
>  		atmel_port->tx_done_mask = ATMEL_US_ENDTX | ATMEL_US_TXBUFE;
>  	} else {
> @@ -1794,7 +1795,7 @@ static int atmel_serial_probe(struct platform_device *pdev)
>  		goto err;
>  	}
>  
> -	if (!atmel_use_dma_rx(&port->uart)) {
> +	if (!atmel_use_pdc_rx(&port->uart)) {
>  		ret = -ENOMEM;
>  		data = kmalloc(sizeof(struct atmel_uart_char)
>  				* ATMEL_SERIAL_RINGSIZE, GFP_KERNEL);
> -- 
> 1.7.9.5
> 



More information about the linux-arm-kernel mailing list