Patrick Peters Posted May 5, 2021 Share Posted May 5, 2021 I recently upgraded my working Pine A64-LTS board to Armbian 10.9 by using standard 'apt-get update' followed by 'apt-get upgrade' The update went fine (no error messages) and i rebooted the unit. The unit was unable to mount the root filesystem it complaint about UUID probably incorrect, but this was not the case. After doing some research i found out that the DTB file was changed on the mmc0 part. The option 'non-removable' was removed wich let to the kernel using the PUSH-PUSH routine? cd pins to see if a SD card is present. It looks like it that not all versions of the Pine A64-LTS have this pin or maybe in the past had a faulty batch? Anyway to fix the problem i had to add 'non-removable' again to the DTB which probably switches the way the detection works and probably uses the standard CD-detect routine to see if a card is present. I also noticed other people seeing this problem in u-boot and other places. See one of those reference here: https://www.spinics.net/lists/devicetree/msg418000.html Maybe this get fixed automatically upstream? But maybe in the meantime Armbian maintainers can set a special fix in the dtb and/or overlay for the Pine A64-LTS. The specific steps i took now to fix the problem where: 1. Make a back-up off the DTB file cp /boot/dtb/allwinner/sun50i-a64-pine64-lts.dtb /boot/dtb/allwinner/sun50i-a64-pine64-lts.dtb-orig 2. Convert the DTB file that is used to dts (IGNORING the warnings from dtc conversion) dtc -I dtb -O dts -o sun50i-a64-pine64-lts.dts sun50i-a64-pine64-lts.dtb 3. Edit the file 'sun50i-a64-pine64-lts.dts' at the position starting somewhere along line number 12230 Change: mmc@1c0f000 { compatible = "allwinner,sun50i-a64-mmc"; reg = < 0x1c0f000 0x1000 >; clocks = < 0x02 0x1f 0x02 0x4b >; clock-names = "ahb\0mmc"; resets = < 0x02 0x08 >; reset-names = "ahb"; interrupts = < 0x00 0x3c 0x04 >; max-frequency = < 0x8f0d180 >; status = "okay"; bus-width = < 0x04 >; #address-cells = < 0x01 >; #size-cells = < 0x00 >; pinctrl-names = "default"; pinctrl-0 = < 0x25 >; vmmc-supply = < 0x26 >; disable-wp; cd-gpios = < 0x27 0x05 0x06 0x01 >; phandle = < 0x69 >; }; Into: mmc@1c0f000 { compatible = "allwinner,sun50i-a64-mmc"; reg = < 0x1c0f000 0x1000 >; clocks = < 0x02 0x1f 0x02 0x4b >; clock-names = "ahb\0mmc"; resets = < 0x02 0x08 >; reset-names = "ahb"; interrupts = < 0x00 0x3c 0x04 >; max-frequency = < 0x8f0d180 >; status = "okay"; bus-width = < 0x04 >; #address-cells = < 0x01 >; #size-cells = < 0x00 >; pinctrl-names = "default"; pinctrl-0 = < 0x25 >; vmmc-supply = < 0x26 >; disable-wp; non-removable; cd-gpios = < 0x27 0x05 0x06 0x01 >; phandle = < 0x69 >; }; Notice how i added 'non-removable;' between the 'disable-wp;' and 'cd-gpios = < 0x27 0x05 0x06 0x01 >;' lines. 4. Convert the DTS file that we have just editted to the DTB format (IGNORING the warnings from dtc conversion) dtc -I dts -O dtb -o sun50i-a64-pine64-lts.dtb sun50i-a64-pine64-lts.dts 5. Boot the unit with the new changes. it should now boot fine. 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.