
Hi all,
On Thu, Feb 2, 2023 at 10:04 AM Pali Rohár pali@kernel.org wrote:
On Wednesday 01 February 2023 13:13:16 Tony Dinh wrote:
Hi all,
On Wed, Feb 1, 2023 at 11:05 AM Pali Rohár pali@kernel.org wrote:
On Wednesday 01 February 2023 09:17:15 Michael Walle wrote:
> When DM_SERIAL is enabled, the device-tree property dm-pre-reloc is > required to boot over UART with kwboot. Enable this in a Kirkwood > common u-boot dtsi.
My (dev) board unfortunately, have a bootloader which can't boot over serial.
This is feature of Marvell BootROM and does not require any special from Bootloader. So you should be able to boot over UART (if you have accessible pins).
I know, but there are known versions ob the bootrom where uart boot isn't supported (correctly).
I heard about it... maybe it is a bug in client software (kwboot)? I do not have such board if you are interested in it I could try to send some details how to debug it.
The Kirkwood SoCs came with different BootROM versions. Version 1.1 cannot be booted over UART, but version 1.2 can. I think there must be a bug in the BootROM 1.1. The older Kirkwood such as Sheevaplug, Dockstar, iConnect boards come with BootROM 1.1. Later version of Sheevaplug, GoFlex Home, GoFlex Net, Dreamplug, Pogoplug V4, Zyxel NSA310S, NSA320, NSA325 come with BootROM 1.2. So even though it is the same SoC, eg. 6281, they are actually produced at a different time and have different BootROM versions.
There are always multiple revisions of the same SoC. So it is possible that something was broken on first revision of 88F6281 and in next revision was updated BootROM with some fixes. Revision is written on package label and for Armada SoCs it is available also in some register (not sure about Kirkwood). It looks like that there is at least revision Z0 and revision A0 of some Kirkwood SoC.
If there is a bug in first revisions then it should be documented in some Kirkwood Errata document. Unfortunately I have never seen it, it is not public, so I have no idea. In any case, if somebody has access to Marvell documents, interesting are these document numbers:
- MV-S105223-001 - Differences Between the 88F6192, and 88F6281 Stepping Z0 and A0
- MV-S501081-00 - 88F6180, 88F6192, and 88F6281 Functional Errata, Interface Guidelines, and Restrictions
- MV-S501157-U0 - 88F6180, 88F6190, 88F6192, and 88F6281 Functional Errata, Interface Guidelines, and Restrictions
One of the option how to investigate or debug this issue without documentation is to dump both BootROM versions (1.1, 1.2) and compare them. Either there is different UART protocol for booting (which needs to be implemented) or UART protocol is buggy and needs some workaround or it is completely broken and does not work.
Here is an excerpt from doc/develop/driver-model/serial-howto.rst.
Quote === Here are some things you might need to consider:
1. The serial driver itself needs to be present before relocation, so that the U-Boot banner appears. Make sure it has a u-boot,dm-pre-reloc tag in the device tree, so that the serial driver is bound when U-Boot starts.
For example, on iMX8::
lpuart3: serial@5a090000 { compatible = "fsl,imx8qm-lpuart"; ... };
put this in your xxx-u-boot.dtsi file::
&lpuart3 { u-boot,dm-pre-proper; }; === Unquote
So it looks like my understanding was correct. The serial driver is not bound if there is no u-boot,dm-pre-reloc tag. And does it sound like it is required for all targets because of this reason?
Thanks, Tony