* [tty:tty-next 10/67] drivers/tty/serial/8250/8250_omap.c:825 omap8250_rs485_config() warn: bitwise AND condition is false here
@ 2022-11-07 12:40 Dan Carpenter
2022-11-09 7:08 ` Lukas Wunner
0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2022-11-07 12:40 UTC (permalink / raw)
To: oe-kbuild, Lukas Wunner
Cc: lkp, oe-kbuild-all, linux-serial, Greg Kroah-Hartman,
Ilpo Järvinen
tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-next
head: 15730dc45dc7432713c7af9ee5abad76872f6405
commit: 801954d1210a89b767176e1e34cf5976f41ca6d3 [10/67] serial: 8250: 8250_omap: Support native RS485
config: nios2-randconfig-m041-20221106
compiler: nios2-linux-gcc (GCC) 12.1.0
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
New smatch warnings:
drivers/tty/serial/8250/8250_omap.c:825 omap8250_rs485_config() warn: bitwise AND condition is false here
Old smatch warnings:
arch/nios2/include/asm/thread_info.h:62 current_thread_info() error: uninitialized symbol 'sp'.
vim +825 drivers/tty/serial/8250/8250_omap.c
801954d1210a89 Lukas Wunner 2022-10-16 805 static int omap8250_rs485_config(struct uart_port *port,
801954d1210a89 Lukas Wunner 2022-10-16 806 struct ktermios *termios,
801954d1210a89 Lukas Wunner 2022-10-16 807 struct serial_rs485 *rs485)
801954d1210a89 Lukas Wunner 2022-10-16 808 {
801954d1210a89 Lukas Wunner 2022-10-16 809 struct omap8250_priv *priv = port->private_data;
801954d1210a89 Lukas Wunner 2022-10-16 810 struct uart_8250_port *up = up_to_u8250p(port);
801954d1210a89 Lukas Wunner 2022-10-16 811 u32 fixed_delay_rts_before_send = 0;
801954d1210a89 Lukas Wunner 2022-10-16 812 u32 fixed_delay_rts_after_send = 0;
801954d1210a89 Lukas Wunner 2022-10-16 813 unsigned int baud;
801954d1210a89 Lukas Wunner 2022-10-16 814
801954d1210a89 Lukas Wunner 2022-10-16 815 /*
801954d1210a89 Lukas Wunner 2022-10-16 816 * There is a fixed delay of 3 bit clock cycles after the TX shift
801954d1210a89 Lukas Wunner 2022-10-16 817 * register is going empty to allow time for the stop bit to transition
801954d1210a89 Lukas Wunner 2022-10-16 818 * through the transceiver before direction is changed to receive.
801954d1210a89 Lukas Wunner 2022-10-16 819 *
801954d1210a89 Lukas Wunner 2022-10-16 820 * Additionally there appears to be a 1 bit clock delay between writing
801954d1210a89 Lukas Wunner 2022-10-16 821 * to the THR register and transmission of the start bit, per page 8783
801954d1210a89 Lukas Wunner 2022-10-16 822 * of the AM65 TRM: https://www.ti.com/lit/ug/spruid7e/spruid7e.pdf
801954d1210a89 Lukas Wunner 2022-10-16 823 */
801954d1210a89 Lukas Wunner 2022-10-16 824 if (priv->quot) {
801954d1210a89 Lukas Wunner 2022-10-16 @825 if (priv->mdr1 & UART_OMAP_MDR1_16X_MODE)
This should be:
if (priv->mdr1 == UART_OMAP_MDR1_16X_MODE)
801954d1210a89 Lukas Wunner 2022-10-16 826 baud = port->uartclk / (16 * priv->quot);
801954d1210a89 Lukas Wunner 2022-10-16 827 else
801954d1210a89 Lukas Wunner 2022-10-16 828 baud = port->uartclk / (13 * priv->quot);
801954d1210a89 Lukas Wunner 2022-10-16 829
801954d1210a89 Lukas Wunner 2022-10-16 830 fixed_delay_rts_after_send = 3 * MSEC_PER_SEC / baud;
801954d1210a89 Lukas Wunner 2022-10-16 831 fixed_delay_rts_before_send = 1 * MSEC_PER_SEC / baud;
801954d1210a89 Lukas Wunner 2022-10-16 832 }
801954d1210a89 Lukas Wunner 2022-10-16 833
801954d1210a89 Lukas Wunner 2022-10-16 834 /*
801954d1210a89 Lukas Wunner 2022-10-16 835 * Fall back to RS485 software emulation if the UART is missing
801954d1210a89 Lukas Wunner 2022-10-16 836 * hardware support, if the device tree specifies an mctrl_gpio
801954d1210a89 Lukas Wunner 2022-10-16 837 * (indicates that RTS is unavailable due to a pinmux conflict)
801954d1210a89 Lukas Wunner 2022-10-16 838 * or if the requested delays exceed the fixed hardware delays.
801954d1210a89 Lukas Wunner 2022-10-16 839 */
801954d1210a89 Lukas Wunner 2022-10-16 840 if (!(priv->habit & UART_HAS_NATIVE_RS485) ||
801954d1210a89 Lukas Wunner 2022-10-16 841 mctrl_gpio_to_gpiod(up->gpios, UART_GPIO_RTS) ||
801954d1210a89 Lukas Wunner 2022-10-16 842 rs485->delay_rts_after_send > fixed_delay_rts_after_send ||
801954d1210a89 Lukas Wunner 2022-10-16 843 rs485->delay_rts_before_send > fixed_delay_rts_before_send) {
801954d1210a89 Lukas Wunner 2022-10-16 844 priv->mdr3 &= ~UART_OMAP_MDR3_DIR_EN;
801954d1210a89 Lukas Wunner 2022-10-16 845 serial_out(up, UART_OMAP_MDR3, priv->mdr3);
801954d1210a89 Lukas Wunner 2022-10-16 846
801954d1210a89 Lukas Wunner 2022-10-16 847 port->rs485_config = serial8250_em485_config;
801954d1210a89 Lukas Wunner 2022-10-16 848 return serial8250_em485_config(port, termios, rs485);
801954d1210a89 Lukas Wunner 2022-10-16 849 }
801954d1210a89 Lukas Wunner 2022-10-16 850
801954d1210a89 Lukas Wunner 2022-10-16 851 rs485->delay_rts_after_send = fixed_delay_rts_after_send;
801954d1210a89 Lukas Wunner 2022-10-16 852 rs485->delay_rts_before_send = fixed_delay_rts_before_send;
801954d1210a89 Lukas Wunner 2022-10-16 853
801954d1210a89 Lukas Wunner 2022-10-16 854 if (rs485->flags & SER_RS485_ENABLED)
801954d1210a89 Lukas Wunner 2022-10-16 855 priv->mdr3 |= UART_OMAP_MDR3_DIR_EN;
801954d1210a89 Lukas Wunner 2022-10-16 856 else
801954d1210a89 Lukas Wunner 2022-10-16 857 priv->mdr3 &= ~UART_OMAP_MDR3_DIR_EN;
801954d1210a89 Lukas Wunner 2022-10-16 858
801954d1210a89 Lukas Wunner 2022-10-16 859 /*
801954d1210a89 Lukas Wunner 2022-10-16 860 * Retain same polarity semantics as RS485 software emulation,
801954d1210a89 Lukas Wunner 2022-10-16 861 * i.e. SER_RS485_RTS_ON_SEND means driving RTS low on send.
801954d1210a89 Lukas Wunner 2022-10-16 862 */
801954d1210a89 Lukas Wunner 2022-10-16 863 if (rs485->flags & SER_RS485_RTS_ON_SEND)
801954d1210a89 Lukas Wunner 2022-10-16 864 priv->mdr3 &= ~UART_OMAP_MDR3_DIR_POL;
801954d1210a89 Lukas Wunner 2022-10-16 865 else
801954d1210a89 Lukas Wunner 2022-10-16 866 priv->mdr3 |= UART_OMAP_MDR3_DIR_POL;
801954d1210a89 Lukas Wunner 2022-10-16 867
801954d1210a89 Lukas Wunner 2022-10-16 868 serial_out(up, UART_OMAP_MDR3, priv->mdr3);
801954d1210a89 Lukas Wunner 2022-10-16 869
801954d1210a89 Lukas Wunner 2022-10-16 870 return 0;
801954d1210a89 Lukas Wunner 2022-10-16 871 }
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [tty:tty-next 10/67] drivers/tty/serial/8250/8250_omap.c:825 omap8250_rs485_config() warn: bitwise AND condition is false here
2022-11-07 12:40 [tty:tty-next 10/67] drivers/tty/serial/8250/8250_omap.c:825 omap8250_rs485_config() warn: bitwise AND condition is false here Dan Carpenter
@ 2022-11-09 7:08 ` Lukas Wunner
0 siblings, 0 replies; 2+ messages in thread
From: Lukas Wunner @ 2022-11-09 7:08 UTC (permalink / raw)
To: Dan Carpenter
Cc: oe-kbuild, lkp, oe-kbuild-all, linux-serial, Greg Kroah-Hartman,
Ilpo Järvinen
On Mon, Nov 07, 2022 at 03:40:41PM +0300, Dan Carpenter wrote:
> New smatch warnings:
> drivers/tty/serial/8250/8250_omap.c:825 omap8250_rs485_config() warn: bitwise AND condition is false here
[...]
> vim +825 drivers/tty/serial/8250/8250_omap.c
[...]
> 801954d1210a89 Lukas Wunner 2022-10-16 @825 if (priv->mdr1 & UART_OMAP_MDR1_16X_MODE)
>
> This should be:
>
> if (priv->mdr1 == UART_OMAP_MDR1_16X_MODE)
Thanks for the heads-up Dan, I've just submitted a fix:
https://lore.kernel.org/linux-serial/7d5b04da13d89b8708b9543a0b125f2b6062a77b.1667977259.git.lukas@wunner.de/
As always your reports are greatly appreciated.
Lukas
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-11-09 7:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-07 12:40 [tty:tty-next 10/67] drivers/tty/serial/8250/8250_omap.c:825 omap8250_rs485_config() warn: bitwise AND condition is false here Dan Carpenter
2022-11-09 7:08 ` Lukas Wunner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).