Hi,
there are invalid references inside sun50i-h5-fixup.scr, I think.
I use NANOPINEO2, myself compiled linux-*-current-sunxi64_20.05.0-trunk_arm64.deb, kernel 5.4.28-sunxi64 #trunk SMP PREEMPT.
amrbianEnv.txt (reduced):
overlay_prefix=sun50i-h5
overlays=i2c0 uart1 uart2 usbhost1 usbhost2 usbhost3
param_uart1_rtscts=1
param_uart2_rtscts=1
For example, the row param_uart2_rtscts=1 leads to use following rows of sun50i-h5-fixup.scr:
fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart2 phandle
fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart2_rts_cts phandle
fdt set /soc/serial@1c28800 pinctrl-names "default" "default"
fdt set /soc/serial@1c28800 pinctrl-0 "<${tmp_phandle1}>"
fdt set /soc/serial@1c28800 pinctrl-1 "<${tmp_phandle2}>"
env delete tmp_phandle1 tmp_phandle2
There are some error messages during boot:
Applying kernel provided DT fixup script (sun50i-h5-fixup.scr)
## Executing script at 44000000
tmp_bank=A
tmp_pin=21
libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND
libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND
libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND
10046717 bytes read in 505 ms (19 MiB/s)
As a result, the RTS/CTS handshaking for UART2 is unfunctional. May be for UART1 and UART3 is the same?
I think the reason is that there are no paths /soc/pinctrl@1c20800/uart2 and /soc/pinctrl@1c20800/uart2_rts_cts inside the device tree specified by sun50i-h5-nanopi-neo2-v1.1.dtb file.
The right paths are /soc/pinctrl@1c20800/uart2-pins and /soc/pinctrl@1c20800/uart2-rts-cts-pins, I think.
Am I right? I've tried easy modification of SCR script - handshaking is now functional, but CRC is bad.
If I am right, what is the right way to correct this? Script change (how properly?), DTB change, DTBO creation, ...?
Moreover, look at this reduced listing of /sys/firmware/devicetree/base/soc/pinctrl@1c20800:
csi-pins
emac-rgmii-pins
i2c0-pins
i2c1-pins
i2c2-pins
i2s0-pins
i2s1-pins
mmc0-pins
mmc1-pins
mmc2-8bit-pins
spi0-pins
spi1-pins
uart0-pa-pins
uart1-pins
uart1-rts-cts-pins
uart2-pins
uart2_rts_cts
uart2-rts-cts-pins
uart3-pins
uart3-rts-cts-pins
w1_pins
Why are somewhere dashes "-" and somewhere underscores "_" ?
Thank you.