比特米盒的armbian系统适配与调整

比特米盒的armbian系统适配与调整

1.环境

闲鱼上淘了一个矿渣盒子,名称很多,私家云二代、比特米盒、cumebox2,其实就是同一个产品,配置如下:

处理器是晶晨S905X,内存1G,WIFI,2个USB2.0,1个typeC口,百兆网卡,SD卡,HDMI接口,有两个2.5寸的硬盘位。

网卡和usb差了点,盒子自带能插两个2.5寸的硬盘就很好,安装好后,外面只看到一个接上各种线缆的盒子,桌面会显得干净。

2.安装系统

盒子原生系统是定制化的安卓系统,拿来先搞掉。

2.1安装ATV6.0

换成ATV6.0,方法:type c线接电脑,短接,上电,扫描到后,使用Amlogic USB Burning Tool烧录。

这中间电脑尝试了数个USB口,总算有一个能够扫描到。

安装ATV6.0的目的并不是真正使用ATV这个系统,而是为了安装reboot2sd.apk之类(或者叫切换卡载系统V1.0.apk)的应用。

有了reboot2sd这样的应用,就可以通过SD卡上的armbian系统来启动盒子了。

2.2安装armbian系统至SD卡

这一步相当简单,到https://github.com/ophub/amlogic-s9xxx-armbian下载相应的固件文件,可以有很多个系统选择。

我下载的版本是:Armbian 23.11.0-trunk Jammy with Linux 5.15.138-ophub,类似名字为

Armbian_23.11.0_amlogic_s905_bullseye_5.15.138_server_XXXX.XX.XX.img.gz

在Linux下使用dd命令(或balenaEtcher),Windows下使用rufus等写U盘工具,将.img写入到SD卡。

写完之后,需要将设备树文件名调整好。一般就是将uEnv.txt文件中的

FDT=/dtb/amlogic/meson-sm1-x96-max-plus-100m.dtb

修改为

FDT=/dtb/amlogic/meson-gxl-s905x-p212.dtb

这么修改是因为比特米盒很多的硬件配置与meson-gxl-s905x-p212很相似。

(据说,这个盒子与Khadas-vim1更相像,Khadas-vim1的官方镜像所在网站https://www.armbian.com/khadas-vim1/)

修改完后,就可以将SD卡插入插槽,reboot2sd后重新启动。

将armbian系统安装至SD卡的原因是,这个盒子通过SD卡启动时,也可以安装EmuELEC至SD卡,然后就是一个家用游戏机了。

2.3风扇与面板灯

虽然比特米盒与meson-gxl-s905x-p212的配置很相似,但启动后,想启动相应的风扇与面板灯,还得额外的脚本程序,网上有现成的fan_on/off.sh

#!/bin/sh -e

###-------fan's gpio is 504 ------###
if [ ! -e  /sys/class/gpio/gpio504/direction ]; then
     echo 504 > /sys/class/gpio/export
fi
echo high > /sys/class/gpio/gpio504/direction

###--------font-LED-------###
# open474-BLUE
if [ ! -e  /sys/class/gpio/gpio474/direction ]; then
     echo 474 > /sys/class/gpio/export
fi
#  open476-RED
if [ ! -e  /sys/class/gpio/gpio476/direction ]; then
     echo 476 > /sys/class/gpio/export
fi
#  open477-GREEN
if [ ! -e  /sys/class/gpio/gpio477/direction ]; then
     echo 477 > /sys/class/gpio/export
fi

echo high > /sys/class/gpio/gpio474/direction
echo high > /sys/class/gpio/gpio476/direction
echo low > /sys/class/gpio/gpio477/direction
#!/bin/sh -e

###-------fan's gpio is 504 ------###
if [ ! -e  /sys/class/gpio/gpio504/direction ]; then
     echo 504 > /sys/class/gpio/export
fi
echo low > /sys/class/gpio/gpio504/direction

###--------font-LED-------###
# open474-BLUE
if [ ! -e  /sys/class/gpio/gpio474/direction ]; then
     echo 474 > /sys/class/gpio/export
fi
#  open476-RED
if [ ! -e  /sys/class/gpio/gpio476/direction ]; then
     echo 476 > /sys/class/gpio/export
fi
#  open477-GREEN
if [ ! -e  /sys/class/gpio/gpio477/direction ]; then
     echo 477 > /sys/class/gpio/export
fi

echo low > /sys/class/gpio/gpio474/direction
echo low > /sys/class/gpio/gpio476/direction
echo high > /sys/class/gpio/gpio477/direction

2.4面板OLED屏

上面的脚本能够驱动风扇、面板灯,但面板的OLED屏是另外的驱动方式。

从网络上搜索到的工具代码在:

https://github.com/bearcatl/SSD1306_OLED_json

要求使用的镜像是:Armbian_21.08.1_Ubuntu_CumeBox2_5.10.602_ssd1306

但实际上,主要在相应镜像里面的DTB文件,提取出来,然后用dtc反编译成文本,对比meson-gxl-s905x-p212的设备树信息来看,OLED屏的差异在如下处:

			i2c@500 {
				compatible = "amlogic,meson-gxbb-i2c";
				reg = <0x00 0x500 0x00 0x20>;
				interrupts = <0x00 0xc3 0x01>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "okay";
				clocks = <0x03 0x5d>;
				pinctrl-0 = <0x1d>;
				pinctrl-names = "default";
				clock-frequency = <0x61a80>;

				oled@3c {
					status = "disabled";
					compatible = "solomon,ssd1306fb-i2c";
					reg = <0x3c>;
					solomon,width = <0x80>;
					solomon,height = <0x40>;
					solomon,page-offset = <0x00>;
					solomon,com-invdir;
				};
			};

当然,无脑替换之上的meson-gxl-s905x-p212.dtb为Armbian_21.08.1_Ubuntu_CumeBox2_5.10.602_ssd1306中的v.dtb也是更好的办法。

但替换后,再使用2.3的脚本就驱动不了风扇与面板灯了(原因是v.dtb配置风扇与面板灯)。

需要调整为如下脚本bitbox_on/off.sh:

#!/bin/sh -e

###-------gpio-fan driver gen this ------###
if [ -e  /sys/class/hwmon/hwmon1/fan1_target ]; then
     echo 4500 > /sys/class/hwmon/hwmon1/fan1_target
else
     echo missing gpio-fan
fi

###--------gpio-led driver -------###
if [ -e /sys/class/leds/blue/brightness ]; then
     echo 1 > /sys/class/leds/blue/brightness
else
     echo missing gpio-led blue
fi
if [ -e /sys/class/leds/red/brightness ]; then
     echo 1 > /sys/class/leds/red/brightness
else
     echo missing gpio-led red
fi
if [ -e /sys/class/leds/green/brightness ]; then
     echo 0 > /sys/class/leds/green/brightness
else
     echo missing gpio-led green
fi
#!/bin/sh -e

###-------gpio-fan driver gen this ------###
if [ -e /sys/class/hwmon/hwmon1/fan1_target ]; then
     echo 0 > /sys/class/hwmon/hwmon1/fan1_target
else
     echo missing gpio-fan
fi

###--------gpio-led driver -------###
if [ -e /sys/class/leds/blue/brightness ]; then
     echo 0 > /sys/class/leds/blue/brightness
else
     echo missing gpio-led blue
fi
if [ -e /sys/class/leds/red/brightness ]; then
     echo 0 > /sys/class/leds/red/brightness
else
     echo missing gpio-led red
fi
if [ -e /sys/class/leds/green/brightness ]; then
     echo 1 > /sys/class/leds/green/brightness
else
     echo missing gpio-led green
fi

CumeBox2相应的完整设备树文本如下(将v.dtb反编译的结果):

/dts-v1/;

/ {
	interrupt-parent = <0x01>;
	#address-cells = <0x02>;
	#size-cells = <0x02>;
	compatible = "amlogic,p212\0amlogic,s905x\0amlogic,meson-gxl";
	model = "CumeBox";

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

		hwrom@0 {
			reg = <0x00 0x00 0x00 0x1000000>;
			no-map;
		};

		secmon@10000000 {
			reg = <0x00 0x10000000 0x00 0x200000>;
			no-map;
		};

		secmon@5000000 {
			reg = <0x00 0x5000000 0x00 0x300000>;
			no-map;
		};

		linux,cma {
			compatible = "shared-dma-pool";
			reusable;
			size = <0x00 0x10000000>;
			alignment = <0x00 0x400000>;
			linux,cma-default;
		};
	};

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

		framebuffer-cvbs {
			compatible = "amlogic,simple-framebuffer\0simple-framebuffer";
			amlogic,pipeline = "vpu-cvbs";
			power-domains = <0x02 0x00>;
			status = "disabled";
		};

		framebuffer-hdmi {
			compatible = "amlogic,simple-framebuffer\0simple-framebuffer";
			amlogic,pipeline = "vpu-hdmi";
			power-domains = <0x02 0x00>;
			status = "disabled";
			clocks = <0x03 0x3f 0x03 0x0c 0x03 0x4d>;
		};
	};

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

		cpu@0 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x00 0x00>;
			enable-method = "psci";
			next-level-cache = <0x04>;
			clocks = <0x05 0x00>;
			#cooling-cells = <0x02>;
			phandle = <0x08>;
		};

		cpu@1 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x00 0x01>;
			enable-method = "psci";
			next-level-cache = <0x04>;
			clocks = <0x05 0x00>;
			#cooling-cells = <0x02>;
			phandle = <0x09>;
		};

		cpu@2 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x00 0x02>;
			enable-method = "psci";
			next-level-cache = <0x04>;
			clocks = <0x05 0x00>;
			#cooling-cells = <0x02>;
			phandle = <0x0a>;
		};

		cpu@3 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x00 0x03>;
			enable-method = "psci";
			next-level-cache = <0x04>;
			clocks = <0x05 0x00>;
			#cooling-cells = <0x02>;
			phandle = <0x0b>;
		};

		l2-cache0 {
			compatible = "cache";
			phandle = <0x04>;
		};
	};

	thermal-zones {

		cpu-thermal {
			polling-delay-passive = <0xfa>;
			polling-delay = <0x3e8>;
			thermal-sensors = <0x06 0x00>;

			trips {

				cpu-passive {
					temperature = <0x13880>;
					hysteresis = <0x7d0>;
					type = "passive";
					phandle = <0x07>;
				};

				cpu-hot {
					temperature = <0x15f90>;
					hysteresis = <0x7d0>;
					type = "hot";
					phandle = <0x0c>;
				};

				cpu-critical {
					temperature = <0x1adb0>;
					hysteresis = <0x7d0>;
					type = "critical";
				};
			};

			cooling-maps {

				map0 {
					trip = <0x07>;
					cooling-device = <0x08 0xffffffff 0xffffffff 0x09 0xffffffff 0xffffffff 0x0a 0xffffffff 0xffffffff 0x0b 0xffffffff 0xffffffff>;
				};

				map1 {
					trip = <0x0c>;
					cooling-device = <0x08 0xffffffff 0xffffffff 0x09 0xffffffff 0xffffffff 0x0a 0xffffffff 0xffffffff 0x0b 0xffffffff 0xffffffff>;
				};
			};
		};
	};

	arm-pmu {
		compatible = "arm,cortex-a53-pmu";
		interrupts = <0x00 0x89 0x04 0x00 0x8a 0x04 0x00 0x99 0x04 0x00 0x9a 0x04>;
		interrupt-affinity = <0x08 0x09 0x0a 0x0b>;
	};

	psci {
		compatible = "arm,psci-0.2";
		method = "smc";
	};

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

	xtal-clk {
		compatible = "fixed-clock";
		clock-frequency = <0x16e3600>;
		clock-output-names = "xtal";
		#clock-cells = <0x00>;
		phandle = <0x12>;
	};

	firmware {

		secure-monitor {
			compatible = "amlogic,meson-gx-sm\0amlogic,meson-gxbb-sm";
			phandle = <0x0d>;
		};
	};

	efuse {
		compatible = "amlogic,meson-gx-efuse\0amlogic,meson-gxbb-efuse";
		#address-cells = <0x01>;
		#size-cells = <0x01>;
		read-only;
		secure-monitor = <0x0d>;
		clocks = <0x03 0x3a>;

		sn@14 {
			reg = <0x14 0x10>;
		};

		eth_mac@34 {
			reg = <0x34 0x10>;
		};

		bid@46 {
			reg = <0x46 0x30>;
		};
	};

	scpi {
		compatible = "amlogic,meson-gxbb-scpi\0arm,scpi-pre-1.0";
		mboxes = <0x0e 0x01 0x0e 0x02>;
		shmem = <0x0f 0x10>;

		clocks {
			compatible = "arm,scpi-clocks";

			scpi_clocks@0 {
				compatible = "arm,scpi-dvfs-clocks";
				#clock-cells = <0x01>;
				clock-indices = <0x00>;
				clock-output-names = "vcpu";
				phandle = <0x05>;
			};
		};

		sensors {
			compatible = "amlogic,meson-gxbb-scpi-sensors\0arm,scpi-sensors";
			#thermal-sensor-cells = <0x01>;
			phandle = <0x06>;
		};
	};

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

		bus@c1100000 {
			compatible = "simple-bus";
			reg = <0x00 0xc1100000 0x00 0x100000>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges = <0x00 0x00 0x00 0xc1100000 0x00 0x100000>;

			interrupt-controller@9880 {
				compatible = "amlogic,meson-gpio-intc\0amlogic,meson-gxl-gpio-intc";
				reg = <0x00 0x9880 0x00 0x10>;
				interrupt-controller;
				#interrupt-cells = <0x02>;
				amlogic,channel-interrupts = <0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47>;
				status = "okay";
			};

			reset-controller@4404 {
				compatible = "amlogic,meson-gxbb-reset";
				reg = <0x00 0x4404 0x00 0x9c>;
				#reset-cells = <0x01>;
				phandle = <0x11>;
			};

			audio-controller@5400 {
				compatible = "amlogic,aiu-gxl\0amlogic,aiu";
				#sound-dai-cells = <0x02>;
				sound-name-prefix = "AIU";
				reg = <0x00 0x5400 0x00 0x2ac>;
				interrupts = <0x00 0x30 0x01 0x00 0x32 0x01>;
				interrupt-names = "i2s\0spdif";
				status = "disabled";
				clocks = <0x03 0x26 0x03 0x28 0x03 0x50 0x03 0x6b 0x03 0x2c 0x03 0x27 0x03 0x51 0x03 0x6e 0x03 0x71>;
				clock-names = "pclk\0i2s_pclk\0i2s_aoclk\0i2s_mclk\0i2s_mixer\0spdif_pclk\0spdif_aoclk\0spdif_mclk\0spdif_mclk_sel";
				resets = <0x11 0x06>;
			};

			serial@84c0 {
				compatible = "amlogic,meson-gx-uart";
				reg = <0x00 0x84c0 0x00 0x18>;
				interrupts = <0x00 0x1a 0x01>;
				status = "okay";
				clocks = <0x12 0x03 0x1a 0x12>;
				clock-names = "xtal\0pclk\0baud";
				pinctrl-0 = <0x13 0x14>;
				pinctrl-names = "default";
				uart-has-rtscts;

				bluetooth {
					compatible = "brcm,bcm43438-bt";
					shutdown-gpios = <0x15 0x60 0x00>;
					max-speed = <0x1e8480>;
					clocks = <0x16>;
					clock-names = "lpo";
				};
			};

			serial@84dc {
				compatible = "amlogic,meson-gx-uart";
				reg = <0x00 0x84dc 0x00 0x18>;
				interrupts = <0x00 0x4b 0x01>;
				status = "disabled";
				clocks = <0x12 0x03 0x30 0x12>;
				clock-names = "xtal\0pclk\0baud";
			};

			i2c@8500 {
				compatible = "amlogic,meson-gxbb-i2c";
				reg = <0x00 0x8500 0x00 0x20>;
				interrupts = <0x00 0x15 0x01>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "disabled";
				clocks = <0x03 0x16>;
			};

			pwm@8550 {
				compatible = "amlogic,meson-gx-pwm\0amlogic,meson-gxbb-pwm";
				reg = <0x00 0x8550 0x00 0x10>;
				#pwm-cells = <0x03>;
				status = "disabled";
			};

			pwm@8650 {
				compatible = "amlogic,meson-gx-pwm\0amlogic,meson-gxbb-pwm";
				reg = <0x00 0x8650 0x00 0x10>;
				#pwm-cells = <0x03>;
				status = "disabled";
			};

			adc@8680 {
				compatible = "amlogic,meson-gxl-saradc\0amlogic,meson-saradc";
				reg = <0x00 0x8680 0x00 0x34>;
				#io-channel-cells = <0x01>;
				interrupts = <0x00 0x49 0x01>;
				status = "okay";
				clocks = <0x12 0x03 0x17 0x03 0x61 0x03 0x62>;
				clock-names = "clkin\0core\0adc_clk\0adc_sel";
				vref-supply = <0x17>;
			};

			pwm@86c0 {
				compatible = "amlogic,meson-gx-pwm\0amlogic,meson-gxbb-pwm";
				reg = <0x00 0x86c0 0x00 0x10>;
				#pwm-cells = <0x03>;
				status = "okay";
				pinctrl-0 = <0x18>;
				pinctrl-names = "default";
				clocks = <0x03 0x06>;
				clock-names = "clkin0";
				phandle = <0x3c>;
			};

			serial@8700 {
				compatible = "amlogic,meson-gx-uart";
				reg = <0x00 0x8700 0x00 0x18>;
				interrupts = <0x00 0x5d 0x01>;
				status = "disabled";
				clocks = <0x12 0x03 0x44 0x12>;
				clock-names = "xtal\0pclk\0baud";
			};

			clock-measure@8758 {
				compatible = "amlogic,meson-gx-clk-measure";
				reg = <0x00 0x8758 0x00 0x10>;
			};

			i2c@87c0 {
				compatible = "amlogic,meson-gxbb-i2c";
				reg = <0x00 0x87c0 0x00 0x20>;
				interrupts = <0x00 0xd6 0x01>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "disabled";
				clocks = <0x03 0x16>;
			};

			i2c@87e0 {
				compatible = "amlogic,meson-gxbb-i2c";
				reg = <0x00 0x87e0 0x00 0x20>;
				interrupts = <0x00 0xd7 0x01>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "disabled";
				clocks = <0x03 0x16>;
			};

			spi@8d80 {
				compatible = "amlogic,meson-gx-spicc";
				reg = <0x00 0x8d80 0x00 0x80>;
				interrupts = <0x00 0x51 0x04>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "disabled";
				clocks = <0x03 0x15>;
				clock-names = "core";
				resets = <0x11 0xc1>;
				num-cs = <0x01>;
			};

			spi@8c80 {
				compatible = "amlogic,meson-gxbb-spifc";
				reg = <0x00 0x8c80 0x00 0x80>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "disabled";
				clocks = <0x03 0x22>;
			};

			watchdog@98d0 {
				compatible = "amlogic,meson-gxbb-wdt";
				reg = <0x00 0x98d0 0x00 0x10>;
				clocks = <0x12>;
			};
		};

		interrupt-controller@c4301000 {
			compatible = "arm,gic-400";
			reg = <0x00 0xc4301000 0x00 0x1000 0x00 0xc4302000 0x00 0x2000 0x00 0xc4304000 0x00 0x2000 0x00 0xc4306000 0x00 0x2000>;
			interrupt-controller;
			interrupts = <0x01 0x09 0xff04>;
			#interrupt-cells = <0x03>;
			#address-cells = <0x00>;
			phandle = <0x01>;
		};

		sram@c8000000 {
			compatible = "mmio-sram";
			reg = <0x00 0xc8000000 0x00 0x14000>;
			#address-cells = <0x01>;
			#size-cells = <0x01>;
			ranges = <0x00 0x00 0xc8000000 0x14000>;

			scp-sram@0 {
				compatible = "amlogic,meson-gxbb-scp-shmem";
				reg = <0x13000 0x400>;
				phandle = <0x0f>;
			};

			scp-sram@200 {
				compatible = "amlogic,meson-gxbb-scp-shmem";
				reg = <0x13400 0x400>;
				phandle = <0x10>;
			};
		};

		bus@c8100000 {
			compatible = "simple-bus";
			reg = <0x00 0xc8100000 0x00 0x100000>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges = <0x00 0x00 0x00 0xc8100000 0x00 0x100000>;

			sys-ctrl@0 {
				compatible = "amlogic,meson-gx-ao-sysctrl\0simple-mfd\0syscon";
				reg = <0x00 0x00 0x00 0x100>;
				phandle = <0x20>;

				clock-controller {
					compatible = "amlogic,meson-gxl-aoclkc\0amlogic,meson-gx-aoclkc";
					#clock-cells = <0x01>;
					#reset-cells = <0x01>;
					clocks = <0x12 0x03 0x0c>;
					clock-names = "xtal\0mpeg-clk";
					phandle = <0x19>;
				};
			};

			cec@100 {
				compatible = "amlogic,meson-gx-ao-cec";
				reg = <0x00 0x100 0x00 0x14>;
				interrupts = <0x00 0xc7 0x01>;
				status = "okay";
				clocks = <0x19 0x06>;
				clock-names = "core";
				pinctrl-0 = <0x1a>;
				pinctrl-names = "default";
				hdmi-phandle = <0x1b>;
			};

			ao-secure@140 {
				compatible = "amlogic,meson-gx-ao-secure\0syscon";
				reg = <0x00 0x140 0x00 0x140>;
				amlogic,has-chip-id;
			};

			serial@4c0 {
				compatible = "amlogic,meson-gx-uart\0amlogic,meson-ao-uart";
				reg = <0x00 0x4c0 0x00 0x18>;
				interrupts = <0x00 0xc1 0x01>;
				status = "okay";
				clocks = <0x12 0x19 0x03 0x12>;
				clock-names = "xtal\0pclk\0baud";
				pinctrl-0 = <0x1c>;
				pinctrl-names = "default";
			};

			serial@4e0 {
				compatible = "amlogic,meson-gx-uart\0amlogic,meson-ao-uart";
				reg = <0x00 0x4e0 0x00 0x18>;
				interrupts = <0x00 0xc5 0x01>;
				status = "disabled";
				clocks = <0x12 0x19 0x04 0x12>;
				clock-names = "xtal\0pclk\0baud";
			};

			i2c@500 {
				compatible = "amlogic,meson-gxbb-i2c";
				reg = <0x00 0x500 0x00 0x20>;
				interrupts = <0x00 0xc3 0x01>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "okay";
				clocks = <0x03 0x5d>;
				pinctrl-0 = <0x1d>;
				pinctrl-names = "default";
				clock-frequency = <0x61a80>;

				oled@3c {
					status = "disabled";
					compatible = "solomon,ssd1306fb-i2c";
					reg = <0x3c>;
					solomon,width = <0x80>;
					solomon,height = <0x40>;
					solomon,page-offset = <0x00>;
					solomon,com-invdir;
				};
			};

			pwm@550 {
				compatible = "amlogic,meson-gx-ao-pwm\0amlogic,meson-gxbb-ao-pwm";
				reg = <0x00 0x550 0x00 0x10>;
				#pwm-cells = <0x03>;
				status = "disabled";
			};

			ir@580 {
				compatible = "amlogic,meson-gx-ir\0amlogic,meson-gxbb-ir";
				reg = <0x00 0x580 0x00 0x40>;
				interrupts = <0x00 0xc4 0x01>;
				status = "okay";
				pinctrl-0 = <0x1e>;
				pinctrl-names = "default";
			};

			pinctrl@14 {
				compatible = "amlogic,meson-gxl-aobus-pinctrl";
				#address-cells = <0x02>;
				#size-cells = <0x02>;
				ranges;
				phandle = <0x1f>;

				bank@14 {
					reg = <0x00 0x14 0x00 0x08 0x00 0x2c 0x00 0x04 0x00 0x24 0x00 0x08>;
					reg-names = "mux\0pull\0gpio";
					gpio-controller;
					#gpio-cells = <0x02>;
					gpio-ranges = <0x1f 0x00 0x00 0x0e>;
					phandle = <0x3e>;
				};

				uart_ao_a {
					phandle = <0x1c>;

					mux {
						groups = "uart_tx_ao_a\0uart_rx_ao_a";
						function = "uart_ao";
						bias-disable;
					};
				};

				uart_ao_a_cts_rts {

					mux {
						groups = "uart_cts_ao_a\0uart_rts_ao_a";
						function = "uart_ao";
						bias-disable;
					};
				};

				uart_ao_b {

					mux {
						groups = "uart_tx_ao_b\0uart_rx_ao_b";
						function = "uart_ao_b";
						bias-disable;
					};
				};

				uart_ao_b_0_1 {

					mux {
						groups = "uart_tx_ao_b_0\0uart_rx_ao_b_1";
						function = "uart_ao_b";
						bias-disable;
					};
				};

				uart_ao_b_cts_rts {

					mux {
						groups = "uart_cts_ao_b\0uart_rts_ao_b";
						function = "uart_ao_b";
						bias-disable;
					};
				};

				remote_input_ao {
					phandle = <0x1e>;

					mux {
						groups = "remote_input_ao";
						function = "remote_input_ao";
						bias-disable;
					};
				};

				i2c_ao {
					phandle = <0x1d>;

					mux {
						groups = "i2c_sck_ao\0i2c_sda_ao";
						function = "i2c_ao";
						bias-disable;
					};
				};

				pwm_ao_a_3 {

					mux {
						groups = "pwm_ao_a_3";
						function = "pwm_ao_a";
						bias-disable;
					};
				};

				pwm_ao_a_8 {

					mux {
						groups = "pwm_ao_a_8";
						function = "pwm_ao_a";
						bias-disable;
					};
				};

				pwm_ao_b {

					mux {
						groups = "pwm_ao_b";
						function = "pwm_ao_b";
						bias-disable;
					};
				};

				pwm_ao_b_6 {

					mux {
						groups = "pwm_ao_b_6";
						function = "pwm_ao_b";
						bias-disable;
					};
				};

				i2s_out_ch23_ao {

					mux {
						groups = "i2s_out_ch23_ao";
						function = "i2s_out_ao";
						bias-disable;
					};
				};

				i2s_out_ch45_ao {

					mux {
						groups = "i2s_out_ch45_ao";
						function = "i2s_out_ao";
						bias-disable;
					};
				};

				spdif_out_ao_6 {

					mux {
						groups = "spdif_out_ao_6";
						function = "spdif_out_ao";
						bias-disable;
					};
				};

				spdif_out_ao_9 {

					mux {
						groups = "spdif_out_ao_9";
						function = "spdif_out_ao";
						bias-disable;
					};
				};

				ao_cec {
					phandle = <0x1a>;

					mux {
						groups = "ao_cec";
						function = "cec_ao";
						bias-disable;
					};
				};

				ee_cec {

					mux {
						groups = "ee_cec";
						function = "cec_ao";
						bias-disable;
					};
				};
			};
		};

		video-codec@c8820000 {
			compatible = "amlogic,gxl-vdec\0amlogic,gx-vdec";
			reg = <0x00 0xc8820000 0x00 0x10000 0x00 0xc110a580 0x00 0xe4>;
			reg-names = "dos\0esparser";
			interrupts = <0x00 0x2c 0x01 0x00 0x20 0x01>;
			interrupt-names = "vdec\0esparser";
			amlogic,ao-sysctrl = <0x20>;
			amlogic,canvas = <0x21>;
			clocks = <0x03 0x36 0x03 0x11 0x03 0x99 0x03 0x9c>;
			clock-names = "dos_parser\0dos\0vdec_1\0vdec_hevc";
			resets = <0x11 0x28>;
			reset-names = "esparser";
		};

		bus@c8834000 {
			compatible = "simple-bus";
			reg = <0x00 0xc8834000 0x00 0x2000>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges = <0x00 0x00 0x00 0xc8834000 0x00 0x2000>;

			rng {
				compatible = "amlogic,meson-rng";
				reg = <0x00 0x00 0x00 0x04>;
				clocks = <0x03 0x19>;
				clock-names = "core";
			};

			pinctrl@4b0 {
				compatible = "amlogic,meson-gxl-periphs-pinctrl";
				#address-cells = <0x02>;
				#size-cells = <0x02>;
				ranges;
				phandle = <0x22>;

				bank@4b0 {
					reg = <0x00 0x4b0 0x00 0x28 0x00 0x4e8 0x00 0x14 0x00 0x520 0x00 0x14 0x00 0x430 0x00 0x40>;
					reg-names = "mux\0pull\0pull-enable\0gpio";
					gpio-controller;
					#gpio-cells = <0x02>;
					gpio-ranges = <0x22 0x00 0x00 0x64>;
					phandle = <0x15>;
				};

				emmc {
					phandle = <0x2e>;

					mux-0 {
						groups = "emmc_nand_d07\0emmc_cmd";
						function = "emmc";
						bias-pull-up;
					};

					mux-1 {
						groups = "emmc_clk";
						function = "emmc";
						bias-disable;
					};
				};

				emmc-ds {
					phandle = <0x2f>;

					mux {
						groups = "emmc_ds";
						function = "emmc";
						bias-pull-down;
					};
				};

				emmc_clk_gate {
					phandle = <0x30>;

					mux {
						groups = "BOOT_8";
						function = "gpio_periphs";
						bias-pull-down;
					};
				};

				nor {

					mux {
						groups = "nor_d\0nor_q\0nor_c\0nor_cs";
						function = "nor";
						bias-disable;
					};
				};

				spi-pins {

					mux {
						groups = "spi_miso\0spi_mosi\0spi_sclk";
						function = "spi";
						bias-disable;
					};
				};

				spi-ss0 {

					mux {
						groups = "spi_ss0";
						function = "spi";
						bias-disable;
					};
				};

				sdcard {
					phandle = <0x2c>;

					mux-0 {
						groups = "sdcard_d0\0sdcard_d1\0sdcard_d2\0sdcard_d3\0sdcard_cmd";
						function = "sdcard";
						bias-pull-up;
					};

					mux-1 {
						groups = "sdcard_clk";
						function = "sdcard";
						bias-disable;
					};
				};

				sdcard_clk_gate {
					phandle = <0x2d>;

					mux {
						groups = "CARD_2";
						function = "gpio_periphs";
						bias-pull-down;
					};
				};

				sdio {
					phandle = <0x27>;

					mux-0 {
						groups = "sdio_d0\0sdio_d1\0sdio_d2\0sdio_d3\0sdio_cmd";
						function = "sdio";
						bias-pull-up;
					};

					mux-1 {
						groups = "sdio_clk";
						function = "sdio";
						bias-disable;
					};
				};

				sdio_clk_gate {
					phandle = <0x28>;

					mux {
						groups = "GPIOX_4";
						function = "gpio_periphs";
						bias-pull-down;
					};
				};

				sdio_irq {

					mux {
						groups = "sdio_irq";
						function = "sdio";
						bias-disable;
					};
				};

				uart_a {
					phandle = <0x13>;

					mux {
						groups = "uart_tx_a\0uart_rx_a";
						function = "uart_a";
						bias-disable;
					};
				};

				uart_a_cts_rts {
					phandle = <0x14>;

					mux {
						groups = "uart_cts_a\0uart_rts_a";
						function = "uart_a";
						bias-disable;
					};
				};

				uart_b {

					mux {
						groups = "uart_tx_b\0uart_rx_b";
						function = "uart_b";
						bias-disable;
					};
				};

				uart_b_cts_rts {

					mux {
						groups = "uart_cts_b\0uart_rts_b";
						function = "uart_b";
						bias-disable;
					};
				};

				uart_c {

					mux {
						groups = "uart_tx_c\0uart_rx_c";
						function = "uart_c";
						bias-disable;
					};
				};

				uart_c_cts_rts {

					mux {
						groups = "uart_cts_c\0uart_rts_c";
						function = "uart_c";
						bias-disable;
					};
				};

				i2c_a {

					mux {
						groups = "i2c_sck_a\0i2c_sda_a";
						function = "i2c_a";
						bias-disable;
					};
				};

				i2c_b {

					mux {
						groups = "i2c_sck_b\0i2c_sda_b";
						function = "i2c_b";
						bias-disable;
					};
				};

				i2c_c {

					mux {
						groups = "i2c_sck_c\0i2c_sda_c";
						function = "i2c_c";
						bias-disable;
					};
				};

				i2c_c_dv18 {

					mux {
						groups = "i2c_sck_c_dv19\0i2c_sda_c_dv18";
						function = "i2c_c";
						bias-disable;
					};
				};

				eth_c {

					mux {
						groups = "eth_mdio\0eth_mdc\0eth_clk_rx_clk\0eth_rx_dv\0eth_rxd0\0eth_rxd1\0eth_rxd2\0eth_rxd3\0eth_rgmii_tx_clk\0eth_tx_en\0eth_txd0\0eth_txd1\0eth_txd2\0eth_txd3";
						function = "eth";
						bias-disable;
					};
				};

				eth_link_led {
					phandle = <0x24>;

					mux {
						groups = "eth_link_led";
						function = "eth_led";
						bias-disable;
					};
				};

				eth_act_led {
					phandle = <0x25>;

					mux {
						groups = "eth_act_led";
						function = "eth_led";
					};
				};

				pwm_a {

					mux {
						groups = "pwm_a";
						function = "pwm_a";
						bias-disable;
					};
				};

				pwm_b {

					mux {
						groups = "pwm_b";
						function = "pwm_b";
						bias-disable;
					};
				};

				pwm_c {

					mux {
						groups = "pwm_c";
						function = "pwm_c";
						bias-disable;
					};
				};

				pwm_d {

					mux {
						groups = "pwm_d";
						function = "pwm_d";
						bias-disable;
					};
				};

				pwm_e {
					phandle = <0x18>;

					mux {
						groups = "pwm_e";
						function = "pwm_e";
						bias-disable;
					};
				};

				pwm_f_clk {

					mux {
						groups = "pwm_f_clk";
						function = "pwm_f";
						bias-disable;
					};
				};

				pwm_f_x {

					mux {
						groups = "pwm_f_x";
						function = "pwm_f";
						bias-disable;
					};
				};

				hdmi_hpd {
					phandle = <0x36>;

					mux {
						groups = "hdmi_hpd";
						function = "hdmi_hpd";
						bias-disable;
					};
				};

				hdmi_i2c {
					phandle = <0x37>;

					mux {
						groups = "hdmi_sda\0hdmi_scl";
						function = "hdmi_i2c";
						bias-disable;
					};
				};

				i2s_am_clk {

					mux {
						groups = "i2s_am_clk";
						function = "i2s_out";
						bias-disable;
					};
				};

				i2s_out_ao_clk {

					mux {
						groups = "i2s_out_ao_clk";
						function = "i2s_out";
						bias-disable;
					};
				};

				i2s_out_lr_clk {

					mux {
						groups = "i2s_out_lr_clk";
						function = "i2s_out";
						bias-disable;
					};
				};

				i2s_out_ch01 {

					mux {
						groups = "i2s_out_ch01";
						function = "i2s_out";
						bias-disable;
					};
				};

				i2sout_ch23_z {

					mux {
						groups = "i2sout_ch23_z";
						function = "i2s_out";
						bias-disable;
					};
				};

				i2sout_ch45_z {

					mux {
						groups = "i2sout_ch45_z";
						function = "i2s_out";
						bias-disable;
					};
				};

				i2sout_ch67_z {

					mux {
						groups = "i2sout_ch67_z";
						function = "i2s_out";
						bias-disable;
					};
				};

				spdif_out_ao_h {

					mux {
						groups = "spdif_out_h";
						function = "spdif_out";
						bias-disable;
					};
				};
			};

			eth-phy-mux {
				compatible = "mdio-mux-mmioreg\0mdio-mux";
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				reg = <0x00 0x55c 0x00 0x04>;
				mux-mask = <0xffffffff>;
				mdio-parent-bus = <0x23>;

				mdio@e40908ff {
					reg = <0xe40908ff>;
					#address-cells = <0x01>;
					#size-cells = <0x00>;

					ethernet-phy@8 {
						compatible = "ethernet-phy-id0181.4400";
						interrupts = <0x00 0x09 0x04>;
						reg = <0x08>;
						max-speed = <0x64>;
						pinctrl-0 = <0x24 0x25>;
						pinctrl-names = "default";
						phandle = <0x26>;
					};
				};

				mdio@2009087f {
					reg = <0x2009087f>;
					#address-cells = <0x01>;
					#size-cells = <0x00>;
				};
			};
		};

		bus@c8838000 {
			compatible = "simple-bus";
			reg = <0x00 0xc8838000 0x00 0x400>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges = <0x00 0x00 0x00 0xc8838000 0x00 0x400>;

			video-lut@48 {
				compatible = "amlogic,canvas";
				reg = <0x00 0x48 0x00 0x14>;
				phandle = <0x21>;
			};
		};

		bus@c883c000 {
			compatible = "simple-bus";
			reg = <0x00 0xc883c000 0x00 0x2000>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges = <0x00 0x00 0x00 0xc883c000 0x00 0x2000>;

			system-controller@0 {
				compatible = "amlogic,meson-gx-hhi-sysctrl\0simple-mfd\0syscon";
				reg = <0x00 0x00 0x00 0x400>;

				power-controller {
					compatible = "amlogic,meson-gxbb-pwrc";
					#power-domain-cells = <0x01>;
					amlogic,ao-sysctrl = <0x20>;
					resets = <0x11 0x05 0x11 0x0a 0x11 0x0d 0x11 0x25 0x11 0x84 0x11 0x85 0x11 0x86 0x11 0x87 0x11 0x89 0x11 0x8c 0x11 0x8d 0x11 0xe7>;
					reset-names = "viu\0venc\0vcbus\0bt656\0dvin\0rdma\0venci\0vencp\0vdac\0vdi6\0vencl\0vid_lock";
					clocks = <0x03 0x84 0x03 0x8c>;
					clock-names = "vpu\0vapb";
					assigned-clocks = <0x03 0x7e 0x03 0x80 0x03 0x84 0x03 0x85 0x03 0x87 0x03 0x8b>;
					assigned-clock-parents = <0x03 0x05 0x00 0x03 0x80 0x03 0x06 0x00 0x03 0x87>;
					assigned-clock-rates = <0x00 0x27bc86aa 0x00 0x00 0xee6b280 0x00>;
					phandle = <0x02>;
				};

				clock-controller {
					compatible = "amlogic,gxl-clkc";
					#clock-cells = <0x01>;
					clocks = <0x12>;
					clock-names = "xtal";
					phandle = <0x03>;
				};
			};

			mailbox@404 {
				compatible = "amlogic,meson-gxbb-mhu";
				reg = <0x00 0x404 0x00 0x4c>;
				interrupts = <0x00 0xd0 0x01 0x00 0xd1 0x01 0x00 0xd2 0x01>;
				#mbox-cells = <0x01>;
				phandle = <0x0e>;
			};
		};

		ethernet@c9410000 {
			compatible = "amlogic,meson-gxbb-dwmac\0snps,dwmac-3.70a\0snps,dwmac";
			reg = <0x00 0xc9410000 0x00 0x10000 0x00 0xc8834540 0x00 0x04>;
			interrupts = <0x00 0x08 0x04>;
			interrupt-names = "macirq";
			rx-fifo-depth = <0x1000>;
			tx-fifo-depth = <0x800>;
			power-domains = <0x02 0x01>;
			status = "okay";
			clocks = <0x03 0x24 0x03 0x04 0x03 0x0f 0x03 0x04>;
			clock-names = "stmmaceth\0clkin0\0clkin1\0timing-adjustment";
			phy-mode = "rmii";
			phy-handle = <0x26>;

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

		apb@d0000000 {
			compatible = "simple-bus";
			reg = <0x00 0xd0000000 0x00 0x200000>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges = <0x00 0x00 0x00 0xd0000000 0x00 0x200000>;

			mmc@70000 {
				compatible = "amlogic,meson-gx-mmc\0amlogic,meson-gxbb-mmc";
				reg = <0x00 0x70000 0x00 0x800>;
				interrupts = <0x00 0xd8 0x01>;
				status = "okay";
				clocks = <0x03 0x5e 0x03 0x77 0x03 0x04>;
				clock-names = "core\0clkin0\0clkin1";
				resets = <0x11 0x2c>;
				pinctrl-0 = <0x27>;
				pinctrl-1 = <0x28>;
				pinctrl-names = "default\0clk-gate";
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				bus-width = <0x04>;
				cap-sd-highspeed;
				max-frequency = <0x2faf080>;
				non-removable;
				disable-wp;
				keep-power-in-suspend;
				mmc-pwrseq = <0x29>;
				vmmc-supply = <0x2a>;
				vqmmc-supply = <0x2b>;
			};

			mmc@72000 {
				compatible = "amlogic,meson-gx-mmc\0amlogic,meson-gxbb-mmc";
				reg = <0x00 0x72000 0x00 0x800>;
				interrupts = <0x00 0xd9 0x01>;
				status = "okay";
				clocks = <0x03 0x5f 0x03 0x7a 0x03 0x04>;
				clock-names = "core\0clkin0\0clkin1";
				resets = <0x11 0x2d>;
				pinctrl-0 = <0x2c>;
				pinctrl-1 = <0x2d>;
				pinctrl-names = "default\0clk-gate";
				bus-width = <0x04>;
				cap-sd-highspeed;
				max-frequency = <0x2faf080>;
				disable-wp;
				cd-gpios = <0x15 0x30 0x01>;
				vmmc-supply = <0x2a>;
				vqmmc-supply = <0x2b>;
			};

			mmc@74000 {
				compatible = "amlogic,meson-gx-mmc\0amlogic,meson-gxbb-mmc";
				reg = <0x00 0x74000 0x00 0x800>;
				interrupts = <0x00 0xda 0x01>;
				status = "okay";
				clocks = <0x03 0x60 0x03 0x7d 0x03 0x04>;
				clock-names = "core\0clkin0\0clkin1";
				resets = <0x11 0x2e>;
				pinctrl-0 = <0x2e 0x2f>;
				pinctrl-1 = <0x30>;
				pinctrl-names = "default\0clk-gate";
				bus-width = <0x08>;
				cap-mmc-highspeed;
				max-frequency = <0xbebc200>;
				non-removable;
				disable-wp;
				mmc-ddr-1_8v;
				mmc-hs200-1_8v;
				mmc-pwrseq = <0x31>;
				vmmc-supply = <0x32>;
				vqmmc-supply = <0x2b>;
			};

			phy@78000 {
				compatible = "amlogic,meson-gxl-usb2-phy";
				#phy-cells = <0x00>;
				reg = <0x00 0x78000 0x00 0x20>;
				clocks = <0x03 0x37>;
				clock-names = "phy";
				resets = <0x11 0x22>;
				reset-names = "phy";
				status = "okay";
				phy-supply = <0x33>;
				phandle = <0x3a>;
			};

			phy@78020 {
				compatible = "amlogic,meson-gxl-usb2-phy";
				#phy-cells = <0x00>;
				reg = <0x00 0x78020 0x00 0x20>;
				clocks = <0x03 0x37>;
				clock-names = "phy";
				resets = <0x11 0x22>;
				reset-names = "phy";
				status = "okay";
				phandle = <0x3b>;
			};

			gpu@c0000 {
				compatible = "amlogic,meson-gxl-mali\0arm,mali-450";
				reg = <0x00 0xc0000 0x00 0x40000>;
				interrupts = <0x00 0xa0 0x04 0x00 0xa1 0x04 0x00 0xa2 0x04 0x00 0xa3 0x04 0x00 0xa4 0x04 0x00 0xa5 0x04 0x00 0xa6 0x04 0x00 0xa7 0x04 0x00 0xa8 0x04 0x00 0xa9 0x04>;
				interrupt-names = "gp\0gpmmu\0pp\0pmu\0pp0\0ppmmu0\0pp1\0ppmmu1\0pp2\0ppmmu2";
				operating-points-v2 = <0x34>;
				clocks = <0x03 0x0c 0x03 0x6a>;
				clock-names = "bus\0core";
				assigned-clocks = <0x03 0x09>;
				assigned-clock-rates = <0x2c588a00>;
			};
		};

		vpu@d0100000 {
			compatible = "amlogic,meson-gxl-vpu\0amlogic,meson-gx-vpu";
			reg = <0x00 0xd0100000 0x00 0x100000 0x00 0xc883c000 0x00 0x1000>;
			reg-names = "vpu\0hhi";
			interrupts = <0x00 0x03 0x01>;
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			amlogic,canvas = <0x21>;
			power-domains = <0x02 0x00>;

			port@0 {
				reg = <0x00>;
			};

			port@1 {
				reg = <0x01>;

				endpoint {
					remote-endpoint = <0x35>;
					phandle = <0x38>;
				};
			};
		};

		hdmi-tx@c883a000 {
			compatible = "amlogic,meson-gxl-dw-hdmi\0amlogic,meson-gx-dw-hdmi";
			reg = <0x00 0xc883a000 0x00 0x1c>;
			interrupts = <0x00 0x39 0x01>;
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			#sound-dai-cells = <0x00>;
			sound-name-prefix = "HDMITX";
			status = "okay";
			resets = <0x11 0x13 0x11 0x4f 0x11 0x42>;
			reset-names = "hdmitx_apb\0hdmitx\0hdmitx_phy";
			clocks = <0x03 0x3f 0x03 0x0c 0x03 0x4d>;
			clock-names = "isfr\0iahb\0venci";
			pinctrl-0 = <0x36 0x37>;
			pinctrl-names = "default";
			hdmi-supply = <0x33>;
			phandle = <0x1b>;

			port@0 {
				reg = <0x00>;

				endpoint {
					remote-endpoint = <0x38>;
					phandle = <0x35>;
				};
			};

			port@1 {
				reg = <0x01>;

				endpoint {
					remote-endpoint = <0x39>;
					phandle = <0x3d>;
				};
			};
		};

		usb@d0078080 {
			compatible = "amlogic,meson-gxl-usb-ctrl";
			reg = <0x00 0xd0078080 0x00 0x20>;
			interrupts = <0x00 0x10 0x04>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges;
			clocks = <0x03 0x37 0x03 0x40>;
			clock-names = "usb_ctrl\0ddr";
			resets = <0x11 0x22>;
			dr_mode = "host";
			phys = <0x3a 0x3b>;
			phy-names = "usb2-phy0\0usb2-phy1";
			status = "okay";

			usb@c9100000 {
				compatible = "amlogic,meson-g12a-usb\0snps,dwc2";
				reg = <0x00 0xc9100000 0x00 0x40000>;
				interrupts = <0x00 0x1f 0x04>;
				clocks = <0x03 0x33>;
				clock-names = "otg";
				phys = <0x3b>;
				dr_mode = "peripheral";
				g-rx-fifo-size = <0xc0>;
				g-np-tx-fifo-size = <0x80>;
				g-tx-fifo-size = <0x80 0x80 0x10 0x10 0x10>;
			};

			usb@c9000000 {
				compatible = "snps,dwc3";
				reg = <0x00 0xc9000000 0x00 0x100000>;
				interrupts = <0x00 0x1e 0x04>;
				dr_mode = "host";
				maximum-speed = "high-speed";
				snps,dis_u2_susphy_quirk;
			};
		};

		audio-controller@c8832000 {
			compatible = "amlogic,t9015";
			reg = <0x00 0xc8832000 0x00 0x14>;
			#sound-dai-cells = <0x00>;
			sound-name-prefix = "ACODEC";
			clocks = <0x03 0xce>;
			clock-names = "pclk";
			resets = <0x11 0x3d>;
			status = "disabled";
		};

		crypto@c883e000 {
			compatible = "amlogic,gxl-crypto";
			reg = <0x00 0xc883e000 0x00 0x36>;
			interrupts = <0x00 0xbc 0x01 0x00 0xbd 0x01>;
			clocks = <0x03 0x2e>;
			clock-names = "blkmv";
			status = "okay";
		};
	};

	opp-table {
		compatible = "operating-points-v2";
		phandle = <0x34>;

		opp-125000000 {
			opp-hz = <0x00 0x7735940>;
			opp-microvolt = <0xe7ef0>;
		};

		opp-250000000 {
			opp-hz = <0x00 0xee6b280>;
			opp-microvolt = <0xe7ef0>;
		};

		opp-285714285 {
			opp-hz = <0x00 0x1107a76d>;
			opp-microvolt = <0xe7ef0>;
		};

		opp-400000000 {
			opp-hz = <0x00 0x17d78400>;
			opp-microvolt = <0xe7ef0>;
		};

		opp-500000000 {
			opp-hz = <0x00 0x1dcd6500>;
			opp-microvolt = <0xe7ef0>;
		};

		opp-666666666 {
			opp-hz = <0x00 0x27bc86aa>;
			opp-microvolt = <0xe7ef0>;
		};

		opp-744000000 {
			opp-hz = <0x00 0x2c588a00>;
			opp-microvolt = <0xe7ef0>;
		};
	};

	aliases {
		serial0 = "/soc/bus@c8100000/serial@4c0";
		ethernet0 = "/soc/ethernet@c9410000";
	};

	memory@0 {
		device_type = "memory";
		reg = <0x00 0x00 0x00 0x80000000>;
	};

	regulator-hdmi-5v {
		compatible = "regulator-fixed";
		regulator-name = "OTG_5V";
		regulator-min-microvolt = <0x4c4b40>;
		regulator-max-microvolt = <0x4c4b40>;
		gpio = <0x15 0x15 0x00>;
		enable-active-high;
		regulator-always-on;
		phandle = <0x33>;
	};

	regulator-vddio_boot {
		compatible = "regulator-fixed";
		regulator-name = "VDDIO_BOOT";
		regulator-min-microvolt = <0x1b7740>;
		regulator-max-microvolt = <0x1b7740>;
		phandle = <0x2b>;
	};

	regulator-vddao_3v3 {
		compatible = "regulator-fixed";
		regulator-name = "VDDAO_3V3";
		regulator-min-microvolt = <0x325aa0>;
		regulator-max-microvolt = <0x325aa0>;
		phandle = <0x2a>;
	};

	regulator-vddio_ao18 {
		compatible = "regulator-fixed";
		regulator-name = "VDDIO_AO18";
		regulator-min-microvolt = <0x1b7740>;
		regulator-max-microvolt = <0x1b7740>;
		phandle = <0x17>;
	};

	regulator-vcc_3v3 {
		compatible = "regulator-fixed";
		regulator-name = "VCC_3V3";
		regulator-min-microvolt = <0x325aa0>;
		regulator-max-microvolt = <0x325aa0>;
		phandle = <0x32>;
	};

	emmc-pwrseq {
		compatible = "mmc-pwrseq-emmc";
		reset-gpios = <0x15 0x23 0x01>;
		phandle = <0x31>;
	};

	wifi32k {
		compatible = "pwm-clock";
		#clock-cells = <0x00>;
		clock-frequency = <0x8000>;
		pwms = <0x3c 0x00 0x7736 0x00>;
		phandle = <0x16>;
	};

	sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		reset-gpios = <0x15 0x55 0x01>;
		clocks = <0x16>;
		clock-names = "ext_clock";
		phandle = <0x29>;
	};

	hdmi-connector {
		compatible = "hdmi-connector";
		type = "a";

		port {

			endpoint {
				remote-endpoint = <0x3d>;
				phandle = <0x39>;
			};
		};
	};

	leds {
		compatible = "gpio-leds";

		led-blue {
			label = "blue";
			color = <0x03>;
			function = "status";
			gpios = <0x15 0x49 0x00>;
			linux,default-trigger = "activity";
		};

		led-red {
			label = "red";
			color = <0x01>;
			function = "disk-activity";
			gpios = <0x15 0x4b 0x00>;
			panic-indicator;
		};

		led-green {
			label = "green";
			color = <0x02>;
			function = "disk-activity";
			gpios = <0x15 0x4c 0x00>;
		};
	};

	gpio-fan {
		#cooling-cells = <0x02>;
		compatible = "gpio-fan";
		gpio-fan,speed-map = <0x00 0x00 0x1194 0x01>;
		gpios = <0x3e 0x03 0x00>;
		status = "okay";
	};

	gpio-keys-polled {
		compatible = "gpio-keys-polled";
		poll-interval = <0x64>;

		power-button {
			label = "power";
			linux,code = <0x74>;
			gpios = <0x3e 0x02 0x01>;
		};

		reset-button {
			label = "reset";
			linux,code = <0x1d2>;
			gpios = <0x3e 0x09 0x01>;
		};

		ap-button {
			label = "ap";
			linux,code = <0x1d3>;
			gpios = <0x3e 0x06 0x01>;
		};
	};
};

而meson-gxl-s905x-p212的设备树信息如下(将meson-gxl-s905x-p212.dtb反编译的结果):

/dts-v1/;

/ {
	interrupt-parent = <0x01>;
	#address-cells = <0x02>;
	#size-cells = <0x02>;
	compatible = "amlogic,p212\0amlogic,s905x\0amlogic,meson-gxl";
	model = "Amlogic Meson GXL (S905X) P212 Development Board";

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

		hwrom@0 {
			reg = <0x00 0x00 0x00 0x1000000>;
			no-map;
			phandle = <0x40>;
		};

		secmon@10000000 {
			reg = <0x00 0x10000000 0x00 0x200000>;
			no-map;
			phandle = <0x41>;
		};

		secmon@5000000 {
			reg = <0x00 0x5000000 0x00 0x300000>;
			no-map;
			phandle = <0x42>;
		};

		linux,cma {
			compatible = "shared-dma-pool";
			reusable;
			size = <0x00 0x10000000>;
			alignment = <0x00 0x400000>;
			linux,cma-default;
		};
	};

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

		framebuffer-cvbs {
			compatible = "amlogic,simple-framebuffer\0simple-framebuffer";
			amlogic,pipeline = "vpu-cvbs";
			power-domains = <0x02 0x00>;
			status = "disabled";
			phandle = <0x43>;
		};

		framebuffer-hdmi {
			compatible = "amlogic,simple-framebuffer\0simple-framebuffer";
			amlogic,pipeline = "vpu-hdmi";
			power-domains = <0x02 0x00>;
			status = "disabled";
			clocks = <0x03 0x3f 0x03 0x0c 0x03 0x4d>;
			phandle = <0x44>;
		};
	};

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

		cpu@0 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x00 0x00>;
			enable-method = "psci";
			next-level-cache = <0x04>;
			clocks = <0x05 0x00>;
			#cooling-cells = <0x02>;
			phandle = <0x08>;
		};

		cpu@1 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x00 0x01>;
			enable-method = "psci";
			next-level-cache = <0x04>;
			clocks = <0x05 0x00>;
			#cooling-cells = <0x02>;
			phandle = <0x09>;
		};

		cpu@2 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x00 0x02>;
			enable-method = "psci";
			next-level-cache = <0x04>;
			clocks = <0x05 0x00>;
			#cooling-cells = <0x02>;
			phandle = <0x0a>;
		};

		cpu@3 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x00 0x03>;
			enable-method = "psci";
			next-level-cache = <0x04>;
			clocks = <0x05 0x00>;
			#cooling-cells = <0x02>;
			phandle = <0x0b>;
		};

		l2-cache0 {
			compatible = "cache";
			phandle = <0x04>;
		};
	};

	thermal-zones {

		cpu-thermal {
			polling-delay-passive = <0xfa>;
			polling-delay = <0x3e8>;
			thermal-sensors = <0x06 0x00>;

			trips {

				cpu-passive {
					temperature = <0x13880>;
					hysteresis = <0x7d0>;
					type = "passive";
					phandle = <0x07>;
				};

				cpu-hot {
					temperature = <0x15f90>;
					hysteresis = <0x7d0>;
					type = "hot";
					phandle = <0x0c>;
				};

				cpu-critical {
					temperature = <0x1adb0>;
					hysteresis = <0x7d0>;
					type = "critical";
					phandle = <0x45>;
				};
			};

			cooling-maps {
				phandle = <0x46>;

				map0 {
					trip = <0x07>;
					cooling-device = <0x08 0xffffffff 0xffffffff 0x09 0xffffffff 0xffffffff 0x0a 0xffffffff 0xffffffff 0x0b 0xffffffff 0xffffffff>;
				};

				map1 {
					trip = <0x0c>;
					cooling-device = <0x08 0xffffffff 0xffffffff 0x09 0xffffffff 0xffffffff 0x0a 0xffffffff 0xffffffff 0x0b 0xffffffff 0xffffffff>;
				};
			};
		};
	};

	arm-pmu {
		compatible = "arm,cortex-a53-pmu";
		interrupts = <0x00 0x89 0x04 0x00 0x8a 0x04 0x00 0x99 0x04 0x00 0x9a 0x04>;
		interrupt-affinity = <0x08 0x09 0x0a 0x0b>;
	};

	psci {
		compatible = "arm,psci-0.2";
		method = "smc";
	};

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

	xtal-clk {
		compatible = "fixed-clock";
		clock-frequency = <0x16e3600>;
		clock-output-names = "xtal";
		#clock-cells = <0x00>;
		phandle = <0x12>;
	};

	firmware {

		secure-monitor {
			compatible = "amlogic,meson-gx-sm\0amlogic,meson-gxbb-sm";
			phandle = <0x0d>;
		};
	};

	efuse {
		compatible = "amlogic,meson-gx-efuse\0amlogic,meson-gxbb-efuse";
		#address-cells = <0x01>;
		#size-cells = <0x01>;
		read-only;
		secure-monitor = <0x0d>;
		clocks = <0x03 0x3a>;
		phandle = <0x47>;

		sn@14 {
			reg = <0x14 0x10>;
			phandle = <0x48>;
		};

		eth_mac@34 {
			reg = <0x34 0x10>;
			phandle = <0x49>;
		};

		bid@46 {
			reg = <0x46 0x30>;
			phandle = <0x4a>;
		};
	};

	scpi {
		compatible = "amlogic,meson-gxbb-scpi\0arm,scpi-pre-1.0";
		mboxes = <0x0e 0x01 0x0e 0x02>;
		shmem = <0x0f 0x10>;

		clocks {
			compatible = "arm,scpi-clocks";
			phandle = <0x4b>;

			scpi_clocks@0 {
				compatible = "arm,scpi-dvfs-clocks";
				#clock-cells = <0x01>;
				clock-indices = <0x00>;
				clock-output-names = "vcpu";
				phandle = <0x05>;
			};
		};

		sensors {
			compatible = "amlogic,meson-gxbb-scpi-sensors\0arm,scpi-sensors";
			#thermal-sensor-cells = <0x01>;
			phandle = <0x06>;
		};
	};

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

		bus@c1100000 {
			compatible = "simple-bus";
			reg = <0x00 0xc1100000 0x00 0x100000>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges = <0x00 0x00 0x00 0xc1100000 0x00 0x100000>;
			phandle = <0x4c>;

			interrupt-controller@9880 {
				compatible = "amlogic,meson-gpio-intc\0amlogic,meson-gxl-gpio-intc";
				reg = <0x00 0x9880 0x00 0x10>;
				interrupt-controller;
				#interrupt-cells = <0x02>;
				amlogic,channel-interrupts = <0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47>;
				status = "okay";
				phandle = <0x4d>;
			};

			reset-controller@4404 {
				compatible = "amlogic,meson-gxbb-reset";
				reg = <0x00 0x4404 0x00 0x9c>;
				#reset-cells = <0x01>;
				phandle = <0x11>;
			};

			audio-controller@5400 {
				compatible = "amlogic,aiu-gxl\0amlogic,aiu";
				#sound-dai-cells = <0x02>;
				sound-name-prefix = "AIU";
				reg = <0x00 0x5400 0x00 0x2ac>;
				interrupts = <0x00 0x30 0x01 0x00 0x32 0x01>;
				interrupt-names = "i2s\0spdif";
				status = "okay";
				clocks = <0x03 0x26 0x03 0x28 0x03 0x50 0x03 0x6b 0x03 0x2c 0x03 0x27 0x03 0x51 0x03 0x6e 0x03 0x71>;
				clock-names = "pclk\0i2s_pclk\0i2s_aoclk\0i2s_mclk\0i2s_mixer\0spdif_pclk\0spdif_aoclk\0spdif_mclk\0spdif_mclk_sel";
				resets = <0x11 0x06>;
				phandle = <0x3c>;
			};

			serial@84c0 {
				compatible = "amlogic,meson-gx-uart";
				reg = <0x00 0x84c0 0x00 0x18>;
				interrupts = <0x00 0x1a 0x01>;
				status = "okay";
				clocks = <0x12 0x03 0x1a 0x12>;
				clock-names = "xtal\0pclk\0baud";
				pinctrl-0 = <0x13 0x14>;
				pinctrl-names = "default";
				uart-has-rtscts;
				phandle = <0x4e>;

				bluetooth {
					compatible = "brcm,bcm43438-bt";
					shutdown-gpios = <0x15 0x60 0x00>;
					max-speed = <0x1e8480>;
					clocks = <0x16>;
					clock-names = "lpo";
				};
			};

			serial@84dc {
				compatible = "amlogic,meson-gx-uart";
				reg = <0x00 0x84dc 0x00 0x18>;
				interrupts = <0x00 0x4b 0x01>;
				status = "disabled";
				clocks = <0x12 0x03 0x30 0x12>;
				clock-names = "xtal\0pclk\0baud";
				phandle = <0x4f>;
			};

			i2c@8500 {
				compatible = "amlogic,meson-gxbb-i2c";
				reg = <0x00 0x8500 0x00 0x20>;
				interrupts = <0x00 0x15 0x01>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "disabled";
				clocks = <0x03 0x16>;
				phandle = <0x50>;
			};

			pwm@8550 {
				compatible = "amlogic,meson-gx-pwm\0amlogic,meson-gxbb-pwm";
				reg = <0x00 0x8550 0x00 0x10>;
				#pwm-cells = <0x03>;
				status = "disabled";
				phandle = <0x51>;
			};

			pwm@8650 {
				compatible = "amlogic,meson-gx-pwm\0amlogic,meson-gxbb-pwm";
				reg = <0x00 0x8650 0x00 0x10>;
				#pwm-cells = <0x03>;
				status = "disabled";
				phandle = <0x52>;
			};

			adc@8680 {
				compatible = "amlogic,meson-gxl-saradc\0amlogic,meson-saradc";
				reg = <0x00 0x8680 0x00 0x34>;
				#io-channel-cells = <0x01>;
				interrupts = <0x00 0x49 0x01>;
				status = "okay";
				clocks = <0x12 0x03 0x17 0x03 0x61 0x03 0x62>;
				clock-names = "clkin\0core\0adc_clk\0adc_sel";
				vref-supply = <0x17>;
				phandle = <0x53>;
			};

			pwm@86c0 {
				compatible = "amlogic,meson-gx-pwm\0amlogic,meson-gxbb-pwm";
				reg = <0x00 0x86c0 0x00 0x10>;
				#pwm-cells = <0x03>;
				status = "okay";
				pinctrl-0 = <0x18>;
				pinctrl-names = "default";
				clocks = <0x03 0x06>;
				clock-names = "clkin0";
				phandle = <0x3a>;
			};

			serial@8700 {
				compatible = "amlogic,meson-gx-uart";
				reg = <0x00 0x8700 0x00 0x18>;
				interrupts = <0x00 0x5d 0x01>;
				status = "disabled";
				clocks = <0x12 0x03 0x44 0x12>;
				clock-names = "xtal\0pclk\0baud";
				phandle = <0x54>;
			};

			clock-measure@8758 {
				compatible = "amlogic,meson-gx-clk-measure";
				reg = <0x00 0x8758 0x00 0x10>;
			};

			i2c@87c0 {
				compatible = "amlogic,meson-gxbb-i2c";
				reg = <0x00 0x87c0 0x00 0x20>;
				interrupts = <0x00 0xd6 0x01>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "disabled";
				clocks = <0x03 0x16>;
				phandle = <0x55>;
			};

			i2c@87e0 {
				compatible = "amlogic,meson-gxbb-i2c";
				reg = <0x00 0x87e0 0x00 0x20>;
				interrupts = <0x00 0xd7 0x01>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "disabled";
				clocks = <0x03 0x16>;
				phandle = <0x56>;
			};

			spi@8d80 {
				compatible = "amlogic,meson-gx-spicc";
				reg = <0x00 0x8d80 0x00 0x80>;
				interrupts = <0x00 0x51 0x04>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "disabled";
				clocks = <0x03 0x15>;
				clock-names = "core";
				resets = <0x11 0xc1>;
				num-cs = <0x01>;
				phandle = <0x57>;
			};

			spi@8c80 {
				compatible = "amlogic,meson-gxbb-spifc";
				reg = <0x00 0x8c80 0x00 0x80>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "disabled";
				clocks = <0x03 0x22>;
				phandle = <0x58>;
			};

			watchdog@98d0 {
				compatible = "amlogic,meson-gxbb-wdt";
				reg = <0x00 0x98d0 0x00 0x10>;
				clocks = <0x12>;
			};
		};

		interrupt-controller@c4301000 {
			compatible = "arm,gic-400";
			reg = <0x00 0xc4301000 0x00 0x1000 0x00 0xc4302000 0x00 0x2000 0x00 0xc4304000 0x00 0x2000 0x00 0xc4306000 0x00 0x2000>;
			interrupt-controller;
			interrupts = <0x01 0x09 0xff04>;
			#interrupt-cells = <0x03>;
			#address-cells = <0x00>;
			phandle = <0x01>;
		};

		sram@c8000000 {
			compatible = "mmio-sram";
			reg = <0x00 0xc8000000 0x00 0x14000>;
			#address-cells = <0x01>;
			#size-cells = <0x01>;
			ranges = <0x00 0x00 0xc8000000 0x14000>;
			phandle = <0x59>;

			scp-sram@0 {
				compatible = "amlogic,meson-gxbb-scp-shmem";
				reg = <0x13000 0x400>;
				phandle = <0x0f>;
			};

			scp-sram@200 {
				compatible = "amlogic,meson-gxbb-scp-shmem";
				reg = <0x13400 0x400>;
				phandle = <0x10>;
			};
		};

		bus@c8100000 {
			compatible = "simple-bus";
			reg = <0x00 0xc8100000 0x00 0x100000>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges = <0x00 0x00 0x00 0xc8100000 0x00 0x100000>;
			phandle = <0x5a>;

			sys-ctrl@0 {
				compatible = "amlogic,meson-gx-ao-sysctrl\0simple-mfd\0syscon";
				reg = <0x00 0x00 0x00 0x100>;
				phandle = <0x1f>;

				clock-controller {
					compatible = "amlogic,meson-gxl-aoclkc\0amlogic,meson-gx-aoclkc";
					#clock-cells = <0x01>;
					#reset-cells = <0x01>;
					clocks = <0x12 0x03 0x0c>;
					clock-names = "xtal\0mpeg-clk";
					phandle = <0x19>;
				};
			};

			cec@100 {
				compatible = "amlogic,meson-gx-ao-cec";
				reg = <0x00 0x100 0x00 0x14>;
				interrupts = <0x00 0xc7 0x01>;
				status = "okay";
				clocks = <0x19 0x06>;
				clock-names = "core";
				pinctrl-0 = <0x1a>;
				pinctrl-names = "default";
				hdmi-phandle = <0x1b>;
				phandle = <0x5b>;
			};

			ao-secure@140 {
				compatible = "amlogic,meson-gx-ao-secure\0syscon";
				reg = <0x00 0x140 0x00 0x140>;
				amlogic,has-chip-id;
				phandle = <0x5c>;
			};

			serial@4c0 {
				compatible = "amlogic,meson-gx-uart\0amlogic,meson-ao-uart";
				reg = <0x00 0x4c0 0x00 0x18>;
				interrupts = <0x00 0xc1 0x01>;
				status = "okay";
				clocks = <0x12 0x19 0x03 0x12>;
				clock-names = "xtal\0pclk\0baud";
				pinctrl-0 = <0x1c>;
				pinctrl-names = "default";
				phandle = <0x5d>;
			};

			serial@4e0 {
				compatible = "amlogic,meson-gx-uart\0amlogic,meson-ao-uart";
				reg = <0x00 0x4e0 0x00 0x18>;
				interrupts = <0x00 0xc5 0x01>;
				status = "disabled";
				clocks = <0x12 0x19 0x04 0x12>;
				clock-names = "xtal\0pclk\0baud";
				phandle = <0x5e>;
			};

			i2c@500 {
				compatible = "amlogic,meson-gxbb-i2c";
				reg = <0x00 0x500 0x00 0x20>;
				interrupts = <0x00 0xc3 0x01>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				status = "disabled";
				clocks = <0x03 0x5d>;
				phandle = <0x5f>;
			};

			pwm@550 {
				compatible = "amlogic,meson-gx-ao-pwm\0amlogic,meson-gxbb-ao-pwm";
				reg = <0x00 0x550 0x00 0x10>;
				#pwm-cells = <0x03>;
				status = "disabled";
				phandle = <0x60>;
			};

			ir@580 {
				compatible = "amlogic,meson-gx-ir\0amlogic,meson-gxbb-ir";
				reg = <0x00 0x580 0x00 0x40>;
				interrupts = <0x00 0xc4 0x01>;
				status = "okay";
				pinctrl-0 = <0x1d>;
				pinctrl-names = "default";
				phandle = <0x61>;
			};

			pinctrl@14 {
				compatible = "amlogic,meson-gxl-aobus-pinctrl";
				#address-cells = <0x02>;
				#size-cells = <0x02>;
				ranges;
				phandle = <0x1e>;

				bank@14 {
					reg = <0x00 0x14 0x00 0x08 0x00 0x2c 0x00 0x04 0x00 0x24 0x00 0x08>;
					reg-names = "mux\0pull\0gpio";
					gpio-controller;
					#gpio-cells = <0x02>;
					gpio-ranges = <0x1e 0x00 0x00 0x0e>;
					phandle = <0x62>;
				};

				uart_ao_a {
					phandle = <0x1c>;

					mux {
						groups = "uart_tx_ao_a\0uart_rx_ao_a";
						function = "uart_ao";
						bias-disable;
					};
				};

				uart_ao_a_cts_rts {
					phandle = <0x63>;

					mux {
						groups = "uart_cts_ao_a\0uart_rts_ao_a";
						function = "uart_ao";
						bias-disable;
					};
				};

				uart_ao_b {
					phandle = <0x64>;

					mux {
						groups = "uart_tx_ao_b\0uart_rx_ao_b";
						function = "uart_ao_b";
						bias-disable;
					};
				};

				uart_ao_b_0_1 {
					phandle = <0x65>;

					mux {
						groups = "uart_tx_ao_b_0\0uart_rx_ao_b_1";
						function = "uart_ao_b";
						bias-disable;
					};
				};

				uart_ao_b_cts_rts {
					phandle = <0x66>;

					mux {
						groups = "uart_cts_ao_b\0uart_rts_ao_b";
						function = "uart_ao_b";
						bias-disable;
					};
				};

				remote_input_ao {
					phandle = <0x1d>;

					mux {
						groups = "remote_input_ao";
						function = "remote_input_ao";
						bias-disable;
					};
				};

				i2c_ao {
					phandle = <0x67>;

					mux {
						groups = "i2c_sck_ao\0i2c_sda_ao";
						function = "i2c_ao";
						bias-disable;
					};
				};

				pwm_ao_a_3 {
					phandle = <0x68>;

					mux {
						groups = "pwm_ao_a_3";
						function = "pwm_ao_a";
						bias-disable;
					};
				};

				pwm_ao_a_8 {
					phandle = <0x69>;

					mux {
						groups = "pwm_ao_a_8";
						function = "pwm_ao_a";
						bias-disable;
					};
				};

				pwm_ao_b {
					phandle = <0x6a>;

					mux {
						groups = "pwm_ao_b";
						function = "pwm_ao_b";
						bias-disable;
					};
				};

				pwm_ao_b_6 {
					phandle = <0x6b>;

					mux {
						groups = "pwm_ao_b_6";
						function = "pwm_ao_b";
						bias-disable;
					};
				};

				i2s_out_ch23_ao {
					phandle = <0x6c>;

					mux {
						groups = "i2s_out_ch23_ao";
						function = "i2s_out_ao";
						bias-disable;
					};
				};

				i2s_out_ch45_ao {
					phandle = <0x6d>;

					mux {
						groups = "i2s_out_ch45_ao";
						function = "i2s_out_ao";
						bias-disable;
					};
				};

				spdif_out_ao_6 {
					phandle = <0x6e>;

					mux {
						groups = "spdif_out_ao_6";
						function = "spdif_out_ao";
						bias-disable;
					};
				};

				spdif_out_ao_9 {
					phandle = <0x6f>;

					mux {
						groups = "spdif_out_ao_9";
						function = "spdif_out_ao";
						bias-disable;
					};
				};

				ao_cec {
					phandle = <0x1a>;

					mux {
						groups = "ao_cec";
						function = "cec_ao";
						bias-disable;
					};
				};

				ee_cec {
					phandle = <0x70>;

					mux {
						groups = "ee_cec";
						function = "cec_ao";
						bias-disable;
					};
				};
			};
		};

		video-codec@c8820000 {
			compatible = "amlogic,gxl-vdec\0amlogic,gx-vdec";
			reg = <0x00 0xc8820000 0x00 0x10000 0x00 0xc110a580 0x00 0xe4>;
			reg-names = "dos\0esparser";
			interrupts = <0x00 0x2c 0x01 0x00 0x20 0x01>;
			interrupt-names = "vdec\0esparser";
			amlogic,ao-sysctrl = <0x1f>;
			amlogic,canvas = <0x20>;
			clocks = <0x03 0x36 0x03 0x11 0x03 0x99 0x03 0x9c>;
			clock-names = "dos_parser\0dos\0vdec_1\0vdec_hevc";
			resets = <0x11 0x28>;
			reset-names = "esparser";
			phandle = <0x71>;
		};

		bus@c8834000 {
			compatible = "simple-bus";
			reg = <0x00 0xc8834000 0x00 0x2000>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges = <0x00 0x00 0x00 0xc8834000 0x00 0x2000>;
			phandle = <0x72>;

			rng {
				compatible = "amlogic,meson-rng";
				reg = <0x00 0x00 0x00 0x04>;
				clocks = <0x03 0x19>;
				clock-names = "core";
				phandle = <0x73>;
			};

			pinctrl@4b0 {
				compatible = "amlogic,meson-gxl-periphs-pinctrl";
				#address-cells = <0x02>;
				#size-cells = <0x02>;
				ranges;
				phandle = <0x21>;

				bank@4b0 {
					reg = <0x00 0x4b0 0x00 0x28 0x00 0x4e8 0x00 0x14 0x00 0x520 0x00 0x14 0x00 0x430 0x00 0x40>;
					reg-names = "mux\0pull\0pull-enable\0gpio";
					gpio-controller;
					#gpio-cells = <0x02>;
					gpio-ranges = <0x21 0x00 0x00 0x64>;
					phandle = <0x15>;
				};

				emmc {
					phandle = <0x2b>;

					mux-0 {
						groups = "emmc_nand_d07\0emmc_cmd";
						function = "emmc";
						bias-pull-up;
					};

					mux-1 {
						groups = "emmc_clk";
						function = "emmc";
						bias-disable;
					};
				};

				emmc-ds {
					phandle = <0x2c>;

					mux {
						groups = "emmc_ds";
						function = "emmc";
						bias-pull-down;
					};
				};

				emmc_clk_gate {
					phandle = <0x2d>;

					mux {
						groups = "BOOT_8";
						function = "gpio_periphs";
						bias-pull-down;
					};
				};

				nor {
					phandle = <0x74>;

					mux {
						groups = "nor_d\0nor_q\0nor_c\0nor_cs";
						function = "nor";
						bias-disable;
					};
				};

				spi-pins {
					phandle = <0x75>;

					mux {
						groups = "spi_miso\0spi_mosi\0spi_sclk";
						function = "spi";
						bias-disable;
					};
				};

				spi-ss0 {
					phandle = <0x76>;

					mux {
						groups = "spi_ss0";
						function = "spi";
						bias-disable;
					};
				};

				sdcard {
					phandle = <0x29>;

					mux-0 {
						groups = "sdcard_d0\0sdcard_d1\0sdcard_d2\0sdcard_d3\0sdcard_cmd";
						function = "sdcard";
						bias-pull-up;
					};

					mux-1 {
						groups = "sdcard_clk";
						function = "sdcard";
						bias-disable;
					};
				};

				sdcard_clk_gate {
					phandle = <0x2a>;

					mux {
						groups = "CARD_2";
						function = "gpio_periphs";
						bias-pull-down;
					};
				};

				sdio {
					phandle = <0x24>;

					mux-0 {
						groups = "sdio_d0\0sdio_d1\0sdio_d2\0sdio_d3\0sdio_cmd";
						function = "sdio";
						bias-pull-up;
					};

					mux-1 {
						groups = "sdio_clk";
						function = "sdio";
						bias-disable;
					};
				};

				sdio_clk_gate {
					phandle = <0x25>;

					mux {
						groups = "GPIOX_4";
						function = "gpio_periphs";
						bias-pull-down;
					};
				};

				sdio_irq {
					phandle = <0x77>;

					mux {
						groups = "sdio_irq";
						function = "sdio";
						bias-disable;
					};
				};

				uart_a {
					phandle = <0x13>;

					mux {
						groups = "uart_tx_a\0uart_rx_a";
						function = "uart_a";
						bias-disable;
					};
				};

				uart_a_cts_rts {
					phandle = <0x14>;

					mux {
						groups = "uart_cts_a\0uart_rts_a";
						function = "uart_a";
						bias-disable;
					};
				};

				uart_b {
					phandle = <0x78>;

					mux {
						groups = "uart_tx_b\0uart_rx_b";
						function = "uart_b";
						bias-disable;
					};
				};

				uart_b_cts_rts {
					phandle = <0x79>;

					mux {
						groups = "uart_cts_b\0uart_rts_b";
						function = "uart_b";
						bias-disable;
					};
				};

				uart_c {
					phandle = <0x7a>;

					mux {
						groups = "uart_tx_c\0uart_rx_c";
						function = "uart_c";
						bias-disable;
					};
				};

				uart_c_cts_rts {
					phandle = <0x7b>;

					mux {
						groups = "uart_cts_c\0uart_rts_c";
						function = "uart_c";
						bias-disable;
					};
				};

				i2c_a {
					phandle = <0x7c>;

					mux {
						groups = "i2c_sck_a\0i2c_sda_a";
						function = "i2c_a";
						bias-disable;
					};
				};

				i2c_b {
					phandle = <0x7d>;

					mux {
						groups = "i2c_sck_b\0i2c_sda_b";
						function = "i2c_b";
						bias-disable;
					};
				};

				i2c_c {
					phandle = <0x7e>;

					mux {
						groups = "i2c_sck_c\0i2c_sda_c";
						function = "i2c_c";
						bias-disable;
					};
				};

				i2c_c_dv18 {
					phandle = <0x7f>;

					mux {
						groups = "i2c_sck_c_dv19\0i2c_sda_c_dv18";
						function = "i2c_c";
						bias-disable;
					};
				};

				eth_c {
					phandle = <0x80>;

					mux {
						groups = "eth_mdio\0eth_mdc\0eth_clk_rx_clk\0eth_rx_dv\0eth_rxd0\0eth_rxd1\0eth_rxd2\0eth_rxd3\0eth_rgmii_tx_clk\0eth_tx_en\0eth_txd0\0eth_txd1\0eth_txd2\0eth_txd3";
						function = "eth";
						bias-disable;
					};
				};

				eth_link_led {
					phandle = <0x81>;

					mux {
						groups = "eth_link_led";
						function = "eth_led";
						bias-disable;
					};
				};

				eth_act_led {
					phandle = <0x82>;

					mux {
						groups = "eth_act_led";
						function = "eth_led";
					};
				};

				pwm_a {
					phandle = <0x83>;

					mux {
						groups = "pwm_a";
						function = "pwm_a";
						bias-disable;
					};
				};

				pwm_b {
					phandle = <0x84>;

					mux {
						groups = "pwm_b";
						function = "pwm_b";
						bias-disable;
					};
				};

				pwm_c {
					phandle = <0x85>;

					mux {
						groups = "pwm_c";
						function = "pwm_c";
						bias-disable;
					};
				};

				pwm_d {
					phandle = <0x86>;

					mux {
						groups = "pwm_d";
						function = "pwm_d";
						bias-disable;
					};
				};

				pwm_e {
					phandle = <0x18>;

					mux {
						groups = "pwm_e";
						function = "pwm_e";
						bias-disable;
					};
				};

				pwm_f_clk {
					phandle = <0x87>;

					mux {
						groups = "pwm_f_clk";
						function = "pwm_f";
						bias-disable;
					};
				};

				pwm_f_x {
					phandle = <0x88>;

					mux {
						groups = "pwm_f_x";
						function = "pwm_f";
						bias-disable;
					};
				};

				hdmi_hpd {
					phandle = <0x34>;

					mux {
						groups = "hdmi_hpd";
						function = "hdmi_hpd";
						bias-disable;
					};
				};

				hdmi_i2c {
					phandle = <0x35>;

					mux {
						groups = "hdmi_sda\0hdmi_scl";
						function = "hdmi_i2c";
						bias-disable;
					};
				};

				i2s_am_clk {
					phandle = <0x89>;

					mux {
						groups = "i2s_am_clk";
						function = "i2s_out";
						bias-disable;
					};
				};

				i2s_out_ao_clk {
					phandle = <0x8a>;

					mux {
						groups = "i2s_out_ao_clk";
						function = "i2s_out";
						bias-disable;
					};
				};

				i2s_out_lr_clk {
					phandle = <0x8b>;

					mux {
						groups = "i2s_out_lr_clk";
						function = "i2s_out";
						bias-disable;
					};
				};

				i2s_out_ch01 {
					phandle = <0x8c>;

					mux {
						groups = "i2s_out_ch01";
						function = "i2s_out";
						bias-disable;
					};
				};

				i2sout_ch23_z {
					phandle = <0x8d>;

					mux {
						groups = "i2sout_ch23_z";
						function = "i2s_out";
						bias-disable;
					};
				};

				i2sout_ch45_z {
					phandle = <0x8e>;

					mux {
						groups = "i2sout_ch45_z";
						function = "i2s_out";
						bias-disable;
					};
				};

				i2sout_ch67_z {
					phandle = <0x8f>;

					mux {
						groups = "i2sout_ch67_z";
						function = "i2s_out";
						bias-disable;
					};
				};

				spdif_out_ao_h {
					phandle = <0x90>;

					mux {
						groups = "spdif_out_h";
						function = "spdif_out";
						bias-disable;
					};
				};
			};

			eth-phy-mux {
				compatible = "mdio-mux-mmioreg\0mdio-mux";
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				reg = <0x00 0x55c 0x00 0x04>;
				mux-mask = <0xffffffff>;
				mdio-parent-bus = <0x22>;

				mdio@e40908ff {
					reg = <0xe40908ff>;
					#address-cells = <0x01>;
					#size-cells = <0x00>;
					phandle = <0x91>;

					ethernet-phy@8 {
						compatible = "ethernet-phy-id0181.4400";
						interrupts = <0x00 0x09 0x04>;
						reg = <0x08>;
						max-speed = <0x64>;
						phandle = <0x23>;
					};
				};

				mdio@2009087f {
					reg = <0x2009087f>;
					#address-cells = <0x01>;
					#size-cells = <0x00>;
					phandle = <0x92>;
				};
			};
		};

		bus@c8838000 {
			compatible = "simple-bus";
			reg = <0x00 0xc8838000 0x00 0x400>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges = <0x00 0x00 0x00 0xc8838000 0x00 0x400>;
			phandle = <0x93>;

			video-lut@48 {
				compatible = "amlogic,canvas";
				reg = <0x00 0x48 0x00 0x14>;
				phandle = <0x20>;
			};
		};

		bus@c883c000 {
			compatible = "simple-bus";
			reg = <0x00 0xc883c000 0x00 0x2000>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges = <0x00 0x00 0x00 0xc883c000 0x00 0x2000>;
			phandle = <0x94>;

			system-controller@0 {
				compatible = "amlogic,meson-gx-hhi-sysctrl\0simple-mfd\0syscon";
				reg = <0x00 0x00 0x00 0x400>;
				phandle = <0x95>;

				power-controller {
					compatible = "amlogic,meson-gxbb-pwrc";
					#power-domain-cells = <0x01>;
					amlogic,ao-sysctrl = <0x1f>;
					resets = <0x11 0x05 0x11 0x0a 0x11 0x0d 0x11 0x25 0x11 0x84 0x11 0x85 0x11 0x86 0x11 0x87 0x11 0x89 0x11 0x8c 0x11 0x8d 0x11 0xe7>;
					reset-names = "viu\0venc\0vcbus\0bt656\0dvin\0rdma\0venci\0vencp\0vdac\0vdi6\0vencl\0vid_lock";
					clocks = <0x03 0x84 0x03 0x8c>;
					clock-names = "vpu\0vapb";
					assigned-clocks = <0x03 0x7e 0x03 0x80 0x03 0x84 0x03 0x85 0x03 0x87 0x03 0x8b>;
					assigned-clock-parents = <0x03 0x05 0x00 0x03 0x80 0x03 0x06 0x00 0x03 0x87>;
					assigned-clock-rates = <0x00 0x27bc86aa 0x00 0x00 0xee6b280 0x00>;
					phandle = <0x02>;
				};

				clock-controller {
					compatible = "amlogic,gxl-clkc";
					#clock-cells = <0x01>;
					clocks = <0x12>;
					clock-names = "xtal";
					phandle = <0x03>;
				};
			};

			mailbox@404 {
				compatible = "amlogic,meson-gxbb-mhu";
				reg = <0x00 0x404 0x00 0x4c>;
				interrupts = <0x00 0xd0 0x01 0x00 0xd1 0x01 0x00 0xd2 0x01>;
				#mbox-cells = <0x01>;
				phandle = <0x0e>;
			};
		};

		ethernet@c9410000 {
			compatible = "amlogic,meson-gxbb-dwmac\0snps,dwmac-3.70a\0snps,dwmac";
			reg = <0x00 0xc9410000 0x00 0x10000 0x00 0xc8834540 0x00 0x04>;
			interrupts = <0x00 0x08 0x04>;
			interrupt-names = "macirq";
			rx-fifo-depth = <0x1000>;
			tx-fifo-depth = <0x800>;
			power-domains = <0x02 0x01>;
			status = "okay";
			clocks = <0x03 0x24 0x03 0x04 0x03 0x0f 0x03 0x04>;
			clock-names = "stmmaceth\0clkin0\0clkin1\0timing-adjustment";
			phy-mode = "rmii";
			phy-handle = <0x23>;
			phandle = <0x96>;

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

		apb@d0000000 {
			compatible = "simple-bus";
			reg = <0x00 0xd0000000 0x00 0x200000>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges = <0x00 0x00 0x00 0xd0000000 0x00 0x200000>;
			phandle = <0x97>;

			mmc@70000 {
				compatible = "amlogic,meson-gx-mmc\0amlogic,meson-gxbb-mmc";
				reg = <0x00 0x70000 0x00 0x800>;
				interrupts = <0x00 0xd8 0x01>;
				status = "okay";
				clocks = <0x03 0x5e 0x03 0x77 0x03 0x04>;
				clock-names = "core\0clkin0\0clkin1";
				resets = <0x11 0x2c>;
				pinctrl-0 = <0x24>;
				pinctrl-1 = <0x25>;
				pinctrl-names = "default\0clk-gate";
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				bus-width = <0x04>;
				cap-sd-highspeed;
				max-frequency = <0x2faf080>;
				non-removable;
				disable-wp;
				keep-power-in-suspend;
				mmc-pwrseq = <0x26>;
				vmmc-supply = <0x27>;
				vqmmc-supply = <0x28>;
				phandle = <0x98>;
			};

			mmc@72000 {
				compatible = "amlogic,meson-gx-mmc\0amlogic,meson-gxbb-mmc";
				reg = <0x00 0x72000 0x00 0x800>;
				interrupts = <0x00 0xd9 0x01>;
				status = "okay";
				clocks = <0x03 0x5f 0x03 0x7a 0x03 0x04>;
				clock-names = "core\0clkin0\0clkin1";
				resets = <0x11 0x2d>;
				pinctrl-0 = <0x29>;
				pinctrl-1 = <0x2a>;
				pinctrl-names = "default\0clk-gate";
				bus-width = <0x04>;
				cap-sd-highspeed;
				max-frequency = <0x2faf080>;
				disable-wp;
				cd-gpios = <0x15 0x30 0x01>;
				vmmc-supply = <0x27>;
				vqmmc-supply = <0x28>;
				phandle = <0x99>;
			};

			mmc@74000 {
				compatible = "amlogic,meson-gx-mmc\0amlogic,meson-gxbb-mmc";
				reg = <0x00 0x74000 0x00 0x800>;
				interrupts = <0x00 0xda 0x01>;
				status = "okay";
				clocks = <0x03 0x60 0x03 0x7d 0x03 0x04>;
				clock-names = "core\0clkin0\0clkin1";
				resets = <0x11 0x2e>;
				pinctrl-0 = <0x2b 0x2c>;
				pinctrl-1 = <0x2d>;
				pinctrl-names = "default\0clk-gate";
				bus-width = <0x08>;
				cap-mmc-highspeed;
				max-frequency = <0xbebc200>;
				non-removable;
				disable-wp;
				mmc-ddr-1_8v;
				mmc-hs200-1_8v;
				mmc-pwrseq = <0x2e>;
				vmmc-supply = <0x2f>;
				vqmmc-supply = <0x28>;
				phandle = <0x9a>;
			};

			phy@78000 {
				compatible = "amlogic,meson-gxl-usb2-phy";
				#phy-cells = <0x00>;
				reg = <0x00 0x78000 0x00 0x20>;
				clocks = <0x03 0x37>;
				clock-names = "phy";
				resets = <0x11 0x22>;
				reset-names = "phy";
				status = "okay";
				phy-supply = <0x30>;
				phandle = <0x38>;
			};

			phy@78020 {
				compatible = "amlogic,meson-gxl-usb2-phy";
				#phy-cells = <0x00>;
				reg = <0x00 0x78020 0x00 0x20>;
				clocks = <0x03 0x37>;
				clock-names = "phy";
				resets = <0x11 0x22>;
				reset-names = "phy";
				status = "okay";
				phandle = <0x39>;
			};

			gpu@c0000 {
				compatible = "amlogic,meson-gxl-mali\0arm,mali-450";
				reg = <0x00 0xc0000 0x00 0x40000>;
				interrupts = <0x00 0xa0 0x04 0x00 0xa1 0x04 0x00 0xa2 0x04 0x00 0xa3 0x04 0x00 0xa4 0x04 0x00 0xa5 0x04 0x00 0xa6 0x04 0x00 0xa7 0x04 0x00 0xa8 0x04 0x00 0xa9 0x04>;
				interrupt-names = "gp\0gpmmu\0pp\0pmu\0pp0\0ppmmu0\0pp1\0ppmmu1\0pp2\0ppmmu2";
				operating-points-v2 = <0x31>;
				clocks = <0x03 0x0c 0x03 0x6a>;
				clock-names = "bus\0core";
				assigned-clocks = <0x03 0x09>;
				assigned-clock-rates = <0x2c588a00>;
				phandle = <0x9b>;
			};
		};

		vpu@d0100000 {
			compatible = "amlogic,meson-gxl-vpu\0amlogic,meson-gx-vpu";
			reg = <0x00 0xd0100000 0x00 0x100000 0x00 0xc883c000 0x00 0x1000>;
			reg-names = "vpu\0hhi";
			interrupts = <0x00 0x03 0x01>;
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			amlogic,canvas = <0x20>;
			power-domains = <0x02 0x00>;
			phandle = <0x9c>;

			port@0 {
				reg = <0x00>;
				phandle = <0x9d>;

				endpoint {
					remote-endpoint = <0x32>;
					phandle = <0x3e>;
				};
			};

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

				endpoint {
					remote-endpoint = <0x33>;
					phandle = <0x36>;
				};
			};
		};

		hdmi-tx@c883a000 {
			compatible = "amlogic,meson-gxl-dw-hdmi\0amlogic,meson-gx-dw-hdmi";
			reg = <0x00 0xc883a000 0x00 0x1c>;
			interrupts = <0x00 0x39 0x01>;
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			#sound-dai-cells = <0x00>;
			sound-name-prefix = "HDMITX";
			status = "okay";
			resets = <0x11 0x13 0x11 0x4f 0x11 0x42>;
			reset-names = "hdmitx_apb\0hdmitx\0hdmitx_phy";
			clocks = <0x03 0x3f 0x03 0x0c 0x03 0x4d>;
			clock-names = "isfr\0iahb\0venci";
			pinctrl-0 = <0x34 0x35>;
			pinctrl-names = "default";
			hdmi-supply = <0x30>;
			phandle = <0x1b>;

			port@0 {
				reg = <0x00>;
				phandle = <0x9f>;

				endpoint {
					remote-endpoint = <0x36>;
					phandle = <0x33>;
				};
			};

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

				endpoint {
					remote-endpoint = <0x37>;
					phandle = <0x3f>;
				};
			};
		};

		usb@d0078080 {
			compatible = "amlogic,meson-gxl-usb-ctrl";
			reg = <0x00 0xd0078080 0x00 0x20>;
			interrupts = <0x00 0x10 0x04>;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			ranges;
			clocks = <0x03 0x37 0x03 0x40>;
			clock-names = "usb_ctrl\0ddr";
			resets = <0x11 0x22>;
			dr_mode = "host";
			phys = <0x38 0x39>;
			phy-names = "usb2-phy0\0usb2-phy1";
			status = "okay";
			phandle = <0xa1>;

			usb@c9100000 {
				compatible = "amlogic,meson-g12a-usb\0snps,dwc2";
				reg = <0x00 0xc9100000 0x00 0x40000>;
				interrupts = <0x00 0x1f 0x04>;
				clocks = <0x03 0x33>;
				clock-names = "otg";
				phys = <0x39>;
				dr_mode = "peripheral";
				g-rx-fifo-size = <0xc0>;
				g-np-tx-fifo-size = <0x80>;
				g-tx-fifo-size = <0x80 0x80 0x10 0x10 0x10>;
				phandle = <0xa2>;
			};

			usb@c9000000 {
				compatible = "snps,dwc3";
				reg = <0x00 0xc9000000 0x00 0x100000>;
				interrupts = <0x00 0x1e 0x04>;
				dr_mode = "host";
				maximum-speed = "high-speed";
				snps,dis_u2_susphy_quirk;
				phandle = <0xa3>;
			};
		};

		audio-controller@c8832000 {
			compatible = "amlogic,t9015";
			reg = <0x00 0xc8832000 0x00 0x14>;
			#sound-dai-cells = <0x00>;
			sound-name-prefix = "ACODEC";
			clocks = <0x03 0xce>;
			clock-names = "pclk";
			resets = <0x11 0x3d>;
			status = "okay";
			AVDD-supply = <0x17>;
			phandle = <0x3d>;
		};

		crypto@c883e000 {
			compatible = "amlogic,gxl-crypto";
			reg = <0x00 0xc883e000 0x00 0x36>;
			interrupts = <0x00 0xbc 0x01 0x00 0xbd 0x01>;
			clocks = <0x03 0x2e>;
			clock-names = "blkmv";
			status = "okay";
			phandle = <0xa4>;
		};
	};

	opp-table {
		compatible = "operating-points-v2";
		phandle = <0x31>;

		opp-125000000 {
			opp-hz = <0x00 0x7735940>;
			opp-microvolt = <0xe7ef0>;
		};

		opp-250000000 {
			opp-hz = <0x00 0xee6b280>;
			opp-microvolt = <0xe7ef0>;
		};

		opp-285714285 {
			opp-hz = <0x00 0x1107a76d>;
			opp-microvolt = <0xe7ef0>;
		};

		opp-400000000 {
			opp-hz = <0x00 0x17d78400>;
			opp-microvolt = <0xe7ef0>;
		};

		opp-500000000 {
			opp-hz = <0x00 0x1dcd6500>;
			opp-microvolt = <0xe7ef0>;
		};

		opp-666666666 {
			opp-hz = <0x00 0x27bc86aa>;
			opp-microvolt = <0xe7ef0>;
		};

		opp-744000000 {
			opp-hz = <0x00 0x2c588a00>;
			opp-microvolt = <0xe7ef0>;
		};
	};

	aliases {
		serial0 = "/soc/bus@c8100000/serial@4c0";
		ethernet0 = "/soc/ethernet@c9410000";
	};

	analog-amplifier {
		compatible = "simple-audio-amplifier";
		sound-name-prefix = "AU2";
		VCC-supply = <0x30>;
		enable-gpios = <0x15 0x15 0x00>;
		phandle = <0x3b>;
	};

	memory@0 {
		device_type = "memory";
		reg = <0x00 0x00 0x00 0x80000000>;
	};

	regulator-hdmi-5v {
		compatible = "regulator-fixed";
		regulator-name = "HDMI_5V";
		regulator-min-microvolt = <0x4c4b40>;
		regulator-max-microvolt = <0x4c4b40>;
		gpio = <0x15 0x13 0x00>;
		enable-active-high;
		regulator-always-on;
		phandle = <0x30>;
	};

	regulator-vddio_boot {
		compatible = "regulator-fixed";
		regulator-name = "VDDIO_BOOT";
		regulator-min-microvolt = <0x1b7740>;
		regulator-max-microvolt = <0x1b7740>;
		phandle = <0x28>;
	};

	regulator-vddao_3v3 {
		compatible = "regulator-fixed";
		regulator-name = "VDDAO_3V3";
		regulator-min-microvolt = <0x325aa0>;
		regulator-max-microvolt = <0x325aa0>;
		phandle = <0x27>;
	};

	regulator-vddio_ao18 {
		compatible = "regulator-fixed";
		regulator-name = "VDDIO_AO18";
		regulator-min-microvolt = <0x1b7740>;
		regulator-max-microvolt = <0x1b7740>;
		phandle = <0x17>;
	};

	regulator-vcc_3v3 {
		compatible = "regulator-fixed";
		regulator-name = "VCC_3V3";
		regulator-min-microvolt = <0x325aa0>;
		regulator-max-microvolt = <0x325aa0>;
		phandle = <0x2f>;
	};

	emmc-pwrseq {
		compatible = "mmc-pwrseq-emmc";
		reset-gpios = <0x15 0x23 0x01>;
		phandle = <0x2e>;
	};

	wifi32k {
		compatible = "pwm-clock";
		#clock-cells = <0x00>;
		clock-frequency = <0x8000>;
		pwms = <0x3a 0x00 0x7736 0x00>;
		phandle = <0x16>;
	};

	sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		reset-gpios = <0x15 0x55 0x01>;
		clocks = <0x16>;
		clock-names = "ext_clock";
		phandle = <0x26>;
	};

	sound {
		compatible = "amlogic,gx-sound-card";
		model = "GX-SOUND-CARD";
		audio-aux-devs = <0x3b>;
		audio-widgets = "Line\0Lineout";
		audio-routing = "AU2 INL\0ACODEC LOLN\0AU2 INR\0ACODEC LORN\0Lineout\0AU2 OUTL\0Lineout\0AU2 OUTR";
		assigned-clocks = <0x03 0x0f 0x03 0x0d 0x03 0x0e>;
		assigned-clock-parents = <0x00 0x00 0x00>;
		assigned-clock-rates = <0x11940000 0x10266000 0x17700000>;
		status = "okay";

		dai-link-0 {
			sound-dai = <0x3c 0x00 0x00>;
		};

		dai-link-1 {
			sound-dai = <0x3c 0x00 0x02>;
			dai-format = "i2s";
			mclk-fs = <0x200>;

			codec-0 {
				sound-dai = <0x3c 0x01 0x00>;
			};

			codec-1 {
				sound-dai = <0x3c 0x02 0x00>;
			};
		};

		dai-link-2 {
			sound-dai = <0x3c 0x01 0x02>;

			codec-0 {
				sound-dai = <0x1b>;
			};
		};

		dai-link-3 {
			sound-dai = <0x3c 0x02 0x02>;

			codec-0 {
				sound-dai = <0x3d>;
			};
		};
	};

	cvbs-connector {
		compatible = "composite-video-connector";

		port {

			endpoint {
				remote-endpoint = <0x3e>;
				phandle = <0x32>;
			};
		};
	};

	hdmi-connector {
		compatible = "hdmi-connector";
		type = "a";

		port {

			endpoint {
				remote-endpoint = <0x3f>;
				phandle = <0x37>;
			};
		};
	};

	__symbols__ {
		hwrom_reserved = "/reserved-memory/hwrom@0";
		secmon_reserved = "/reserved-memory/secmon@10000000";
		secmon_reserved_alt = "/reserved-memory/secmon@5000000";
		simplefb_cvbs = "/chosen/framebuffer-cvbs";
		simplefb_hdmi = "/chosen/framebuffer-hdmi";
		cpu0 = "/cpus/cpu@0";
		cpu1 = "/cpus/cpu@1";
		cpu2 = "/cpus/cpu@2";
		cpu3 = "/cpus/cpu@3";
		l2 = "/cpus/l2-cache0";
		cpu_passive = "/thermal-zones/cpu-thermal/trips/cpu-passive";
		cpu_hot = "/thermal-zones/cpu-thermal/trips/cpu-hot";
		cpu_critical = "/thermal-zones/cpu-thermal/trips/cpu-critical";
		cpu_cooling_maps = "/thermal-zones/cpu-thermal/cooling-maps";
		xtal = "/xtal-clk";
		sm = "/firmware/secure-monitor";
		efuse = "/efuse";
		sn = "/efuse/sn@14";
		eth_mac = "/efuse/eth_mac@34";
		bid = "/efuse/bid@46";
		scpi_clocks = "/scpi/clocks";
		scpi_dvfs = "/scpi/clocks/scpi_clocks@0";
		scpi_sensors = "/scpi/sensors";
		cbus = "/soc/bus@c1100000";
		gpio_intc = "/soc/bus@c1100000/interrupt-controller@9880";
		reset = "/soc/bus@c1100000/reset-controller@4404";
		aiu = "/soc/bus@c1100000/audio-controller@5400";
		uart_A = "/soc/bus@c1100000/serial@84c0";
		uart_B = "/soc/bus@c1100000/serial@84dc";
		i2c_A = "/soc/bus@c1100000/i2c@8500";
		pwm_ab = "/soc/bus@c1100000/pwm@8550";
		pwm_cd = "/soc/bus@c1100000/pwm@8650";
		saradc = "/soc/bus@c1100000/adc@8680";
		pwm_ef = "/soc/bus@c1100000/pwm@86c0";
		uart_C = "/soc/bus@c1100000/serial@8700";
		i2c_B = "/soc/bus@c1100000/i2c@87c0";
		i2c_C = "/soc/bus@c1100000/i2c@87e0";
		spicc = "/soc/bus@c1100000/spi@8d80";
		spifc = "/soc/bus@c1100000/spi@8c80";
		gic = "/soc/interrupt-controller@c4301000";
		sram = "/soc/sram@c8000000";
		cpu_scp_lpri = "/soc/sram@c8000000/scp-sram@0";
		cpu_scp_hpri = "/soc/sram@c8000000/scp-sram@200";
		aobus = "/soc/bus@c8100000";
		sysctrl_AO = "/soc/bus@c8100000/sys-ctrl@0";
		clkc_AO = "/soc/bus@c8100000/sys-ctrl@0/clock-controller";
		cec_AO = "/soc/bus@c8100000/cec@100";
		sec_AO = "/soc/bus@c8100000/ao-secure@140";
		uart_AO = "/soc/bus@c8100000/serial@4c0";
		uart_AO_B = "/soc/bus@c8100000/serial@4e0";
		i2c_AO = "/soc/bus@c8100000/i2c@500";
		pwm_AO_ab = "/soc/bus@c8100000/pwm@550";
		ir = "/soc/bus@c8100000/ir@580";
		pinctrl_aobus = "/soc/bus@c8100000/pinctrl@14";
		gpio_ao = "/soc/bus@c8100000/pinctrl@14/bank@14";
		uart_ao_a_pins = "/soc/bus@c8100000/pinctrl@14/uart_ao_a";
		uart_ao_a_cts_rts_pins = "/soc/bus@c8100000/pinctrl@14/uart_ao_a_cts_rts";
		uart_ao_b_pins = "/soc/bus@c8100000/pinctrl@14/uart_ao_b";
		uart_ao_b_0_1_pins = "/soc/bus@c8100000/pinctrl@14/uart_ao_b_0_1";
		uart_ao_b_cts_rts_pins = "/soc/bus@c8100000/pinctrl@14/uart_ao_b_cts_rts";
		remote_input_ao_pins = "/soc/bus@c8100000/pinctrl@14/remote_input_ao";
		i2c_ao_pins = "/soc/bus@c8100000/pinctrl@14/i2c_ao";
		pwm_ao_a_3_pins = "/soc/bus@c8100000/pinctrl@14/pwm_ao_a_3";
		pwm_ao_a_8_pins = "/soc/bus@c8100000/pinctrl@14/pwm_ao_a_8";
		pwm_ao_b_pins = "/soc/bus@c8100000/pinctrl@14/pwm_ao_b";
		pwm_ao_b_6_pins = "/soc/bus@c8100000/pinctrl@14/pwm_ao_b_6";
		i2s_out_ch23_ao_pins = "/soc/bus@c8100000/pinctrl@14/i2s_out_ch23_ao";
		i2s_out_ch45_ao_pins = "/soc/bus@c8100000/pinctrl@14/i2s_out_ch45_ao";
		spdif_out_ao_6_pins = "/soc/bus@c8100000/pinctrl@14/spdif_out_ao_6";
		spdif_out_ao_9_pins = "/soc/bus@c8100000/pinctrl@14/spdif_out_ao_9";
		ao_cec_pins = "/soc/bus@c8100000/pinctrl@14/ao_cec";
		ee_cec_pins = "/soc/bus@c8100000/pinctrl@14/ee_cec";
		vdec = "/soc/video-codec@c8820000";
		periphs = "/soc/bus@c8834000";
		hwrng = "/soc/bus@c8834000/rng";
		pinctrl_periphs = "/soc/bus@c8834000/pinctrl@4b0";
		gpio = "/soc/bus@c8834000/pinctrl@4b0/bank@4b0";
		emmc_pins = "/soc/bus@c8834000/pinctrl@4b0/emmc";
		emmc_ds_pins = "/soc/bus@c8834000/pinctrl@4b0/emmc-ds";
		emmc_clk_gate_pins = "/soc/bus@c8834000/pinctrl@4b0/emmc_clk_gate";
		nor_pins = "/soc/bus@c8834000/pinctrl@4b0/nor";
		spi_pins = "/soc/bus@c8834000/pinctrl@4b0/spi-pins";
		spi_ss0_pins = "/soc/bus@c8834000/pinctrl@4b0/spi-ss0";
		sdcard_pins = "/soc/bus@c8834000/pinctrl@4b0/sdcard";
		sdcard_clk_gate_pins = "/soc/bus@c8834000/pinctrl@4b0/sdcard_clk_gate";
		sdio_pins = "/soc/bus@c8834000/pinctrl@4b0/sdio";
		sdio_clk_gate_pins = "/soc/bus@c8834000/pinctrl@4b0/sdio_clk_gate";
		sdio_irq_pins = "/soc/bus@c8834000/pinctrl@4b0/sdio_irq";
		uart_a_pins = "/soc/bus@c8834000/pinctrl@4b0/uart_a";
		uart_a_cts_rts_pins = "/soc/bus@c8834000/pinctrl@4b0/uart_a_cts_rts";
		uart_b_pins = "/soc/bus@c8834000/pinctrl@4b0/uart_b";
		uart_b_cts_rts_pins = "/soc/bus@c8834000/pinctrl@4b0/uart_b_cts_rts";
		uart_c_pins = "/soc/bus@c8834000/pinctrl@4b0/uart_c";
		uart_c_cts_rts_pins = "/soc/bus@c8834000/pinctrl@4b0/uart_c_cts_rts";
		i2c_a_pins = "/soc/bus@c8834000/pinctrl@4b0/i2c_a";
		i2c_b_pins = "/soc/bus@c8834000/pinctrl@4b0/i2c_b";
		i2c_c_pins = "/soc/bus@c8834000/pinctrl@4b0/i2c_c";
		i2c_c_dv18_pins = "/soc/bus@c8834000/pinctrl@4b0/i2c_c_dv18";
		eth_pins = "/soc/bus@c8834000/pinctrl@4b0/eth_c";
		eth_link_led_pins = "/soc/bus@c8834000/pinctrl@4b0/eth_link_led";
		eth_act_led_pins = "/soc/bus@c8834000/pinctrl@4b0/eth_act_led";
		pwm_a_pins = "/soc/bus@c8834000/pinctrl@4b0/pwm_a";
		pwm_b_pins = "/soc/bus@c8834000/pinctrl@4b0/pwm_b";
		pwm_c_pins = "/soc/bus@c8834000/pinctrl@4b0/pwm_c";
		pwm_d_pins = "/soc/bus@c8834000/pinctrl@4b0/pwm_d";
		pwm_e_pins = "/soc/bus@c8834000/pinctrl@4b0/pwm_e";
		pwm_f_clk_pins = "/soc/bus@c8834000/pinctrl@4b0/pwm_f_clk";
		pwm_f_x_pins = "/soc/bus@c8834000/pinctrl@4b0/pwm_f_x";
		hdmi_hpd_pins = "/soc/bus@c8834000/pinctrl@4b0/hdmi_hpd";
		hdmi_i2c_pins = "/soc/bus@c8834000/pinctrl@4b0/hdmi_i2c";
		i2s_am_clk_pins = "/soc/bus@c8834000/pinctrl@4b0/i2s_am_clk";
		i2s_out_ao_clk_pins = "/soc/bus@c8834000/pinctrl@4b0/i2s_out_ao_clk";
		i2s_out_lr_clk_pins = "/soc/bus@c8834000/pinctrl@4b0/i2s_out_lr_clk";
		i2s_out_ch01_pins = "/soc/bus@c8834000/pinctrl@4b0/i2s_out_ch01";
		i2sout_ch23_z_pins = "/soc/bus@c8834000/pinctrl@4b0/i2sout_ch23_z";
		i2sout_ch45_z_pins = "/soc/bus@c8834000/pinctrl@4b0/i2sout_ch45_z";
		i2sout_ch67_z_pins = "/soc/bus@c8834000/pinctrl@4b0/i2sout_ch67_z";
		spdif_out_h_pins = "/soc/bus@c8834000/pinctrl@4b0/spdif_out_ao_h";
		internal_mdio = "/soc/bus@c8834000/eth-phy-mux/mdio@e40908ff";
		internal_phy = "/soc/bus@c8834000/eth-phy-mux/mdio@e40908ff/ethernet-phy@8";
		external_mdio = "/soc/bus@c8834000/eth-phy-mux/mdio@2009087f";
		dmcbus = "/soc/bus@c8838000";
		canvas = "/soc/bus@c8838000/video-lut@48";
		hiubus = "/soc/bus@c883c000";
		sysctrl = "/soc/bus@c883c000/system-controller@0";
		pwrc = "/soc/bus@c883c000/system-controller@0/power-controller";
		clkc = "/soc/bus@c883c000/system-controller@0/clock-controller";
		mailbox = "/soc/bus@c883c000/mailbox@404";
		ethmac = "/soc/ethernet@c9410000";
		mdio0 = "/soc/ethernet@c9410000/mdio";
		apb = "/soc/apb@d0000000";
		sd_emmc_a = "/soc/apb@d0000000/mmc@70000";
		sd_emmc_b = "/soc/apb@d0000000/mmc@72000";
		sd_emmc_c = "/soc/apb@d0000000/mmc@74000";
		usb2_phy0 = "/soc/apb@d0000000/phy@78000";
		usb2_phy1 = "/soc/apb@d0000000/phy@78020";
		mali = "/soc/apb@d0000000/gpu@c0000";
		vpu = "/soc/vpu@d0100000";
		cvbs_vdac_port = "/soc/vpu@d0100000/port@0";
		cvbs_vdac_out = "/soc/vpu@d0100000/port@0/endpoint";
		hdmi_tx_port = "/soc/vpu@d0100000/port@1";
		hdmi_tx_out = "/soc/vpu@d0100000/port@1/endpoint";
		hdmi_tx = "/soc/hdmi-tx@c883a000";
		hdmi_tx_venc_port = "/soc/hdmi-tx@c883a000/port@0";
		hdmi_tx_in = "/soc/hdmi-tx@c883a000/port@0/endpoint";
		hdmi_tx_tmds_port = "/soc/hdmi-tx@c883a000/port@1";
		hdmi_tx_tmds_out = "/soc/hdmi-tx@c883a000/port@1/endpoint";
		usb = "/soc/usb@d0078080";
		dwc2 = "/soc/usb@d0078080/usb@c9100000";
		dwc3 = "/soc/usb@d0078080/usb@c9000000";
		acodec = "/soc/audio-controller@c8832000";
		crypto = "/soc/crypto@c883e000";
		gpu_opp_table = "/opp-table";
		dio2133 = "/analog-amplifier";
		hdmi_5v = "/regulator-hdmi-5v";
		vddio_boot = "/regulator-vddio_boot";
		vddao_3v3 = "/regulator-vddao_3v3";
		vddio_ao18 = "/regulator-vddio_ao18";
		vcc_3v3 = "/regulator-vcc_3v3";
		emmc_pwrseq = "/emmc-pwrseq";
		wifi32k = "/wifi32k";
		sdio_pwrseq = "/sdio-pwrseq";
		cvbs_connector_in = "/cvbs-connector/port/endpoint";
		hdmi_connector_in = "/hdmi-connector/port/endpoint";
	};
};

3.网络上搜索到的一些其他问题线索

3.1问题链接1

https://www.sima.link/flashing_firmware_bit_atv6/


问题1:刷机时,Amlogic USB Burning Tool识别到设备,点“开始"刷机,出现“[0x00101004]擦除bootloader/USB限流/设备识别/命令结果返回错误”

解决方法:,先点开始,等到设备识别到,直接进入刷机,就突然跳过这个问题。


问题2、刷机时,刷到4% 显示“[0x10302001]Romcode/状态切换/等待设备接入/设备枚举异常”
解决方法:换其他USB口试下


问题3:刷机工具识别不到盒子,电脑usb识别的MTP设备
解决方法:按着reset键,上电5秒6秒后松放,重置盒子,此时电脑usb识别的设备就不是MTP是P212,然后再重新线刷。

3.2其他线索资源

https://blog.csdn.net/qq_31761069/article/details/137455401

https://blog.csdn.net/adinlead/article/details/130122468

https://ruohai.wang/202404/cumebox2-install-armbian/

https://penghong.org.cn/815.html

https://www.mydigit.cn/thread-413920-1-1.html

https://www.right.com.cn/forum/thread-5990353-1-1.html

3.3一个百度云资源共享

https://pan.baidu.com/s/1YhllqtFJQKiNJOD_7le_6g?pwd=93w4

3.4一位兄弟自己的服务器共享资源

https://files.kos.org.cn/私家云/

posted @ 2024-06-05 10:54  日月王  阅读(1958)  评论(0编辑  收藏  举报