On Sat, Aug 22, 2015 at 3:36 AM, Simon Glass <s...@chromium.org> wrote: > Hi Serkey, > > On 18 August 2015 at 06:26, Sergey Temerkhanov <s.temerkha...@gmail.com> > wrote: >> On some systems, UART initialization is performed before running U-Boot. >> This commit allows to skip UART re-initializaion on those systems >> >> Signed-off-by: Sergey Temerkhanov <s.temerkha...@gmail.com> >> Signed-off-by: Radha Mohan Chintakuntla <rchintakun...@cavium.com> >> >> --- >> >> Changes in v4: >> - Fixed build warnings >> - Moved to DM_SERIAL >> >> Changes in v3: >> - Added __used keyword >> >> Changes in v2: None >> >> drivers/serial/serial_pl01x.c | 12 ++++++------ >> include/dm/platform_data/serial_pl01x.h | 6 ++++++ >> 2 files changed, 12 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/serial/serial_pl01x.c b/drivers/serial/serial_pl01x.c >> index ad503af..037fd23 100644 >> --- a/drivers/serial/serial_pl01x.c >> +++ b/drivers/serial/serial_pl01x.c >> @@ -125,7 +125,7 @@ static int pl011_set_line_control(struct pl01x_regs >> *regs) >> } >> >> static int pl01x_generic_setbrg(struct pl01x_regs *regs, enum pl01x_type >> type, >> - int clock, int baudrate) >> + int clock, int baudrate) >> { >> switch (type) { >> case TYPE_PL010: { >> @@ -295,7 +295,6 @@ __weak struct serial_device *default_serial_console(void) >> #endif /* nCONFIG_DM_SERIAL */ >> >> #ifdef CONFIG_DM_SERIAL >> - >> struct pl01x_priv { >> struct pl01x_regs *regs; >> enum pl01x_type type; >> @@ -306,9 +305,9 @@ static int pl01x_serial_setbrg(struct udevice *dev, int >> baudrate) >> struct pl01x_serial_platdata *plat = dev_get_platdata(dev); >> struct pl01x_priv *priv = dev_get_priv(dev); >> >> - pl01x_generic_setbrg(priv->regs, priv->type, plat->clock, baudrate); >> - >> - return 0; >> + return (plat->flags & PL0x_PREINITIALIZED) ? 0 : >> + pl01x_generic_setbrg(priv->regs, priv->type, >> + plat->clock, baudrate); >> } >> >> static int pl01x_serial_probe(struct udevice *dev) >> @@ -318,7 +317,8 @@ static int pl01x_serial_probe(struct udevice *dev) >> >> priv->regs = (struct pl01x_regs *)plat->base; >> priv->type = plat->type; >> - return pl01x_generic_serial_init(priv->regs, priv->type); >> + return (plat->flags & PL0x_PREINITIALIZED) ? 0 : >> + pl01x_generic_serial_init(priv->regs, priv->type); >> } >> >> static int pl01x_serial_getc(struct udevice *dev) >> diff --git a/include/dm/platform_data/serial_pl01x.h >> b/include/dm/platform_data/serial_pl01x.h >> index 5e068f3..455121b 100644 >> --- a/include/dm/platform_data/serial_pl01x.h >> +++ b/include/dm/platform_data/serial_pl01x.h >> @@ -11,17 +11,23 @@ enum pl01x_type { >> TYPE_PL011, >> }; >> >> +enum pl01x_flags { >> + PL0x_PREINITIALIZED = 1 << 0, /* Skip port initialization */ >> +}; >> + >> /* >> *Information about a serial port >> * >> * @base: Register base address >> * @type: Port type >> * @clock: Input clock rate, used for calculating the baud rate divisor >> + * @flags: Port flags >> */ >> struct pl01x_serial_platdata { >> unsigned long base; >> enum pl01x_type type; >> unsigned int clock; >> + unsigned long flags; >> }; >> >> #endif > > This patch is fine as far as it goes (although the x in > PL0x_PREINITIALIZED should be capitalised to match style I think).
Agreed > > But why doesn't this board use device tree (CONFIG_OF_CONTROL)? Do you > have a device tree file for it? OK, I'll import one from the Linux kernel. > > Regards, > Simon Regards, Sergey _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot