Patrick Peters Posted May 5, 2021 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
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.