linux-serial.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
To: Shuyu Wei <wsy-flSAGy4ZnMjQT0dZR+AlfA@public.gmane.org>
Cc: wangkefeng.wang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
	heikki.krogerus-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
	linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org,
	linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org,
	Ed Blake <ed.blake-56FIPCJpnYtBDgjK7y7TUQ@public.gmane.org>
Subject: Re: [PATCH][RFC] 8250_dw: unregister dw8250_set_termios for rk3188 chip
Date: Thu, 23 Nov 2017 16:11:12 +0100	[thread overview]
Message-ID: <2890515.ZR3BzkItWh@phil> (raw)
In-Reply-To: <20171123145622.GA1272-ZQaglsx1qnHXWvwwbwmGMg@public.gmane.org>

Hi,

Am Donnerstag, 23. November 2017, 22:56:22 CET schrieb Shuyu Wei:
> On Tue, Nov 21, 2017 at 05:33:47PM +0000, Ed Blake wrote:
> > On 21/11/17 17:17, Shuyu Wei wrote:
> > >
> > >> What baud rate is being set, and what rate does clk_round_rate() return
> > >> in dw8250_set_termios()?
> > > I'm using baud 115200, clk_round_rate() returns 1843200.
> > 
> > So dw8250_set_termios() requests a rate of 1843200 (baud * 16) from
> > clk_round_rate(), which returns the exact frequency requested.  If it
> > really is capable of being set to that frequency, I can't see why this
> > wouldn't work.  Or clk_round_rate() is incorrectly reporting that it's
> > capable of that rate, in which case the clock driver needs fixing.
> > 
> > Do you have any way of verifying the actual clock rate going into the UART?
> 
> Sorry, I know little about the clock system, and no equipment to do that,
> maybe Heiko knows.
> 
> The /sys/kernel/debug/clk/clk_summary is attached below, might be helpful.
> 
> 
>    clock                         enable_cnt  prepare_cnt        rate   accuracy   phase
> ----------------------------------------------------------------------------------------
>  xin32k                                   0            0       32768          0 0  
>  xin24m                                  12           12    24000000          0 0  
>     timer6                                1            1    24000000          0 0  
>     timer5                                0            0    24000000          0 0  
>     timer4                                0            0    24000000          0 0  
>     timer3                                1            1    24000000          0 0  
>     timer2                                0            0    24000000          0 0  
>     pll_gpll                              1            1   891000000          0 0  
>        gpll                               2            2   891000000          0 0  
>           i2s_src                         0            0   891000000          0 0  
>              i2s0_pre                     0            0   891000000          0 0  
>                 i2s0_frac                 0            0    44550000          0 0  
>              spdif_pre                    0            0   891000000          0 0  
>           aclk_cpu_pre                    3            3   297000000          0 0  
>              hclk_cpu_pre                 2            2   148500000          0 0  
>                 hclk_ahb2apb              2            2    74250000          0 0  
>                    pclk_uart1             1            1    74250000          0 0  
>                    pclk_uart0             1            1    74250000          0 0  
>                 hclk_cpu                  2            2   148500000          0 0  
>                    hclk_imem1             0            0   148500000          0 0  
>                    hclk_imem0             0            0   148500000          0 0  
>                    hclk_rga               0            0   148500000          0 0  
>                    hclk_ipp               0            0   148500000          0 0  
>                    hclk_cif0              0            0   148500000          0 0  
>                    hclk_lcdc1             0            0   148500000          0 0  
>                    hclk_lcdc0             0            0   148500000          0 0  
>                    hclk_vio_bus           0            0   148500000          0 0  
>                    hclk_cpubus            1            1   148500000          0 0  
>                    hclk_spdif             1            2   148500000          0 0  
>                    hclk_i2s0              0            0   148500000          0 0  
>                    hclk_rom               0            0   148500000          0 0  
>              pclk_cpu_pre                 1            1    37125000          0 0  
>                 atclk_cpu                 0            0    37125000          0 0  
>                    trace                  0            0    37125000          0 0  
>                    atclk                  0            0    37125000          0 0  
>                 pclk_cpu                  4            8    37125000          0 0  
>                    pclk_timer3            1            1    37125000          0 0  
>                    pclk_pmu               0            0    37125000          0 0  
>                    pclk_grf               0            0    37125000          0 0  
>                    pclk_dbg               0            0    37125000          0 0  
>                    pclk_ddrpubl           0            0    37125000          0 0  
>                    pclk_ddrupctl           0            0    37125000          0 0  
>                    pclk_tzpc              0            0    37125000          0 0  
>                    pclk_efuse             0            0    37125000          0 0  
>                    pclk_gpio2             0            1    37125000          0 0  
>                    pclk_gpio1             0            1    37125000          0 0  
>                    pclk_gpio0             2            1    37125000          0 0  
>                    pclk_i2c1              0            2    37125000          0 0  
>                    pclk_i2c0              0            0    37125000          0 0  
>                    pclk_timer0            1            1    37125000          0 0  
>                    pclk_pwm01             0            2    37125000          0 0  
>              aclk_cpu                     2            2   297000000          0 0  
>                 aclk_strc_sys             0            0   297000000          0 0  
>                 aclk_intmem               0            0   297000000          0 0  
>                 aclk_dma1                 1            1   297000000          0 0  
>           gpll_armclk                     1            1   891000000          0 0  
>           gpll_ddr                        0            0   891000000          0 0  
>           hsadc_src                       0            0    89100000          0 0  
>              sclk_hsadc_out               0            0    89100000          0 0  
>                 sclk_hsadc                0            0    89100000          0 0  
>              hsadc_frac                   0            0     4455000          0 0  
>           uart_src                        0            0   891000000          0 0  
>              uart3_pre                    0            0   891000000          0 0  
>                 uart3_frac                0            0    44550000          0 0  
>              uart2_pre                    0            0   891000000          0 0  
>                 uart2_frac                0            0    44550000          0 0  
>              uart1_pre                    0            0   891000000          0 0  
>                 uart1_frac                0            0    44550000          0 0  
>              uart0_pre                    0            0   891000000          0 0  
>                 uart0_frac                0            0    44550000          0 0  
> ..............
> more output is omitted.

you actually omitted the output part where sclk_uart2 is actually shown :-) .

On my rk3188 radxarock with a kernel build this morning from
the middle of this merge-window, the relevant part of the clock-tree
looks like the following and my serial console works like a charm:

xin24m                                   6            6    24000000          0 0
[...]
    pll_gpll                              1            1   594000000          0 0
       gpll                               5            5   594000000          0 0
[...]
         uart_src                        1            1   594000000          0 0
             uart3_pre                    0            0   594000000          0 0
                uart3_frac                0            0    29700000          0 0
             uart2_pre                    1            1   594000000          0 0
                uart2_frac                1            1     1843200          0 0
                   sclk_uart2             1            1     1843200          0 0
 [			^^ the important clock]

In your dump the sclk_uart2 clock is not muxed to the uart2_frac clock
but to something else but that part is missing from you dump.

So clk_round_rate is definitly correct in that it can reach this rate
using the fractional divider and also can sucessfully set this in the
clock framework.

Can you show where sclk_uart2 is for you please, as I guess your dump
is with the settermios patch disabled, right?


Thanks
Heiko

  parent reply	other threads:[~2017-11-23 15:11 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20171120144045.juwm64m2j736h5ps@home.dogben.com>
     [not found] ` <d8ba3c8a-a406-cbee-d71b-d6784d6ebacc@sondrel.com>
     [not found]   ` <d8ba3c8a-a406-cbee-d71b-d6784d6ebacc-56FIPCJpnYtBDgjK7y7TUQ@public.gmane.org>
2017-11-20 16:14     ` [PATCH][RFC] 8250_dw: unregister dw8250_set_termios for rk3188 chip Shuyu Wei
     [not found]       ` <20171120161455.orvooleyzfsslon3-ZQaglsx1qnHXWvwwbwmGMg@public.gmane.org>
2017-11-20 16:26         ` Ed Blake
     [not found]           ` <0a4ce349-d386-0f1b-e973-e77af7f75d23-56FIPCJpnYtBDgjK7y7TUQ@public.gmane.org>
2017-11-20 17:51             ` Heiko Stübner
2017-11-21  3:09               ` Shuyu Wei
     [not found]                 ` <20171121030949.a6bsapueiicdbonj-ZQaglsx1qnHXWvwwbwmGMg@public.gmane.org>
2017-11-21 10:23                   ` Ed Blake
     [not found]                     ` <4010bd84-7c88-5410-820f-bd3d04f1fbb5-56FIPCJpnYtBDgjK7y7TUQ@public.gmane.org>
2017-11-21 17:17                       ` Shuyu Wei
     [not found]                         ` <20171121171712.GA4462-ZQaglsx1qnHXWvwwbwmGMg@public.gmane.org>
2017-11-21 17:33                           ` Ed Blake
     [not found]                             ` <f834a0a4-3d1e-6f97-6ff3-1d52d609f510-56FIPCJpnYtBDgjK7y7TUQ@public.gmane.org>
2017-11-23 14:56                               ` Shuyu Wei
     [not found]                                 ` <20171123145622.GA1272-ZQaglsx1qnHXWvwwbwmGMg@public.gmane.org>
2017-11-23 15:11                                   ` Heiko Stuebner [this message]
2017-11-23 15:40                                     ` Shuyu Wei
     [not found]                                       ` <20171123153922.GA23503-ZQaglsx1qnHXWvwwbwmGMg@public.gmane.org>
2017-11-23 23:34                                         ` Heiko Stuebner
2017-11-24 17:06                                           ` Shuyu Wei
2017-11-20 14:49 Shuyu Wei

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=2890515.ZR3BzkItWh@phil \
    --to=heiko-4mtyjxux2i+zqb+pc5nmwq@public.gmane.org \
    --cc=ed.blake-56FIPCJpnYtBDgjK7y7TUQ@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=heikki.krogerus-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
    --cc=wangkefeng.wang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=wsy-flSAGy4ZnMjQT0dZR+AlfA@public.gmane.org \
    /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).