All of lore.kernel.org
 help / color / mirror / Atom feed
From: Auer, Lukas <lukas.auer@aisec.fraunhofer.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 09/11] drivers: serial_sifive: Skip baudrate config if no input clock
Date: Mon, 21 Jan 2019 12:39:24 +0000	[thread overview]
Message-ID: <0be84ac49b307d23ec0f63bc38e7a3b00153360a.camel@aisec.fraunhofer.de> (raw)
In-Reply-To: <34422191-b499-ff42-78cd-d02fb49c2f2e@wdc.com>

On Sun, 2019-01-20 at 17:07 -0800, Atish Patra wrote:
> On 1/20/19 12:22 PM, Auer, Lukas wrote:
> > Hi Anup,
> > 
> > On Fri, 2019-01-18 at 11:19 +0000, Anup Patel wrote:
> > > From: Atish Patra <atish.patra@wdc.com>
> > > 
> > > It is possible that input clock is not available because clk
> > > device was not available and 'clock-frequency' DT property is
> > > also not available.
> > 
> > Why would the clock device not be available?
> > I suspect the problem is that the clock driver is not probed pre-
> > relocation. Adding DM_FLAG_PRE_RELOC to the driver flags would fix
> > this.
> > 
> 
> The problem is serial driver gets probed first before clock driver
> even 
> if we add DM_FLAG_PRE_RELOC.

That makes sense. I just browsed through the code to see what other
boards do here. The serial driver for the MPC83xx SoC series directly
probes the clock driver (see get_serial_clock in
driver/clk/mpc83xx_clk.c called from the serial driver). Maybe we
should do something similar here?

> 
> > > In this case, instead of failing we should just skip baudrate
> > > config by returning zero.
> > 
> > Won't this cause issues if an incorrect baudrate is set?
> > 
> It might be possible that baudrate is configured by earlier boot
> stage.
> Thus, any early information can be displayed in console by the
> serial 
> driver even if it is not configured correctly by u-boot.
> 

Yes, it is very likely not going to be a problem, but if we can fix it
it would be great :)

Thanks,
Lukas

> 
> Regards,
> Atish
> > Thanks,
> > Lukas
> > 
> > > Signed-off-by: Atish Patra <atish.patra@wdc.com>
> > > Signed-off-by: Anup Patel <anup.patel@wdc.com>
> > > Reviewed-by: Alexander Graf <agraf@suse.de>
> > > ---
> > >   drivers/serial/serial_sifive.c | 32 ++++++++++++++++-----------
> > > -----
> > >   1 file changed, 16 insertions(+), 16 deletions(-)
> > > 
> > > diff --git a/drivers/serial/serial_sifive.c
> > > b/drivers/serial/serial_sifive.c
> > > index ea4d35d48c..537bc7a975 100644
> > > --- a/drivers/serial/serial_sifive.c
> > > +++ b/drivers/serial/serial_sifive.c
> > > @@ -99,27 +99,27 @@ static int _sifive_serial_getc(struct
> > > uart_sifive
> > > *regs)
> > >   
> > >   static int sifive_serial_setbrg(struct udevice *dev, int
> > > baudrate)
> > >   {
> > > -	int err;
> > > +	int ret;
> > >   	struct clk clk;
> > >   	struct sifive_uart_platdata *platdata =
> > > dev_get_platdata(dev);
> > > +	u32 clock = 0;
> > >   
> > > -	err = clk_get_by_index(dev, 0, &clk);
> > > -	if (!err) {
> > > -		err = clk_get_rate(&clk);
> > > -		if (!IS_ERR_VALUE(err))
> > > -			platdata->clock = err;
> > > -	} else if (err != -ENOENT && err != -ENODEV && err != -ENOSYS)
> > > {
> > > +	ret = clk_get_by_index(dev, 0, &clk);
> > > +	if (IS_ERR_VALUE(ret)) {
> > >   		debug("SiFive UART failed to get clock\n");
> > > -		return err;
> > > -	}
> > > -
> > > -	if (!platdata->clock)
> > > -		platdata->clock = dev_read_u32_default(dev, "clock-
> > > frequency", 0);
> > > -	if (!platdata->clock) {
> > > -		debug("SiFive UART clock not defined\n");
> > > -		return -EINVAL;
> > > +		ret = dev_read_u32(dev, "clock-frequency", &clock);
> > > +		if (IS_ERR_VALUE(ret)) {
> > > +			debug("SiFive UART clock not defined\n");
> > > +			return 0;
> > > +		}
> > > +	} else {
> > > +		clock = clk_get_rate(&clk);
> > > +		if (IS_ERR_VALUE(clock)) {
> > > +			debug("SiFive UART clock get rate failed\n");
> > > +			return 0;
> > > +		}
> > >   	}
> > > -
> > > +	platdata->clock = clock;
> > >   	_sifive_serial_setbrg(platdata->regs, platdata->clock,
> > > baudrate);
> > >   
> > >   	return 0;

  reply	other threads:[~2019-01-21 12:39 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-18 11:18 [U-Boot] [PATCH v2 00/11] SiFive FU540 Support Anup Patel
2019-01-18 11:18 ` [U-Boot] [PATCH v2 01/11] riscv: Rename cpu/qemu to cpu/generic Anup Patel
2019-01-20 19:57   ` Auer, Lukas
2019-01-22  2:06   ` Bin Meng
2019-01-18 11:18 ` [U-Boot] [PATCH v2 02/11] riscv: Add asm/dma-mapping.h for DMA mappings Anup Patel
2019-01-20 19:57   ` Auer, Lukas
2019-01-18 11:18 ` [U-Boot] [PATCH v2 03/11] riscv: generic: Ensure that U-Boot runs within 4GB for 64bit systems Anup Patel
2019-01-20 20:04   ` Auer, Lukas
2019-01-21  5:49     ` Anup Patel
2019-01-22  2:06   ` Bin Meng
2019-01-22 12:48     ` Anup Patel
2019-01-18 11:19 ` [U-Boot] [PATCH v2 04/11] net: macb: Fix clk API usage for RISC-V systems Anup Patel
2019-01-18 11:19 ` [U-Boot] [PATCH v2 05/11] net: macb: Fix GEM hardware detection Anup Patel
2019-01-18 11:51   ` Alexander Graf
2019-01-18 13:03     ` Anup Patel
2019-01-18 13:11       ` Alexander Graf
2019-01-18 13:25         ` Anup Patel
2019-01-20 20:05   ` Auer, Lukas
2019-01-18 11:19 ` [U-Boot] [PATCH v2 06/11] clk: Add SiFive FU540 PRCI clock driver Anup Patel
2019-01-20 20:12   ` Auer, Lukas
2019-01-21  5:55     ` Anup Patel
2019-01-21 12:09       ` Auer, Lukas
2019-01-18 11:19 ` [U-Boot] [PATCH v2 07/11] clk: Add fixed-factor " Anup Patel
2019-01-31 10:04   ` Simon Glass
2019-02-05 12:53     ` Anup Patel
2019-01-18 11:19 ` [U-Boot] [PATCH v2 08/11] drivers: serial_sifive: Fix baud rate calculation Anup Patel
2019-01-18 11:52   ` Alexander Graf
2019-01-18 13:04     ` Anup Patel
2019-01-20 20:13   ` Auer, Lukas
2019-01-18 11:19 ` [U-Boot] [PATCH v2 09/11] drivers: serial_sifive: Skip baudrate config if no input clock Anup Patel
2019-01-20 20:22   ` Auer, Lukas
2019-01-21  1:07     ` Atish Patra
2019-01-21 12:39       ` Auer, Lukas [this message]
2019-02-10 18:02         ` Auer, Lukas
2019-01-18 11:19 ` [U-Boot] [PATCH v2 10/11] cpu: Bind timer driver for boot hart Anup Patel
2019-01-18 11:52   ` Alexander Graf
2019-01-18 13:04     ` Anup Patel
2019-01-20 20:22   ` Auer, Lukas
2019-01-22  2:06   ` Bin Meng
2019-01-18 11:19 ` [U-Boot] [PATCH v2 11/11] riscv: Add SiFive FU540 board support Anup Patel
2019-01-20 20:26   ` Auer, Lukas
2019-01-21  1:22     ` Atish Patra
2019-01-21 12:57       ` Auer, Lukas
2019-01-21  9:48   ` Andreas Schwab
2019-01-21 16:17     ` Anup Patel
2019-01-21 16:36       ` Andreas Schwab
2019-01-21 16:53         ` Anup Patel
2019-01-21 17:10           ` Andreas Schwab
2019-01-21 17:32             ` Anup Patel
2019-01-22  9:30               ` Andreas Schwab
2019-01-23 19:01                 ` Atish Patra
2019-01-24  9:53                   ` Andreas Schwab
2019-01-24 10:43                     ` Anup Patel
2019-01-24 10:46                       ` Alexander Graf
2019-01-24 11:05                         ` Anup Patel
2019-01-24 11:18                           ` Alexander Graf
2019-01-24 12:52                             ` Anup Patel
2019-01-24 13:38                             ` Andreas Schwab
2019-01-24 13:53                               ` Alexander Graf
2019-01-24 13:57                                 ` Andreas Schwab
2019-02-03  7:41                                   ` Anup Patel
2019-02-04 11:17                                     ` Andreas Schwab
2019-02-04 13:03                                       ` Atish Patra
2019-02-04 13:10                                         ` Andreas Schwab
2019-02-05 12:14                                           ` Anup Patel
2019-02-05 12:51                                             ` Andreas Schwab
2019-02-05 12:58                                               ` Anup Patel
2019-02-05 13:40                                                 ` Andreas Schwab
2019-02-05 14:28                                                   ` Anup Patel
2019-02-05 14:39                                                     ` Andreas Schwab
2019-02-05 14:43                                                       ` Anup Patel
2019-02-05 15:00                                                         ` Andreas Schwab
2019-02-05 15:04                                                           ` Anup Patel
2019-01-22  2:06   ` Bin Meng
2019-01-20 20:33 ` [U-Boot] [PATCH v2 00/11] SiFive FU540 Support Auer, Lukas
2019-01-21  1:37   ` Atish Patra
2019-01-21  4:04     ` Anup Patel
2019-01-21  6:14       ` Bin Meng
2019-01-21  6:41         ` Anup Patel
2019-01-21  7:02           ` Bin Meng
2019-01-22 11:51       ` Auer, Lukas
2019-01-22 12:31         ` Anup Patel
2019-01-22 22:35           ` Auer, Lukas
2019-02-02 17:06         ` Paul Walmsley
2019-02-10 17:54           ` Auer, Lukas

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=0be84ac49b307d23ec0f63bc38e7a3b00153360a.camel@aisec.fraunhofer.de \
    --to=lukas.auer@aisec.fraunhofer.de \
    --cc=u-boot@lists.denx.de \
    /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.