| Fetch serial baudrate from DT | |
| ----------------------------- | |
| To support fetching of baudrate from DT, the following is done:- | |
| The baudrate configured in Kconfig symbol CONFIG_BAUDRATE is taken by default by serial. | |
| If change of baudrate is required then the Kconfig symbol CONFIG_BAUDRATE needs to | |
| changed and U-Boot recompilation is required or the U-Boot environment needs to be updated. | |
| To avoid this, add support to fetch the baudrate directly from the device tree file and | |
| update the environment. | |
| The default environment stores the default baudrate value. When default baudrate and dtb | |
| baudrate are not same glitches are seen on the serial. | |
| So, the environment also needs to be updated with the dtb baudrate to avoid the glitches on | |
| the serial which is enabled by OF_SERIAL_BAUD. | |
| The Kconfig SPL_ENV_SUPPORT needs to be enabled to allow patching in SPL. | |
| The Kconfig DEFAULT_ENV_IS_RW which is enabled by OF_SERIAL_BAUD with making the environment | |
| writable. | |
| The ofnode_read_baud() function parses and fetches the baudrate value from the DT. This value | |
| is validated and updated to baudrate during serial init. Padding is added at the end of the | |
| default environment and the dt baudrate is updated with the latest value. | |
| Example:- | |
| The serial port options are of the form "bbbbpnf", where "bbbb" is the baud rate, "p" is parity ("n", "o", or "e"), | |
| "n" is number of bits, and "f" is flow control ("r" for RTS or omit it). Default is "115200n8". | |
| chosen { | |
| bootargs = "earlycon console=ttyPS0,115200 clk_ignore_unused root=/dev/ram0 rw init_fatal_sh=1"; | |
| stdout-path = "serial0:115200n8"; | |
| }; | |
| From the chosen node, stdout-path property is obtained as string. | |
| stdout-path = "serial0:115200n8"; | |
| The string is parsed to get the baudrate 115200. This string is converted to integer and updated to the environment. |