Message ID | 1404665232-14311-1-git-send-email-rickard_strandqvist@spectrumdigital.se (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 07/06/14 09:47, Rickard Strandqvist wrote: > Set reasonable initial value of some variables, in case > they do not get set to something otherwise. > And I've also added a plausibility control of the values. > > Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se> > --- This patch doesn't look right... > @@ -930,17 +930,21 @@ static int __init msm_console_setup(struct console *co, char *options) > > msm_init_clock(port); > > - if (options) > + if (options) { > uart_parse_options(options, &baud, &parity, &bits, &flow); > + if (baud < 300 || baud > 115200) > + baud = 115200; > + if (NULL == strchr("noeNOE", parity)) > + parity = 'n'; > + if (bits != 7) > + bits = 8; > + if (flow != 'r') > + flow = 'n'; > + } > > - bits = 8; > - parity = 'n'; > - flow = 'n'; > msm_write(port, UART_MR2_BITS_PER_CHAR_8 | UART_MR2_STOP_BIT_LEN_ONE, > UART_MR2); /* 8N1 */ > because this code is overriding whatever is parsed from uart_parse_options() on purpose. The hardware is configured for 8 bits, no parity, no flow control with this msm_write() statement. Maybe we should extend the code to configure the parity and flow control bits instead. > - if (baud < 300 || baud > 115200) > - baud = 115200; > msm_set_baud_rate(port, baud); > > msm_reset(port);
2014-07-09 20:02 GMT+02:00 Stephen Boyd <sboyd@codeaurora.org>: > On 07/06/14 09:47, Rickard Strandqvist wrote: >> Set reasonable initial value of some variables, in case >> they do not get set to something otherwise. >> And I've also added a plausibility control of the values. >> >> Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se> >> --- > > This patch doesn't look right... > >> @@ -930,17 +930,21 @@ static int __init msm_console_setup(struct console *co, char *options) >> >> msm_init_clock(port); >> >> - if (options) >> + if (options) { >> uart_parse_options(options, &baud, &parity, &bits, &flow); >> + if (baud < 300 || baud > 115200) >> + baud = 115200; >> + if (NULL == strchr("noeNOE", parity)) >> + parity = 'n'; >> + if (bits != 7) >> + bits = 8; >> + if (flow != 'r') >> + flow = 'n'; >> + } >> >> - bits = 8; >> - parity = 'n'; >> - flow = 'n'; >> msm_write(port, UART_MR2_BITS_PER_CHAR_8 | UART_MR2_STOP_BIT_LEN_ONE, >> UART_MR2); /* 8N1 */ >> > > because this code is overriding whatever is parsed from > uart_parse_options() on purpose. The hardware is configured for 8 bits, > no parity, no flow control with this msm_write() statement. Maybe we > should extend the code to configure the parity and flow control bits > instead. Hi Okay, well that explains the strange code. Maybe there should be a comment about this? You mean that UART_MR2_BITS_PER_CHAR_8 | UART_MR2_STOP_BIT_LEN_ONE is set correctly for the msm_write function? I can do that... Regardless, the original error whas that baud could be used uninitialized. Kind regards Rickard Strandqvist -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c index 72000a6..4491108 100644 --- a/drivers/tty/serial/msm_serial.c +++ b/drivers/tty/serial/msm_serial.c @@ -917,7 +917,7 @@ static int __init msm_console_setup(struct console *co, char *options) { struct uart_port *port; struct msm_port *msm_port; - int baud, flow, bits, parity; + int baud = 115200, flow = 'n', bits = 8, parity = 'n'; if (unlikely(co->index >= UART_NR || co->index < 0)) return -ENXIO; @@ -930,17 +930,21 @@ static int __init msm_console_setup(struct console *co, char *options) msm_init_clock(port); - if (options) + if (options) { uart_parse_options(options, &baud, &parity, &bits, &flow); + if (baud < 300 || baud > 115200) + baud = 115200; + if (NULL == strchr("noeNOE", parity)) + parity = 'n'; + if (bits != 7) + bits = 8; + if (flow != 'r') + flow = 'n'; + } - bits = 8; - parity = 'n'; - flow = 'n'; msm_write(port, UART_MR2_BITS_PER_CHAR_8 | UART_MR2_STOP_BIT_LEN_ONE, UART_MR2); /* 8N1 */ - if (baud < 300 || baud > 115200) - baud = 115200; msm_set_baud_rate(port, baud); msm_reset(port);
Set reasonable initial value of some variables, in case they do not get set to something otherwise. And I've also added a plausibility control of the values. Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se> --- drivers/tty/serial/msm_serial.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-)