[U-Boot] DM-SERIAL-SPL on MX6

hi,
i'm actually trying to convert my i.mx6 boards to DM, many things are already doing well. But I've trouble getting the console (UART) runnin SPL.
The "preloader_console_init" is called very early in board_init_f, i guess that DM isn't ready at this point.
has anyone experience in this?
cheers, Hannes

+ Add few imx maintainers
On Thu, Jun 7, 2018 at 12:25 PM, Hannes Schmelzer hannes@schmelzer.or.at wrote:
hi,
i'm actually trying to convert my i.mx6 boards to DM, many things are already doing well. But I've trouble getting the console (UART) runnin SPL.
The "preloader_console_init" is called very early in board_init_f, i guess that DM isn't ready at this point.
has anyone experience in this?
Yes I've faced the same, look like DEBUG Uart doesn't support low level init. Peng or someone can explain more.
Jagan.

Hi,
On 06/07/2018 09:14 AM, Jagan Teki wrote:
- Add few imx maintainers
On Thu, Jun 7, 2018 at 12:25 PM, Hannes Schmelzer hannes@schmelzer.or.at wrote:
hi,
i'm actually trying to convert my i.mx6 boards to DM, many things are already doing well. But I've trouble getting the console (UART) runnin SPL.
The "preloader_console_init" is called very early in board_init_f, i guess that DM isn't ready at this point.
has anyone experience in this?
Yes I've faced the same, look like DEBUG Uart doesn't support low level init. Peng or someone can explain more.
When converting the OPOS6UL to DM, I had to move the preloader_console_init call into the spl_board_init function.
Regards,
Jagan.

On 06/07/2018 09:50 AM, Sébastien Szymanski wrote:
Hi,
Hi Sébastien,
On 06/07/2018 09:14 AM, Jagan Teki wrote:
- Add few imx maintainers
On Thu, Jun 7, 2018 at 12:25 PM, Hannes Schmelzer hannes@schmelzer.or.at wrote:
hi,
i'm actually trying to convert my i.mx6 boards to DM, many things are already doing well. But I've trouble getting the console (UART) runnin SPL.
The "preloader_console_init" is called very early in board_init_f, i guess that DM isn't ready at this point.
has anyone experience in this?
Yes I've faced the same, look like DEBUG Uart doesn't support low level init. Peng or someone can explain more.
When converting the OPOS6UL to DM, I had to move the preloader_console_init call into the spl_board_init function.
thanks for this hint, i also tried this. But unfortunately without success. But it is good to know that this way on your side works.
what i've done to try make it work:
add to my dts: chosen { stdout-path = &uart1; };
&uart1 { u-boot,dm-spl; u-boot,dm-preloc; status = "okay"; };
so the device should be present during spl stage and console should be set to it.
# Serial drivers # CONFIG_BAUDRATE=115200 CONFIG_SERIAL_PRESENT=y CONFIG_SPL_SERIAL_PRESENT=y CONFIG_DM_SERIAL=y CONFIG_SPL_DM_SERIAL=y CONFIG_MXC_UART=y
maybe i'm still missing something.

On 06/07/2018 10:35 AM, Hannes Schmelzer wrote:
On 06/07/2018 09:50 AM, Sébastien Szymanski wrote:
Hi,
Hi Sébastien,
On 06/07/2018 09:14 AM, Jagan Teki wrote:
- Add few imx maintainers
On Thu, Jun 7, 2018 at 12:25 PM, Hannes Schmelzer hannes@schmelzer.or.at wrote:
hi,
i'm actually trying to convert my i.mx6 boards to DM, many things are already doing well. But I've trouble getting the console (UART) runnin SPL.
The "preloader_console_init" is called very early in board_init_f, i guess that DM isn't ready at this point.
has anyone experience in this?
Yes I've faced the same, look like DEBUG Uart doesn't support low level init. Peng or someone can explain more.
When converting the OPOS6UL to DM, I had to move the preloader_console_init call into the spl_board_init function.
thanks for this hint, i also tried this. But unfortunately without success. But it is good to know that this way on your side works.
what i've done to try make it work:
add to my dts: chosen { stdout-path = &uart1; };
&uart1 { u-boot,dm-spl; u-boot,dm-preloc; status = "okay"; };
Don't you need pins muxing properties in uart1 ( pinctrl-names / pinctrl-0 ) ?
so the device should be present during spl stage and console should be set to it.
# Serial drivers # CONFIG_BAUDRATE=115200 CONFIG_SERIAL_PRESENT=y CONFIG_SPL_SERIAL_PRESENT=y CONFIG_DM_SERIAL=y CONFIG_SPL_DM_SERIAL=y CONFIG_MXC_UART=y
maybe i'm still missing something.

HI
thanks for this hint, i also tried this. But unfortunately without success. But it is good to know that this way on your side works.
what i've done to try make it work:
add to my dts: chosen { stdout-path = &uart1; };
&uart1 { u-boot,dm-spl; u-boot,dm-preloc; status = "okay"; };
Don't you need pins muxing properties in uart1 ( pinctrl-names / pinctrl-0 ) ?
No, pinmux is done with:
static iomux_v3_cfg_t const board_pads_spl[] = { /* UART#1 PADS */ MUXDESC(PAD_CSI0_DAT10__UART1_TX_DATA, UART_PAD_CTRL), MUXDESC(PAD_CSI0_DAT11__UART1_RX_DATA, UART_PAD_CTRL), }
SETUP_IOMUX_PADS(board_pads_spl);
SPL console output is fine working once DM_SERIAL for SPL is disabled. But with this option enabled i get no output during spl stage. Once the full u-boot payload is loaded the console works with DM as excpected.
In: serial@02020000 Out: serial@02020000 Err: serial@02020000
=> dm tree Class Probed Driver Name ---------------------------------------- root [ + ] root_drive root_driver simple_bus [ + ] generic_si |-- soc simple_bus [ + ] generic_si | |-- aips-bus@02000000 simple_bus [ + ] generic_si | | |-- spba-bus@02000000 spi [ + ] mxc_spi | | | |-- ecspi@02008000 spi_flash [ + ] spi_flash_ | | | | `-- spi_flash@0:1 serial [ + ] serial_mxc | | | `-- serial@02020000
so the device should be present during spl stage and console should be set to it.
# Serial drivers # CONFIG_BAUDRATE=115200 CONFIG_SERIAL_PRESENT=y CONFIG_SPL_SERIAL_PRESENT=y CONFIG_DM_SERIAL=y CONFIG_SPL_DM_SERIAL=y CONFIG_MXC_UART=y
maybe i'm still missing something.
cheers, Hannes

i'm actually trying to convert my i.mx6 boards to DM, many things are already doing well. But I've trouble getting the console (UART) runnin SPL.
The "preloader_console_init" is called very early in board_init_f, i guess that DM isn't ready at this point.
has anyone experience in this?
Yes I've faced the same, look like DEBUG Uart doesn't support low level init. Peng or someone can explain more.
When converting the OPOS6UL to DM, I had to move the preloader_console_init call into the spl_board_init function.
thanks for this hint, i also tried this. But unfortunately without success. But it is good to know that this way on your side works.
what i've done to try make it work:
add to my dts: chosen { stdout-path = &uart1; };
&uart1 { u-boot,dm-spl; u-boot,dm-preloc; status = "okay"; };
Don't you need pins muxing properties in uart1 ( pinctrl-names / pinctrl-0 ) ?
so the device should be present during spl stage and console should be set to it.
# Serial drivers # CONFIG_BAUDRATE=115200 CONFIG_SERIAL_PRESENT=y CONFIG_SPL_SERIAL_PRESENT=y CONFIG_DM_SERIAL=y CONFIG_SPL_DM_SERIAL=y CONFIG_MXC_UART=y
maybe i'm still missing something.
Finally converting the tips from Sebastian in addition with converting "CONFIG_SPL_BOARD_INIT" to Kconfig did the trick. Don't know why there is a difference, but doesn't matter since defining such stuff in board-config-header is deprecated.
many thanks to all. cheers, Hannes

On Thu, Jun 7, 2018 at 4:35 PM, Hannes Schmelzer hannes@schmelzer.or.at wrote:
i'm actually trying to convert my i.mx6 boards to DM, many things are already doing well. But I've trouble getting the console (UART) runnin SPL.
The "preloader_console_init" is called very early in board_init_f, i guess that DM isn't ready at this point.
has anyone experience in this?
Yes I've faced the same, look like DEBUG Uart doesn't support low level init. Peng or someone can explain more.
When converting the OPOS6UL to DM, I had to move the preloader_console_init call into the spl_board_init function.
thanks for this hint, i also tried this. But unfortunately without success. But it is good to know that this way on your side works.
what i've done to try make it work:
add to my dts: chosen { stdout-path = &uart1; };
&uart1 { u-boot,dm-spl; u-boot,dm-preloc; status = "okay"; };
Don't you need pins muxing properties in uart1 ( pinctrl-names / pinctrl-0 ) ?
so the device should be present during spl stage and console should be set to it.
# Serial drivers # CONFIG_BAUDRATE=115200 CONFIG_SERIAL_PRESENT=y CONFIG_SPL_SERIAL_PRESENT=y CONFIG_DM_SERIAL=y CONFIG_SPL_DM_SERIAL=y CONFIG_MXC_UART=y
maybe i'm still missing something.
Finally converting the tips from Sebastian in addition with converting "CONFIG_SPL_BOARD_INIT" to Kconfig did the trick. Don't know why there is a difference, but doesn't matter since defining such stuff in board-config-header is deprecated.
imx6ul seems working for me with DM_SERIAL, i.MX6QDL has still not getting console.

Hi Jagan,
maybe you want compare your board to my "brppt2" within my dev-branch:
https://github.com/oe5hpm/u-boot/tree/bur-next-ppt50dm
Once i've finished clean integration into tree i want to get it mainline.
cheers, Hannes
On 06/18/2018 02:26 PM, Jagan Teki wrote:
On Thu, Jun 7, 2018 at 4:35 PM, Hannes Schmelzer hannes@schmelzer.or.at wrote:
> i'm actually trying to convert my i.mx6 boards to DM, many things are > already doing well. > But I've trouble getting the console (UART) runnin SPL. > > The "preloader_console_init" is called very early in board_init_f, i > guess > that DM isn't ready at this point. > > has anyone experience in this? Yes I've faced the same, look like DEBUG Uart doesn't support low level init. Peng or someone can explain more.
When converting the OPOS6UL to DM, I had to move the preloader_console_init call into the spl_board_init function.
thanks for this hint, i also tried this. But unfortunately without success. But it is good to know that this way on your side works.
what i've done to try make it work:
add to my dts: chosen { stdout-path = &uart1; };
&uart1 { u-boot,dm-spl; u-boot,dm-preloc; status = "okay"; };
Don't you need pins muxing properties in uart1 ( pinctrl-names / pinctrl-0 ) ?
so the device should be present during spl stage and console should be set to it.
# Serial drivers # CONFIG_BAUDRATE=115200 CONFIG_SERIAL_PRESENT=y CONFIG_SPL_SERIAL_PRESENT=y CONFIG_DM_SERIAL=y CONFIG_SPL_DM_SERIAL=y CONFIG_MXC_UART=y
maybe i'm still missing something.
Finally converting the tips from Sebastian in addition with converting "CONFIG_SPL_BOARD_INIT" to Kconfig did the trick. Don't know why there is a difference, but doesn't matter since defining such stuff in board-config-header is deprecated.
imx6ul seems working for me with DM_SERIAL, i.MX6QDL has still not getting console.
participants (3)
-
Hannes Schmelzer
-
Jagan Teki
-
Sébastien Szymanski