5kft Posted July 21, 2018 Posted July 21, 2018 There appears to be a problem or incompatibility with the new 2018.05 u-boot configuration and/or implementation and the Armbian sunxi-next startup scripts (both in the current master branch). The "fdt" command processing doesn't appear to properly expand local environment variables before trying to execute them (?). Here's an example from a vanilla Armbian boot (u-boot 2018.05) - notice the "libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND" errors when the DT fixup script runs: ... Err: serial Net: No ethernet found. 230454 bytes read in 15 ms (14.7 MiB/s) starting USB... No controllers found Autoboot in 1 seconds, press <Space> to stop switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... Found U-Boot script /boot.scr 3100 bytes read in 7 ms (431.6 KiB/s) ## Executing script at 4fc00000 U-boot loaded from SD Boot script loaded from mmc 230 bytes read in 5 ms (44.9 KiB/s) 26379 bytes read in 19 ms (1.3 MiB/s) 780 bytes read in 18 ms (42 KiB/s) Applying kernel provided DT overlay sun50i-h5-spi-spidev.dtbo 504 bytes read in 30 ms (15.6 KiB/s) Applying kernel provided DT overlay sun50i-h5-usbhost1.dtbo 504 bytes read in 32 ms (14.6 KiB/s) Applying kernel provided DT overlay sun50i-h5-usbhost2.dtbo 4179 bytes read in 26 ms (156.3 KiB/s) Applying kernel provided DT fixup script (sun50i-h5-fixup.scr) ## Executing script at 44000000 libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND 4534427 bytes read in 230 ms (18.8 MiB/s) 13942792 bytes read in 695 ms (19.1 MiB/s) ## Loading init Ramdisk from Legacy Image at 4fe00000 ... ... These particular "FDT_ERR_NOTFOUND" errors are coming from the processing for the /boot/armbianEnv.txt setting "param_spidev_spibus=". The two "fdt set /soc/${tmp_spi_path} ..." commands are failing because ${tmp_spi_path} is not getting expanded (or is expanded incorrectly, or something}. I've excerpted the necessary commands from the board DT startup scripts to illustrate this. Simply boot into u-boot on a top-of-tree build from master on an H5 device - hit spacebar repeatedly while u-boot is starting up - and enter the following commands in the u-boot command line (in this example I'm using my NanoPi NEO2): ... In: serial Out: serial Err: serial Net: No ethernet found. 230454 bytes read in 15 ms (14.7 MiB/s) starting USB... No controllers found Autoboot in 1 seconds, press <Space> to stop => => => => setenv load_addr "0x44000000" => print fdt_addr_r fdt_addr_r=0x4FA00000 => setenv devtype mmc => setenv devnum 0 => load ${devtype} ${devnum} ${fdt_addr_r} dtb/allwinner/sun50i-h5-nanopi-neo2.dtb 26379 bytes read in 18 ms (1.4 MiB/s) => fdt addr ${fdt_addr_r} => fdt resize 65536 => load ${devtype} ${devnum} ${load_addr} dtb/allwinner/overlay/sun50i-h5-spi-spidev.dtbo 780 bytes read in 18 ms (42 KiB/s) => fdt apply ${load_addr} => => #### now if I set a temporary variable and use that variable (as in "sun50i-h5-fixup.scr"), it fails: => setenv tmp_spi_path "spi@01c68000" => fdt list /soc/${tmp_spi_path} libfdt fdt_path_offset() returned FDT_ERR_NOTFOUND => => #### however if I specify the value directly, it works fine: => fdt list /soc/spi@1c68000 spi@1c68000 { compatible = "allwinner,sun8i-h3-spi"; reg = <0x01c68000 0x00001000>; interrupts = <0x00000000 0x00000041 0x00000004>; clocks = <0x00000003 0x0000001e 0x00000003 0x00000052>; clock-names = "ahb", "mod"; dmas = <0x00000017 0x00000017 0x00000017 0x00000017>; dma-names = "rx", "tx"; pinctrl-names = "default"; pinctrl-0 = <0x00000018>; resets = <0x00000003 0x0000000f>; status = "okay"; #address-cells = <0x00000001>; #size-cells = <0x00000000>; phandle = <0x0000004e>; spidev { }; }; => The effect of this is that the current fixup scripts in the master branch won't process everything properly, and (in my case), SPI fails to be enabled and configured properly. I did some quick comparisons between the prior 2017.11 version and this version (cmdline processing and fdt processing), and there isn't anything obvious that stands out. Any ideas what might be going on here? Perhaps the startup DT scripts need to be updated?
zador.blood.stained Posted July 21, 2018 Posted July 21, 2018 4 hours ago, 5kft said: Any ideas what might be going on here? This. 4 hours ago, 5kft said: Perhaps the startup DT scripts need to be updated? Both overlays and fixup scripts need updates after migration from 4.14 to 4.17. 1
peter314 Posted July 21, 2018 Posted July 21, 2018 Hi there! I am experiencing the same problem on fresh install of https://dl.armbian.com/orangepione/Ubuntu_bionic_next_nightly.7z, that is supposed to be supported according to the website. Would you mind to elaborate what exactly to do to fix this? Thanks in advance!
5kft Posted July 21, 2018 Author Posted July 21, 2018 3 hours ago, zador.blood.stained said: This. Both overlays and fixup scripts need updates after migration from 4.14 to 4.17. Ah, many thanks @zador.blood.stained !
5kft Posted July 21, 2018 Author Posted July 21, 2018 2 hours ago, peter314 said: Hi there! I am experiencing the same problem on fresh install of https://dl.armbian.com/orangepione/Ubuntu_bionic_next_nightly.7z, that is supposed to be supported according to the website. Would you mind to elaborate what exactly to do to fix this? Thanks in advance! I just fixed this for the H5 boards, and have submitted a PR (https://github.com/armbian/build/pull/1056). With these changes SPI is working for me again Similar changes likely need to be made for the H3 DTs. 2
peter314 Posted July 21, 2018 Posted July 21, 2018 I got it running now by patching sun8i-h3-fixup.scr But where do i find the all the dts files to be patched? Are they these ones: https://github.com/armbian/sunxi-DT-overlays? Thanks!
5kft Posted July 21, 2018 Author Posted July 21, 2018 2 minutes ago, peter314 said: I got it running now by patching sun8i-h3-fixup.scr But where do i find the all the dts files to be patched? Are they these ones: https://github.com/armbian/sunxi-DT-overlays? Thanks! Great ! The DT files are actually all generated from a patch, e.g., see https://github.com/5kft/build/blob/9ad96bd2090325092142a5c1dc75fe085c940bc5/patch/kernel/sunxi-next/general-sunxi-overlays.patch (this version has my changes to fix the H5-related entries, and some other things). You can edit the sun8i-h3 DT entries locally in the file ".../build/patch/kernel/sunxi-next/general-sunxi-overlays.patch". 1
Recommended Posts