All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yu Tu <yu.tu@amlogic.com>
To: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Cc: <linux-serial@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-amlogic@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jirislaby@kernel.org>,
	Neil Armstrong <narmstrong@baylibre.com>,
	Vyacheslav <adeep@lexina.in>, Kevin Hilman <khilman@baylibre.com>,
	Jerome Brunet <jbrunet@baylibre.com>
Subject: Re: [PATCH V3 4/6] tty: serial: meson: The UART baud rate calculation is described using the common clock code. Also added S4 chip uart Compatible.
Date: Sat, 1 Jan 2022 21:30:12 +0800	[thread overview]
Message-ID: <7278bace-a2b9-0cfc-55b3-c19311e3352e@amlogic.com> (raw)
In-Reply-To: <CAFBinCB2nF0TwRE1uJ4UTB_avcqRBfOHR1CDSe29dB1o-YjEHQ@mail.gmail.com>

Hi Martin,
     Thank you very much for your reply.

On 2021/12/31 23:32, Martin Blumenstingl wrote:
> [ EXTERNAL EMAIL ]
> 
> On Fri, Dec 31, 2021 at 12:24 PM Yu Tu <yu.tu@amlogic.com> wrote:
> [...]
>>>>    static int meson_uart_request_port(struct uart_port *port)
>>>>    {
>>>> +       struct meson_uart_data *private_data = port->private_data;
>>>> +       int ret;
>>>> +
>>>> +       ret = clk_prepare_enable(private_data->pclk);
>>>> +       if (ret)
>>>> +               return ret;
>>>> +
>>>> +       ret = clk_prepare_enable(private_data->baud_clk);
>>>> +       if (ret) {
>>>> +               clk_disable_unprepare(private_data->pclk);
>>>> +               return ret;
>>>> +       }
>>> This code is from my original suggestion - and I had a doubt there
>>> which I forgot to add as a comment originally:
>>> Can you confirm that accessing the UART controller registers works
>>> even when "pclk" is turned off?
>>> I am asking this because the common clock framework can access the
>>> clocks at any time.
>>> And I have seen SoCs which would hang when trying to access a module's
>>> registers while the module's pclk is turned off.
>> On all meson platforms, the default pclk for all UART is turned on
>> during the u-boot phase. When registering uart pclk in the kernel phase,
>> the CLK_IGNORE_UNUSED flag is added. So the real shutdown is when the
>> standby goes down, the parent clk shuts down.
> Interesting, thanks for sharing that u-boot turns these clocks on.
> Let's say someone wanted to make u-boot save power and turn off all
> UART clocks except the one for uart_AO (where we typically connect the
> serial console).
> In that case the pclk of uart_C (just to choose an example here) is
> turned off. Would there be a problem then accessing the registers of
> uart_C before clk_prepare_enable is called?
The way you describe it, it does hang. This would not be recommended on 
actual projects.

At present, AmLogic chips are older than S4 Soc, and we have no way to 
deal with this problem. We have to tell customers not to use it in this 
way。Customers rarely use it in real projects.On the S4 SOC we will use 
a clock like the UART pclk to control the shutdown using two registers, 
one safe (need to operate in EL3) and one normal (EL1). It will only be 
closed if both registers are closed. This mainly prevents misoperation.

With your experience, I'd like to know how you deal with this kind of 
problem.
> 
> [...]
>>>>           port->fifosize = 64;
>>> commit 27d44e05d7b85d ("tty: serial: meson: retrieve port FIFO size
>>> from DT") [0] from May 2021 has changed this line to:
>>>     port->fifosize = fifosize;
>>> So your patch currently does not apply to linux-next (or even Linus'
>>> mainline tree).
>>>
>> So do I need to wait for [0] patch merged before I can continue to make
>> changes ?
> These changes are already merged.
> 
>> What can I do before?
> You should base your changes on top of the tty.git/tty-next branch [1]
> where Greg (the maintainer of this tree) will pick up the patches once
> they are good (got enough Acked-by/Reviewed-by, etc.).
> I suspect that you based your changes on an older or stable kernel
> version (let's say 5.10). New functionality should always get into the
> -next tree where various auto-build robots will compile-test the
> changes and we even have Kernel CI where changes are tested on real
> hardware (BayLibre even maintains Amlogic boards in their Kernel CI
> labs). Let's say Amlogic updates to Linux 5.17 next year then the
> patches are already included in that kernel version - instead of being
> only available in Linux 5.10.
> 
I'm sorry, I did branch confirm there was a mistake, I have corrected.
> 
> Best regards,
> Martin
> 
> 
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git/log/?h=tty-next
> 

WARNING: multiple messages have this Message-ID (diff)
From: Yu Tu <yu.tu@amlogic.com>
To: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Cc: <linux-serial@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-amlogic@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jirislaby@kernel.org>,
	Neil Armstrong <narmstrong@baylibre.com>,
	Vyacheslav <adeep@lexina.in>, Kevin Hilman <khilman@baylibre.com>,
	Jerome Brunet <jbrunet@baylibre.com>
Subject: Re: [PATCH V3 4/6] tty: serial: meson: The UART baud rate calculation is described using the common clock code. Also added S4 chip uart Compatible.
Date: Sat, 1 Jan 2022 21:30:12 +0800	[thread overview]
Message-ID: <7278bace-a2b9-0cfc-55b3-c19311e3352e@amlogic.com> (raw)
In-Reply-To: <CAFBinCB2nF0TwRE1uJ4UTB_avcqRBfOHR1CDSe29dB1o-YjEHQ@mail.gmail.com>

Hi Martin,
     Thank you very much for your reply.

On 2021/12/31 23:32, Martin Blumenstingl wrote:
> [ EXTERNAL EMAIL ]
> 
> On Fri, Dec 31, 2021 at 12:24 PM Yu Tu <yu.tu@amlogic.com> wrote:
> [...]
>>>>    static int meson_uart_request_port(struct uart_port *port)
>>>>    {
>>>> +       struct meson_uart_data *private_data = port->private_data;
>>>> +       int ret;
>>>> +
>>>> +       ret = clk_prepare_enable(private_data->pclk);
>>>> +       if (ret)
>>>> +               return ret;
>>>> +
>>>> +       ret = clk_prepare_enable(private_data->baud_clk);
>>>> +       if (ret) {
>>>> +               clk_disable_unprepare(private_data->pclk);
>>>> +               return ret;
>>>> +       }
>>> This code is from my original suggestion - and I had a doubt there
>>> which I forgot to add as a comment originally:
>>> Can you confirm that accessing the UART controller registers works
>>> even when "pclk" is turned off?
>>> I am asking this because the common clock framework can access the
>>> clocks at any time.
>>> And I have seen SoCs which would hang when trying to access a module's
>>> registers while the module's pclk is turned off.
>> On all meson platforms, the default pclk for all UART is turned on
>> during the u-boot phase. When registering uart pclk in the kernel phase,
>> the CLK_IGNORE_UNUSED flag is added. So the real shutdown is when the
>> standby goes down, the parent clk shuts down.
> Interesting, thanks for sharing that u-boot turns these clocks on.
> Let's say someone wanted to make u-boot save power and turn off all
> UART clocks except the one for uart_AO (where we typically connect the
> serial console).
> In that case the pclk of uart_C (just to choose an example here) is
> turned off. Would there be a problem then accessing the registers of
> uart_C before clk_prepare_enable is called?
The way you describe it, it does hang. This would not be recommended on 
actual projects.

At present, AmLogic chips are older than S4 Soc, and we have no way to 
deal with this problem. We have to tell customers not to use it in this 
way。Customers rarely use it in real projects.On the S4 SOC we will use 
a clock like the UART pclk to control the shutdown using two registers, 
one safe (need to operate in EL3) and one normal (EL1). It will only be 
closed if both registers are closed. This mainly prevents misoperation.

With your experience, I'd like to know how you deal with this kind of 
problem.
> 
> [...]
>>>>           port->fifosize = 64;
>>> commit 27d44e05d7b85d ("tty: serial: meson: retrieve port FIFO size
>>> from DT") [0] from May 2021 has changed this line to:
>>>     port->fifosize = fifosize;
>>> So your patch currently does not apply to linux-next (or even Linus'
>>> mainline tree).
>>>
>> So do I need to wait for [0] patch merged before I can continue to make
>> changes ?
> These changes are already merged.
> 
>> What can I do before?
> You should base your changes on top of the tty.git/tty-next branch [1]
> where Greg (the maintainer of this tree) will pick up the patches once
> they are good (got enough Acked-by/Reviewed-by, etc.).
> I suspect that you based your changes on an older or stable kernel
> version (let's say 5.10). New functionality should always get into the
> -next tree where various auto-build robots will compile-test the
> changes and we even have Kernel CI where changes are tested on real
> hardware (BayLibre even maintains Amlogic boards in their Kernel CI
> labs). Let's say Amlogic updates to Linux 5.17 next year then the
> patches are already included in that kernel version - instead of being
> only available in Linux 5.10.
> 
I'm sorry, I did branch confirm there was a mistake, I have corrected.
> 
> Best regards,
> Martin
> 
> 
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git/log/?h=tty-next
> 

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

WARNING: multiple messages have this Message-ID (diff)
From: Yu Tu <yu.tu@amlogic.com>
To: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Cc: <linux-serial@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-amlogic@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jirislaby@kernel.org>,
	Neil Armstrong <narmstrong@baylibre.com>,
	Vyacheslav <adeep@lexina.in>, Kevin Hilman <khilman@baylibre.com>,
	Jerome Brunet <jbrunet@baylibre.com>
Subject: Re: [PATCH V3 4/6] tty: serial: meson: The UART baud rate calculation is described using the common clock code. Also added S4 chip uart Compatible.
Date: Sat, 1 Jan 2022 21:30:12 +0800	[thread overview]
Message-ID: <7278bace-a2b9-0cfc-55b3-c19311e3352e@amlogic.com> (raw)
In-Reply-To: <CAFBinCB2nF0TwRE1uJ4UTB_avcqRBfOHR1CDSe29dB1o-YjEHQ@mail.gmail.com>

Hi Martin,
     Thank you very much for your reply.

On 2021/12/31 23:32, Martin Blumenstingl wrote:
> [ EXTERNAL EMAIL ]
> 
> On Fri, Dec 31, 2021 at 12:24 PM Yu Tu <yu.tu@amlogic.com> wrote:
> [...]
>>>>    static int meson_uart_request_port(struct uart_port *port)
>>>>    {
>>>> +       struct meson_uart_data *private_data = port->private_data;
>>>> +       int ret;
>>>> +
>>>> +       ret = clk_prepare_enable(private_data->pclk);
>>>> +       if (ret)
>>>> +               return ret;
>>>> +
>>>> +       ret = clk_prepare_enable(private_data->baud_clk);
>>>> +       if (ret) {
>>>> +               clk_disable_unprepare(private_data->pclk);
>>>> +               return ret;
>>>> +       }
>>> This code is from my original suggestion - and I had a doubt there
>>> which I forgot to add as a comment originally:
>>> Can you confirm that accessing the UART controller registers works
>>> even when "pclk" is turned off?
>>> I am asking this because the common clock framework can access the
>>> clocks at any time.
>>> And I have seen SoCs which would hang when trying to access a module's
>>> registers while the module's pclk is turned off.
>> On all meson platforms, the default pclk for all UART is turned on
>> during the u-boot phase. When registering uart pclk in the kernel phase,
>> the CLK_IGNORE_UNUSED flag is added. So the real shutdown is when the
>> standby goes down, the parent clk shuts down.
> Interesting, thanks for sharing that u-boot turns these clocks on.
> Let's say someone wanted to make u-boot save power and turn off all
> UART clocks except the one for uart_AO (where we typically connect the
> serial console).
> In that case the pclk of uart_C (just to choose an example here) is
> turned off. Would there be a problem then accessing the registers of
> uart_C before clk_prepare_enable is called?
The way you describe it, it does hang. This would not be recommended on 
actual projects.

At present, AmLogic chips are older than S4 Soc, and we have no way to 
deal with this problem. We have to tell customers not to use it in this 
way。Customers rarely use it in real projects.On the S4 SOC we will use 
a clock like the UART pclk to control the shutdown using two registers, 
one safe (need to operate in EL3) and one normal (EL1). It will only be 
closed if both registers are closed. This mainly prevents misoperation.

With your experience, I'd like to know how you deal with this kind of 
problem.
> 
> [...]
>>>>           port->fifosize = 64;
>>> commit 27d44e05d7b85d ("tty: serial: meson: retrieve port FIFO size
>>> from DT") [0] from May 2021 has changed this line to:
>>>     port->fifosize = fifosize;
>>> So your patch currently does not apply to linux-next (or even Linus'
>>> mainline tree).
>>>
>> So do I need to wait for [0] patch merged before I can continue to make
>> changes ?
> These changes are already merged.
> 
>> What can I do before?
> You should base your changes on top of the tty.git/tty-next branch [1]
> where Greg (the maintainer of this tree) will pick up the patches once
> they are good (got enough Acked-by/Reviewed-by, etc.).
> I suspect that you based your changes on an older or stable kernel
> version (let's say 5.10). New functionality should always get into the
> -next tree where various auto-build robots will compile-test the
> changes and we even have Kernel CI where changes are tested on real
> hardware (BayLibre even maintains Amlogic boards in their Kernel CI
> labs). Let's say Amlogic updates to Linux 5.17 next year then the
> patches are already included in that kernel version - instead of being
> only available in Linux 5.10.
> 
I'm sorry, I did branch confirm there was a mistake, I have corrected.
> 
> Best regards,
> Martin
> 
> 
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git/log/?h=tty-next
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-01-01 13:30 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-30 10:21 [PATCH V3 0/6] the UART driver compatible with the Amlogic Meson Yu Tu
2021-12-30 10:21 ` Yu Tu
2021-12-30 10:21 ` Yu Tu
2021-12-30 10:21 ` [PATCH V3 1/6] tty: serial: meson: Drop the legacy compatible strings and clock code Yu Tu
2021-12-30 10:21   ` Yu Tu
2021-12-30 10:21   ` Yu Tu
2021-12-30 22:22   ` Martin Blumenstingl
2021-12-30 22:22     ` Martin Blumenstingl
2021-12-30 22:22     ` Martin Blumenstingl
2021-12-31 10:27     ` Yu Tu
2021-12-31 10:27       ` Yu Tu
2021-12-31 10:27       ` Yu Tu
2021-12-31 15:35       ` Martin Blumenstingl
2021-12-31 15:35         ` Martin Blumenstingl
2021-12-31 15:35         ` Martin Blumenstingl
2022-01-03 14:59         ` Neil Armstrong
2022-01-03 14:59           ` Neil Armstrong
2022-01-03 14:59           ` Neil Armstrong
2022-01-03 15:19           ` Greg Kroah-Hartman
2022-01-03 15:19             ` Greg Kroah-Hartman
2022-01-03 15:19             ` Greg Kroah-Hartman
2022-01-03 15:29             ` Neil Armstrong
2022-01-03 15:29               ` Neil Armstrong
2022-01-03 15:29               ` Neil Armstrong
2022-01-03 16:29               ` Greg Kroah-Hartman
2022-01-03 16:29                 ` Greg Kroah-Hartman
2022-01-03 16:29                 ` Greg Kroah-Hartman
2022-01-03 16:35                 ` Neil Armstrong
2022-01-03 16:35                   ` Neil Armstrong
2022-01-03 16:35                   ` Neil Armstrong
2021-12-30 10:21 ` [PATCH V3 2/6] tty: serial: meson: Request the register region in meson_uart_probe() Yu Tu
2021-12-30 10:21   ` Yu Tu
2021-12-30 10:21   ` Yu Tu
2021-12-30 12:29   ` Greg Kroah-Hartman
2021-12-30 12:29     ` Greg Kroah-Hartman
2021-12-30 12:29     ` Greg Kroah-Hartman
2021-12-30 22:28     ` Martin Blumenstingl
2021-12-30 22:28       ` Martin Blumenstingl
2021-12-30 22:28       ` Martin Blumenstingl
2021-12-30 10:21 ` [PATCH V3 3/6] dt-bindings: serial: meson: Support S4 SoC uart. Also Drop compatible = amlogic,meson-gx-uart Yu Tu
2021-12-30 10:21   ` [PATCH V3 3/6] dt-bindings: serial: meson: Support S4 SoC uart. Also Drop compatible = amlogic, meson-gx-uart Yu Tu
2021-12-30 10:21   ` Yu Tu
2021-12-30 12:28   ` [PATCH V3 3/6] dt-bindings: serial: meson: Support S4 SoC uart. Also Drop compatible = amlogic,meson-gx-uart Greg Kroah-Hartman
2021-12-30 12:28     ` Greg Kroah-Hartman
2021-12-30 12:28     ` Greg Kroah-Hartman
2021-12-31 10:18     ` Yu Tu
2021-12-31 10:18       ` Yu Tu
2021-12-31 10:18       ` Yu Tu
2021-12-30 22:34   ` Martin Blumenstingl
2021-12-30 22:34     ` Martin Blumenstingl
2021-12-30 22:34     ` Martin Blumenstingl
2021-12-31 10:35     ` Yu Tu
2021-12-31 10:35       ` Yu Tu
2021-12-31 10:35       ` Yu Tu
2021-12-30 10:21 ` [PATCH V3 4/6] tty: serial: meson: The UART baud rate calculation is described using the common clock code. Also added S4 chip uart Compatible Yu Tu
2021-12-30 10:21   ` Yu Tu
2021-12-30 10:21   ` Yu Tu
2021-12-30 12:27   ` Greg Kroah-Hartman
2021-12-30 12:27     ` Greg Kroah-Hartman
2021-12-30 12:27     ` Greg Kroah-Hartman
2021-12-31 10:23     ` Yu Tu
2021-12-31 10:23       ` Yu Tu
2021-12-31 10:23       ` Yu Tu
2021-12-30 23:13   ` Martin Blumenstingl
2021-12-30 23:13     ` Martin Blumenstingl
2021-12-30 23:13     ` Martin Blumenstingl
2021-12-31 11:24     ` Yu Tu
2021-12-31 11:24       ` Yu Tu
2021-12-31 11:24       ` Yu Tu
2021-12-31 15:32       ` Martin Blumenstingl
2021-12-31 15:32         ` Martin Blumenstingl
2021-12-31 15:32         ` Martin Blumenstingl
2022-01-01 13:30         ` Yu Tu [this message]
2022-01-01 13:30           ` Yu Tu
2022-01-01 13:30           ` Yu Tu
2022-01-02 19:36           ` Martin Blumenstingl
2022-01-02 19:36             ` Martin Blumenstingl
2022-01-02 19:36             ` Martin Blumenstingl
2022-01-04  8:20             ` Yu Tu
2022-01-04  8:20               ` Yu Tu
2022-01-04  8:20               ` Yu Tu
2022-01-03 13:50           ` Jerome Brunet
2022-01-03 13:50             ` Jerome Brunet
2022-01-03 13:50             ` Jerome Brunet
2022-01-03 12:40   ` Jerome Brunet
2022-01-03 12:40     ` Jerome Brunet
2022-01-03 12:40     ` Jerome Brunet
2022-01-04  9:57     ` Yu Tu
2022-01-04  9:57       ` Yu Tu
2022-01-04  9:57       ` Yu Tu
2022-01-04 10:36       ` Jerome Brunet
2022-01-04 10:36         ` Jerome Brunet
2022-01-04 10:36         ` Jerome Brunet
2022-01-04 14:35         ` Yu Tu
2022-01-04 14:35           ` Yu Tu
2022-01-04 14:35           ` Yu Tu
2022-01-05  5:53           ` Yu Tu
2022-01-05  5:53             ` Yu Tu
2022-01-05  5:53             ` Yu Tu
2021-12-30 10:21 ` [PATCH V3 5/6] tty: serial: meson: meson_uart_shutdown omit clear AML_UART_TX_EN bit Yu Tu
2021-12-30 10:21   ` Yu Tu
2021-12-30 10:21   ` Yu Tu
2021-12-30 22:44   ` Martin Blumenstingl
2021-12-30 22:44     ` Martin Blumenstingl
2021-12-30 22:44     ` Martin Blumenstingl
2021-12-31 10:42     ` Yu Tu
2021-12-31 10:42       ` Yu Tu
2021-12-31 10:42       ` Yu Tu
2021-12-30 10:21 ` [PATCH V3 6/6] tty: serial: meson: Change request_irq to devm_request_irq and move devm_request_irq to meson_uart_probe() Yu Tu
2021-12-30 10:21   ` Yu Tu
2021-12-30 10:21   ` Yu Tu
2021-12-30 22:41   ` Martin Blumenstingl
2021-12-30 22:41     ` Martin Blumenstingl
2021-12-30 22:41     ` Martin Blumenstingl
2021-12-31 10:37     ` Yu Tu
2021-12-31 10:37       ` Yu Tu
2021-12-31 10:37       ` Yu Tu

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=7278bace-a2b9-0cfc-55b3-c19311e3352e@amlogic.com \
    --to=yu.tu@amlogic.com \
    --cc=adeep@lexina.in \
    --cc=gregkh@linuxfoundation.org \
    --cc=jbrunet@baylibre.com \
    --cc=jirislaby@kernel.org \
    --cc=khilman@baylibre.com \
    --cc=linux-amlogic@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=martin.blumenstingl@googlemail.com \
    --cc=narmstrong@baylibre.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 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.