Re: [PATCH v2] use callbacks to access UART_DLL/UART_DLM

Peter Hurley
2015-12-18T16:07:07Z

Hi Sebastian,

On 12/18/2015 02:46 AM, Sebastian Frias wrote:
> ---
>
> Some UART HW has a single register combining UART_DLL/UART_DLM
> (this was probably forgotten in the change that introduced the
> callbacks, commit b32b19b8ffc05cbd3bf91c65e205f6a912ca15d9)

Thanks for the fix.

Because of the heavy patchload here, it helps if the patches are
don't need hand-editing by maintainers.

Please drop the '---' separator and newline from the beginning
of the commit log.

Regards,
Peter Hurley

> Fixes: b32b19b8ffc0

Fixes: b32b19b8ffc0 ("[SERIAL] 8250: set divisor register correctly ...")

>
> Signed-off-by: Sebastian Frias <sf84@laposte.net>
> ---
> drivers/tty/serial/8250/8250_port.c | 17 ++++++-----------
> 1 file changed, 6 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
> index 52d82d2..827eb6f 100644
> --- a/drivers/tty/serial/8250/8250_port.c
> +++ b/drivers/tty/serial/8250/8250_port.c
> @@ -713,22 +713,17 @@ static int size_fifo(struct uart_8250_port *up)
> */
> static unsigned int autoconfig_read_divisor_id(struct uart_8250_port *p)
> {
> - unsigned char old_dll, old_dlm, old_lcr;
> + unsigned char old_lcr;
> unsigned int id;
> + unsigned int old_dl;

unsigned int id, old_dl;

>
> old_lcr = serial_in(p, UART_LCR);
> serial_out(p, UART_LCR, UART_LCR_CONF_MODE_A);
> + old_dl = serial_dl_read(p);
> + serial_dl_write(p, 0);
> + id = serial_dl_read(p);
> + serial_dl_write(p, old_dl);
>
> - old_dll = serial_in(p, UART_DLL);
> - old_dlm = serial_in(p, UART_DLM);
> -
> - serial_out(p, UART_DLL, 0);
> - serial_out(p, UART_DLM, 0);
> -
> - id = serial_in(p, UART_DLL) | serial_in(p, UART_DLM) << 8;
> -
> - serial_out(p, UART_DLL, old_dll);
> - serial_out(p, UART_DLM, old_dlm);
> serial_out(p, UART_LCR, old_lcr);
>
> return id;