* Re: [PATCH 2/2] serial: core: implement support for rs485-mux-gpios
@ 2023-12-03 10:38 kernel test robot
0 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2023-12-03 10:38 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20231120151056.148450-3-linux@rasmusvillemoes.dk>
References: <20231120151056.148450-3-linux@rasmusvillemoes.dk>
TO: Rasmus Villemoes <linux@rasmusvillemoes.dk>
TO: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
TO: Jiri Slaby <jirislaby@kernel.org>
CC: devicetree@vger.kernel.org
CC: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
CC: Lukas Wunner <lukas@wunner.de>
CC: Rasmus Villemoes <linux@rasmusvillemoes.dk>
CC: linux-kernel@vger.kernel.org
CC: linux-serial@vger.kernel.org
Hi Rasmus,
kernel test robot noticed the following build warnings:
[auto build test WARNING on v6.7-rc2]
[also build test WARNING on linus/master next-20231201]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Rasmus-Villemoes/dt-bindings-serial-rs485-add-rs485-mux-gpios-binding/20231120-231551
base: v6.7-rc2
patch link: https://lore.kernel.org/r/20231120151056.148450-3-linux%40rasmusvillemoes.dk
patch subject: [PATCH 2/2] serial: core: implement support for rs485-mux-gpios
:::::: branch date: 13 days ago
:::::: commit date: 13 days ago
config: hexagon-randconfig-r071-20231121 (https://download.01.org/0day-ci/archive/20231203/202312031811.pmLZJIf5-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce: (https://download.01.org/0day-ci/archive/20231203/202312031811.pmLZJIf5-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202312031811.pmLZJIf5-lkp@intel.com/
New smatch warnings:
drivers/tty/serial/serial_core.c:3651 uart_get_rs485_mode() warn: passing zero to 'PTR_ERR'
Old smatch warnings:
drivers/tty/serial/serial_core.c:392 uart_shutdown() error: uninitialized symbol 'flags'.
drivers/tty/serial/serial_core.c:2996 iomem_base_show() warn: argument 3 to %lX specifier is cast from pointer
vim +/PTR_ERR +3651 drivers/tty/serial/serial_core.c
68af43173d3fce Dmitry Safonov 2020-03-02 3580
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3581 /**
743f93f822be1b Lukas Wunner 2017-11-24 3582 * uart_get_rs485_mode() - retrieve rs485 properties for given uart
a71725619ff63c Randy Dunlap 2020-06-15 3583 * @port: uart device's target port
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3584 *
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3585 * This function implements the device tree binding described in
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3586 * Documentation/devicetree/bindings/serial/rs485.txt.
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3587 */
c150c0f362c1e5 Lukas Wunner 2020-05-12 3588 int uart_get_rs485_mode(struct uart_port *port)
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3589 {
c150c0f362c1e5 Lukas Wunner 2020-05-12 3590 struct serial_rs485 *rs485conf = &port->rs485;
c150c0f362c1e5 Lukas Wunner 2020-05-12 3591 struct device *dev = port->dev;
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3592 enum gpiod_flags dflags;
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3593 struct gpio_desc *desc;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3594 u32 rs485_delay[2];
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3595 int ret;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3596
743f93f822be1b Lukas Wunner 2017-11-24 3597 ret = device_property_read_u32_array(dev, "rs485-rts-delay",
743f93f822be1b Lukas Wunner 2017-11-24 3598 rs485_delay, 2);
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3599 if (!ret) {
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3600 rs485conf->delay_rts_before_send = rs485_delay[0];
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3601 rs485conf->delay_rts_after_send = rs485_delay[1];
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3602 } else {
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3603 rs485conf->delay_rts_before_send = 0;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3604 rs485conf->delay_rts_after_send = 0;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3605 }
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3606
4dfd10351e49a7 Lino Sanfilippo 2022-07-10 3607 uart_sanitize_serial_rs485_delays(port, rs485conf);
4dfd10351e49a7 Lino Sanfilippo 2022-07-10 3608
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3609 /*
f1e5b618c1c26c Lukas Wunner 2017-11-24 3610 * Clear full-duplex and enabled flags, set RTS polarity to active high
f1e5b618c1c26c Lukas Wunner 2017-11-24 3611 * to get to a defined state with the following properties:
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3612 */
f1e5b618c1c26c Lukas Wunner 2017-11-24 3613 rs485conf->flags &= ~(SER_RS485_RX_DURING_TX | SER_RS485_ENABLED |
d58a2df3d8877b Lukas Wunner 2020-05-18 3614 SER_RS485_TERMINATE_BUS |
f1e5b618c1c26c Lukas Wunner 2017-11-24 3615 SER_RS485_RTS_AFTER_SEND);
f1e5b618c1c26c Lukas Wunner 2017-11-24 3616 rs485conf->flags |= SER_RS485_RTS_ON_SEND;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3617
743f93f822be1b Lukas Wunner 2017-11-24 3618 if (device_property_read_bool(dev, "rs485-rx-during-tx"))
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3619 rs485conf->flags |= SER_RS485_RX_DURING_TX;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3620
743f93f822be1b Lukas Wunner 2017-11-24 3621 if (device_property_read_bool(dev, "linux,rs485-enabled-at-boot-time"))
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3622 rs485conf->flags |= SER_RS485_ENABLED;
f1e5b618c1c26c Lukas Wunner 2017-11-24 3623
f1e5b618c1c26c Lukas Wunner 2017-11-24 3624 if (device_property_read_bool(dev, "rs485-rts-active-low")) {
f1e5b618c1c26c Lukas Wunner 2017-11-24 3625 rs485conf->flags &= ~SER_RS485_RTS_ON_SEND;
f1e5b618c1c26c Lukas Wunner 2017-11-24 3626 rs485conf->flags |= SER_RS485_RTS_AFTER_SEND;
f1e5b618c1c26c Lukas Wunner 2017-11-24 3627 }
c150c0f362c1e5 Lukas Wunner 2020-05-12 3628
d58a2df3d8877b Lukas Wunner 2020-05-18 3629 /*
d58a2df3d8877b Lukas Wunner 2020-05-18 3630 * Disabling termination by default is the safe choice: Else if many
d58a2df3d8877b Lukas Wunner 2020-05-18 3631 * bus participants enable it, no communication is possible at all.
d58a2df3d8877b Lukas Wunner 2020-05-18 3632 * Works fine for short cables and users may enable for longer cables.
d58a2df3d8877b Lukas Wunner 2020-05-18 3633 */
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3634 desc = devm_gpiod_get_optional(dev, "rs485-term", GPIOD_OUT_LOW);
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3635 if (IS_ERR(desc))
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3636 return dev_err_probe(dev, PTR_ERR(desc), "Cannot get rs485-term-gpios\n");
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3637 port->rs485_term_gpio = desc;
8bec874f84d826 Ilpo Järvinen 2022-07-04 3638 if (port->rs485_term_gpio)
8bec874f84d826 Ilpo Järvinen 2022-07-04 3639 port->rs485_supported.flags |= SER_RS485_TERMINATE_BUS;
d58a2df3d8877b Lukas Wunner 2020-05-18 3640
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3641 dflags = (rs485conf->flags & SER_RS485_RX_DURING_TX) ?
163f080eb717d2 Christoph Niedermaier 2022-12-02 3642 GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3643 desc = devm_gpiod_get_optional(dev, "rs485-rx-during-tx", dflags);
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3644 if (IS_ERR(desc))
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3645 return dev_err_probe(dev, PTR_ERR(desc), "Cannot get rs485-rx-during-tx-gpios\n");
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3646 port->rs485_rx_during_tx_gpio = desc;
163f080eb717d2 Christoph Niedermaier 2022-12-02 3647
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3648 dflags = (rs485conf->flags & SER_RS485_ENABLED) ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3649 desc = devm_gpiod_get_optional(dev, "rs485-mux", dflags);
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3650 if (IS_ERR(desc))
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 @3651 return dev_err_probe(dev, PTR_ERR(port->rs485_mux_gpio),
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3652 "Cannot get rs485-mux-gpios\n");
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3653 port->rs485_mux_gpio = desc;
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3654
c150c0f362c1e5 Lukas Wunner 2020-05-12 3655 return 0;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3656 }
743f93f822be1b Lukas Wunner 2017-11-24 3657 EXPORT_SYMBOL_GPL(uart_get_rs485_mode);
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3658
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 2/2] serial: core: implement support for rs485-mux-gpios
@ 2023-11-21 9:15 kernel test robot
0 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2023-11-21 9:15 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20231120151056.148450-3-linux@rasmusvillemoes.dk>
References: <20231120151056.148450-3-linux@rasmusvillemoes.dk>
TO: Rasmus Villemoes <linux@rasmusvillemoes.dk>
TO: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
TO: Jiri Slaby <jirislaby@kernel.org>
CC: devicetree@vger.kernel.org
CC: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
CC: Lukas Wunner <lukas@wunner.de>
CC: Rasmus Villemoes <linux@rasmusvillemoes.dk>
CC: linux-kernel@vger.kernel.org
CC: linux-serial@vger.kernel.org
Hi Rasmus,
kernel test robot noticed the following build warnings:
[auto build test WARNING on v6.7-rc2]
[also build test WARNING on linus/master next-20231121]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Rasmus-Villemoes/dt-bindings-serial-rs485-add-rs485-mux-gpios-binding/20231120-231551
base: v6.7-rc2
patch link: https://lore.kernel.org/r/20231120151056.148450-3-linux%40rasmusvillemoes.dk
patch subject: [PATCH 2/2] serial: core: implement support for rs485-mux-gpios
:::::: branch date: 18 hours ago
:::::: commit date: 18 hours ago
config: hexagon-randconfig-r071-20231121 (https://download.01.org/0day-ci/archive/20231121/202311211751.MgZLovko-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce: (https://download.01.org/0day-ci/archive/20231121/202311211751.MgZLovko-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202311211751.MgZLovko-lkp@intel.com/
New smatch warnings:
drivers/tty/serial/serial_core.c:3651 uart_get_rs485_mode() warn: passing zero to 'PTR_ERR'
Old smatch warnings:
drivers/tty/serial/serial_core.c:392 uart_shutdown() error: uninitialized symbol 'flags'.
drivers/tty/serial/serial_core.c:2996 iomem_base_show() warn: argument 3 to %lX specifier is cast from pointer
vim +/PTR_ERR +3651 drivers/tty/serial/serial_core.c
68af43173d3fce Dmitry Safonov 2020-03-02 3580
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3581 /**
743f93f822be1b Lukas Wunner 2017-11-24 3582 * uart_get_rs485_mode() - retrieve rs485 properties for given uart
a71725619ff63c Randy Dunlap 2020-06-15 3583 * @port: uart device's target port
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3584 *
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3585 * This function implements the device tree binding described in
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3586 * Documentation/devicetree/bindings/serial/rs485.txt.
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3587 */
c150c0f362c1e5 Lukas Wunner 2020-05-12 3588 int uart_get_rs485_mode(struct uart_port *port)
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3589 {
c150c0f362c1e5 Lukas Wunner 2020-05-12 3590 struct serial_rs485 *rs485conf = &port->rs485;
c150c0f362c1e5 Lukas Wunner 2020-05-12 3591 struct device *dev = port->dev;
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3592 enum gpiod_flags dflags;
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3593 struct gpio_desc *desc;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3594 u32 rs485_delay[2];
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3595 int ret;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3596
743f93f822be1b Lukas Wunner 2017-11-24 3597 ret = device_property_read_u32_array(dev, "rs485-rts-delay",
743f93f822be1b Lukas Wunner 2017-11-24 3598 rs485_delay, 2);
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3599 if (!ret) {
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3600 rs485conf->delay_rts_before_send = rs485_delay[0];
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3601 rs485conf->delay_rts_after_send = rs485_delay[1];
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3602 } else {
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3603 rs485conf->delay_rts_before_send = 0;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3604 rs485conf->delay_rts_after_send = 0;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3605 }
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3606
4dfd10351e49a7 Lino Sanfilippo 2022-07-10 3607 uart_sanitize_serial_rs485_delays(port, rs485conf);
4dfd10351e49a7 Lino Sanfilippo 2022-07-10 3608
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3609 /*
f1e5b618c1c26c Lukas Wunner 2017-11-24 3610 * Clear full-duplex and enabled flags, set RTS polarity to active high
f1e5b618c1c26c Lukas Wunner 2017-11-24 3611 * to get to a defined state with the following properties:
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3612 */
f1e5b618c1c26c Lukas Wunner 2017-11-24 3613 rs485conf->flags &= ~(SER_RS485_RX_DURING_TX | SER_RS485_ENABLED |
d58a2df3d8877b Lukas Wunner 2020-05-18 3614 SER_RS485_TERMINATE_BUS |
f1e5b618c1c26c Lukas Wunner 2017-11-24 3615 SER_RS485_RTS_AFTER_SEND);
f1e5b618c1c26c Lukas Wunner 2017-11-24 3616 rs485conf->flags |= SER_RS485_RTS_ON_SEND;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3617
743f93f822be1b Lukas Wunner 2017-11-24 3618 if (device_property_read_bool(dev, "rs485-rx-during-tx"))
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3619 rs485conf->flags |= SER_RS485_RX_DURING_TX;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3620
743f93f822be1b Lukas Wunner 2017-11-24 3621 if (device_property_read_bool(dev, "linux,rs485-enabled-at-boot-time"))
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3622 rs485conf->flags |= SER_RS485_ENABLED;
f1e5b618c1c26c Lukas Wunner 2017-11-24 3623
f1e5b618c1c26c Lukas Wunner 2017-11-24 3624 if (device_property_read_bool(dev, "rs485-rts-active-low")) {
f1e5b618c1c26c Lukas Wunner 2017-11-24 3625 rs485conf->flags &= ~SER_RS485_RTS_ON_SEND;
f1e5b618c1c26c Lukas Wunner 2017-11-24 3626 rs485conf->flags |= SER_RS485_RTS_AFTER_SEND;
f1e5b618c1c26c Lukas Wunner 2017-11-24 3627 }
c150c0f362c1e5 Lukas Wunner 2020-05-12 3628
d58a2df3d8877b Lukas Wunner 2020-05-18 3629 /*
d58a2df3d8877b Lukas Wunner 2020-05-18 3630 * Disabling termination by default is the safe choice: Else if many
d58a2df3d8877b Lukas Wunner 2020-05-18 3631 * bus participants enable it, no communication is possible at all.
d58a2df3d8877b Lukas Wunner 2020-05-18 3632 * Works fine for short cables and users may enable for longer cables.
d58a2df3d8877b Lukas Wunner 2020-05-18 3633 */
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3634 desc = devm_gpiod_get_optional(dev, "rs485-term", GPIOD_OUT_LOW);
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3635 if (IS_ERR(desc))
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3636 return dev_err_probe(dev, PTR_ERR(desc), "Cannot get rs485-term-gpios\n");
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3637 port->rs485_term_gpio = desc;
8bec874f84d826 Ilpo Järvinen 2022-07-04 3638 if (port->rs485_term_gpio)
8bec874f84d826 Ilpo Järvinen 2022-07-04 3639 port->rs485_supported.flags |= SER_RS485_TERMINATE_BUS;
d58a2df3d8877b Lukas Wunner 2020-05-18 3640
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3641 dflags = (rs485conf->flags & SER_RS485_RX_DURING_TX) ?
163f080eb717d2 Christoph Niedermaier 2022-12-02 3642 GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3643 desc = devm_gpiod_get_optional(dev, "rs485-rx-during-tx", dflags);
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3644 if (IS_ERR(desc))
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3645 return dev_err_probe(dev, PTR_ERR(desc), "Cannot get rs485-rx-during-tx-gpios\n");
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3646 port->rs485_rx_during_tx_gpio = desc;
163f080eb717d2 Christoph Niedermaier 2022-12-02 3647
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3648 dflags = (rs485conf->flags & SER_RS485_ENABLED) ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3649 desc = devm_gpiod_get_optional(dev, "rs485-mux", dflags);
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3650 if (IS_ERR(desc))
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 @3651 return dev_err_probe(dev, PTR_ERR(port->rs485_mux_gpio),
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3652 "Cannot get rs485-mux-gpios\n");
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3653 port->rs485_mux_gpio = desc;
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3654
c150c0f362c1e5 Lukas Wunner 2020-05-12 3655 return 0;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3656 }
743f93f822be1b Lukas Wunner 2017-11-24 3657 EXPORT_SYMBOL_GPL(uart_get_rs485_mode);
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3658
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 0/2] serial: add rs485-mux-gpio dt binding and support
@ 2023-11-20 15:10 Rasmus Villemoes
2023-11-20 15:10 ` [PATCH 2/2] serial: core: implement support for rs485-mux-gpios Rasmus Villemoes
0 siblings, 1 reply; 7+ messages in thread
From: Rasmus Villemoes @ 2023-11-20 15:10 UTC (permalink / raw)
To: Greg Kroah-Hartman, Jiri Slaby, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-kernel, linux-serial, devicetree
Cc: Andy Shevchenko, Lukas Wunner, Rasmus Villemoes, Rob Herring
Some boards are wired so that they support both rs232 and rs485, with
a gpio controlling a mux connecting the SOC's pins to the appropriate
external circuitry. Instead of requiring the application to know about
such details and handle the gpio appropriately, allow it to be
described in device tree and let the serial core code handle it if
present.
Tested on a board based on imx8mp.
Rasmus Villemoes (2):
dt-bindings: serial: rs485: add rs485-mux-gpios binding
serial: core: implement support for rs485-mux-gpios
.../devicetree/bindings/serial/rs485.yaml | 5 +++
drivers/tty/serial/serial_core.c | 35 +++++++++++++++++--
include/linux/serial_core.h | 1 +
3 files changed, 39 insertions(+), 2 deletions(-)
--
2.40.1.1.g1c60b9335d
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] serial: core: implement support for rs485-mux-gpios
2023-11-20 15:10 [PATCH 0/2] serial: add rs485-mux-gpio dt binding and support Rasmus Villemoes
@ 2023-11-20 15:10 ` Rasmus Villemoes
2023-11-20 23:28 ` Lino Sanfilippo
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Rasmus Villemoes @ 2023-11-20 15:10 UTC (permalink / raw)
To: Greg Kroah-Hartman, Jiri Slaby
Cc: devicetree, Andy Shevchenko, Lukas Wunner, Rasmus Villemoes,
linux-kernel, linux-serial
Add code for handling a rs485-mux-gpio specified in device tree.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
drivers/tty/serial/serial_core.c | 35 ++++++++++++++++++++++++++++++--
include/linux/serial_core.h | 1 +
2 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
index f1348a509552..410b17ea7444 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -1402,14 +1402,20 @@ static void uart_set_rs485_termination(struct uart_port *port,
!!(rs485->flags & SER_RS485_TERMINATE_BUS));
}
+static void uart_set_rs485_mux(struct uart_port *port, const struct serial_rs485 *rs485)
+{
+ gpiod_set_value_cansleep(port->rs485_mux_gpio,
+ !!(rs485->flags & SER_RS485_ENABLED));
+}
+
static int uart_rs485_config(struct uart_port *port)
{
struct serial_rs485 *rs485 = &port->rs485;
unsigned long flags;
- int ret;
+ int ret = 0;
if (!(rs485->flags & SER_RS485_ENABLED))
- return 0;
+ goto out;
uart_sanitize_serial_rs485(port, rs485);
uart_set_rs485_termination(port, rs485);
@@ -1420,6 +1426,9 @@ static int uart_rs485_config(struct uart_port *port)
if (ret)
memset(rs485, 0, sizeof(*rs485));
+out:
+ uart_set_rs485_mux(port, rs485);
+
return ret;
}
@@ -1457,6 +1466,14 @@ static int uart_set_rs485_config(struct tty_struct *tty, struct uart_port *port,
return ret;
uart_sanitize_serial_rs485(port, &rs485);
uart_set_rs485_termination(port, &rs485);
+ /*
+ * To avoid glitches on the transmit enable pin, the mux must
+ * be set before calling the driver's ->rs485_config when
+ * disabling rs485 mode, but after when enabling rs485
+ * mode.
+ */
+ if (!(rs485.flags & SER_RS485_ENABLED))
+ uart_set_rs485_mux(port, &rs485);
uart_port_lock_irqsave(port, &flags);
ret = port->rs485_config(port, &tty->termios, &rs485);
@@ -1468,6 +1485,13 @@ static int uart_set_rs485_config(struct tty_struct *tty, struct uart_port *port,
port->ops->set_mctrl(port, port->mctrl);
}
uart_port_unlock_irqrestore(port, flags);
+
+ /*
+ * The ->rs485_config might have failed. Regardless, set the
+ * mux according to the port's effective rs485 config.
+ */
+ uart_set_rs485_mux(port, &port->rs485);
+
if (ret)
return ret;
@@ -3621,6 +3645,13 @@ int uart_get_rs485_mode(struct uart_port *port)
return dev_err_probe(dev, PTR_ERR(desc), "Cannot get rs485-rx-during-tx-gpios\n");
port->rs485_rx_during_tx_gpio = desc;
+ dflags = (rs485conf->flags & SER_RS485_ENABLED) ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
+ desc = devm_gpiod_get_optional(dev, "rs485-mux", dflags);
+ if (IS_ERR(desc))
+ return dev_err_probe(dev, PTR_ERR(port->rs485_mux_gpio),
+ "Cannot get rs485-mux-gpios\n");
+ port->rs485_mux_gpio = desc;
+
return 0;
}
EXPORT_SYMBOL_GPL(uart_get_rs485_mode);
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index 89f7b6c63598..943818209c49 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -584,6 +584,7 @@ struct uart_port {
struct serial_rs485 rs485_supported; /* Supported mask for serial_rs485 */
struct gpio_desc *rs485_term_gpio; /* enable RS485 bus termination */
struct gpio_desc *rs485_rx_during_tx_gpio; /* Output GPIO that sets the state of RS485 RX during TX */
+ struct gpio_desc *rs485_mux_gpio; /* gpio for selecting RS485 mode */
struct serial_iso7816 iso7816;
void *private_data; /* generic platform data pointer */
};
--
2.40.1.1.g1c60b9335d
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH 2/2] serial: core: implement support for rs485-mux-gpios
2023-11-20 15:10 ` [PATCH 2/2] serial: core: implement support for rs485-mux-gpios Rasmus Villemoes
@ 2023-11-20 23:28 ` Lino Sanfilippo
2023-11-21 10:49 ` Dan Carpenter
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Lino Sanfilippo @ 2023-11-20 23:28 UTC (permalink / raw)
To: Rasmus Villemoes, Greg Kroah-Hartman, Jiri Slaby
Cc: devicetree, Andy Shevchenko, Lukas Wunner, linux-kernel,
linux-serial
Hi,
On 20.11.23 16:10, Rasmus Villemoes wrote:
> Add code for handling a rs485-mux-gpio specified in device tree.
>
> Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> ---
> drivers/tty/serial/serial_core.c | 35 ++++++++++++++++++++++++++++++--
> include/linux/serial_core.h | 1 +
> 2 files changed, 34 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
> index f1348a509552..410b17ea7444 100644
> --- a/drivers/tty/serial/serial_core.c
> +++ b/drivers/tty/serial/serial_core.c
> @@ -1402,14 +1402,20 @@ static void uart_set_rs485_termination(struct uart_port *port,
> !!(rs485->flags & SER_RS485_TERMINATE_BUS));
> }
>
> +static void uart_set_rs485_mux(struct uart_port *port, const struct serial_rs485 *rs485)
> +{
> + gpiod_set_value_cansleep(port->rs485_mux_gpio,
> + !!(rs485->flags & SER_RS485_ENABLED));
> +}
> +
> static int uart_rs485_config(struct uart_port *port)
> {
> struct serial_rs485 *rs485 = &port->rs485;
> unsigned long flags;
> - int ret;
> + int ret = 0;
>
> if (!(rs485->flags & SER_RS485_ENABLED))
> - return 0;
> + goto out;
>
> uart_sanitize_serial_rs485(port, rs485);
> uart_set_rs485_termination(port, rs485);
> @@ -1420,6 +1426,9 @@ static int uart_rs485_config(struct uart_port *port)
> if (ret)
> memset(rs485, 0, sizeof(*rs485));
>
> +out:
> + uart_set_rs485_mux(port, rs485);
> +
> return ret;
> }
>
> @@ -1457,6 +1466,14 @@ static int uart_set_rs485_config(struct tty_struct *tty, struct uart_port *port,
> return ret;
> uart_sanitize_serial_rs485(port, &rs485);
> uart_set_rs485_termination(port, &rs485);
> + /*
> + * To avoid glitches on the transmit enable pin, the mux must
> + * be set before calling the driver's ->rs485_config when
> + * disabling rs485 mode, but after when enabling rs485
> + * mode.
> + */
> + if (!(rs485.flags & SER_RS485_ENABLED))
> + uart_set_rs485_mux(port, &rs485);
>
> uart_port_lock_irqsave(port, &flags);
> ret = port->rs485_config(port, &tty->termios, &rs485);
> @@ -1468,6 +1485,13 @@ static int uart_set_rs485_config(struct tty_struct *tty, struct uart_port *port,
> port->ops->set_mctrl(port, port->mctrl);
> }
> uart_port_unlock_irqrestore(port, flags);
> +
> + /*
> + * The ->rs485_config might have failed. Regardless, set the
> + * mux according to the port's effective rs485 config.
> + */
> + uart_set_rs485_mux(port, &port->rs485);
> +
> if (ret)
> return ret;
>
> @@ -3621,6 +3645,13 @@ int uart_get_rs485_mode(struct uart_port *port)
> return dev_err_probe(dev, PTR_ERR(desc), "Cannot get rs485-rx-during-tx-gpios\n");
> port->rs485_rx_during_tx_gpio = desc;
>
> + dflags = (rs485conf->flags & SER_RS485_ENABLED) ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
> + desc = devm_gpiod_get_optional(dev, "rs485-mux", dflags);
> + if (IS_ERR(desc))
> + return dev_err_probe(dev, PTR_ERR(port->rs485_mux_gpio),
> + "Cannot get rs485-mux-gpios\n");
> + port->rs485_mux_gpio = desc;
> +
> return 0;
> }
> EXPORT_SYMBOL_GPL(uart_get_rs485_mode);
> diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
> index 89f7b6c63598..943818209c49 100644
> --- a/include/linux/serial_core.h
> +++ b/include/linux/serial_core.h
> @@ -584,6 +584,7 @@ struct uart_port {
> struct serial_rs485 rs485_supported; /* Supported mask for serial_rs485 */
> struct gpio_desc *rs485_term_gpio; /* enable RS485 bus termination */
> struct gpio_desc *rs485_rx_during_tx_gpio; /* Output GPIO that sets the state of RS485 RX during TX */
> + struct gpio_desc *rs485_mux_gpio; /* gpio for selecting RS485 mode */
> struct serial_iso7816 iso7816;
> void *private_data; /* generic platform data pointer */
> };
FWIW
Reviewed-by: Lino Sanfilippo <l.sanfilippo@kunbus.com>
Regards,
Lino
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 2/2] serial: core: implement support for rs485-mux-gpios
2023-11-20 15:10 ` [PATCH 2/2] serial: core: implement support for rs485-mux-gpios Rasmus Villemoes
2023-11-20 23:28 ` Lino Sanfilippo
@ 2023-11-21 10:49 ` Dan Carpenter
2023-11-22 15:10 ` Lukas Wunner
2023-12-04 5:00 ` Dan Carpenter
3 siblings, 0 replies; 7+ messages in thread
From: Dan Carpenter @ 2023-11-21 10:49 UTC (permalink / raw)
To: oe-kbuild, Rasmus Villemoes, Greg Kroah-Hartman, Jiri Slaby
Cc: lkp, oe-kbuild-all, devicetree, Andy Shevchenko, Lukas Wunner,
Rasmus Villemoes, linux-kernel, linux-serial
Hi Rasmus,
kernel test robot noticed the following build warnings:
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Rasmus-Villemoes/dt-bindings-serial-rs485-add-rs485-mux-gpios-binding/20231120-231551
base: v6.7-rc2
patch link: https://lore.kernel.org/r/20231120151056.148450-3-linux%40rasmusvillemoes.dk
patch subject: [PATCH 2/2] serial: core: implement support for rs485-mux-gpios
config: hexagon-randconfig-r071-20231121 (https://download.01.org/0day-ci/archive/20231121/202311211751.MgZLovko-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce: (https://download.01.org/0day-ci/archive/20231121/202311211751.MgZLovko-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202311211751.MgZLovko-lkp@intel.com/
New smatch warnings:
drivers/tty/serial/serial_core.c:3651 uart_get_rs485_mode() warn: passing zero to 'PTR_ERR'
Old smatch warnings:
drivers/tty/serial/serial_core.c:2996 iomem_base_show() warn: argument 3 to %lX specifier is cast from pointer
vim +/PTR_ERR +3651 drivers/tty/serial/serial_core.c
d58a2df3d8877b Lukas Wunner 2020-05-18 3629 /*
d58a2df3d8877b Lukas Wunner 2020-05-18 3630 * Disabling termination by default is the safe choice: Else if many
d58a2df3d8877b Lukas Wunner 2020-05-18 3631 * bus participants enable it, no communication is possible at all.
d58a2df3d8877b Lukas Wunner 2020-05-18 3632 * Works fine for short cables and users may enable for longer cables.
d58a2df3d8877b Lukas Wunner 2020-05-18 3633 */
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3634 desc = devm_gpiod_get_optional(dev, "rs485-term", GPIOD_OUT_LOW);
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3635 if (IS_ERR(desc))
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3636 return dev_err_probe(dev, PTR_ERR(desc), "Cannot get rs485-term-gpios\n");
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3637 port->rs485_term_gpio = desc;
8bec874f84d826 Ilpo Järvinen 2022-07-04 3638 if (port->rs485_term_gpio)
8bec874f84d826 Ilpo Järvinen 2022-07-04 3639 port->rs485_supported.flags |= SER_RS485_TERMINATE_BUS;
d58a2df3d8877b Lukas Wunner 2020-05-18 3640
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3641 dflags = (rs485conf->flags & SER_RS485_RX_DURING_TX) ?
163f080eb717d2 Christoph Niedermaier 2022-12-02 3642 GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3643 desc = devm_gpiod_get_optional(dev, "rs485-rx-during-tx", dflags);
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3644 if (IS_ERR(desc))
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3645 return dev_err_probe(dev, PTR_ERR(desc), "Cannot get rs485-rx-during-tx-gpios\n");
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3646 port->rs485_rx_during_tx_gpio = desc;
163f080eb717d2 Christoph Niedermaier 2022-12-02 3647
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3648 dflags = (rs485conf->flags & SER_RS485_ENABLED) ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3649 desc = devm_gpiod_get_optional(dev, "rs485-mux", dflags);
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3650 if (IS_ERR(desc))
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 @3651 return dev_err_probe(dev, PTR_ERR(port->rs485_mux_gpio),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Should be PTR_ERR(desc).
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3652 "Cannot get rs485-mux-gpios\n");
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3653 port->rs485_mux_gpio = desc;
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3654
c150c0f362c1e5 Lukas Wunner 2020-05-12 3655 return 0;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3656 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 2/2] serial: core: implement support for rs485-mux-gpios
2023-11-20 15:10 ` [PATCH 2/2] serial: core: implement support for rs485-mux-gpios Rasmus Villemoes
2023-11-20 23:28 ` Lino Sanfilippo
2023-11-21 10:49 ` Dan Carpenter
@ 2023-11-22 15:10 ` Lukas Wunner
2023-12-04 5:00 ` Dan Carpenter
3 siblings, 0 replies; 7+ messages in thread
From: Lukas Wunner @ 2023-11-22 15:10 UTC (permalink / raw)
To: Rasmus Villemoes
Cc: Greg Kroah-Hartman, Jiri Slaby, devicetree, Andy Shevchenko,
linux-kernel, linux-serial, Lino Sanfilippo, Ilpo Järvinen
On Mon, Nov 20, 2023 at 04:10:55PM +0100, Rasmus Villemoes wrote:
> Add code for handling a rs485-mux-gpio specified in device tree.
Hm, that's a bit terse as a commit message.
> @@ -1457,6 +1466,14 @@ static int uart_set_rs485_config(struct tty_struct *tty, struct uart_port *port,
> return ret;
> uart_sanitize_serial_rs485(port, &rs485);
> uart_set_rs485_termination(port, &rs485);
> + /*
> + * To avoid glitches on the transmit enable pin, the mux must
> + * be set before calling the driver's ->rs485_config when
> + * disabling rs485 mode, but after when enabling rs485
> + * mode.
> + */
> + if (!(rs485.flags & SER_RS485_ENABLED))
> + uart_set_rs485_mux(port, &rs485);
Can it happen that the UART's FIFO contains characters such that
suddenly switching the mux causes some of them to appear on the
RS-485 transceiver and some on the RS-232 driver?
Shouldn't we wait for the FIFO to drain before making the switch?
I think that would be closer to the behavior expected by user space.
> --- a/include/linux/serial_core.h
> +++ b/include/linux/serial_core.h
> @@ -584,6 +584,7 @@ struct uart_port {
> struct serial_rs485 rs485_supported; /* Supported mask for serial_rs485 */
> struct gpio_desc *rs485_term_gpio; /* enable RS485 bus termination */
> struct gpio_desc *rs485_rx_during_tx_gpio; /* Output GPIO that sets the state of RS485 RX during TX */
> + struct gpio_desc *rs485_mux_gpio; /* gpio for selecting RS485 mode */
Again, the code comment isn't really helpful as it doesn't add a whole
lot of information to the variable name "rs485_mux_gpio". How about:
"select between RS-232 and RS-485 transceiver" ?
(I realize I made a typo in my previous e-mail about the DT-binding,
sorry about that: s/connect/connected/)
Thanks,
Lukas
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 2/2] serial: core: implement support for rs485-mux-gpios
2023-11-20 15:10 ` [PATCH 2/2] serial: core: implement support for rs485-mux-gpios Rasmus Villemoes
` (2 preceding siblings ...)
2023-11-22 15:10 ` Lukas Wunner
@ 2023-12-04 5:00 ` Dan Carpenter
3 siblings, 0 replies; 7+ messages in thread
From: Dan Carpenter @ 2023-12-04 5:00 UTC (permalink / raw)
To: oe-kbuild, Rasmus Villemoes, Greg Kroah-Hartman, Jiri Slaby
Cc: lkp, oe-kbuild-all, devicetree, Andy Shevchenko, Lukas Wunner,
Rasmus Villemoes, linux-kernel, linux-serial
Hi Rasmus,
kernel test robot noticed the following build warnings:
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Rasmus-Villemoes/dt-bindings-serial-rs485-add-rs485-mux-gpios-binding/20231120-231551
base: v6.7-rc2
patch link: https://lore.kernel.org/r/20231120151056.148450-3-linux%40rasmusvillemoes.dk
patch subject: [PATCH 2/2] serial: core: implement support for rs485-mux-gpios
config: hexagon-randconfig-r071-20231121 (https://download.01.org/0day-ci/archive/20231203/202312031811.pmLZJIf5-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce: (https://download.01.org/0day-ci/archive/20231203/202312031811.pmLZJIf5-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202312031811.pmLZJIf5-lkp@intel.com/
New smatch warnings:
drivers/tty/serial/serial_core.c:3651 uart_get_rs485_mode() warn: passing zero to 'PTR_ERR'
Old smatch warnings:
drivers/tty/serial/serial_core.c:2996 iomem_base_show() warn: argument 3 to %lX specifier is cast from pointer
vim +/PTR_ERR +3651 drivers/tty/serial/serial_core.c
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3641 dflags = (rs485conf->flags & SER_RS485_RX_DURING_TX) ?
163f080eb717d2 Christoph Niedermaier 2022-12-02 3642 GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3643 desc = devm_gpiod_get_optional(dev, "rs485-rx-during-tx", dflags);
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3644 if (IS_ERR(desc))
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3645 return dev_err_probe(dev, PTR_ERR(desc), "Cannot get rs485-rx-during-tx-gpios\n");
7cda0b9eb6eb9e Andy Shevchenko 2023-10-03 3646 port->rs485_rx_during_tx_gpio = desc;
163f080eb717d2 Christoph Niedermaier 2022-12-02 3647
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3648 dflags = (rs485conf->flags & SER_RS485_ENABLED) ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3649 desc = devm_gpiod_get_optional(dev, "rs485-mux", dflags);
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3650 if (IS_ERR(desc))
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 @3651 return dev_err_probe(dev, PTR_ERR(port->rs485_mux_gpio),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
s/port->rs485_mux_gpio/desc/
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3652 "Cannot get rs485-mux-gpios\n");
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3653 port->rs485_mux_gpio = desc;
da0ccd117da1e4 Rasmus Villemoes 2023-11-20 3654
c150c0f362c1e5 Lukas Wunner 2020-05-12 3655 return 0;
ef838a81dd4de1 Uwe Kleine-König 2017-09-13 3656 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-12-04 5:00 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-03 10:38 [PATCH 2/2] serial: core: implement support for rs485-mux-gpios kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2023-11-21 9:15 kernel test robot
2023-11-20 15:10 [PATCH 0/2] serial: add rs485-mux-gpio dt binding and support Rasmus Villemoes
2023-11-20 15:10 ` [PATCH 2/2] serial: core: implement support for rs485-mux-gpios Rasmus Villemoes
2023-11-20 23:28 ` Lino Sanfilippo
2023-11-21 10:49 ` Dan Carpenter
2023-11-22 15:10 ` Lukas Wunner
2023-12-04 5:00 ` Dan Carpenter
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.