linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Hugo Villeneuve <hugo@hugovil.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org,
	conor+dt@kernel.org, Jiri Slaby <jirislaby@kernel.org>,
	jringle@gridpoint.com, tomasz.mon@camlingroup.com,
	l.perczak@camlintechnologies.com,
	linux-serial <linux-serial@vger.kernel.org>,
	devicetree@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
	linux-gpio@vger.kernel.org,
	Hugo Villeneuve <hvilleneuve@dimonoff.com>
Subject: Re: [PATCH v3 05/11] serial: sc16is7xx: fix broken port 0 uart init
Date: Thu, 25 May 2023 14:20:59 +0300 (EEST)	[thread overview]
Message-ID: <2936e18f-44ea-faed-9fa0-2ddefe7c3194@linux.intel.com> (raw)
In-Reply-To: <20230525040324.3773741-6-hugo@hugovil.com>

[-- Attachment #1: Type: text/plain, Size: 3251 bytes --]

On Thu, 25 May 2023, Hugo Villeneuve wrote:

> From: Hugo Villeneuve <hvilleneuve@dimonoff.com>
> 
> While experimenting with rs485 configuration on a SC16IS752 dual UART,

You can remove this intro, it's not necessary.

> I found that the sc16is7xx_config_rs485() function was called only for
> the second port (index 1, channel B), causing initialization problems
> for the first port.

Just start with:

sc16is7xx_config_rs485() function is called only for ...

> For the sc16is7xx driver, port->membase and port->mapbase are not set,
> and their default values are 0. And we set port->iobase to the device
> index. This means that when the first device is registered using the
> uart_add_one_port() function, the following values will be in the port
> structure:
>     port->membase = 0
>     port->mapbase = 0
>     port->iobase  = 0
> 
> Therefore, the function uart_configure_port() in serial_core.c will
> exit early because of the following check:
> 	/*
> 	 * If there isn't a port here, don't do anything further.
> 	 */
> 	if (!port->iobase && !port->mapbase && !port->membase)
> 		return;
> 
> Typically, I2C and SPI drivers do not set port->membase and
> port->mapbase. But I found that the max310x driver sets
> port->membase to ~0 (all ones).

The max310x driver sets port->membase to ~0 (all ones) to solve the same 
problem.

> By implementing the same change in our
> driver, uart_configure_port() is now correctly executed.

our driver -> this driver

This changelog was really well describing the problem! :-)

> Fixes: dfeae619d781 ("serial: sc16is7xx")
> Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
> ---
> I am not sure if this change is the best long-term solution to this
> problem, and maybe uart_configure_port() itself could be modified to
> take into account the fact that some devices have all three *base
> values set to zero?

Yeah, some other solution should be devised. Maybe we should add another 
.iotype for thse kind of devices. But I'm fine with this for this fix.
After editing the changelog, feel free to add:

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

> Also, many drivers use port->iobase as an index, is it the correct way
> to use it?

"Many" for this and max310x? Besides that, uartlite.c has a comment which 
says "mark port in use".

-- 
 i.


> For example, for our driver, there was
> commit 5da6b1c079e6 ("sc16is7xx: Set iobase to device index") with the
> following explanation:
>     "Set the .iobase value to the relative index within the device to allow
>     infering the order through sysfs."
> 
>  drivers/tty/serial/sc16is7xx.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
> index af7e66db54b4..8a2fc6f89d36 100644
> --- a/drivers/tty/serial/sc16is7xx.c
> +++ b/drivers/tty/serial/sc16is7xx.c
> @@ -1443,6 +1443,7 @@ static int sc16is7xx_probe(struct device *dev,
>  		s->p[i].port.fifosize	= SC16IS7XX_FIFO_SIZE;
>  		s->p[i].port.flags	= UPF_FIXED_TYPE | UPF_LOW_LATENCY;
>  		s->p[i].port.iobase	= i;
> +		s->p[i].port.membase	= (void __iomem *)~0;
>  		s->p[i].port.iotype	= UPIO_PORT;
>  		s->p[i].port.uartclk	= freq;
>  		s->p[i].port.rs485_config = sc16is7xx_config_rs485;
> 

  reply	other threads:[~2023-05-25 11:21 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-25  4:03 [PATCH v3 00/11] serial: sc16is7xx: fix GPIO regression and rs485 improvements Hugo Villeneuve
2023-05-25  4:03 ` [PATCH v3 01/11] serial: sc16is7xx: fix syntax error in comments Hugo Villeneuve
2023-05-25  4:03 ` [PATCH v3 02/11] serial: sc16is7xx: improve comments about variants Hugo Villeneuve
2023-05-25  4:03 ` [PATCH v3 03/11] serial: sc16is7xx: mark IOCONTROL register as volatile Hugo Villeneuve
2023-05-25 11:02   ` Ilpo Järvinen
2023-05-25 13:45     ` Hugo Villeneuve
2023-05-25  4:03 ` [PATCH v3 04/11] serial: sc16is7xx: add post reset delay Hugo Villeneuve
2023-05-25 10:30   ` andy.shevchenko
2023-05-25 13:18     ` Hugo Villeneuve
2023-05-25 11:05   ` Ilpo Järvinen
2023-05-25 14:05     ` Hugo Villeneuve
2023-05-25  4:03 ` [PATCH v3 05/11] serial: sc16is7xx: fix broken port 0 uart init Hugo Villeneuve
2023-05-25 11:20   ` Ilpo Järvinen [this message]
2023-05-25 15:10     ` Hugo Villeneuve
2023-05-25  4:03 ` [PATCH v3 06/11] serial: sc16is7xx: fix bug when first setting GPIO direction Hugo Villeneuve
2023-05-25 11:10   ` andy.shevchenko
2023-05-25 14:24     ` Hugo Villeneuve
2023-05-25  4:03 ` [PATCH v3 07/11] dt-bindings: sc16is7xx: Add property to change GPIO function Hugo Villeneuve
2023-05-25 11:11   ` andy.shevchenko
2023-05-25 14:34     ` Hugo Villeneuve
2023-05-25 15:15       ` Conor Dooley
2023-05-26 18:28       ` andy.shevchenko
2023-05-25  4:03 ` [PATCH v3 08/11] serial: sc16is7xx: fix regression with GPIO configuration Hugo Villeneuve
2023-05-25 11:19   ` andy.shevchenko
2023-05-25 15:02     ` Hugo Villeneuve
2023-05-26 18:34       ` andy.shevchenko
2023-05-25 12:03   ` Ilpo Järvinen
2023-05-25 15:19     ` Hugo Villeneuve
2023-05-25  4:03 ` [PATCH v3 09/11] serial: sc16is7xx: add I/O register translation offset Hugo Villeneuve
2023-05-25 11:22   ` andy.shevchenko
2023-05-25 15:31     ` Hugo Villeneuve
2023-05-25 17:20       ` Hugo Villeneuve
2023-05-26 18:36         ` andy.shevchenko
2023-05-25 12:10   ` Ilpo Järvinen
2023-05-25 15:25     ` Hugo Villeneuve
2023-05-25  4:03 ` [PATCH v3 10/11] serial: sc16is7xx: add call to get rs485 DT flags and properties Hugo Villeneuve
2023-05-25 12:17   ` Ilpo Järvinen
2023-05-25  4:03 ` [PATCH v3 11/11] serial: sc16is7xx: add dump registers function Hugo Villeneuve
2023-05-25 11:26   ` andy.shevchenko
2023-05-25 19:49     ` Hugo Villeneuve
2023-05-26 18:38       ` andy.shevchenko
2023-05-28 11:56   ` Greg KH
2023-05-25 10:27 ` [PATCH v3 00/11] serial: sc16is7xx: fix GPIO regression and rs485 improvements andy.shevchenko
2023-05-25 13:26   ` Hugo Villeneuve
2023-05-25 13:37     ` Andy Shevchenko
2023-05-25 13:39       ` Hugo Villeneuve

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2936e18f-44ea-faed-9fa0-2ddefe7c3194@linux.intel.com \
    --to=ilpo.jarvinen@linux.intel.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hugo@hugovil.com \
    --cc=hvilleneuve@dimonoff.com \
    --cc=jirislaby@kernel.org \
    --cc=jringle@gridpoint.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=l.perczak@camlintechnologies.com \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=tomasz.mon@camlingroup.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).