From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Schocher Date: Thu, 6 Feb 2020 06:19:39 +0100 Subject: dm, serial: problem with using ns16550 driver before relocation on mpc83xx In-Reply-To: References: Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello Simon, Am 05.02.2020 um 18:59 schrieb Simon Glass: > Hi Heiko, > > On Wed, 5 Feb 2020 at 02:04, Heiko Schocher wrote: >> >> Hello Bin, Simon, >> >> I just porting the mpc83xx based kmcoge5ne board support DTS and got >> problems using the serial ns16550 driver. >> >> I need the serial driver before rolcation, so I enabled >> "u-boot,dm-pre-reloc;" as usual in the device tree, but board does not >> boot ... >> >> I found the commit: >> >> commit 4687919684e0e4390b9fc20d1809ecaa9dc3cb81 >> Author: Bin Meng >> Date: Wed Oct 24 06:36:36 2018 -0700 >> >> serial: Remove DM_FLAG_PRE_RELOC flag in various drivers >> >> which added to the ns16550 serial driver: >> >> diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c >> index 04b604fa2c..1e6fc6c668 100644 >> --- a/drivers/serial/ns16550.c >> +++ b/drivers/serial/ns16550.c >> @@ -487,7 +487,9 @@ U_BOOT_DRIVER(ns16550_serial) = { >> .priv_auto_alloc_size = sizeof(struct NS16550), >> .probe = ns16550_serial_probe, >> .ops = &ns16550_serial_ops, >> +#if !CONFIG_IS_ENABLED(OF_CONTROL) >> .flags = DM_FLAG_PRE_RELOC, >> +#endif >> }; >> #endif >> #endif /* SERIAL_PRESENT */ >> >> So, as OF_CONTROL is defined for me, the flag "u-boot,dm-pre-reloc" seems >> not working anymore ... >> >> Adding this back: >> >> hs at xmglap:u-boot-secu [20200205-temp] $ git diff >> diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c >> index 9851663dc5..386ca9cffa 100644 >> --- a/drivers/serial/ns16550.c >> +++ b/drivers/serial/ns16550.c >> @@ -528,7 +528,7 @@ U_BOOT_DRIVER(ns16550_serial) = { >> .priv_auto_alloc_size = sizeof(struct NS16550), >> .probe = ns16550_serial_probe, >> .ops = &ns16550_serial_ops, >> -#if !CONFIG_IS_ENABLED(OF_CONTROL) >> +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) >> .flags = DM_FLAG_PRE_RELOC, >> #endif >> }; >> >> and board boots fine with the flag "u-boot,dm-pre-reloc" in DTS ... >> >> May I do something wrong here? I found in mainline for example >> the "arch/powerpc/dts/gdsys/gazerbeam-uboot.dtsi" board, which >> has the exactly same dts settings than I have now. >> >> @Dirk: Can you check, if this board boots with current mainline? >> >> Shouldn;t be the logic, that in case OF_CONTROL is enabled and if >> flag "u-boot,dm-pre-reloc" is set in DTS for the device, the device >> should be bound before relocation, and we do not need to check, if >> the driver sets DM_FLAG_PRE_RELOC ? >> >> But may I miss here something ... >> >> Any hints? > > +Tom Rini > > I found I needed this for rpi. > > http://patchwork.ozlabs.org/patch/1202913/ > > But I still haven't gone back to figure out why Tom doesn't. Hmm... I have added the "u-boot,dm-pre-reloc;" to the uart node. Like it is for the gazerbeam board, see [1] It works if "DM_FLAG_PRE_RELOC" is set the driver in flags... no need for a gpio node before relocation like it is inabove patch. I wonder if we need DM_FLAG_PRE_RELOC at all in a driver and OF_CONTROL case. Shouldn't it be enough if the DTB node for the driver contains the "u-boot,dm-pre-reloc;" property? bye, Heiko [1] https://gitlab.denx.de/u-boot/u-boot/blob/master/arch/powerpc/dts/gdsys/gazerbeam-uboot.dtsi#L238 -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-52 Fax: +49-8142-66989-80 Email: hs at denx.de