Jump to content

OrangePi ubuntu focal desktop dtb file issue (is OrangePi supported again?)


OPUser

Recommended Posts

Hello

After a couple of years, I took my "ancient" OrangePi board and found it working well with Ubuntu 18.04 (kernel 3.14.113). And I even did distr update to 20.04. So HW is ok.

I found that Armibian support status of OrangiPi is changed to "Supported" and decided to try the latest image with modern kernel "Armbian_21.02.1_Bananapi_focal_current_5.10.12_desktop.img.xz" (shared image between OrangePi and BananaPi).

 

XFCE desktop was loaded but USB was not working. And that was the known mismatch between OrangePi and BananaPi HW conguration. So I updated "/boot/armbianEnv.txt" with "fdtfile=sun7i-a20-orangepi.dtb".

But after that video became OFF and board is working only as network remote station.

That makes me think that supplied "sun7i-a20-orangepi.dtb" is incorrect. Does it make sense?

(if I remove "fdtfile=sun7i-a20-orangepi.dtb" video is working again but USB is not)

 

Where can I get an older version of "sun7i-a20-orangepi.dtb"? (old bin/fex file in old OragnePi images was ok)

P.S. Does Armbian_21.02.1 supports HW video acceleration with 5.10 kernel? And how to make WiFi working? (ifconfig do not show WiFi interface)

 

Thank you

 

Spoiler

armbianmonitor -u  uploaded to http://ix.io/2QRr 

 

Link to comment
Share on other sites

I have compared dts files and found that some devices were disabled

 

Spoiler

image.thumb.png.2ea720abc05451c2b1efbf181b91474c.png

 

image.thumb.png.b6bb7ced3678a3b38f2b9b370aa2b0f6.png

 

image.thumb.png.31a9a7228e25b031a40cd6a9559573e6.png

I switched them to "okay" but it didn't help to enable HDMI monitor output with OrangePi dtb file :(

 

zador.blood.stained, I saw you had a great contribution to Armbian on such subjects, can you comment please what could be wrong with stock OrangePi dtb file?

Link to comment
Share on other sites

On 2/26/2021 at 6:22 PM, OPUser said:

but it didn't help to enable HDMI monitor output with OrangeP


IIRC we have (had?) some bug related to A20 / LK5.10.y / HDMI out. Try build image from sources.

 

On 2/25/2021 at 8:37 PM, OPUser said:

status of OrangiPi is changed to "Supported"

 

https://docs.armbian.com/#what-is-supported

 

On 2/25/2021 at 8:37 PM, OPUser said:

XFCE desktop was loaded but USB was not working. And that was the known mismatch between OrangePi and BananaPi HW conguration.

 

Those DTs are maintained upstream, but not sure if there were any changes for years. Some properties could also become obsolete in the meantime ... Also try this way: armbian-config -> system -> hardware and enable all USB ports.

 

On 2/25/2021 at 8:37 PM, OPUser said:

And how to make WiFi working? (ifconfig do not show WiFi interface)


Could be more than one reason:


- keeping wifi drivers nobody maintains aligned with modern kernel. Require constant rework - just few recent commits on the topic:
https://github.com/armbian/build/commit/ec36591108c6b96faec3c74c5421faf05a5060bb

https://github.com/armbian/build/commit/d28c170a2354bfc0413ee8594ab2e690259fe2b9

https://github.com/armbian/build/commit/03e4f604d3ee991183840ff7a3c0959be1e28637

- DT bits for Orangepi wifi are not present in Bananapi DT

 

On 2/26/2021 at 6:22 PM, OPUser said:

I saw you had a great contribution to Armbian on such subjects, can you comment please what could be wrong with stock OrangePi dtb file?


Try not to associate question to persons. This is forum. People help if they can and have time ...

 

On 2/25/2021 at 8:37 PM, OPUser said:

supports HW video acceleration with 5.10 kernel?


Kernel driver is present, but we don't have click and play experience. I don't deal with this.

Link to comment
Share on other sites

On 3/1/2021 at 10:54 AM, Igor said:

Try build image from sources.

I enabled OrangePi config and built two focal desktop images. Image with kernel v5.10 has the same problem with dtb config (no USB, no HDMI)

Spoiler

root@orangepi:~# lsusb
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

while image with v5.4 works good. WiFi is connected to USB so that explains issue with WiFi on kernel v5.10

Spoiler

root@orangepi:~# lsusb
Bus 003 Device 002: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n                                                                                                                                                              Wireless Network Adapter
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 002 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

On 3/1/2021 at 10:54 AM, Igor said:

The only confusing thing is the mismatch between web site and Armbian console

Spoiler

 

image.png.cf47648c5c727cdc770e71312a802725.png

image.png.dcc24ab5e159f4888398f1666bc5547e.png

 

 

 

 

 

On 3/1/2021 at 10:54 AM, Igor said:

Those DTs are maintained upstream

Got it! However, both BananaPi and OrangePi have few changes per year. But, perhaps, something was broken between v5.4 and later version like v5.10 

 

On 3/1/2021 at 10:54 AM, Igor said:

Kernel driver is present, but we don't have click and play experience. I don't deal with this.

 

Will try to check this, thank you. But it is not working on v5.4 out-of-the-box

On 3/1/2021 at 10:54 AM, Igor said:

armbian-config -> system -> hardware and enable all USB ports

armbian-config for OrangePi doesn't allow to enable it - USB is missing there (due to missing overlays in dtb/overlay folder?)

 

Here are some notes of possible improvements

- it will be good to put "boot.cmd", "boot.scr", ArmbianEnv.txt and ".next" inside some Armbian debs, if lost they can be taken only from Armbian image (if I'm not mistaken)

- linux-u-boot-legacy-orangepi_21.05.0-trunk_armhf.deb and linux-u-boot-current-orangepi_21.05.0-trunk_armhf.deb are in conflict?! I had to install u-boot manually

Spoiler

 

Выбор ранее не выбранного пакета linux-u-boot-orangepi-legacy.
dpkg: относительно linux-u-boot-legacy-orangepi_21.05.0-trunk_armhf.deb, содержащего linux-u-boot-orangepi-legacy:
 linux-u-boot-orangepi-current конфликтует с armbian-u-boot
  linux-u-boot-orangepi-legacy предоставляет armbian-u-boot и будет установлен.

dpkg: ошибка при обработке архива linux-u-boot-legacy-orangepi_21.05.0-trunk_armhf.deb (--install):
 конфликт пакетов — linux-u-boot-orangepi-legacy не будет установлен

 

sorry it is in Russian, but it says about an error and packets conflict

- A minor cosmetic thing. Adding fdtfile=sun7i-a20-orangepi.dtb to ArmbianEnv.txt of BananaPi image doesn't make a "full" conversion to OrangePi, how to proper set new BOARD_NAME to correct name on welcome screen?

Link to comment
Share on other sites

35 minutes ago, OPUser said:

The only confusing thing is the mismatch between web site and Armbian console


If you report troubles with self build image not many people will listen. Self build images are officially not supported since they are build from a development environment, unknown upstream quality, nobody test features and anyway we can't afford dealing with "customers" in real time. Strictly speaking only digitally signed images are a subject of our interest. Limited with our private time! Even that is extremely hard and expensive (99% is our private cost which is not small at this level) to keep those cheap board operational and usable. We lost about 30-50h for this project in total every day.

 

35 minutes ago, OPUser said:

But it is not working on v5.4 out-of-the-box

 

Until someone will make things together properly and provide a PR, it won't. But we don't receive help even for simple things https://forum.armbian.com/forum/54-help-wanted/ we ask while current maintainers are totally overloaded. Wishlist is estimated on millions / years of development.

 

35 minutes ago, OPUser said:

armbian-config for OrangePi doesn't allow to enable it - USB is missing there (due to missing overlays in dtb/overlay folder?)

 

I see, It looks like we don't have them for A20 :( But everything else ... so you will need to edit DT by hand. It could also work fine via armbian-config -> system

 

Spoiler

image.png


 

 

35 minutes ago, OPUser said:

Here are some notes of possible improvements

- it will be good to put "boot.cmd", "boot.scr" and ".next" inside some Armbian debs, if lost they can be taken only from Armbian image (if I'm not mistaken)

- linux-u-boot-legacy-orangepi_21.05.0-trunk_armhf.deb and linux-u-boot-current-orangepi_21.05.0-trunk_armhf.deb are in conflict?! I had to install u-boot manually


- (backup of) boot scripts are packed in u-boot or bsp package

- this is not a bug but feature. In some cases legacy kernels needs boot loader that is incompatible with current modern kernel.

 

Link to comment
Share on other sites

Is it more correct to build Armbian from the official branch v21.02 (if talking about the self build). Does a particular kernel and u-boot snapshots are linked to the official releases?

 

11 hours ago, Igor said:

you will need to edit DT by hand

I tried to merge dtb of BananaPi and OrangePi, enabled some devices, but, unfortunately, I didn't get the desired result yet - not enough knowledge on this subject. Perhaps, v5.4 will be a good choice for now

Spoiler

 

/dts-v1/;

/ {
    interrupt-parent = <0x01>;
    #address-cells = <0x01>;
    #size-cells = <0x01>;
    model = "Orange Pi";
    compatible = "xunlong,orangepi\0allwinner,sun7i-a20";

    aliases {
        ethernet0 = "/soc/ethernet@1c50000";
        serial0 = "/soc/serial@1c28000";
    };

    chosen {
        #address-cells = <0x01>;
        #size-cells = <0x01>;
        ranges;
        stdout-path = "serial0:115200n8";

        framebuffer-lcd0-hdmi {
            compatible = "allwinner,simple-framebuffer\0simple-framebuffer";
            allwinner,pipeline = "de_be0-lcd0-hdmi";
            clocks = <0x02 0x38 0x02 0x3c 0x02 0x3e 0x02 0x90 0x02 0x9b 0x02 0x8c 0x02 0xa4>;
            status = "disabled";
        };

        framebuffer-lcd0 {
            compatible = "allwinner,simple-framebuffer\0simple-framebuffer";
            allwinner,pipeline = "de_be0-lcd0";
            clocks = <0x02 0x38 0x02 0x3e 0x02 0x90 0x02 0x95 0x02 0x8c>;
            status = "disabled";
        };

        framebuffer-lcd0-tve0 {
            compatible = "allwinner,simple-framebuffer\0simple-framebuffer";
            allwinner,pipeline = "de_be0-lcd0-tve0";
            clocks = <0x02 0x36 0x02 0x38 0x02 0x3e 0x02 0x90 0x02 0x9b 0x02 0x87 0x02 0x8c>;
            status = "disabled";
        };
    };

    cpus {
        #address-cells = <0x01>;
        #size-cells = <0x00>;

        cpu@0 {
            compatible = "arm,cortex-a7";
            device_type = "cpu";
            reg = <0x00>;
            clocks = <0x02 0x14>;
            clock-latency = <0x3b9b0>;
            operating-points = <0xea600 0x155cc0 0xdea80 0x155cc0 0xd2f00 0x13d620 0xafc80 0x124f80 0x80e80 0x10c8e0 0x4c2c0 0xf4240 0x23280 0xf4240>;
            #cooling-cells = <0x02>;
            phandle = <0x05>;
        };

        cpu@1 {
            compatible = "arm,cortex-a7";
            device_type = "cpu";
            reg = <0x01>;
            clocks = <0x02 0x14>;
            clock-latency = <0x3b9b0>;
            operating-points = <0xea600 0x155cc0 0xdea80 0x155cc0 0xd2f00 0x13d620 0xafc80 0x124f80 0x80e80 0x10c8e0 0x4c2c0 0xf4240 0x23280 0xf4240>;
            #cooling-cells = <0x02>;
            phandle = <0x06>;
        };
    };

    thermal-zones {

        cpu_thermal {
            polling-delay-passive = <0xfa>;
            polling-delay = <0x3e8>;
            thermal-sensors = <0x03>;

            cooling-maps {

                map0 {
                    trip = <0x04>;
                    cooling-device = <0x05 0xffffffff 0xffffffff 0x06 0xffffffff 0xffffffff>;
                };
            };

            trips {

                cpu_alert0 {
                    temperature = <0x124f8>;
                    hysteresis = <0x7d0>;
                    type = "passive";
                    phandle = <0x04>;
                };

                cpu_crit {
                    temperature = <0x186a0>;
                    hysteresis = <0x7d0>;
                    type = "critical";
                    phandle = <0x3a>;
                };
            };
        };
    };

    reserved-memory {
        #address-cells = <0x01>;
        #size-cells = <0x01>;
        ranges;

        default-pool {
            compatible = "shared-dma-pool";
            size = <0x6000000>;
            alloc-ranges = <0x40000000 0x10000000>;
            reusable;
            linux,cma-default;
        };
    };

    timer {
        compatible = "arm,armv7-timer";
        interrupts = <0x01 0x0d 0xf08 0x01 0x0e 0xf08 0x01 0x0b 0xf08 0x01 0x0a 0xf08>;
    };

    pmu {
        compatible = "arm,cortex-a7-pmu";
        interrupts = <0x00 0x78 0x04 0x00 0x79 0x04>;
    };

    clocks {
        #address-cells = <0x01>;
        #size-cells = <0x01>;
        ranges;

        clk-24M {
            #clock-cells = <0x00>;
            compatible = "fixed-clock";
            clock-frequency = <0x16e3600>;
            clock-output-names = "osc24M";
            phandle = <0x21>;
        };

        clk-32k {
            #clock-cells = <0x00>;
            compatible = "fixed-clock";
            clock-frequency = <0x8000>;
            clock-output-names = "osc32k";
            phandle = <0x22>;
        };

        clk-mii-phy-tx {
            #clock-cells = <0x00>;
            compatible = "fixed-clock";
            clock-frequency = <0x17d7840>;
            clock-output-names = "mii_phy_tx";
            phandle = <0x07>;
        };

        clk-gmac-int-tx {
            #clock-cells = <0x00>;
            compatible = "fixed-clock";
            clock-frequency = <0x7735940>;
            clock-output-names = "gmac_int_tx";
            phandle = <0x08>;
        };

        clk@1c20164 {
            #clock-cells = <0x00>;
            compatible = "allwinner,sun7i-a20-gmac-clk";
            reg = <0x1c20164 0x04>;
            clocks = <0x07 0x08>;
            clock-output-names = "gmac_tx";
            phandle = <0x2a>;
        };
    };

    display-engine {
        compatible = "allwinner,sun7i-a20-display-engine";
        allwinner,pipelines = <0x09 0x0a>;
        status = "okay";
        phandle = <0x3b>;
    };

    soc {
        compatible = "simple-bus";
        #address-cells = <0x01>;
        #size-cells = <0x01>;
        ranges;

        system-control@1c00000 {
            compatible = "allwinner,sun7i-a20-system-control\0allwinner,sun4i-a10-system-control";
            reg = <0x1c00000 0x30>;
            #address-cells = <0x01>;
            #size-cells = <0x01>;
            ranges;

            sram@0 {
                compatible = "mmio-sram";
                reg = <0x00 0xc000>;
                #address-cells = <0x01>;
                #size-cells = <0x01>;
                ranges = <0x00 0x00 0xc000>;
                phandle = <0x3c>;

                sram-section@8000 {
                    compatible = "allwinner,sun7i-a20-sram-a3-a4\0allwinner,sun4i-a10-sram-a3-a4";
                    reg = <0x8000 0x4000>;
                    status = "disabled";
                    phandle = <0x0c>;
                };
            };

            sram@10000 {
                compatible = "mmio-sram";
                reg = <0x10000 0x1000>;
                #address-cells = <0x01>;
                #size-cells = <0x01>;
                ranges = <0x00 0x10000 0x1000>;
                phandle = <0x3d>;

                sram-section@0 {
                    compatible = "allwinner,sun7i-a20-sram-d\0allwinner,sun4i-a10-sram-d";
                    reg = <0x00 0x1000>;
                    status = "okay";
                    phandle = <0x1a>;
                };
            };

            sram@1d00000 {
                compatible = "mmio-sram";
                reg = <0x1d00000 0xd0000>;
                #address-cells = <0x01>;
                #size-cells = <0x01>;
                ranges = <0x00 0x1d00000 0xd0000>;
                phandle = <0x3e>;

                sram-section@0 {
                    compatible = "allwinner,sun7i-a20-sram-c1\0allwinner,sun4i-a10-sram-c1";
                    reg = <0x00 0x80000>;
                    phandle = <0x13>;
                };
            };
        };

        interrupt-controller@1c00030 {
            compatible = "allwinner,sun7i-a20-sc-nmi";
            interrupt-controller;
            #interrupt-cells = <0x02>;
            reg = <0x1c00030 0x0c>;
            interrupts = <0x00 0x00 0x04>;
            phandle = <0x26>;
        };

        dma-controller@1c02000 {
            compatible = "allwinner,sun4i-a10-dma";
            reg = <0x1c02000 0x1000>;
            interrupts = <0x00 0x1b 0x04>;
            clocks = <0x02 0x20>;
            #dma-cells = <0x02>;
            phandle = <0x0b>;
        };

        nand-controller@1c03000 {
            compatible = "allwinner,sun4i-a10-nand";
            reg = <0x1c03000 0x1000>;
            interrupts = <0x00 0x25 0x04>;
            clocks = <0x02 0x27 0x02 0x60>;
            clock-names = "ahb\0mod";
            dmas = <0x0b 0x01 0x03>;
            dma-names = "rxtx";
            status = "disabled";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            phandle = <0x3f>;
        };

        spi@1c05000 {
            compatible = "allwinner,sun4i-a10-spi";
            reg = <0x1c05000 0x1000>;
            interrupts = <0x00 0x0a 0x04>;
            clocks = <0x02 0x2c 0x02 0x70>;
            clock-names = "ahb\0mod";
            dmas = <0x0b 0x01 0x1b 0x0b 0x01 0x1a>;
            dma-names = "rx\0tx";
            status = "okay";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            num-cs = <0x04>;
            phandle = <0x40>;
        };

        spi@1c06000 {
            compatible = "allwinner,sun4i-a10-spi";
            reg = <0x1c06000 0x1000>;
            interrupts = <0x00 0x0b 0x04>;
            clocks = <0x02 0x2d 0x02 0x71>;
            clock-names = "ahb\0mod";
            dmas = <0x0b 0x01 0x09 0x0b 0x01 0x08>;
            dma-names = "rx\0tx";
            status = "disabled";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            num-cs = <0x01>;
            phandle = <0x41>;
        };

        csi@1c09000 {
            compatible = "allwinner,sun7i-a20-csi0";
            reg = <0x1c09000 0x1000>;
            interrupts = <0x00 0x2a 0x04>;
            clocks = <0x02 0x3a 0x02 0x97 0x02 0x83>;
            clock-names = "bus\0isp\0ram";
            resets = <0x02 0x0e>;
            status = "disabled";
            phandle = <0x42>;
        };

        ethernet@1c0b000 {
            compatible = "allwinner,sun4i-a10-emac";
            reg = <0x1c0b000 0x1000>;
            interrupts = <0x00 0x37 0x04>;
            clocks = <0x02 0x2a>;
            allwinner,sram = <0x0c 0x01>;
            status = "disabled";
            phandle = <0x43>;
        };

        mdio@1c0b080 {
            compatible = "allwinner,sun4i-a10-mdio";
            reg = <0x1c0b080 0x14>;
            status = "disabled";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            phandle = <0x44>;
        };

        lcd-controller@1c0c000 {
            compatible = "allwinner,sun7i-a20-tcon0\0allwinner,sun7i-a20-tcon";
            reg = <0x1c0c000 0x1000>;
            interrupts = <0x00 0x2c 0x04>;
            resets = <0x02 0x0b 0x02 0x12>;
            reset-names = "lcd\0lvds";
            clocks = <0x02 0x38 0x02 0x95 0x02 0x9b>;
            clock-names = "ahb\0tcon-ch0\0tcon-ch1";
            clock-output-names = "tcon0-pixel-clock";
            #clock-cells = <0x00>;
            dmas = <0x0b 0x01 0x0e>;
            phandle = <0x45>;

            ports {
                #address-cells = <0x01>;
                #size-cells = <0x00>;

                port@0 {
                    #address-cells = <0x01>;
                    #size-cells = <0x00>;
                    reg = <0x00>;
                    phandle = <0x46>;

                    endpoint@0 {
                        reg = <0x00>;
                        remote-endpoint = <0x0d>;
                        phandle = <0x38>;
                    };

                    endpoint@1 {
                        reg = <0x01>;
                        remote-endpoint = <0x0e>;
                        phandle = <0x34>;
                    };
                };

                port@1 {
                    #address-cells = <0x01>;
                    #size-cells = <0x00>;
                    reg = <0x01>;
                    phandle = <0x47>;

                    endpoint@1 {
                        reg = <0x01>;
                        remote-endpoint = <0x0f>;
                        allwinner,tcon-channel = <0x01>;
                        phandle = <0x1f>;
                    };
                };
            };
        };

        lcd-controller@1c0d000 {
            compatible = "allwinner,sun7i-a20-tcon1\0allwinner,sun7i-a20-tcon";
            reg = <0x1c0d000 0x1000>;
            interrupts = <0x00 0x2d 0x04>;
            resets = <0x02 0x0d>;
            reset-names = "lcd";
            clocks = <0x02 0x39 0x02 0x96 0x02 0x9d>;
            clock-names = "ahb\0tcon-ch0\0tcon-ch1";
            clock-output-names = "tcon1-pixel-clock";
            #clock-cells = <0x00>;
            dmas = <0x0b 0x01 0x0f>;
            phandle = <0x48>;

            ports {
                #address-cells = <0x01>;
                #size-cells = <0x00>;

                port@0 {
                    #address-cells = <0x01>;
                    #size-cells = <0x00>;
                    reg = <0x00>;
                    phandle = <0x49>;

                    endpoint@0 {
                        reg = <0x00>;
                        remote-endpoint = <0x10>;
                        phandle = <0x39>;
                    };

                    endpoint@1 {
                        reg = <0x01>;
                        remote-endpoint = <0x11>;
                        phandle = <0x35>;
                    };
                };

                port@1 {
                    #address-cells = <0x01>;
                    #size-cells = <0x00>;
                    reg = <0x01>;
                    phandle = <0x4a>;

                    endpoint@1 {
                        reg = <0x01>;
                        remote-endpoint = <0x12>;
                        allwinner,tcon-channel = <0x01>;
                        phandle = <0x20>;
                    };
                };
            };
        };

        video-codec@1c0e000 {
            compatible = "allwinner,sun7i-a20-video-engine";
            reg = <0x1c0e000 0x1000>;
            clocks = <0x02 0x34 0x02 0xa1 0x02 0x82>;
            clock-names = "ahb\0mod\0ram";
            resets = <0x02 0x10>;
            interrupts = <0x00 0x35 0x04>;
            allwinner,sram = <0x13 0x01>;
        };

        mmc@1c0f000 {
            compatible = "allwinner,sun7i-a20-mmc";
            reg = <0x1c0f000 0x1000>;
            clocks = <0x02 0x22 0x02 0x62 0x02 0x63 0x02 0x64>;
            clock-names = "ahb\0mmc\0output\0sample";
            interrupts = <0x00 0x20 0x04>;
            pinctrl-names = "default";
            pinctrl-0 = <0x14>;
            status = "okay";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            vmmc-supply = <0x15>;
            bus-width = <0x04>;
            cd-gpios = <0x16 0x07 0x0a 0x01>;
            phandle = <0x4b>;
        };

        mmc@1c10000 {
            compatible = "allwinner,sun7i-a20-mmc";
            reg = <0x1c10000 0x1000>;
            clocks = <0x02 0x23 0x02 0x65 0x02 0x66 0x02 0x67>;
            clock-names = "ahb\0mmc\0output\0sample";
            interrupts = <0x00 0x21 0x04>;
            status = "disabled";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            phandle = <0x4c>;
        };

        mmc@1c11000 {
            compatible = "allwinner,sun7i-a20-mmc";
            reg = <0x1c11000 0x1000>;
            clocks = <0x02 0x24 0x02 0x68 0x02 0x69 0x02 0x6a>;
            clock-names = "ahb\0mmc\0output\0sample";
            interrupts = <0x00 0x22 0x04>;
            pinctrl-names = "default";
            pinctrl-0 = <0x17>;
            status = "disabled";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            phandle = <0x4d>;
        };

        mmc@1c12000 {
            compatible = "allwinner,sun7i-a20-mmc";
            reg = <0x1c12000 0x1000>;
            clocks = <0x02 0x25 0x02 0x6b 0x02 0x6c 0x02 0x6d>;
            clock-names = "ahb\0mmc\0output\0sample";
            interrupts = <0x00 0x23 0x04>;
            pinctrl-names = "default";
            pinctrl-0 = <0x18>;
            status = "disabled";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            phandle = <0x4e>;
        };

        usb@1c13000 {
            compatible = "allwinner,sun4i-a10-musb";
            reg = <0x1c13000 0x400>;
            clocks = <0x02 0x1a>;
            interrupts = <0x00 0x26 0x04>;
            interrupt-names = "mc";
            phys = <0x19 0x00>;
            phy-names = "usb";
            extcon = <0x19 0x00>;
            allwinner,sram = <0x1a 0x01>;
            dr_mode = "otg";
            status = "okay";
            phandle = <0x4f>;
        };

        phy@1c13400 {
            #phy-cells = <0x01>;
            compatible = "allwinner,sun7i-a20-usb-phy";
            reg = <0x1c13400 0x10 0x1c14800 0x04 0x1c1c800 0x04>;
            reg-names = "phy_ctrl\0pmu1\0pmu2";
            clocks = <0x02 0x7d>;
            clock-names = "usb_phy";
            resets = <0x02 0x01 0x02 0x02 0x02 0x03>;
            reset-names = "usb0_reset\0usb1_reset\0usb2_reset";
            status = "okay";
            usb0_id_det-gpios = <0x16 0x07 0x04 0x10>;
            usb0_vbus_power-supply = <0x1b>;
            usb0_vbus-supply = <0x1c>;
            usb1_vbus-supply = <0x1d>;
            usb2_vbus-supply = <0x1e>;
            phandle = <0x19>;
        };

        usb@1c14000 {
            compatible = "allwinner,sun7i-a20-ehci\0generic-ehci";
            reg = <0x1c14000 0x100>;
            interrupts = <0x00 0x27 0x04>;
            clocks = <0x02 0x1b>;
            phys = <0x19 0x01>;
            phy-names = "usb";
            status = "okay";
            phandle = <0x50>;
        };

        usb@1c14400 {
            compatible = "allwinner,sun7i-a20-ohci\0generic-ohci";
            reg = <0x1c14400 0x100>;
            interrupts = <0x00 0x40 0x04>;
            clocks = <0x02 0x7b 0x02 0x1c>;
            phys = <0x19 0x01>;
            phy-names = "usb";
            status = "disabled";
            phandle = <0x51>;
        };

        crypto-engine@1c15000 {
            compatible = "allwinner,sun7i-a20-crypto\0allwinner,sun4i-a10-crypto";
            reg = <0x1c15000 0x1000>;
            interrupts = <0x00 0x56 0x04>;
            clocks = <0x02 0x1f 0x02 0x6f>;
            clock-names = "ahb\0mod";
            phandle = <0x52>;
        };

        hdmi@1c16000 {
            compatible = "allwinner,sun7i-a20-hdmi\0allwinner,sun5i-a10s-hdmi";
            reg = <0x1c16000 0x1000>;
            interrupts = <0x00 0x3a 0x04>;
            clocks = <0x02 0x3c 0x02 0xa4 0x02 0x09 0x02 0x12>;
            clock-names = "ahb\0mod\0pll-0\0pll-1";
            dmas = <0x0b 0x00 0x10 0x0b 0x00 0x10 0x0b 0x01 0x18>;
            dma-names = "ddc-tx\0ddc-rx\0audio-tx";
            status = "okay";
            phandle = <0x53>;

            ports {
                #address-cells = <0x01>;
                #size-cells = <0x00>;

                port@0 {
                    #address-cells = <0x01>;
                    #size-cells = <0x00>;
                    reg = <0x00>;
                    phandle = <0x54>;

                    endpoint@0 {
                        reg = <0x00>;
                        remote-endpoint = <0x1f>;
                        phandle = <0x0f>;
                    };

                    endpoint@1 {
                        reg = <0x01>;
                        remote-endpoint = <0x20>;
                        phandle = <0x12>;
                    };
                };

                port@1 {
                    reg = <0x01>;
                    phandle = <0x55>;
                };
            };
        };

        spi@1c17000 {
            compatible = "allwinner,sun4i-a10-spi";
            reg = <0x1c17000 0x1000>;
            interrupts = <0x00 0x0c 0x04>;
            clocks = <0x02 0x2e 0x02 0x72>;
            clock-names = "ahb\0mod";
            dmas = <0x0b 0x01 0x1d 0x0b 0x01 0x1c>;
            dma-names = "rx\0tx";
            status = "disabled";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            num-cs = <0x01>;
            phandle = <0x56>;
        };

        sata@1c18000 {
            compatible = "allwinner,sun4i-a10-ahci";
            reg = <0x1c18000 0x1000>;
            interrupts = <0x00 0x38 0x04>;
            clocks = <0x02 0x31 0x02 0x7a>;
            status = "okay";
            phandle = <0x57>;
        };

        usb@1c1c000 {
            compatible = "allwinner,sun7i-a20-ehci\0generic-ehci";
            reg = <0x1c1c000 0x100>;
            interrupts = <0x00 0x28 0x04>;
            clocks = <0x02 0x1d>;
            phys = <0x19 0x02>;
            phy-names = "usb";
            status = "okay";
            phandle = <0x58>;
        };

        usb@1c1c400 {
            compatible = "allwinner,sun7i-a20-ohci\0generic-ohci";
            reg = <0x1c1c400 0x100>;
            interrupts = <0x00 0x41 0x04>;
            clocks = <0x02 0x7c 0x02 0x1e>;
            phys = <0x19 0x02>;
            phy-names = "usb";
            status = "okay";
            phandle = <0x59>;
        };

        csi@1c1d000 {
            compatible = "allwinner,sun7i-a20-csi1\0allwinner,sun4i-a10-csi1";
            reg = <0x1c1d000 0x1000>;
            interrupts = <0x00 0x2b 0x04>;
            clocks = <0x02 0x3b 0x02 0x84>;
            clock-names = "bus\0ram";
            resets = <0x02 0x0f>;
            status = "disabled";
            phandle = <0x5a>;
        };

        spi@1c1f000 {
            compatible = "allwinner,sun4i-a10-spi";
            reg = <0x1c1f000 0x1000>;
            interrupts = <0x00 0x32 0x04>;
            clocks = <0x02 0x2f 0x02 0x7f>;
            clock-names = "ahb\0mod";
            dmas = <0x0b 0x01 0x1f 0x0b 0x01 0x1e>;
            dma-names = "rx\0tx";
            status = "disabled";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            num-cs = <0x01>;
            phandle = <0x5b>;
        };

        clock@1c20000 {
            compatible = "allwinner,sun7i-a20-ccu";
            reg = <0x1c20000 0x400>;
            clocks = <0x21 0x22>;
            clock-names = "hosc\0losc";
            #clock-cells = <0x01>;
            #reset-cells = <0x01>;
            phandle = <0x02>;
        };

        pinctrl@1c20800 {
            compatible = "allwinner,sun7i-a20-pinctrl";
            reg = <0x1c20800 0x400>;
            interrupts = <0x00 0x1c 0x04>;
            clocks = <0x02 0x4a 0x21 0x22>;
            clock-names = "apb\0hosc\0losc";
            gpio-controller;
            interrupt-controller;
            #interrupt-cells = <0x03>;
            #gpio-cells = <0x03>;
            phandle = <0x16>;

            can-pa-pins {
                pins = "PA16\0PA17";
                function = "can";
                phandle = <0x5c>;
            };

            can-ph-pins {
                pins = "PH20\0PH21";
                function = "can";
                phandle = <0x5d>;
            };

            clk-out-a-pin {
                pins = "PI12";
                function = "clk_out_a";
                phandle = <0x5e>;
            };

            clk-out-b-pin {
                pins = "PI13";
                function = "clk_out_b";
                phandle = <0x5f>;
            };

            csi-8bits-pins {
                pins = "PE0\0PE2\0PE3\0PE4\0PE5\0PE6\0PE7\0PE8\0PE9\0PE10\0PE11";
                function = "csi0";
                phandle = <0x60>;
            };

            csi-clk-pin {
                pins = "PE1";
                function = "csi0";
                phandle = <0x61>;
            };

            csi1-8bits-pg-pins {
                pins = "PG0\0PG2\0PG3\0PG4\0PG5\0PG6\0PG7\0PG8\0PG9\0PG10\0PG11";
                function = "csi1";
                phandle = <0x62>;
            };

            csi1-24bits-ph-pins {
                pins = "PH0\0PH1\0PH2\0PH3\0PH4\0PH5\0PH6\0PH7\0PH8\0PH9\0PH10\0PH11\0PH12\0PH13\0PH14\0PH15\0PH16\0PH17\0PH18\0PH19\0PH20\0PH21\0PH22\0PH23\0PH24\0PH25\0PH26\0PH27";
                function = "csi1";
                phandle = <0x63>;
            };

            csi1-clk-pg-pin {
                pins = "PG1";
                function = "csi1";
                phandle = <0x64>;
            };

            emac-pa-pins {
                pins = "PA0\0PA1\0PA2\0PA3\0PA4\0PA5\0PA6\0PA7\0PA8\0PA9\0PA10\0PA11\0PA12\0PA13\0PA14\0PA15\0PA16";
                function = "emac";
                phandle = <0x65>;
            };

            emac-ph-pins {
                pins = "PH8\0PH9\0PH10\0PH11\0PH14\0PH15\0PH16\0PH17\0PH18\0PH19\0PH20\0PH21\0PH22\0PH23\0PH24\0PH25\0PH26";
                function = "emac";
                phandle = <0x66>;
            };

            gmac-mii-pins {
                pins = "PA0\0PA1\0PA2\0PA3\0PA4\0PA5\0PA6\0PA7\0PA8\0PA9\0PA10\0PA11\0PA12\0PA13\0PA14\0PA15\0PA16";
                function = "gmac";
                phandle = <0x67>;
            };

            gmac-rgmii-pins {
                pins = "PA0\0PA1\0PA2\0PA3\0PA4\0PA5\0PA6\0PA7\0PA8\0PA10\0PA11\0PA12\0PA13\0PA15\0PA16";
                function = "gmac";
                drive-strength = <0x28>;
                phandle = <0x2b>;
            };

            i2c0-pins {
                pins = "PB0\0PB1";
                function = "i2c0";
                phandle = <0x25>;
            };

            i2c1-pins {
                pins = "PB18\0PB19";
                function = "i2c1";
                phandle = <0x27>;
            };

            i2c2-pins {
                pins = "PB20\0PB21";
                function = "i2c2";
                phandle = <0x28>;
            };

            i2c3-pins {
                pins = "PI0\0PI1";
                function = "i2c3";
                phandle = <0x29>;
            };

            ir0-rx-pin {
                pins = "PB4";
                function = "ir0";
                phandle = <0x23>;
            };

            ir0-tx-pin {
                pins = "PB3";
                function = "ir0";
                phandle = <0x68>;
            };

            ir1-rx-pin {
                pins = "PB23";
                function = "ir1";
                phandle = <0x69>;
            };

            ir1-tx-pin {
                pins = "PB22";
                function = "ir1";
                phandle = <0x6a>;
            };

            lcd-lvds0-pins {
                pins = "PD0\0PD1\0PD2\0PD3\0PD4\0PD5\0PD6\0PD7\0PD8\0PD9";
                function = "lvds0";
                phandle = <0x6b>;
            };

            lcd-lvds1-pins {
                pins = "PD10\0PD11\0PD12\0PD13\0PD14\0PD15\0PD16\0PD17\0PD18\0PD19";
                function = "lvds1";
                phandle = <0x6c>;
            };

            mmc0-pins {
                pins = "PF0\0PF1\0PF2\0PF3\0PF4\0PF5";
                function = "mmc0";
                drive-strength = <0x1e>;
                bias-pull-up;
                phandle = <0x14>;
            };

            mmc2-pins {
                pins = "PC6\0PC7\0PC8\0PC9\0PC10\0PC11";
                function = "mmc2";
                drive-strength = <0x1e>;
                bias-pull-up;
                phandle = <0x17>;
            };

            mmc3-pins {
                pins = "PI4\0PI5\0PI6\0PI7\0PI8\0PI9";
                function = "mmc3";
                drive-strength = <0x1e>;
                bias-pull-up;
                phandle = <0x18>;
            };

            ps2-0-pins {
                pins = "PI20\0PI21";
                function = "ps2";
                phandle = <0x6d>;
            };

            ps2-1-ph-pins {
                pins = "PH12\0PH13";
                function = "ps2";
                phandle = <0x6e>;
            };

            pwm0-pin {
                pins = "PB2";
                function = "pwm";
                phandle = <0x6f>;
            };

            pwm1-pin {
                pins = "PI3";
                function = "pwm";
                phandle = <0x70>;
            };

            spdif-tx-pin {
                pins = "PB13";
                function = "spdif";
                bias-pull-up;
                phandle = <0x71>;
            };

            spi0-pi-pins {
                pins = "PI11\0PI12\0PI13";
                function = "spi0";
                phandle = <0x72>;
            };

            spi0-cs0-pi-pin {
                pins = "PI10";
                function = "spi0";
                phandle = <0x73>;
            };

            spi0-cs1-pi-pin {
                pins = "PI14";
                function = "spi0";
                phandle = <0x74>;
            };

            spi1-pi-pins {
                pins = "PI17\0PI18\0PI19";
                function = "spi1";
                phandle = <0x75>;
            };

            spi1-cs0-pi-pin {
                pins = "PI16";
                function = "spi1";
                phandle = <0x76>;
            };

            spi2-pb-pins {
                pins = "PB15\0PB16\0PB17";
                function = "spi2";
                phandle = <0x77>;
            };

            spi2-cs0-pb-pin {
                pins = "PB14";
                function = "spi2";
                phandle = <0x78>;
            };

            spi2-pc-pins {
                pins = "PC20\0PC21\0PC22";
                function = "spi2";
                phandle = <0x79>;
            };

            spi2-cs0-pc-pin {
                pins = "PC19";
                function = "spi2";
                phandle = <0x7a>;
            };

            uart0-pb-pins {
                pins = "PB22\0PB23";
                function = "uart0";
                phandle = <0x24>;
            };

            uart0-pf-pins {
                pins = "PF2\0PF4";
                function = "uart0";
                phandle = <0x7b>;
            };

            uart1-pa-pins {
                pins = "PA10\0PA11";
                function = "uart1";
                phandle = <0x7c>;
            };

            uart1-cts-rts-pa-pins {
                pins = "PA12\0PA13";
                function = "uart1";
                phandle = <0x7d>;
            };

            uart2-pa-pins {
                pins = "PA2\0PA3";
                function = "uart2";
                phandle = <0x7e>;
            };

            uart2-cts-rts-pa-pins {
                pins = "PA0\0PA1";
                function = "uart2";
                phandle = <0x7f>;
            };

            uart2-pi-pins {
                pins = "PI18\0PI19";
                function = "uart2";
                phandle = <0x80>;
            };

            uart2-cts-rts-pi-pins {
                pins = "PI16\0PI17";
                function = "uart2";
                phandle = <0x81>;
            };

            uart3-pg-pins {
                pins = "PG6\0PG7";
                function = "uart3";
                phandle = <0x82>;
            };

            uart3-cts-rts-pg-pins {
                pins = "PG8\0PG9";
                function = "uart3";
                phandle = <0x83>;
            };

            uart3-ph-pins {
                pins = "PH0\0PH1";
                function = "uart3";
                phandle = <0x84>;
            };

            uart3-cts-rts-ph-pins {
                pins = "PH2\0PH3";
                function = "uart3";
                phandle = <0x85>;
            };

            uart4-pg-pins {
                pins = "PG10\0PG11";
                function = "uart4";
                phandle = <0x86>;
            };

            uart4-ph-pins {
                pins = "PH4\0PH5";
                function = "uart4";
                phandle = <0x87>;
            };

            uart5-ph-pins {
                pins = "PH6\0PH7";
                function = "uart5";
                phandle = <0x88>;
            };

            uart5-pi-pins {
                pins = "PI10\0PI11";
                function = "uart5";
                phandle = <0x89>;
            };

            uart6-pa-pins {
                pins = "PA12\0PA13";
                function = "uart6";
                phandle = <0x8a>;
            };

            uart6-pi-pins {
                pins = "PI12\0PI13";
                function = "uart6";
                phandle = <0x8b>;
            };

            uart7-pa-pins {
                pins = "PA14\0PA15";
                function = "uart7";
                phandle = <0x8c>;
            };

            uart7-pi-pins {
                pins = "PI20\0PI21";
                function = "uart7";
                phandle = <0x8d>;
            };
        };

        timer@1c20c00 {
            compatible = "allwinner,sun4i-a10-timer";
            reg = <0x1c20c00 0x90>;
            interrupts = <0x00 0x16 0x04 0x00 0x17 0x04 0x00 0x18 0x04 0x00 0x19 0x04 0x00 0x43 0x04 0x00 0x44 0x04>;
            clocks = <0x21>;
        };

        watchdog@1c20c90 {
            compatible = "allwinner,sun4i-a10-wdt";
            reg = <0x1c20c90 0x10>;
            interrupts = <0x00 0x18 0x04>;
            clocks = <0x21>;
            phandle = <0x8e>;
        };

        rtc@1c20d00 {
            compatible = "allwinner,sun7i-a20-rtc";
            reg = <0x1c20d00 0x20>;
            interrupts = <0x00 0x18 0x04>;
            phandle = <0x8f>;
        };

        pwm@1c20e00 {
            compatible = "allwinner,sun7i-a20-pwm";
            reg = <0x1c20e00 0x0c>;
            clocks = <0x21>;
            #pwm-cells = <0x03>;
            status = "disabled";
            phandle = <0x90>;
        };

        spdif@1c21000 {
            #sound-dai-cells = <0x00>;
            compatible = "allwinner,sun4i-a10-spdif";
            reg = <0x1c21000 0x400>;
            interrupts = <0x00 0x0d 0x04>;
            clocks = <0x02 0x46 0x02 0x78>;
            clock-names = "apb\0spdif";
            dmas = <0x0b 0x00 0x02 0x0b 0x00 0x02>;
            dma-names = "rx\0tx";
            status = "disabled";
            phandle = <0x91>;
        };

        ir@1c21800 {
            compatible = "allwinner,sun4i-a10-ir";
            clocks = <0x02 0x4b 0x02 0x74>;
            clock-names = "apb\0ir";
            interrupts = <0x00 0x05 0x04>;
            reg = <0x1c21800 0x40>;
            status = "okay";
            pinctrl-names = "default";
            pinctrl-0 = <0x23>;
            phandle = <0x92>;
        };

        ir@1c21c00 {
            compatible = "allwinner,sun4i-a10-ir";
            clocks = <0x02 0x4c 0x02 0x75>;
            clock-names = "apb\0ir";
            interrupts = <0x00 0x06 0x04>;
            reg = <0x1c21c00 0x40>;
            status = "disabled";
            phandle = <0x93>;
        };

        i2s@1c22000 {
            #sound-dai-cells = <0x00>;
            compatible = "allwinner,sun4i-a10-i2s";
            reg = <0x1c22000 0x400>;
            interrupts = <0x00 0x57 0x04>;
            clocks = <0x02 0x49 0x02 0x80>;
            clock-names = "apb\0mod";
            dmas = <0x0b 0x00 0x04 0x0b 0x00 0x04>;
            dma-names = "rx\0tx";
            status = "disabled";
            phandle = <0x94>;
        };

        i2s@1c22400 {
            #sound-dai-cells = <0x00>;
            compatible = "allwinner,sun4i-a10-i2s";
            reg = <0x1c22400 0x400>;
            interrupts = <0x00 0x10 0x04>;
            clocks = <0x02 0x47 0x02 0x76>;
            clock-names = "apb\0mod";
            dmas = <0x0b 0x00 0x03 0x0b 0x00 0x03>;
            dma-names = "rx\0tx";
            status = "disabled";
            phandle = <0x95>;
        };

        lradc@1c22800 {
            compatible = "allwinner,sun4i-a10-lradc-keys";
            reg = <0x1c22800 0x100>;
            interrupts = <0x00 0x1f 0x04>;
            status = "disabled";
            phandle = <0x96>;
        };

        codec@1c22c00 {
            #sound-dai-cells = <0x00>;
            compatible = "allwinner,sun7i-a20-codec";
            reg = <0x1c22c00 0x40>;
            interrupts = <0x00 0x1e 0x04>;
            clocks = <0x02 0x45 0x02 0xa0>;
            clock-names = "apb\0codec";
            dmas = <0x0b 0x00 0x13 0x0b 0x00 0x13>;
            dma-names = "rx\0tx";
            status = "okay";
            phandle = <0x97>;
        };

        eeprom@1c23800 {
            compatible = "allwinner,sun7i-a20-sid";
            reg = <0x1c23800 0x200>;
            phandle = <0x98>;
        };

        i2s@1c24400 {
            #sound-dai-cells = <0x00>;
            compatible = "allwinner,sun4i-a10-i2s";
            reg = <0x1c24400 0x400>;
            interrupts = <0x00 0x5a 0x04>;
            clocks = <0x02 0x4d 0x02 0x81>;
            clock-names = "apb\0mod";
            dmas = <0x0b 0x00 0x06 0x0b 0x00 0x06>;
            dma-names = "rx\0tx";
            status = "disabled";
            phandle = <0x99>;
        };

        rtp@1c25000 {
            compatible = "allwinner,sun5i-a13-ts";
            reg = <0x1c25000 0x100>;
            interrupts = <0x00 0x1d 0x04>;
            #thermal-sensor-cells = <0x00>;
            phandle = <0x03>;
        };

        serial@1c28000 {
            compatible = "snps,dw-apb-uart";
            reg = <0x1c28000 0x400>;
            interrupts = <0x00 0x01 0x04>;
            reg-shift = <0x02>;
            reg-io-width = <0x04>;
            clocks = <0x02 0x58>;
            status = "okay";
            pinctrl-names = "default";
            pinctrl-0 = <0x24>;
            phandle = <0x9a>;
        };

        serial@1c28400 {
            compatible = "snps,dw-apb-uart";
            reg = <0x1c28400 0x400>;
            interrupts = <0x00 0x02 0x04>;
            reg-shift = <0x02>;
            reg-io-width = <0x04>;
            clocks = <0x02 0x59>;
            status = "disabled";
            phandle = <0x9b>;
        };

        serial@1c28800 {
            compatible = "snps,dw-apb-uart";
            reg = <0x1c28800 0x400>;
            interrupts = <0x00 0x03 0x04>;
            reg-shift = <0x02>;
            reg-io-width = <0x04>;
            clocks = <0x02 0x5a>;
            status = "disabled";
            phandle = <0x9c>;
        };

        serial@1c28c00 {
            compatible = "snps,dw-apb-uart";
            reg = <0x1c28c00 0x400>;
            interrupts = <0x00 0x04 0x04>;
            reg-shift = <0x02>;
            reg-io-width = <0x04>;
            clocks = <0x02 0x5b>;
            status = "disabled";
            phandle = <0x9d>;
        };

        serial@1c29000 {
            compatible = "snps,dw-apb-uart";
            reg = <0x1c29000 0x400>;
            interrupts = <0x00 0x11 0x04>;
            reg-shift = <0x02>;
            reg-io-width = <0x04>;
            clocks = <0x02 0x5c>;
            status = "disabled";
            phandle = <0x9e>;
        };

        serial@1c29400 {
            compatible = "snps,dw-apb-uart";
            reg = <0x1c29400 0x400>;
            interrupts = <0x00 0x12 0x04>;
            reg-shift = <0x02>;
            reg-io-width = <0x04>;
            clocks = <0x02 0x5d>;
            status = "disabled";
            phandle = <0x9f>;
        };

        serial@1c29800 {
            compatible = "snps,dw-apb-uart";
            reg = <0x1c29800 0x400>;
            interrupts = <0x00 0x13 0x04>;
            reg-shift = <0x02>;
            reg-io-width = <0x04>;
            clocks = <0x02 0x5e>;
            status = "disabled";
            phandle = <0xa0>;
        };

        serial@1c29c00 {
            compatible = "snps,dw-apb-uart";
            reg = <0x1c29c00 0x400>;
            interrupts = <0x00 0x14 0x04>;
            reg-shift = <0x02>;
            reg-io-width = <0x04>;
            clocks = <0x02 0x5f>;
            status = "disabled";
            phandle = <0xa1>;
        };

        ps2@1c2a000 {
            compatible = "allwinner,sun4i-a10-ps2";
            reg = <0x1c2a000 0x400>;
            interrupts = <0x00 0x3e 0x04>;
            clocks = <0x02 0x55>;
            status = "disabled";
            phandle = <0xa2>;
        };

        ps2@1c2a400 {
            compatible = "allwinner,sun4i-a10-ps2";
            reg = <0x1c2a400 0x400>;
            interrupts = <0x00 0x3f 0x04>;
            clocks = <0x02 0x56>;
            status = "disabled";
            phandle = <0xa3>;
        };

        i2c@1c2ac00 {
            compatible = "allwinner,sun7i-a20-i2c\0allwinner,sun4i-a10-i2c";
            reg = <0x1c2ac00 0x400>;
            interrupts = <0x00 0x07 0x04>;
            clocks = <0x02 0x4f>;
            pinctrl-names = "default";
            pinctrl-0 = <0x25>;
            status = "okay";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            phandle = <0xa4>;

            pmic@34 {
                reg = <0x34>;
                interrupt-parent = <0x26>;
                interrupts = <0x00 0x08>;
                compatible = "x-powers,axp209";
                interrupt-controller;
                #interrupt-cells = <0x01>;
                phandle = <0xa5>;

                ac-power-supply {
                    compatible = "x-powers,axp202-ac-power-supply";
                    status = "disabled";
                    phandle = <0xa6>;
                };

                adc {
                    compatible = "x-powers,axp209-adc";
                    #io-channel-cells = <0x01>;
                    phandle = <0xa7>;
                };

                gpio {
                    compatible = "x-powers,axp209-gpio";
                    gpio-controller;
                    #gpio-cells = <0x02>;
                    phandle = <0xa8>;
                };

                led {
                    compatible = "x-powers,axp20x-led";
                    status = "disabled";
                    phandle = <0xa9>;
                };

                battery-power-supply {
                    compatible = "x-powers,axp209-battery-power-supply";
                    status = "disabled";
                    phandle = <0xaa>;
                };

                regulators {
                    x-powers,dcdc-freq = <0x5dc>;

                    dcdc2 {
                        regulator-name = "vdd-cpu";
                        regulator-always-on;
                        regulator-min-microvolt = <0xf4240>;
                        regulator-max-microvolt = <0x16e360>;
                        phandle = <0xab>;
                    };

                    dcdc3 {
                        regulator-name = "vdd-int-pll";
                        regulator-always-on;
                        regulator-min-microvolt = <0xf4240>;
                        regulator-max-microvolt = <0x155cc0>;
                        phandle = <0xac>;
                    };

                    ldo1 {
                        regulator-always-on;
                        regulator-min-microvolt = <0x13d620>;
                        regulator-max-microvolt = <0x13d620>;
                        regulator-name = "vdd-rtc";
                        phandle = <0xad>;
                    };

                    ldo2 {
                        regulator-name = "avcc";
                        regulator-always-on;
                        regulator-min-microvolt = <0x2dc6c0>;
                        regulator-max-microvolt = <0x2dc6c0>;
                        phandle = <0xae>;
                    };

                    ldo3 {
                        regulator-name = "ldo3";
                        phandle = <0xaf>;
                    };

                    ldo4 {
                        regulator-name = "ldo4";
                        phandle = <0xb0>;
                    };

                    ldo5 {
                        regulator-name = "ldo5";
                        status = "disabled";
                        phandle = <0xb1>;
                    };
                };

                usb-power-supply {
                    compatible = "x-powers,axp202-usb-power-supply";
                    status = "okay";
                    phandle = <0x1b>;
                };
            };
        };

        i2c@1c2b000 {
            compatible = "allwinner,sun7i-a20-i2c\0allwinner,sun4i-a10-i2c";
            reg = <0x1c2b000 0x400>;
            interrupts = <0x00 0x08 0x04>;
            clocks = <0x02 0x50>;
            pinctrl-names = "default";
            pinctrl-0 = <0x27>;
            status = "disabled";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            phandle = <0xb2>;
        };

        i2c@1c2b400 {
            compatible = "allwinner,sun7i-a20-i2c\0allwinner,sun4i-a10-i2c";
            reg = <0x1c2b400 0x400>;
            interrupts = <0x00 0x09 0x04>;
            clocks = <0x02 0x51>;
            pinctrl-names = "default";
            pinctrl-0 = <0x28>;
            status = "okay";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            phandle = <0xb3>;
        };

        i2c@1c2b800 {
            compatible = "allwinner,sun7i-a20-i2c\0allwinner,sun4i-a10-i2c";
            reg = <0x1c2b800 0x400>;
            interrupts = <0x00 0x58 0x04>;
            clocks = <0x02 0x52>;
            pinctrl-names = "default";
            pinctrl-0 = <0x29>;
            status = "disabled";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            phandle = <0xb4>;
        };

        can@1c2bc00 {
            compatible = "allwinner,sun7i-a20-can\0allwinner,sun4i-a10-can";
            reg = <0x1c2bc00 0x400>;
            interrupts = <0x00 0x1a 0x04>;
            clocks = <0x02 0x53>;
            status = "disabled";
            phandle = <0xb5>;
        };

        i2c@1c2c000 {
            compatible = "allwinner,sun7i-a20-i2c\0allwinner,sun4i-a10-i2c";
            reg = <0x1c2c000 0x400>;
            interrupts = <0x00 0x59 0x04>;
            clocks = <0x02 0x57>;
            status = "disabled";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            phandle = <0xb6>;
        };

        gpu@1c40000 {
            compatible = "allwinner,sun7i-a20-mali\0arm,mali-400";
            reg = <0x1c40000 0x10000>;
            interrupts = <0x00 0x45 0x04 0x00 0x46 0x04 0x00 0x47 0x04 0x00 0x48 0x04 0x00 0x4a 0x04 0x00 0x4b 0x04 0x00 0x49 0x04>;
            interrupt-names = "gp\0gpmmu\0pp0\0ppmmu0\0pp1\0ppmmu1\0pmu";
            clocks = <0x02 0x44 0x02 0xa5>;
            clock-names = "bus\0core";
            resets = <0x02 0x13>;
            assigned-clocks = <0x02 0xa5>;
            assigned-clock-rates = <0x16e36000>;
            phandle = <0xb7>;
        };

        ethernet@1c50000 {
            compatible = "allwinner,sun7i-a20-gmac";
            reg = <0x1c50000 0x10000>;
            interrupts = <0x00 0x55 0x04>;
            interrupt-names = "macirq";
            clocks = <0x02 0x42 0x2a>;
            clock-names = "stmmaceth\0allwinner_gmac_tx";
            snps,pbl = <0x02>;
            snps,fixed-burst;
            snps,force_sf_dma_mode;
            status = "okay";
            pinctrl-names = "default";
            pinctrl-0 = <0x2b>;
            phy-handle = <0x2c>;
            phy-mode = "rgmii";
            phy-supply = <0x2d>;
            phandle = <0xb8>;

            mdio {
                compatible = "snps,dwmac-mdio";
                #address-cells = <0x01>;
                #size-cells = <0x00>;
                phandle = <0xb9>;

                ethernet-phy@1 {
                    reg = <0x01>;
                    phandle = <0x2c>;
                };
            };
        };

        hstimer@1c60000 {
            compatible = "allwinner,sun7i-a20-hstimer";
            reg = <0x1c60000 0x1000>;
            interrupts = <0x00 0x51 0x04 0x00 0x52 0x04 0x00 0x53 0x04 0x00 0x54 0x04>;
            clocks = <0x02 0x33>;
        };

        interrupt-controller@1c81000 {
            compatible = "arm,gic-400";
            reg = <0x1c81000 0x1000 0x1c82000 0x2000 0x1c84000 0x2000 0x1c86000 0x2000>;
            interrupt-controller;
            #interrupt-cells = <0x03>;
            interrupts = <0x01 0x09 0xf04>;
            phandle = <0x01>;
        };

        display-frontend@1e00000 {
            compatible = "allwinner,sun7i-a20-display-frontend";
            reg = <0x1e00000 0x20000>;
            interrupts = <0x00 0x2f 0x04>;
            clocks = <0x02 0x40 0x02 0x92 0x02 0x8b>;
            clock-names = "ahb\0mod\0ram";
            resets = <0x02 0x07>;
            phandle = <0x09>;

            ports {
                #address-cells = <0x01>;
                #size-cells = <0x00>;

                port@1 {
                    #address-cells = <0x01>;
                    #size-cells = <0x00>;
                    reg = <0x01>;
                    phandle = <0xba>;

                    endpoint@0 {
                        reg = <0x00>;
                        remote-endpoint = <0x2e>;
                        phandle = <0x36>;
                    };

                    endpoint@1 {
                        reg = <0x01>;
                        remote-endpoint = <0x2f>;
                        phandle = <0x32>;
                    };
                };
            };
        };

        display-frontend@1e20000 {
            compatible = "allwinner,sun7i-a20-display-frontend";
            reg = <0x1e20000 0x20000>;
            interrupts = <0x00 0x30 0x04>;
            clocks = <0x02 0x41 0x02 0x93 0x02 0x8a>;
            clock-names = "ahb\0mod\0ram";
            resets = <0x02 0x08>;
            phandle = <0x0a>;

            ports {
                #address-cells = <0x01>;
                #size-cells = <0x00>;

                port@1 {
                    #address-cells = <0x01>;
                    #size-cells = <0x00>;
                    reg = <0x01>;
                    phandle = <0xbb>;

                    endpoint@0 {
                        reg = <0x00>;
                        remote-endpoint = <0x30>;
                        phandle = <0x37>;
                    };

                    endpoint@1 {
                        reg = <0x01>;
                        remote-endpoint = <0x31>;
                        phandle = <0x33>;
                    };
                };
            };
        };

        display-backend@1e40000 {
            compatible = "allwinner,sun7i-a20-display-backend";
            reg = <0x1e40000 0x10000>;
            interrupts = <0x00 0x30 0x04>;
            clocks = <0x02 0x3f 0x02 0x91 0x02 0x8d>;
            clock-names = "ahb\0mod\0ram";
            resets = <0x02 0x06>;
            phandle = <0xbc>;

            ports {
                #address-cells = <0x01>;
                #size-cells = <0x00>;

                port@0 {
                    #address-cells = <0x01>;
                    #size-cells = <0x00>;
                    reg = <0x00>;
                    phandle = <0xbd>;

                    endpoint@0 {
                        reg = <0x00>;
                        remote-endpoint = <0x32>;
                        phandle = <0x2f>;
                    };

                    endpoint@1 {
                        reg = <0x01>;
                        remote-endpoint = <0x33>;
                        phandle = <0x31>;
                    };
                };

                port@1 {
                    #address-cells = <0x01>;
                    #size-cells = <0x00>;
                    reg = <0x01>;
                    phandle = <0xbe>;

                    endpoint@0 {
                        reg = <0x00>;
                        remote-endpoint = <0x34>;
                        phandle = <0x0e>;
                    };

                    endpoint@1 {
                        reg = <0x01>;
                        remote-endpoint = <0x35>;
                        phandle = <0x11>;
                    };
                };
            };
        };

        display-backend@1e60000 {
            compatible = "allwinner,sun7i-a20-display-backend";
            reg = <0x1e60000 0x10000>;
            interrupts = <0x00 0x2f 0x04>;
            clocks = <0x02 0x3e 0x02 0x90 0x02 0x8c>;
            clock-names = "ahb\0mod\0ram";
            resets = <0x02 0x05>;
            phandle = <0xbf>;

            ports {
                #address-cells = <0x01>;
                #size-cells = <0x00>;

                port@0 {
                    #address-cells = <0x01>;
                    #size-cells = <0x00>;
                    reg = <0x00>;
                    phandle = <0xc0>;

                    endpoint@0 {
                        reg = <0x00>;
                        remote-endpoint = <0x36>;
                        phandle = <0x2e>;
                    };

                    endpoint@1 {
                        reg = <0x01>;
                        remote-endpoint = <0x37>;
                        phandle = <0x30>;
                    };
                };

                port@1 {
                    #address-cells = <0x01>;
                    #size-cells = <0x00>;
                    reg = <0x01>;
                    phandle = <0xc1>;

                    endpoint@0 {
                        reg = <0x00>;
                        remote-endpoint = <0x38>;
                        phandle = <0x0d>;
                    };

                    endpoint@1 {
                        reg = <0x01>;
                        remote-endpoint = <0x39>;
                        phandle = <0x10>;
                    };
                };
            };
        };
    };

    ahci-5v {
        compatible = "regulator-fixed";
        regulator-name = "ahci-5v";
        regulator-min-microvolt = <0x4c4b40>;
        regulator-max-microvolt = <0x4c4b40>;
        regulator-boot-on;
        enable-active-high;
        gpio = <0x16 0x01 0x08 0x00>;
        status = "disabled";
        phandle = <0xc2>;
    };

    usb0-vbus {
        compatible = "regulator-fixed";
        regulator-name = "usb0-vbus";
        regulator-min-microvolt = <0x4c4b40>;
        regulator-max-microvolt = <0x4c4b40>;
        enable-active-high;
        gpio = <0x16 0x01 0x09 0x00>;
        status = "okay";
        phandle = <0x1c>;
    };

    usb1-vbus {
        compatible = "regulator-fixed";
        regulator-name = "usb1-vbus";
        regulator-min-microvolt = <0x4c4b40>;
        regulator-max-microvolt = <0x4c4b40>;
        regulator-boot-on;
        enable-active-high;
        gpio = <0x16 0x07 0x1a 0x00>;
        status = "okay";
        phandle = <0x1d>;
    };

    usb2-vbus {
        compatible = "regulator-fixed";
        regulator-name = "usb2-vbus";
        regulator-min-microvolt = <0x4c4b40>;
        regulator-max-microvolt = <0x4c4b40>;
        regulator-boot-on;
        enable-active-high;
        gpio = <0x16 0x07 0x16 0x00>;
        status = "okay";
        phandle = <0x1e>;
    };

    vcc3v0 {
        compatible = "regulator-fixed";
        regulator-name = "vcc3v0";
        regulator-min-microvolt = <0x2dc6c0>;
        regulator-max-microvolt = <0x2dc6c0>;
        phandle = <0xc3>;
    };

    vcc3v3 {
        compatible = "regulator-fixed";
        regulator-name = "vcc3v3";
        regulator-min-microvolt = <0x325aa0>;
        regulator-max-microvolt = <0x325aa0>;
        phandle = <0x15>;
    };

    vcc5v0 {
        compatible = "regulator-fixed";
        regulator-name = "vcc5v0";
        regulator-min-microvolt = <0x4c4b40>;
        regulator-max-microvolt = <0x4c4b40>;
        phandle = <0xc4>;
    };

    hdmi-connector {
        compatible = "hdmi-connector";
        type = [61 00];

        port {

            endpoint {
                remote-endpoint = <0x41>;
                phandle = <0xc5>;
            };
        };
    };

    leds {
        compatible = "gpio-leds";

        green {
            label = "orangepi:green:usr";
            gpios = <0x16 0x07 0x18 0x00>;
        };
    };

    gmac-3v3 {
        compatible = "regulator-fixed";
        regulator-name = "gmac-3v3";
        regulator-min-microvolt = <0x325aa0>;
        regulator-max-microvolt = <0x325aa0>;
        startup-delay-us = <0x186a0>;
        enable-active-high;
        gpio = <0x16 0x07 0x17 0x00>;
        phandle = <0x2d>;
    };

    __symbols__ {
        cpu0 = "/cpus/cpu@0";
        cpu1 = "/cpus/cpu@1";
        cpu_alert0 = "/thermal-zones/cpu_thermal/trips/cpu_alert0";
        cpu_crit = "/thermal-zones/cpu_thermal/trips/cpu_crit";
        osc24M = "/clocks/clk-24M";
        osc32k = "/clocks/clk-32k";
        mii_phy_tx_clk = "/clocks/clk-mii-phy-tx";
        gmac_int_tx_clk = "/clocks/clk-gmac-int-tx";
        gmac_tx_clk = "/clocks/clk@1c20164";
        de = "/display-engine";
        sram_a = "/soc/system-control@1c00000/sram@0";
        emac_sram = "/soc/system-control@1c00000/sram@0/sram-section@8000";
        sram_d = "/soc/system-control@1c00000/sram@10000";
        otg_sram = "/soc/system-control@1c00000/sram@10000/sram-section@0";
        sram_c = "/soc/system-control@1c00000/sram@1d00000";
        ve_sram = "/soc/system-control@1c00000/sram@1d00000/sram-section@0";
        nmi_intc = "/soc/interrupt-controller@1c00030";
        dma = "/soc/dma-controller@1c02000";
        nfc = "/soc/nand-controller@1c03000";
        spi0 = "/soc/spi@1c05000";
        spi1 = "/soc/spi@1c06000";
        csi0 = "/soc/csi@1c09000";
        emac = "/soc/ethernet@1c0b000";
        mdio = "/soc/mdio@1c0b080";
        tcon0 = "/soc/lcd-controller@1c0c000";
        tcon0_in = "/soc/lcd-controller@1c0c000/ports/port@0";
        tcon0_in_be0 = "/soc/lcd-controller@1c0c000/ports/port@0/endpoint@0";
        tcon0_in_be1 = "/soc/lcd-controller@1c0c000/ports/port@0/endpoint@1";
        tcon0_out = "/soc/lcd-controller@1c0c000/ports/port@1";
        tcon0_out_hdmi = "/soc/lcd-controller@1c0c000/ports/port@1/endpoint@1";
        tcon1 = "/soc/lcd-controller@1c0d000";
        tcon1_in = "/soc/lcd-controller@1c0d000/ports/port@0";
        tcon1_in_be0 = "/soc/lcd-controller@1c0d000/ports/port@0/endpoint@0";
        tcon1_in_be1 = "/soc/lcd-controller@1c0d000/ports/port@0/endpoint@1";
        tcon1_out = "/soc/lcd-controller@1c0d000/ports/port@1";
        tcon1_out_hdmi = "/soc/lcd-controller@1c0d000/ports/port@1/endpoint@1";
        mmc0 = "/soc/mmc@1c0f000";
        mmc1 = "/soc/mmc@1c10000";
        mmc2 = "/soc/mmc@1c11000";
        mmc3 = "/soc/mmc@1c12000";
        usb_otg = "/soc/usb@1c13000";
        usbphy = "/soc/phy@1c13400";
        ehci0 = "/soc/usb@1c14000";
        ohci0 = "/soc/usb@1c14400";
        crypto = "/soc/crypto-engine@1c15000";
        hdmi = "/soc/hdmi@1c16000";
        hdmi_in = "/soc/hdmi@1c16000/ports/port@0";
        hdmi_in_tcon0 = "/soc/hdmi@1c16000/ports/port@0/endpoint@0";
        hdmi_in_tcon1 = "/soc/hdmi@1c16000/ports/port@0/endpoint@1";
        hdmi_out = "/soc/hdmi@1c16000/ports/port@1";
        spi2 = "/soc/spi@1c17000";
        ahci = "/soc/sata@1c18000";
        ehci1 = "/soc/usb@1c1c000";
        ohci1 = "/soc/usb@1c1c400";
        csi1 = "/soc/csi@1c1d000";
        spi3 = "/soc/spi@1c1f000";
        ccu = "/soc/clock@1c20000";
        pio = "/soc/pinctrl@1c20800";
        can_pa_pins = "/soc/pinctrl@1c20800/can-pa-pins";
        can_ph_pins = "/soc/pinctrl@1c20800/can-ph-pins";
        clk_out_a_pin = "/soc/pinctrl@1c20800/clk-out-a-pin";
        clk_out_b_pin = "/soc/pinctrl@1c20800/clk-out-b-pin";
        csi0_8bits_pins = "/soc/pinctrl@1c20800/csi-8bits-pins";
        csi0_clk_pin = "/soc/pinctrl@1c20800/csi-clk-pin";
        csi1_8bits_pg_pins = "/soc/pinctrl@1c20800/csi1-8bits-pg-pins";
        csi1_24bits_ph_pins = "/soc/pinctrl@1c20800/csi1-24bits-ph-pins";
        csi1_clk_pg_pin = "/soc/pinctrl@1c20800/csi1-clk-pg-pin";
        emac_pa_pins = "/soc/pinctrl@1c20800/emac-pa-pins";
        emac_ph_pins = "/soc/pinctrl@1c20800/emac-ph-pins";
        gmac_mii_pins = "/soc/pinctrl@1c20800/gmac-mii-pins";
        gmac_rgmii_pins = "/soc/pinctrl@1c20800/gmac-rgmii-pins";
        i2c0_pins = "/soc/pinctrl@1c20800/i2c0-pins";
        i2c1_pins = "/soc/pinctrl@1c20800/i2c1-pins";
        i2c2_pins = "/soc/pinctrl@1c20800/i2c2-pins";
        i2c3_pins = "/soc/pinctrl@1c20800/i2c3-pins";
        ir0_rx_pin = "/soc/pinctrl@1c20800/ir0-rx-pin";
        ir0_tx_pin = "/soc/pinctrl@1c20800/ir0-tx-pin";
        ir1_rx_pin = "/soc/pinctrl@1c20800/ir1-rx-pin";
        ir1_tx_pin = "/soc/pinctrl@1c20800/ir1-tx-pin";
        lcd_lvds0_pins = "/soc/pinctrl@1c20800/lcd-lvds0-pins";
        lcd_lvds1_pins = "/soc/pinctrl@1c20800/lcd-lvds1-pins";
        mmc0_pins = "/soc/pinctrl@1c20800/mmc0-pins";
        mmc2_pins = "/soc/pinctrl@1c20800/mmc2-pins";
        mmc3_pins = "/soc/pinctrl@1c20800/mmc3-pins";
        ps2_0_pins = "/soc/pinctrl@1c20800/ps2-0-pins";
        ps2_1_ph_pins = "/soc/pinctrl@1c20800/ps2-1-ph-pins";
        pwm0_pin = "/soc/pinctrl@1c20800/pwm0-pin";
        pwm1_pin = "/soc/pinctrl@1c20800/pwm1-pin";
        spdif_tx_pin = "/soc/pinctrl@1c20800/spdif-tx-pin";
        spi0_pi_pins = "/soc/pinctrl@1c20800/spi0-pi-pins";
        spi0_cs0_pi_pin = "/soc/pinctrl@1c20800/spi0-cs0-pi-pin";
        spi0_cs1_pi_pin = "/soc/pinctrl@1c20800/spi0-cs1-pi-pin";
        spi1_pi_pins = "/soc/pinctrl@1c20800/spi1-pi-pins";
        spi1_cs0_pi_pin = "/soc/pinctrl@1c20800/spi1-cs0-pi-pin";
        spi2_pb_pins = "/soc/pinctrl@1c20800/spi2-pb-pins";
        spi2_cs0_pb_pin = "/soc/pinctrl@1c20800/spi2-cs0-pb-pin";
        spi2_pc_pins = "/soc/pinctrl@1c20800/spi2-pc-pins";
        spi2_cs0_pc_pin = "/soc/pinctrl@1c20800/spi2-cs0-pc-pin";
        uart0_pb_pins = "/soc/pinctrl@1c20800/uart0-pb-pins";
        uart0_pf_pins = "/soc/pinctrl@1c20800/uart0-pf-pins";
        uart1_pa_pins = "/soc/pinctrl@1c20800/uart1-pa-pins";
        uart1_cts_rts_pa_pins = "/soc/pinctrl@1c20800/uart1-cts-rts-pa-pins";
        uart2_pa_pins = "/soc/pinctrl@1c20800/uart2-pa-pins";
        uart2_cts_rts_pa_pins = "/soc/pinctrl@1c20800/uart2-cts-rts-pa-pins";
        uart2_pi_pins = "/soc/pinctrl@1c20800/uart2-pi-pins";
        uart2_cts_rts_pi_pins = "/soc/pinctrl@1c20800/uart2-cts-rts-pi-pins";
        uart3_pg_pins = "/soc/pinctrl@1c20800/uart3-pg-pins";
        uart3_cts_rts_pg_pins = "/soc/pinctrl@1c20800/uart3-cts-rts-pg-pins";
        uart3_ph_pins = "/soc/pinctrl@1c20800/uart3-ph-pins";
        uart3_cts_rts_ph_pins = "/soc/pinctrl@1c20800/uart3-cts-rts-ph-pins";
        uart4_pg_pins = "/soc/pinctrl@1c20800/uart4-pg-pins";
        uart4_ph_pins = "/soc/pinctrl@1c20800/uart4-ph-pins";
        uart5_ph_pins = "/soc/pinctrl@1c20800/uart5-ph-pins";
        uart5_pi_pins = "/soc/pinctrl@1c20800/uart5-pi-pins";
        uart6_pa_pins = "/soc/pinctrl@1c20800/uart6-pa-pins";
        uart6_pi_pins = "/soc/pinctrl@1c20800/uart6-pi-pins";
        uart7_pa_pins = "/soc/pinctrl@1c20800/uart7-pa-pins";
        uart7_pi_pins = "/soc/pinctrl@1c20800/uart7-pi-pins";
        wdt = "/soc/watchdog@1c20c90";
        rtc = "/soc/rtc@1c20d00";
        pwm = "/soc/pwm@1c20e00";
        spdif = "/soc/spdif@1c21000";
        ir0 = "/soc/ir@1c21800";
        ir1 = "/soc/ir@1c21c00";
        i2s1 = "/soc/i2s@1c22000";
        i2s0 = "/soc/i2s@1c22400";
        lradc = "/soc/lradc@1c22800";
        codec = "/soc/codec@1c22c00";
        sid = "/soc/eeprom@1c23800";
        i2s2 = "/soc/i2s@1c24400";
        rtp = "/soc/rtp@1c25000";
        uart0 = "/soc/serial@1c28000";
        uart1 = "/soc/serial@1c28400";
        uart2 = "/soc/serial@1c28800";
        uart3 = "/soc/serial@1c28c00";
        uart4 = "/soc/serial@1c29000";
        uart5 = "/soc/serial@1c29400";
        uart6 = "/soc/serial@1c29800";
        uart7 = "/soc/serial@1c29c00";
        ps20 = "/soc/ps2@1c2a000";
        ps21 = "/soc/ps2@1c2a400";
        i2c0 = "/soc/i2c@1c2ac00";
        axp209 = "/soc/i2c@1c2ac00/pmic@34";
        ac_power_supply = "/soc/i2c@1c2ac00/pmic@34/ac-power-supply";
        axp_adc = "/soc/i2c@1c2ac00/pmic@34/adc";
        axp_gpio = "/soc/i2c@1c2ac00/pmic@34/gpio";
        axp_led = "/soc/i2c@1c2ac00/pmic@34/led";
        battery_power_supply = "/soc/i2c@1c2ac00/pmic@34/battery-power-supply";
        reg_dcdc2 = "/soc/i2c@1c2ac00/pmic@34/regulators/dcdc2";
        reg_dcdc3 = "/soc/i2c@1c2ac00/pmic@34/regulators/dcdc3";
        reg_ldo1 = "/soc/i2c@1c2ac00/pmic@34/regulators/ldo1";
        reg_ldo2 = "/soc/i2c@1c2ac00/pmic@34/regulators/ldo2";
        reg_ldo3 = "/soc/i2c@1c2ac00/pmic@34/regulators/ldo3";
        reg_ldo4 = "/soc/i2c@1c2ac00/pmic@34/regulators/ldo4";
        reg_ldo5 = "/soc/i2c@1c2ac00/pmic@34/regulators/ldo5";
        usb_power_supply = "/soc/i2c@1c2ac00/pmic@34/usb-power-supply";
        i2c1 = "/soc/i2c@1c2b000";
        i2c2 = "/soc/i2c@1c2b400";
        i2c3 = "/soc/i2c@1c2b800";
        can0 = "/soc/can@1c2bc00";
        i2c4 = "/soc/i2c@1c2c000";
        mali = "/soc/gpu@1c40000";
        gmac = "/soc/ethernet@1c50000";
        gmac_mdio = "/soc/ethernet@1c50000/mdio";
        phy1 = "/soc/ethernet@1c50000/mdio/ethernet-phy@1";
        gic = "/soc/interrupt-controller@1c81000";
        fe0 = "/soc/display-frontend@1e00000";
        fe0_out = "/soc/display-frontend@1e00000/ports/port@1";
        fe0_out_be0 = "/soc/display-frontend@1e00000/ports/port@1/endpoint@0";
        fe0_out_be1 = "/soc/display-frontend@1e00000/ports/port@1/endpoint@1";
        fe1 = "/soc/display-frontend@1e20000";
        fe1_out = "/soc/display-frontend@1e20000/ports/port@1";
        fe1_out_be0 = "/soc/display-frontend@1e20000/ports/port@1/endpoint@0";
        fe1_out_be1 = "/soc/display-frontend@1e20000/ports/port@1/endpoint@1";
        be1 = "/soc/display-backend@1e40000";
        be1_in = "/soc/display-backend@1e40000/ports/port@0";
        be1_in_fe0 = "/soc/display-backend@1e40000/ports/port@0/endpoint@0";
        be1_in_fe1 = "/soc/display-backend@1e40000/ports/port@0/endpoint@1";
        be1_out = "/soc/display-backend@1e40000/ports/port@1";
        be1_out_tcon0 = "/soc/display-backend@1e40000/ports/port@1/endpoint@0";
        be1_out_tcon1 = "/soc/display-backend@1e40000/ports/port@1/endpoint@1";
        be0 = "/soc/display-backend@1e60000";
        be0_in = "/soc/display-backend@1e60000/ports/port@0";
        be0_in_fe0 = "/soc/display-backend@1e60000/ports/port@0/endpoint@0";
        be0_in_fe1 = "/soc/display-backend@1e60000/ports/port@0/endpoint@1";
        be0_out = "/soc/display-backend@1e60000/ports/port@1";
        be0_out_tcon0 = "/soc/display-backend@1e60000/ports/port@1/endpoint@0";
        be0_out_tcon1 = "/soc/display-backend@1e60000/ports/port@1/endpoint@1";
        reg_ahci_5v = "/ahci-5v";
        reg_usb0_vbus = "/usb0-vbus";
        reg_usb1_vbus = "/usb1-vbus";
        reg_usb2_vbus = "/usb2-vbus";
        reg_vcc3v0 = "/vcc3v0";
        reg_vcc3v3 = "/vcc3v3";
        reg_vcc5v0 = "/vcc5v0";
        hdmi_con_in = "/hdmi-connector/port/endpoint";
        reg_gmac_3v3 = "/gmac-3v3";
    };
};

 

 

 

Link to comment
Share on other sites

I just wanted to chip in to confirm that on Orange Pi (A20) Armbian Bionic and Armbian Buster with mainline based kernel 5.10.y become erratic once fdtfile=sun7i-a20-orangepi.dtb is added.

Pinging shows ~ 50% packet loss over any the wired interface, uploading a log fails, the headless system is quite unusable, I assume similar in Desktop...
A kernel downgrade to 5.9.14-sunxi fixes things, maybe I'll find the time to slowly change to 5.10.y until it breaks, if this narrows done things.


/edit

my mistake, dues to metric the ping responses where send through the wired interface and got lost, once disabled the system is usable

Will try the fix for Banana Pro gmac dtb

for the record: happening since 5.10.4-sunxi apparently



 

Thank you for all the work and support you provide here Igor!

Edited by hellf
Link to comment
Share on other sites

22 minutes ago, hellf said:

unfortunately adding this as a patch to git is a bit beyond my skills for now :/


Its never to late to learn something :)
 

1. https://docs.armbian.com/Developer-Guide_Build-Preparation/

2. Run compilation with ./compile.sh CREATE_PATCHES="yes"

3. Skip u-boot change prompt and wait for kernel change prompt.

4. Open second terminal and edit file (under su):

 

sudo nano  cache/sources/linux-mainline/orange-pi-5.10/arch/arm/boot/dts/sun7i-a20-orangepi.dts

 

also do this for its other variant

 

sudo nano  cache/sources/linux-mainline/orange-pi-5.10/arch/arm/boot/dts/sun7i-a20-orangepi-mini.dts

 

and change those bits. Save and exit.

4. When you are done go back to initial terminal and proceed with compilation.
5. If everything went well, move patch from output/patch/ to patch/kernel/archive/sunxi-5.10/name_it_somehow.patch (you can also copy the same patch for sunx-5.11 since it will almost certainly work and its needed there too)

6. Create a PR

 

This might also help

https://docs.armbian.com/Process_Contribute/

 

Link to comment
Share on other sites

18 hours ago, OPUser said:

Have you seen problems with HDMI and USB in 5.10.y kernel?

USB seems fine with 5.10.y as the WiFi comes back and also an external WiFi adapter is getting recognized and sees networks, what did you experience?

 

About HDMI, mine is running headless, but I will probably carry it towards a screen later and check

 

// well, anything HDMI related was missing from the orangepi dts so only uboot output worked, compared/copied from other A20 dts et voila, working hdmi output from 5.10.21-sunxi

// USB HID works, different WiFi dingle too, no issues here

Link to comment
Share on other sites

23 hours ago, hellf said:

compared/copied from other A20 dts et voila, working hdmi output from 5.10.21-sunxi

I tried to merge with bananapi dts, but something still wrong. Could you please share you new sun7i-a20-orangepi.dts file?

Link to comment
Share on other sites

So, was it a bad idea to decompile "sun7i-a20-orangepi.dtb" into "sun7i-a20-orangepi.dts", then edit and compile back to "sun7i-a20-orangepi.dtb"? Would it be more correct to edit/patch the kernel sources instead?

Link to comment
Share on other sites

I took the original sources just for the device tree compilation, instructions from https://linux-sunxi.org/Mainline_Kernel_Howto

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git --depth=1
cd linux/
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig

edit arch/arm/boot/dts/sun7i-a20-orangepi.dts
compile ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4 dtbs

copy arch/arm/boot/dts/sun7i-a20-orangepi.dtb to /boot/dtb/

 

the patch file has more than just phy-mode = "rgmii-id";, I guess you missed it?

 

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines