linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] serial: RS485 termination improvements
@ 2022-07-04  9:45 Ilpo Järvinen
  2022-07-04  9:45 ` [PATCH 1/2] serial: Embed rs485_supported to uart_port Ilpo Järvinen
  2022-07-04  9:45 ` [PATCH 2/2] serial: RS485 termination is supported if DT provides one Ilpo Järvinen
  0 siblings, 2 replies; 5+ messages in thread
From: Ilpo Järvinen @ 2022-07-04  9:45 UTC (permalink / raw)
  To: linux-serial, Greg KH, Jiri Slaby, Andy Shevchenko, Lukas Wunner,
	Lino Sanfilippo
  Cc: linux-kernel, Ilpo Järvinen

This series improves termination handling for RS485. Effectively,
.rs485_supported is made a per port and the termination flag is enabled
when DT configures termination. The downside of this is that embedded
struct consumes a little bit of more memory, especially as struct
serial_rs485 has the padding field.

There is other problem on this area besides the one addressed by this
series which is new since the introduction of .rs485_supported. Lino's
patch series addresses the ability to tweak the termination through
->rs485_config() for any driver.

For kernel uses, struct kserial_rs485 version of serial_rs485 could be
added and both .rs485 and .rs485_supported converted to it leaving
struct_rs485 only for UAPI use. This series, howver, doesn't attempt
it. It seems relatively easy to build it on top of these changes
though.


Ilpo Järvinen (2):
  serial: Embed rs485_supported
  serial: RS485 termination is supported if DT provides one

 drivers/tty/serial/8250/8250_bcm2835aux.c |  2 +-
 drivers/tty/serial/8250/8250_dwlib.c      |  4 ++--
 drivers/tty/serial/8250/8250_exar.c       |  2 +-
 drivers/tty/serial/8250/8250_fintek.c     |  4 ++--
 drivers/tty/serial/8250/8250_lpc18xx.c    |  2 +-
 drivers/tty/serial/8250/8250_of.c         |  2 +-
 drivers/tty/serial/8250/8250_pci.c        |  2 +-
 drivers/tty/serial/amba-pl011.c           |  2 +-
 drivers/tty/serial/ar933x_uart.c          |  4 ++--
 drivers/tty/serial/atmel_serial.c         |  2 +-
 drivers/tty/serial/fsl_lpuart.c           |  2 +-
 drivers/tty/serial/imx.c                  |  4 ++--
 drivers/tty/serial/max310x.c              |  2 +-
 drivers/tty/serial/mcf.c                  |  4 ++--
 drivers/tty/serial/omap-serial.c          |  2 +-
 drivers/tty/serial/sc16is7xx.c            |  2 +-
 drivers/tty/serial/serial_core.c          | 10 ++++++----
 drivers/tty/serial/stm32-usart.c          |  2 +-
 include/linux/serial_core.h               |  2 +-
 19 files changed, 29 insertions(+), 27 deletions(-)

-- 
2.30.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] serial: Embed rs485_supported to uart_port
  2022-07-04  9:45 [PATCH 0/2] serial: RS485 termination improvements Ilpo Järvinen
@ 2022-07-04  9:45 ` Ilpo Järvinen
  2022-07-05 10:41   ` Lino Sanfilippo
  2022-07-04  9:45 ` [PATCH 2/2] serial: RS485 termination is supported if DT provides one Ilpo Järvinen
  1 sibling, 1 reply; 5+ messages in thread
From: Ilpo Järvinen @ 2022-07-04  9:45 UTC (permalink / raw)
  To: linux-serial, Greg KH, Jiri Slaby, Andy Shevchenko, Lukas Wunner,
	Lino Sanfilippo, Nicolas Saenz Julienne,
	Broadcom internal kernel review list, Florian Fainelli, Ray Jui,
	Scott Branden, Ilpo Järvinen, Vladimir Zapolskiy,
	Russell King, Richard Genoud, Nicolas Ferre, Alexandre Belloni,
	Claudiu Beznea, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, NXP Linux Team, Maxime Coquelin, Alexandre Torgue,
	linux-rpi-kernel, linux-arm-kernel, linux-kernel, linux-stm32

Embed rs485_supported to uart_port to allow serial core to tweak it as
needed.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
---
 drivers/tty/serial/8250/8250_bcm2835aux.c | 2 +-
 drivers/tty/serial/8250/8250_dwlib.c      | 4 ++--
 drivers/tty/serial/8250/8250_exar.c       | 2 +-
 drivers/tty/serial/8250/8250_fintek.c     | 4 ++--
 drivers/tty/serial/8250/8250_lpc18xx.c    | 2 +-
 drivers/tty/serial/8250/8250_of.c         | 2 +-
 drivers/tty/serial/8250/8250_pci.c        | 2 +-
 drivers/tty/serial/amba-pl011.c           | 2 +-
 drivers/tty/serial/ar933x_uart.c          | 4 ++--
 drivers/tty/serial/atmel_serial.c         | 2 +-
 drivers/tty/serial/fsl_lpuart.c           | 2 +-
 drivers/tty/serial/imx.c                  | 4 ++--
 drivers/tty/serial/max310x.c              | 2 +-
 drivers/tty/serial/mcf.c                  | 4 ++--
 drivers/tty/serial/omap-serial.c          | 2 +-
 drivers/tty/serial/sc16is7xx.c            | 2 +-
 drivers/tty/serial/serial_core.c          | 8 ++++----
 drivers/tty/serial/stm32-usart.c          | 2 +-
 include/linux/serial_core.h               | 2 +-
 19 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/drivers/tty/serial/8250/8250_bcm2835aux.c b/drivers/tty/serial/8250/8250_bcm2835aux.c
index d9f1e618cfbd..047e14ccb165 100644
--- a/drivers/tty/serial/8250/8250_bcm2835aux.c
+++ b/drivers/tty/serial/8250/8250_bcm2835aux.c
@@ -108,7 +108,7 @@ static int bcm2835aux_serial_probe(struct platform_device *pdev)
 	up.port.flags = UPF_SHARE_IRQ | UPF_FIXED_PORT | UPF_FIXED_TYPE |
 			UPF_SKIP_TEST | UPF_IOREMAP;
 	up.port.rs485_config = serial8250_em485_config;
-	up.port.rs485_supported = &serial8250_em485_supported;
+	up.port.rs485_supported = serial8250_em485_supported;
 	up.rs485_start_tx = bcm2835aux_rs485_start_tx;
 	up.rs485_stop_tx = bcm2835aux_rs485_stop_tx;
 
diff --git a/drivers/tty/serial/8250/8250_dwlib.c b/drivers/tty/serial/8250/8250_dwlib.c
index a8bbed74ea70..2c3b1468bd88 100644
--- a/drivers/tty/serial/8250/8250_dwlib.c
+++ b/drivers/tty/serial/8250/8250_dwlib.c
@@ -255,10 +255,10 @@ void dw8250_setup_port(struct uart_port *p)
 	if (pd->hw_rs485_support) {
 		p->rs485_config = dw8250_rs485_config;
 		up->lsr_save_mask = LSR_SAVE_FLAGS | DW_UART_LSR_ADDR_RCVD;
-		p->rs485_supported = &dw8250_rs485_supported;
+		p->rs485_supported = dw8250_rs485_supported;
 	} else {
 		p->rs485_config = serial8250_em485_config;
-		p->rs485_supported = &serial8250_em485_supported;
+		p->rs485_supported = serial8250_em485_supported;
 		up->rs485_start_tx = serial8250_em485_start_tx;
 		up->rs485_stop_tx = serial8250_em485_stop_tx;
 	}
diff --git a/drivers/tty/serial/8250/8250_exar.c b/drivers/tty/serial/8250/8250_exar.c
index f5344cfe303c..314a05e009df 100644
--- a/drivers/tty/serial/8250/8250_exar.c
+++ b/drivers/tty/serial/8250/8250_exar.c
@@ -550,7 +550,7 @@ pci_xr17v35x_setup(struct exar8250 *priv, struct pci_dev *pcidev,
 
 	port->port.uartclk = baud * 16;
 	port->port.rs485_config = platform->rs485_config;
-	port->port.rs485_supported = platform->rs485_supported;
+	port->port.rs485_supported = *(platform->rs485_supported);
 
 	/*
 	 * Setup the UART clock for the devices on expansion slot to
diff --git a/drivers/tty/serial/8250/8250_fintek.c b/drivers/tty/serial/8250/8250_fintek.c
index eea693f5b577..65b6b3cbaff6 100644
--- a/drivers/tty/serial/8250/8250_fintek.c
+++ b/drivers/tty/serial/8250/8250_fintek.c
@@ -433,9 +433,9 @@ static void fintek_8250_set_rs485_handler(struct uart_8250_port *uart)
 	case CHIP_ID_F81865:
 		uart->port.rs485_config = fintek_8250_rs485_config;
 		if (!pdata->index)
-			uart->port.rs485_supported = &fintek_8250_rs485_supported_port0;
+			uart->port.rs485_supported = fintek_8250_rs485_supported_port0;
 		else
-			uart->port.rs485_supported = &fintek_8250_rs485_supported;
+			uart->port.rs485_supported = fintek_8250_rs485_supported;
 		break;
 
 	default: /* No RS485 Auto direction functional */
diff --git a/drivers/tty/serial/8250/8250_lpc18xx.c b/drivers/tty/serial/8250/8250_lpc18xx.c
index d7cb3bb52069..d6ca0d47e9d5 100644
--- a/drivers/tty/serial/8250/8250_lpc18xx.c
+++ b/drivers/tty/serial/8250/8250_lpc18xx.c
@@ -161,7 +161,7 @@ static int lpc18xx_serial_probe(struct platform_device *pdev)
 	uart.port.uartclk = clk_get_rate(data->clk_uart);
 	uart.port.private_data = data;
 	uart.port.rs485_config = lpc18xx_rs485_config;
-	uart.port.rs485_supported = &lpc18xx_rs485_supported;
+	uart.port.rs485_supported = lpc18xx_rs485_supported;
 	uart.port.serial_out = lpc18xx_uart_serial_out;
 
 	uart.dma = &data->dma;
diff --git a/drivers/tty/serial/8250/8250_of.c b/drivers/tty/serial/8250/8250_of.c
index 65cccd559db2..1b461fba15a3 100644
--- a/drivers/tty/serial/8250/8250_of.c
+++ b/drivers/tty/serial/8250/8250_of.c
@@ -165,7 +165,7 @@ static int of_platform_serial_setup(struct platform_device *ofdev,
 
 	port->dev = &ofdev->dev;
 	port->rs485_config = serial8250_em485_config;
-	port->rs485_supported = &serial8250_em485_supported;
+	port->rs485_supported = serial8250_em485_supported;
 	up->rs485_start_tx = serial8250_em485_start_tx;
 	up->rs485_stop_tx = serial8250_em485_stop_tx;
 
diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
index d31d2350a9db..8a39ae072c65 100644
--- a/drivers/tty/serial/8250/8250_pci.c
+++ b/drivers/tty/serial/8250/8250_pci.c
@@ -1607,7 +1607,7 @@ static int pci_fintek_setup(struct serial_private *priv,
 	port->port.iotype = UPIO_PORT;
 	port->port.iobase = iobase;
 	port->port.rs485_config = pci_fintek_rs485_config;
-	port->port.rs485_supported = &pci_fintek_rs485_supported;
+	port->port.rs485_supported = pci_fintek_rs485_supported;
 
 	data = devm_kzalloc(&pdev->dev, sizeof(u8), GFP_KERNEL);
 	if (!data)
diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
index c8f52945a4aa..abeceeefdece 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
@@ -2779,7 +2779,7 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
 	uap->port.irq = dev->irq[0];
 	uap->port.ops = &amba_pl011_pops;
 	uap->port.rs485_config = pl011_rs485_config;
-	uap->port.rs485_supported = &pl011_rs485_supported;
+	uap->port.rs485_supported = pl011_rs485_supported;
 	snprintf(uap->type, sizeof(uap->type), "PL011 rev%u", amba_rev(dev));
 
 	ret = pl011_setup_port(&dev->dev, uap, &dev->res, portnr);
diff --git a/drivers/tty/serial/ar933x_uart.c b/drivers/tty/serial/ar933x_uart.c
index b73ce13683db..f931ecbc0bc0 100644
--- a/drivers/tty/serial/ar933x_uart.c
+++ b/drivers/tty/serial/ar933x_uart.c
@@ -778,7 +778,7 @@ static int ar933x_uart_probe(struct platform_device *pdev)
 	port->fifosize = AR933X_UART_FIFO_SIZE;
 	port->ops = &ar933x_uart_ops;
 	port->rs485_config = ar933x_config_rs485;
-	port->rs485_supported = &ar933x_rs485_supported;
+	port->rs485_supported = ar933x_rs485_supported;
 
 	baud = ar933x_uart_get_baud(port->uartclk, AR933X_UART_MAX_SCALE, 1);
 	up->min_baud = max_t(unsigned int, baud, AR933X_UART_MIN_BAUD);
@@ -802,7 +802,7 @@ static int ar933x_uart_probe(struct platform_device *pdev)
 	    !up->rts_gpiod) {
 		dev_err(&pdev->dev, "lacking rts-gpio, disabling RS485\n");
 		port->rs485.flags &= ~SER_RS485_ENABLED;
-		port->rs485_supported = &ar933x_no_rs485;
+		port->rs485_supported = ar933x_no_rs485;
 	}
 
 #ifdef CONFIG_SERIAL_AR933X_CONSOLE
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
index bc6004679585..30ba9eef7b39 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
@@ -2498,7 +2498,7 @@ static int atmel_init_port(struct atmel_uart_port *atmel_port,
 	port->mapbase		= mpdev->resource[0].start;
 	port->irq		= platform_get_irq(mpdev, 0);
 	port->rs485_config	= atmel_config_rs485;
-	port->rs485_supported	= &atmel_rs485_supported;
+	port->rs485_supported	= atmel_rs485_supported;
 	port->iso7816_config	= atmel_config_iso7816;
 	port->membase		= NULL;
 
diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
index 8fe0494d4057..fc7d235a1e27 100644
--- a/drivers/tty/serial/fsl_lpuart.c
+++ b/drivers/tty/serial/fsl_lpuart.c
@@ -2655,7 +2655,7 @@ static int lpuart_probe(struct platform_device *pdev)
 		sport->port.rs485_config = lpuart32_config_rs485;
 	else
 		sport->port.rs485_config = lpuart_config_rs485;
-	sport->port.rs485_supported = &lpuart_rs485_supported;
+	sport->port.rs485_supported = lpuart_rs485_supported;
 
 	sport->ipg_clk = devm_clk_get(&pdev->dev, "ipg");
 	if (IS_ERR(sport->ipg_clk)) {
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index 3457006cea3f..522445a8f666 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -2285,9 +2285,9 @@ static int imx_uart_probe(struct platform_device *pdev)
 	sport->port.rs485_config = imx_uart_rs485_config;
 	/* RTS is required to control the RS485 transmitter */
 	if (sport->have_rtscts || sport->have_rtsgpio)
-		sport->port.rs485_supported = &imx_rs485_supported;
+		sport->port.rs485_supported = imx_rs485_supported;
 	else
-		sport->port.rs485_supported = &imx_no_rs485;
+		sport->port.rs485_supported = imx_no_rs485;
 	sport->port.flags = UPF_BOOT_AUTOCONF;
 	timer_setup(&sport->timer, imx_uart_timeout, 0);
 
diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c
index e162bfb44080..ab10ca4a45b5 100644
--- a/drivers/tty/serial/max310x.c
+++ b/drivers/tty/serial/max310x.c
@@ -1370,7 +1370,7 @@ static int max310x_probe(struct device *dev, const struct max310x_devtype *devty
 		s->p[i].port.membase	= (void __iomem *)~0;
 		s->p[i].port.uartclk	= uartclk;
 		s->p[i].port.rs485_config = max310x_rs485_config;
-		s->p[i].port.rs485_supported = &max310x_rs485_supported;
+		s->p[i].port.rs485_supported = max310x_rs485_supported;
 		s->p[i].port.ops	= &max310x_ops;
 		s->p[i].regmap		= regmaps[i];
 
diff --git a/drivers/tty/serial/mcf.c b/drivers/tty/serial/mcf.c
index 73c5287b8e5e..f4aaaadd0742 100644
--- a/drivers/tty/serial/mcf.c
+++ b/drivers/tty/serial/mcf.c
@@ -506,7 +506,7 @@ int __init early_mcf_setup(struct mcf_platform_uart *platp)
 		port->uartclk = MCF_BUSCLK;
 		port->flags = UPF_BOOT_AUTOCONF;
 		port->rs485_config = mcf_config_rs485;
-		port->rs485_supported = &mcf_rs485_supported;
+		port->rs485_supported = mcf_rs485_supported;
 		port->ops = &mcf_uart_ops;
 	}
 
@@ -634,7 +634,7 @@ static int mcf_probe(struct platform_device *pdev)
 		port->ops = &mcf_uart_ops;
 		port->flags = UPF_BOOT_AUTOCONF;
 		port->rs485_config = mcf_config_rs485;
-		port->rs485_supported = &mcf_rs485_supported;
+		port->rs485_supported = mcf_rs485_supported;
 		port->has_sysrq = IS_ENABLED(CONFIG_SERIAL_MCF_CONSOLE);
 
 		uart_add_one_port(&mcf_driver, port);
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index 196bae704f85..0aa666e247d5 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -1643,7 +1643,7 @@ static int serial_omap_probe(struct platform_device *pdev)
 	up->port.flags = omap_up_info->flags;
 	up->port.uartclk = omap_up_info->uartclk;
 	up->port.rs485_config = serial_omap_config_rs485;
-	up->port.rs485_supported = &serial_omap_rs485_supported;
+	up->port.rs485_supported = serial_omap_rs485_supported;
 	if (!up->port.uartclk) {
 		up->port.uartclk = DEFAULT_CLK_SPEED;
 		dev_warn(&pdev->dev,
diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
index 8cb92a3b3fb8..259e08cc347c 100644
--- a/drivers/tty/serial/sc16is7xx.c
+++ b/drivers/tty/serial/sc16is7xx.c
@@ -1461,7 +1461,7 @@ static int sc16is7xx_probe(struct device *dev,
 		s->p[i].port.iotype	= UPIO_PORT;
 		s->p[i].port.uartclk	= freq;
 		s->p[i].port.rs485_config = sc16is7xx_config_rs485;
-		s->p[i].port.rs485_supported = &sc16is7xx_rs485_supported;
+		s->p[i].port.rs485_supported = sc16is7xx_rs485_supported;
 		s->p[i].port.ops	= &sc16is7xx_ops;
 		s->p[i].old_mctrl	= 0;
 		s->p[i].port.line	= sc16is7xx_alloc_line();
diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
index 85ef7ef00b82..a9cf1044a9fa 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -1285,7 +1285,7 @@ static int uart_check_rs485_flags(struct uart_port *port, struct serial_rs485 *r
 	 * For any bit outside of the legacy ones that is not supported by
 	 * the driver, return -EINVAL.
 	 */
-	if (flags & ~port->rs485_supported->flags)
+	if (flags & ~port->rs485_supported.flags)
 		return -EINVAL;
 
 	/* Asking for address w/o addressing mode? */
@@ -1304,7 +1304,7 @@ static int uart_check_rs485_flags(struct uart_port *port, struct serial_rs485 *r
 
 static void uart_sanitize_serial_rs485(struct uart_port *port, struct serial_rs485 *rs485)
 {
-	u32 supported_flags = port->rs485_supported->flags;
+	u32 supported_flags = port->rs485_supported.flags;
 
 	if (!(rs485->flags & SER_RS485_ENABLED)) {
 		memset(rs485, 0, sizeof(*rs485));
@@ -1323,7 +1323,7 @@ static void uart_sanitize_serial_rs485(struct uart_port *port, struct serial_rs4
 		supported_flags |= SER_RS485_RTS_ON_SEND|SER_RS485_RTS_AFTER_SEND;
 	}
 
-	if (!port->rs485_supported->delay_rts_before_send) {
+	if (!port->rs485_supported.delay_rts_before_send) {
 		if (rs485->delay_rts_before_send) {
 			dev_warn_ratelimited(port->dev,
 				"%s (%d): RTS delay before sending not supported\n",
@@ -1337,7 +1337,7 @@ static void uart_sanitize_serial_rs485(struct uart_port *port, struct serial_rs4
 			port->name, port->line, rs485->delay_rts_before_send);
 	}
 
-	if (!port->rs485_supported->delay_rts_after_send) {
+	if (!port->rs485_supported.delay_rts_after_send) {
 		if (rs485->delay_rts_after_send) {
 			dev_warn_ratelimited(port->dev,
 				"%s (%d): RTS delay after sending not supported\n",
diff --git a/drivers/tty/serial/stm32-usart.c b/drivers/tty/serial/stm32-usart.c
index 13992e64a7df..ff5c7e0ebc4c 100644
--- a/drivers/tty/serial/stm32-usart.c
+++ b/drivers/tty/serial/stm32-usart.c
@@ -1401,7 +1401,7 @@ static int stm32_usart_init_port(struct stm32_port *stm32port,
 	port->has_sysrq = IS_ENABLED(CONFIG_SERIAL_STM32_CONSOLE);
 	port->irq = irq;
 	port->rs485_config = stm32_usart_config_rs485;
-	port->rs485_supported = &stm32_rs485_supported;
+	port->rs485_supported = stm32_rs485_supported;
 
 	ret = stm32_usart_init_rs485(port, pdev);
 	if (ret)
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index b7b86ee3cb12..a6fa7c40c330 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -255,7 +255,7 @@ struct uart_port {
 	struct attribute_group	*attr_group;		/* port specific attributes */
 	const struct attribute_group **tty_groups;	/* all attributes (serial core use only) */
 	struct serial_rs485     rs485;
-	const struct serial_rs485	*rs485_supported;	/* Supported mask for serial_rs485 */
+	struct serial_rs485	rs485_supported;	/* Supported mask for serial_rs485 */
 	struct gpio_desc	*rs485_term_gpio;	/* enable RS485 bus termination */
 	struct serial_iso7816   iso7816;
 	void			*private_data;		/* generic platform data pointer */
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] serial: RS485 termination is supported if DT provides one
  2022-07-04  9:45 [PATCH 0/2] serial: RS485 termination improvements Ilpo Järvinen
  2022-07-04  9:45 ` [PATCH 1/2] serial: Embed rs485_supported to uart_port Ilpo Järvinen
@ 2022-07-04  9:45 ` Ilpo Järvinen
  2022-07-05 10:27   ` Lino Sanfilippo
  1 sibling, 1 reply; 5+ messages in thread
From: Ilpo Järvinen @ 2022-07-04  9:45 UTC (permalink / raw)
  To: linux-serial, Greg KH, Jiri Slaby, Andy Shevchenko, Lukas Wunner,
	Lino Sanfilippo, linux-kernel
  Cc: Ilpo Järvinen

When DT provides rs485-term, set termination flag as supported.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
---
 drivers/tty/serial/serial_core.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
index a9cf1044a9fa..1db44cde76f6 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -3409,6 +3409,8 @@ int uart_get_rs485_mode(struct uart_port *port)
 		port->rs485_term_gpio = NULL;
 		return dev_err_probe(dev, ret, "Cannot get rs485-term-gpios\n");
 	}
+	if (port->rs485_term_gpio)
+		port->rs485_supported.flags |= SER_RS485_TERMINATE_BUS;
 
 	return 0;
 }
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] serial: RS485 termination is supported if DT provides one
  2022-07-04  9:45 ` [PATCH 2/2] serial: RS485 termination is supported if DT provides one Ilpo Järvinen
@ 2022-07-05 10:27   ` Lino Sanfilippo
  0 siblings, 0 replies; 5+ messages in thread
From: Lino Sanfilippo @ 2022-07-05 10:27 UTC (permalink / raw)
  To: Ilpo Järvinen, linux-serial, Greg KH, Jiri Slaby,
	Andy Shevchenko, Lukas Wunner, linux-kernel


On 04.07.22 11:45, Ilpo Järvinen wrote:
> When DT provides rs485-term, set termination flag as supported.
>
> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
> ---
>  drivers/tty/serial/serial_core.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
> index a9cf1044a9fa..1db44cde76f6 100644
> --- a/drivers/tty/serial/serial_core.c
> +++ b/drivers/tty/serial/serial_core.c
> @@ -3409,6 +3409,8 @@ int uart_get_rs485_mode(struct uart_port *port)
>  		port->rs485_term_gpio = NULL;
>  		return dev_err_probe(dev, ret, "Cannot get rs485-term-gpios\n");
>  	}
> +	if (port->rs485_term_gpio)
> +		port->rs485_supported.flags |= SER_RS485_TERMINATE_BUS;
>
>  	return 0;
>  }


FWIW:
Reviewed-by: Lino Sanfilippo <l.sanfilippo@kunbus.com>


Regards,
Lino

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] serial: Embed rs485_supported to uart_port
  2022-07-04  9:45 ` [PATCH 1/2] serial: Embed rs485_supported to uart_port Ilpo Järvinen
@ 2022-07-05 10:41   ` Lino Sanfilippo
  0 siblings, 0 replies; 5+ messages in thread
From: Lino Sanfilippo @ 2022-07-05 10:41 UTC (permalink / raw)
  To: Ilpo Järvinen, linux-serial, Greg KH, Jiri Slaby,
	Andy Shevchenko, Lukas Wunner, Nicolas Saenz Julienne,
	Broadcom internal kernel review list, Florian Fainelli, Ray Jui,
	Scott Branden, Vladimir Zapolskiy, Russell King, Richard Genoud,
	Nicolas Ferre, Alexandre Belloni, Claudiu Beznea, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	NXP Linux Team, Maxime Coquelin, Alexandre Torgue,
	linux-rpi-kernel, linux-arm-kernel, linux-kernel, linux-stm32



On 04.07.22 11:45, Ilpo Järvinen wrote:
> Embed rs485_supported to uart_port to allow serial core to tweak it as
> needed.
>
> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
> ---
>  drivers/tty/serial/8250/8250_bcm2835aux.c | 2 +-
>  drivers/tty/serial/8250/8250_dwlib.c      | 4 ++--
>  drivers/tty/serial/8250/8250_exar.c       | 2 +-
>  drivers/tty/serial/8250/8250_fintek.c     | 4 ++--
>  drivers/tty/serial/8250/8250_lpc18xx.c    | 2 +-
>  drivers/tty/serial/8250/8250_of.c         | 2 +-
>  drivers/tty/serial/8250/8250_pci.c        | 2 +-
>  drivers/tty/serial/amba-pl011.c           | 2 +-
>  drivers/tty/serial/ar933x_uart.c          | 4 ++--
>  drivers/tty/serial/atmel_serial.c         | 2 +-
>  drivers/tty/serial/fsl_lpuart.c           | 2 +-
>  drivers/tty/serial/imx.c                  | 4 ++--
>  drivers/tty/serial/max310x.c              | 2 +-
>  drivers/tty/serial/mcf.c                  | 4 ++--
>  drivers/tty/serial/omap-serial.c          | 2 +-
>  drivers/tty/serial/sc16is7xx.c            | 2 +-
>  drivers/tty/serial/serial_core.c          | 8 ++++----
>  drivers/tty/serial/stm32-usart.c          | 2 +-
>  include/linux/serial_core.h               | 2 +-
>  19 files changed, 27 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/tty/serial/8250/8250_bcm2835aux.c b/drivers/tty/serial/8250/8250_bcm2835aux.c
> index d9f1e618cfbd..047e14ccb165 100644
> --- a/drivers/tty/serial/8250/8250_bcm2835aux.c
> +++ b/drivers/tty/serial/8250/8250_bcm2835aux.c
> @@ -108,7 +108,7 @@ static int bcm2835aux_serial_probe(struct platform_device *pdev)
>  	up.port.flags = UPF_SHARE_IRQ | UPF_FIXED_PORT | UPF_FIXED_TYPE |
>  			UPF_SKIP_TEST | UPF_IOREMAP;
>  	up.port.rs485_config = serial8250_em485_config;
> -	up.port.rs485_supported = &serial8250_em485_supported;
> +	up.port.rs485_supported = serial8250_em485_supported;
>  	up.rs485_start_tx = bcm2835aux_rs485_start_tx;
>  	up.rs485_stop_tx = bcm2835aux_rs485_stop_tx;
>
> diff --git a/drivers/tty/serial/8250/8250_dwlib.c b/drivers/tty/serial/8250/8250_dwlib.c
> index a8bbed74ea70..2c3b1468bd88 100644
> --- a/drivers/tty/serial/8250/8250_dwlib.c
> +++ b/drivers/tty/serial/8250/8250_dwlib.c
> @@ -255,10 +255,10 @@ void dw8250_setup_port(struct uart_port *p)
>  	if (pd->hw_rs485_support) {
>  		p->rs485_config = dw8250_rs485_config;
>  		up->lsr_save_mask = LSR_SAVE_FLAGS | DW_UART_LSR_ADDR_RCVD;
> -		p->rs485_supported = &dw8250_rs485_supported;
> +		p->rs485_supported = dw8250_rs485_supported;
>  	} else {
>  		p->rs485_config = serial8250_em485_config;
> -		p->rs485_supported = &serial8250_em485_supported;
> +		p->rs485_supported = serial8250_em485_supported;
>  		up->rs485_start_tx = serial8250_em485_start_tx;
>  		up->rs485_stop_tx = serial8250_em485_stop_tx;
>  	}
> diff --git a/drivers/tty/serial/8250/8250_exar.c b/drivers/tty/serial/8250/8250_exar.c
> index f5344cfe303c..314a05e009df 100644
> --- a/drivers/tty/serial/8250/8250_exar.c
> +++ b/drivers/tty/serial/8250/8250_exar.c
> @@ -550,7 +550,7 @@ pci_xr17v35x_setup(struct exar8250 *priv, struct pci_dev *pcidev,
>
>  	port->port.uartclk = baud * 16;
>  	port->port.rs485_config = platform->rs485_config;
> -	port->port.rs485_supported = platform->rs485_supported;
> +	port->port.rs485_supported = *(platform->rs485_supported);
>
>  	/*
>  	 * Setup the UART clock for the devices on expansion slot to
> diff --git a/drivers/tty/serial/8250/8250_fintek.c b/drivers/tty/serial/8250/8250_fintek.c
> index eea693f5b577..65b6b3cbaff6 100644
> --- a/drivers/tty/serial/8250/8250_fintek.c
> +++ b/drivers/tty/serial/8250/8250_fintek.c
> @@ -433,9 +433,9 @@ static void fintek_8250_set_rs485_handler(struct uart_8250_port *uart)
>  	case CHIP_ID_F81865:
>  		uart->port.rs485_config = fintek_8250_rs485_config;
>  		if (!pdata->index)
> -			uart->port.rs485_supported = &fintek_8250_rs485_supported_port0;
> +			uart->port.rs485_supported = fintek_8250_rs485_supported_port0;
>  		else
> -			uart->port.rs485_supported = &fintek_8250_rs485_supported;
> +			uart->port.rs485_supported = fintek_8250_rs485_supported;
>  		break;
>
>  	default: /* No RS485 Auto direction functional */
> diff --git a/drivers/tty/serial/8250/8250_lpc18xx.c b/drivers/tty/serial/8250/8250_lpc18xx.c
> index d7cb3bb52069..d6ca0d47e9d5 100644
> --- a/drivers/tty/serial/8250/8250_lpc18xx.c
> +++ b/drivers/tty/serial/8250/8250_lpc18xx.c
> @@ -161,7 +161,7 @@ static int lpc18xx_serial_probe(struct platform_device *pdev)
>  	uart.port.uartclk = clk_get_rate(data->clk_uart);
>  	uart.port.private_data = data;
>  	uart.port.rs485_config = lpc18xx_rs485_config;
> -	uart.port.rs485_supported = &lpc18xx_rs485_supported;
> +	uart.port.rs485_supported = lpc18xx_rs485_supported;
>  	uart.port.serial_out = lpc18xx_uart_serial_out;
>
>  	uart.dma = &data->dma;
> diff --git a/drivers/tty/serial/8250/8250_of.c b/drivers/tty/serial/8250/8250_of.c
> index 65cccd559db2..1b461fba15a3 100644
> --- a/drivers/tty/serial/8250/8250_of.c
> +++ b/drivers/tty/serial/8250/8250_of.c
> @@ -165,7 +165,7 @@ static int of_platform_serial_setup(struct platform_device *ofdev,
>
>  	port->dev = &ofdev->dev;
>  	port->rs485_config = serial8250_em485_config;
> -	port->rs485_supported = &serial8250_em485_supported;
> +	port->rs485_supported = serial8250_em485_supported;
>  	up->rs485_start_tx = serial8250_em485_start_tx;
>  	up->rs485_stop_tx = serial8250_em485_stop_tx;
>
> diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
> index d31d2350a9db..8a39ae072c65 100644
> --- a/drivers/tty/serial/8250/8250_pci.c
> +++ b/drivers/tty/serial/8250/8250_pci.c
> @@ -1607,7 +1607,7 @@ static int pci_fintek_setup(struct serial_private *priv,
>  	port->port.iotype = UPIO_PORT;
>  	port->port.iobase = iobase;
>  	port->port.rs485_config = pci_fintek_rs485_config;
> -	port->port.rs485_supported = &pci_fintek_rs485_supported;
> +	port->port.rs485_supported = pci_fintek_rs485_supported;
>
>  	data = devm_kzalloc(&pdev->dev, sizeof(u8), GFP_KERNEL);
>  	if (!data)
> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
> index c8f52945a4aa..abeceeefdece 100644
> --- a/drivers/tty/serial/amba-pl011.c
> +++ b/drivers/tty/serial/amba-pl011.c
> @@ -2779,7 +2779,7 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
>  	uap->port.irq = dev->irq[0];
>  	uap->port.ops = &amba_pl011_pops;
>  	uap->port.rs485_config = pl011_rs485_config;
> -	uap->port.rs485_supported = &pl011_rs485_supported;
> +	uap->port.rs485_supported = pl011_rs485_supported;
>  	snprintf(uap->type, sizeof(uap->type), "PL011 rev%u", amba_rev(dev));
>
>  	ret = pl011_setup_port(&dev->dev, uap, &dev->res, portnr);
> diff --git a/drivers/tty/serial/ar933x_uart.c b/drivers/tty/serial/ar933x_uart.c
> index b73ce13683db..f931ecbc0bc0 100644
> --- a/drivers/tty/serial/ar933x_uart.c
> +++ b/drivers/tty/serial/ar933x_uart.c
> @@ -778,7 +778,7 @@ static int ar933x_uart_probe(struct platform_device *pdev)
>  	port->fifosize = AR933X_UART_FIFO_SIZE;
>  	port->ops = &ar933x_uart_ops;
>  	port->rs485_config = ar933x_config_rs485;
> -	port->rs485_supported = &ar933x_rs485_supported;
> +	port->rs485_supported = ar933x_rs485_supported;
>
>  	baud = ar933x_uart_get_baud(port->uartclk, AR933X_UART_MAX_SCALE, 1);
>  	up->min_baud = max_t(unsigned int, baud, AR933X_UART_MIN_BAUD);
> @@ -802,7 +802,7 @@ static int ar933x_uart_probe(struct platform_device *pdev)
>  	    !up->rts_gpiod) {
>  		dev_err(&pdev->dev, "lacking rts-gpio, disabling RS485\n");
>  		port->rs485.flags &= ~SER_RS485_ENABLED;
> -		port->rs485_supported = &ar933x_no_rs485;
> +		port->rs485_supported = ar933x_no_rs485;
>  	}
>
>  #ifdef CONFIG_SERIAL_AR933X_CONSOLE
> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
> index bc6004679585..30ba9eef7b39 100644
> --- a/drivers/tty/serial/atmel_serial.c
> +++ b/drivers/tty/serial/atmel_serial.c
> @@ -2498,7 +2498,7 @@ static int atmel_init_port(struct atmel_uart_port *atmel_port,
>  	port->mapbase		= mpdev->resource[0].start;
>  	port->irq		= platform_get_irq(mpdev, 0);
>  	port->rs485_config	= atmel_config_rs485;
> -	port->rs485_supported	= &atmel_rs485_supported;
> +	port->rs485_supported	= atmel_rs485_supported;
>  	port->iso7816_config	= atmel_config_iso7816;
>  	port->membase		= NULL;
>
> diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
> index 8fe0494d4057..fc7d235a1e27 100644
> --- a/drivers/tty/serial/fsl_lpuart.c
> +++ b/drivers/tty/serial/fsl_lpuart.c
> @@ -2655,7 +2655,7 @@ static int lpuart_probe(struct platform_device *pdev)
>  		sport->port.rs485_config = lpuart32_config_rs485;
>  	else
>  		sport->port.rs485_config = lpuart_config_rs485;
> -	sport->port.rs485_supported = &lpuart_rs485_supported;
> +	sport->port.rs485_supported = lpuart_rs485_supported;
>
>  	sport->ipg_clk = devm_clk_get(&pdev->dev, "ipg");
>  	if (IS_ERR(sport->ipg_clk)) {
> diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
> index 3457006cea3f..522445a8f666 100644
> --- a/drivers/tty/serial/imx.c
> +++ b/drivers/tty/serial/imx.c
> @@ -2285,9 +2285,9 @@ static int imx_uart_probe(struct platform_device *pdev)
>  	sport->port.rs485_config = imx_uart_rs485_config;
>  	/* RTS is required to control the RS485 transmitter */
>  	if (sport->have_rtscts || sport->have_rtsgpio)
> -		sport->port.rs485_supported = &imx_rs485_supported;
> +		sport->port.rs485_supported = imx_rs485_supported;
>  	else
> -		sport->port.rs485_supported = &imx_no_rs485;
> +		sport->port.rs485_supported = imx_no_rs485;
>  	sport->port.flags = UPF_BOOT_AUTOCONF;
>  	timer_setup(&sport->timer, imx_uart_timeout, 0);
>
> diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c
> index e162bfb44080..ab10ca4a45b5 100644
> --- a/drivers/tty/serial/max310x.c
> +++ b/drivers/tty/serial/max310x.c
> @@ -1370,7 +1370,7 @@ static int max310x_probe(struct device *dev, const struct max310x_devtype *devty
>  		s->p[i].port.membase	= (void __iomem *)~0;
>  		s->p[i].port.uartclk	= uartclk;
>  		s->p[i].port.rs485_config = max310x_rs485_config;
> -		s->p[i].port.rs485_supported = &max310x_rs485_supported;
> +		s->p[i].port.rs485_supported = max310x_rs485_supported;
>  		s->p[i].port.ops	= &max310x_ops;
>  		s->p[i].regmap		= regmaps[i];
>
> diff --git a/drivers/tty/serial/mcf.c b/drivers/tty/serial/mcf.c
> index 73c5287b8e5e..f4aaaadd0742 100644
> --- a/drivers/tty/serial/mcf.c
> +++ b/drivers/tty/serial/mcf.c
> @@ -506,7 +506,7 @@ int __init early_mcf_setup(struct mcf_platform_uart *platp)
>  		port->uartclk = MCF_BUSCLK;
>  		port->flags = UPF_BOOT_AUTOCONF;
>  		port->rs485_config = mcf_config_rs485;
> -		port->rs485_supported = &mcf_rs485_supported;
> +		port->rs485_supported = mcf_rs485_supported;
>  		port->ops = &mcf_uart_ops;
>  	}
>
> @@ -634,7 +634,7 @@ static int mcf_probe(struct platform_device *pdev)
>  		port->ops = &mcf_uart_ops;
>  		port->flags = UPF_BOOT_AUTOCONF;
>  		port->rs485_config = mcf_config_rs485;
> -		port->rs485_supported = &mcf_rs485_supported;
> +		port->rs485_supported = mcf_rs485_supported;
>  		port->has_sysrq = IS_ENABLED(CONFIG_SERIAL_MCF_CONSOLE);
>
>  		uart_add_one_port(&mcf_driver, port);
> diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
> index 196bae704f85..0aa666e247d5 100644
> --- a/drivers/tty/serial/omap-serial.c
> +++ b/drivers/tty/serial/omap-serial.c
> @@ -1643,7 +1643,7 @@ static int serial_omap_probe(struct platform_device *pdev)
>  	up->port.flags = omap_up_info->flags;
>  	up->port.uartclk = omap_up_info->uartclk;
>  	up->port.rs485_config = serial_omap_config_rs485;
> -	up->port.rs485_supported = &serial_omap_rs485_supported;
> +	up->port.rs485_supported = serial_omap_rs485_supported;
>  	if (!up->port.uartclk) {
>  		up->port.uartclk = DEFAULT_CLK_SPEED;
>  		dev_warn(&pdev->dev,
> diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
> index 8cb92a3b3fb8..259e08cc347c 100644
> --- a/drivers/tty/serial/sc16is7xx.c
> +++ b/drivers/tty/serial/sc16is7xx.c
> @@ -1461,7 +1461,7 @@ static int sc16is7xx_probe(struct device *dev,
>  		s->p[i].port.iotype	= UPIO_PORT;
>  		s->p[i].port.uartclk	= freq;
>  		s->p[i].port.rs485_config = sc16is7xx_config_rs485;
> -		s->p[i].port.rs485_supported = &sc16is7xx_rs485_supported;
> +		s->p[i].port.rs485_supported = sc16is7xx_rs485_supported;
>  		s->p[i].port.ops	= &sc16is7xx_ops;
>  		s->p[i].old_mctrl	= 0;
>  		s->p[i].port.line	= sc16is7xx_alloc_line();
> diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
> index 85ef7ef00b82..a9cf1044a9fa 100644
> --- a/drivers/tty/serial/serial_core.c
> +++ b/drivers/tty/serial/serial_core.c
> @@ -1285,7 +1285,7 @@ static int uart_check_rs485_flags(struct uart_port *port, struct serial_rs485 *r
>  	 * For any bit outside of the legacy ones that is not supported by
>  	 * the driver, return -EINVAL.
>  	 */
> -	if (flags & ~port->rs485_supported->flags)
> +	if (flags & ~port->rs485_supported.flags)
>  		return -EINVAL;
>
>  	/* Asking for address w/o addressing mode? */
> @@ -1304,7 +1304,7 @@ static int uart_check_rs485_flags(struct uart_port *port, struct serial_rs485 *r
>
>  static void uart_sanitize_serial_rs485(struct uart_port *port, struct serial_rs485 *rs485)
>  {
> -	u32 supported_flags = port->rs485_supported->flags;
> +	u32 supported_flags = port->rs485_supported.flags;
>
>  	if (!(rs485->flags & SER_RS485_ENABLED)) {
>  		memset(rs485, 0, sizeof(*rs485));
> @@ -1323,7 +1323,7 @@ static void uart_sanitize_serial_rs485(struct uart_port *port, struct serial_rs4
>  		supported_flags |= SER_RS485_RTS_ON_SEND|SER_RS485_RTS_AFTER_SEND;
>  	}
>
> -	if (!port->rs485_supported->delay_rts_before_send) {
> +	if (!port->rs485_supported.delay_rts_before_send) {
>  		if (rs485->delay_rts_before_send) {
>  			dev_warn_ratelimited(port->dev,
>  				"%s (%d): RTS delay before sending not supported\n",
> @@ -1337,7 +1337,7 @@ static void uart_sanitize_serial_rs485(struct uart_port *port, struct serial_rs4
>  			port->name, port->line, rs485->delay_rts_before_send);
>  	}
>
> -	if (!port->rs485_supported->delay_rts_after_send) {
> +	if (!port->rs485_supported.delay_rts_after_send) {
>  		if (rs485->delay_rts_after_send) {
>  			dev_warn_ratelimited(port->dev,
>  				"%s (%d): RTS delay after sending not supported\n",
> diff --git a/drivers/tty/serial/stm32-usart.c b/drivers/tty/serial/stm32-usart.c
> index 13992e64a7df..ff5c7e0ebc4c 100644
> --- a/drivers/tty/serial/stm32-usart.c
> +++ b/drivers/tty/serial/stm32-usart.c
> @@ -1401,7 +1401,7 @@ static int stm32_usart_init_port(struct stm32_port *stm32port,
>  	port->has_sysrq = IS_ENABLED(CONFIG_SERIAL_STM32_CONSOLE);
>  	port->irq = irq;
>  	port->rs485_config = stm32_usart_config_rs485;
> -	port->rs485_supported = &stm32_rs485_supported;
> +	port->rs485_supported = stm32_rs485_supported;
>
>  	ret = stm32_usart_init_rs485(port, pdev);
>  	if (ret)
> diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
> index b7b86ee3cb12..a6fa7c40c330 100644
> --- a/include/linux/serial_core.h
> +++ b/include/linux/serial_core.h
> @@ -255,7 +255,7 @@ struct uart_port {
>  	struct attribute_group	*attr_group;		/* port specific attributes */
>  	const struct attribute_group **tty_groups;	/* all attributes (serial core use only) */
>  	struct serial_rs485     rs485;
> -	const struct serial_rs485	*rs485_supported;	/* Supported mask for serial_rs485 */
> +	struct serial_rs485	rs485_supported;	/* Supported mask for serial_rs485 */
>  	struct gpio_desc	*rs485_term_gpio;	/* enable RS485 bus termination */
>  	struct serial_iso7816   iso7816;
>  	void			*private_data;		/* generic platform data pointer */

Reviewed-by: Lino Sanfilippo <l.sanfilippo@kunbus.com>


Regards,
Lino



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-07-05 10:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-04  9:45 [PATCH 0/2] serial: RS485 termination improvements Ilpo Järvinen
2022-07-04  9:45 ` [PATCH 1/2] serial: Embed rs485_supported to uart_port Ilpo Järvinen
2022-07-05 10:41   ` Lino Sanfilippo
2022-07-04  9:45 ` [PATCH 2/2] serial: RS485 termination is supported if DT provides one Ilpo Järvinen
2022-07-05 10:27   ` Lino Sanfilippo

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).