| 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. |