/dts-v1/; / { interrupt-parent = <0x01>; #address-cells = <0x02>; #size-cells = <0x02>; compatible = "libretech,aml-s905x-cc\0amlogic,s905x\0amlogic,meson-gxl"; model = "Libre Computer AML-S905X-CC"; aliases { mmc0 = "/soc/apb@d0000000/mmc@72000"; mmc1 = "/soc/apb@d0000000/mmc@74000"; mmc2 = "/soc/apb@d0000000/mmc@70000"; serial0 = "/soc/bus@c8100000/serial@4c0"; ethernet0 = "/soc/ethernet@c9410000"; }; 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; }; secmon@5300000 { reg = <0x00 0x5300000 0x00 0x2000000>; 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"; cache-level = <0x02>; 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"; 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 = "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 = <0x39>; }; serial@84c0 { compatible = "amlogic,meson-gx-uart"; reg = <0x00 0x84c0 0x00 0x18>; interrupts = <0x00 0x1a 0x01>; status = "disabled"; fifo-size = <0x80>; clocks = <0x12 0x03 0x1a 0x12>; clock-names = "xtal\0pclk\0baud"; }; 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 = <0x13>; }; pwm@86c0 { compatible = "amlogic,meson-gx-pwm\0amlogic,meson-gxbb-pwm"; reg = <0x00 0x86c0 0x00 0x10>; #pwm-cells = <0x03>; status = "disabled"; }; 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 = <0x1a>; 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 = <0x14>; }; }; cec@100 { compatible = "amlogic,meson-gx-ao-cec"; reg = <0x00 0x100 0x00 0x14>; interrupts = <0x00 0xc7 0x01>; status = "okay"; clocks = <0x14 0x06>; clock-names = "core"; pinctrl-0 = <0x15>; pinctrl-names = "default"; hdmi-phandle = <0x16>; }; 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 0x14 0x03 0x12>; clock-names = "xtal\0pclk\0baud"; pinctrl-0 = <0x17>; 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 0x14 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 = "disabled"; clocks = <0x03 0x5d>; }; 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 = <0x18>; pinctrl-names = "default"; }; pinctrl@14 { compatible = "amlogic,meson-gxl-aobus-pinctrl"; #address-cells = <0x02>; #size-cells = <0x02>; ranges; phandle = <0x19>; 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 = <0x19 0x00 0x00 0x0e>; gpio-line-names = "UART TX\0UART RX\0Blue LED\0SDCard Voltage Switch\aJ1 Header Pin5\aJ1 Header Pin3\aJ1 Header Pin12\0IR In\09J3 Switch HDMI CEC/7J1 Header Pin11\aJ1 Header Pin13\aJ1 Header Pin15"; phandle = <0x37>; }; uart_ao_a { phandle = <0x17>; 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 = <0x18>; mux { groups = "remote_input_ao"; function = "remote_input_ao"; bias-disable; }; }; i2c_ao { 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 = <0x15>; 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 = <0x1a>; amlogic,canvas = <0x1b>; 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@0 { 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 = <0x1c>; 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 = <0x1c 0x00 0x00 0x64>; gpio-line-names = <0x00 0x00 0x00 0x4574 0x68204c69 0x6e6b204c 0x45440045 0x74682041 0x63746976 0x69747920 0x4c454400 0x48444d49 0x20485044 0x48444d 0x49205344 0x41004844 0x4d492053 0x434c0048 0x444d495f 0x35565f45 0x4e00394a 0x31204865 0x61646572 0x2050696e 0x3200416e 0x616c6f67 0x20417564 0x696f204d 0x75746502 0x4a332048 0x65616465 0x72205069 0x6e36024a 0x33204865 0x61646572 0x2050696e 0x35024a33 0x20486561 0x64657220 0x50696e34 0x24a3320 0x48656164 0x65722050 0x696e3300 0x654d4d43 0x20443000 0x654d4d43 0x20443100 0x654d4d43 0x20443200 0x654d4d43 0x20443300 0x654d4d43 0x20443400 0x654d4d43 0x20443500 0x654d4d43 0x20443600 0x654d4d43 0x20443700 0x654d4d43 0x20436c6b 0x654d4d 0x43205265 0x73657400 0x654d4d43 0x20434d44 0x414c54 0x20424f4f 0x54204d4f 0x44450000 0x654d 0x4d432044 0x61746120 0x5374726f 0x62650053 0x44436172 0x64204431 0x534443 0x61726420 0x44300053 0x44436172 0x6420434c 0x4b005344 0x43617264 0x20434d44 0x534443 0x61726420 0x44330053 0x44436172 0x64204432 0x534443 0x61726420 0x44657400 0x00 0x00 0x00 0x00 0x00 0x00 0x47726565 0x6e204c45 0x44005643 0x434b2045 0x6e61626c 0x65074a31 0x20486561 0x64657220 0x50696e32 0x37074a31 0x20486561 0x64657220 0x50696e32 0x38005643 0x434b2052 0x6567756c 0x61746f72 0x564444 0x45452052 0x6567756c 0x61746f72 0x74a3120 0x48656164 0x65722050 0x696e3232 0x74a3120 0x48656164 0x65722050 0x696e3236 0x74a3120 0x48656164 0x65722050 0x696e3336 0x74a3120 0x48656164 0x65722050 0x696e3338 0x74a3120 0x48656164 0x65722050 0x696e3430 0x74a3120 0x48656164 0x65722050 0x696e3337 0x74a3120 0x48656164 0x65722050 0x696e3333 0x74a3120 0x48656164 0x65722050 0x696e3335 0x74a3120 0x48656164 0x65722050 0x696e3139 0x74a3120 0x48656164 0x65722050 0x696e3231 0x74a3120 0x48656164 0x65722050 0x696e3234 0x74a3120 0x48656164 0x65722050 0x696e3233 0x74a3120 0x48656164 0x65722050 0x696e3807 0x4a312048 0x65616465 0x72205069 0x6e313007 0x4a312048 0x65616465 0x72205069 0x6e313607 0x4a312048 0x65616465 0x72205069 0x6e313807 0x4a312048 0x65616465 0x72205069 0x6e333207 0x4a312048 0x65616465 0x72205069 0x6e323907 0x4a312048 0x65616465 0x72205069 0x6e333107 0x4a312048 0x65616465 0x72205069 0x6e370000>; phandle = <0x23>; }; emmc { phandle = <0x26>; 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 = <0x27>; mux { groups = "emmc_ds"; function = "emmc"; bias-pull-down; }; }; emmc_clk_gate { phandle = <0x28>; 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-idle-high-pins { mux { groups = "spi_sclk"; bias-pull-up; }; }; spi-idle-low-pins { mux { groups = "spi_sclk"; bias-pull-down; }; }; spi-ss0 { mux { groups = "spi_ss0"; function = "spi"; bias-disable; }; }; sdcard { phandle = <0x21>; 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 = <0x22>; mux { groups = "CARD_2"; function = "gpio_periphs"; bias-pull-down; }; }; sdio { 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 { mux { groups = "GPIOX_4"; function = "gpio_periphs"; bias-pull-down; }; }; sdio_irq { mux { groups = "sdio_irq"; function = "sdio"; bias-disable; }; }; uart_a { mux { groups = "uart_tx_a\0uart_rx_a"; function = "uart_a"; bias-disable; }; }; uart_a_cts_rts { 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 = <0x1e>; mux { groups = "eth_link_led"; function = "eth_led"; bias-disable; }; }; eth_act_led { phandle = <0x1f>; 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 { 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 = <0x2f>; mux { groups = "hdmi_hpd"; function = "hdmi_hpd"; bias-disable; }; }; hdmi_i2c { phandle = <0x30>; 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@55c { compatible = "mdio-mux-mmioreg\0mdio-mux"; #address-cells = <0x01>; #size-cells = <0x00>; reg = <0x00 0x55c 0x00 0x04>; mux-mask = <0xffffffff>; mdio-parent-bus = <0x1d>; 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 = <0x1e 0x1f>; pinctrl-names = "default"; phandle = <0x20>; }; }; 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 = <0x1b>; }; }; 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 = <0x1a>; 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 = <0x20>; mdio { #address-cells = <0x01>; #size-cells = <0x00>; compatible = "snps,dwmac-mdio"; phandle = <0x1d>; }; }; 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 0x04>; status = "disabled"; clocks = <0x03 0x5e 0x03 0x77 0x03 0x04>; clock-names = "core\0clkin0\0clkin1"; resets = <0x11 0x2c>; }; mmc@72000 { compatible = "amlogic,meson-gx-mmc\0amlogic,meson-gxbb-mmc"; reg = <0x00 0x72000 0x00 0x800>; interrupts = <0x00 0xd9 0x04>; status = "okay"; clocks = <0x03 0x5f 0x03 0x7a 0x03 0x04>; clock-names = "core\0clkin0\0clkin1"; resets = <0x11 0x2d>; pinctrl-0 = <0x21>; pinctrl-1 = <0x22>; pinctrl-names = "default\0clk-gate"; bus-width = <0x04>; cap-sd-highspeed; max-frequency = <0x2faf080>; disable-wp; cd-gpios = <0x23 0x30 0x01>; vmmc-supply = <0x24>; vqmmc-supply = <0x25>; }; mmc@74000 { compatible = "amlogic,meson-gx-mmc\0amlogic,meson-gxbb-mmc"; reg = <0x00 0x74000 0x00 0x800>; interrupts = <0x00 0xda 0x04>; status = "okay"; clocks = <0x03 0x60 0x03 0x7d 0x03 0x04>; clock-names = "core\0clkin0\0clkin1"; resets = <0x11 0x2e>; pinctrl-0 = <0x26 0x27>; pinctrl-1 = <0x28>; pinctrl-names = "default\0clk-gate"; bus-width = <0x08>; cap-mmc-highspeed; mmc-ddr-1_8v; mmc-hs200-1_8v; max-frequency = <0xbebc200>; disable-wp; mmc-pwrseq = <0x29>; vmmc-supply = <0x24>; vqmmc-supply = <0x2a>; }; 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 = <0x2b>; phandle = <0x33>; }; 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 = <0x34>; }; 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 = <0x2c>; 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 = <0x1b>; power-domains = <0x02 0x00>; port@0 { reg = <0x00>; endpoint { remote-endpoint = <0x2d>; phandle = <0x35>; }; }; port@1 { reg = <0x01>; endpoint { remote-endpoint = <0x2e>; phandle = <0x31>; }; }; }; 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 = <0x2f 0x30>; pinctrl-names = "default"; hdmi-supply = <0x2b>; phandle = <0x16>; port@0 { reg = <0x00>; endpoint { remote-endpoint = <0x31>; phandle = <0x2e>; }; }; port@1 { reg = <0x01>; endpoint { remote-endpoint = <0x32>; phandle = <0x36>; }; }; }; 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 = <0x33 0x34>; 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 = <0x34>; 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 = "okay"; AVDD-supply = <0x13>; phandle = <0x3a>; }; 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 = <0x2c>; 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>; }; }; analog-amplifier { compatible = "simple-audio-amplifier"; sound-name-prefix = "AU2"; VCC-supply = <0x2b>; enable-gpios = <0x23 0x15 0x00>; phandle = <0x38>; }; cvbs-connector { compatible = "composite-video-connector"; port { endpoint { remote-endpoint = <0x35>; phandle = <0x2d>; }; }; }; emmc-pwrseq { compatible = "mmc-pwrseq-emmc"; reset-gpios = <0x23 0x23 0x01>; phandle = <0x29>; }; hdmi-connector { compatible = "hdmi-connector"; type = "a"; port { endpoint { remote-endpoint = <0x36>; phandle = <0x32>; }; }; }; leds { compatible = "gpio-leds"; led-system { label = "librecomputer:system-status"; gpios = <0x23 0x49 0x00>; default-state = "on"; panic-indicator; }; led-blue { label = "librecomputer:blue"; gpios = <0x37 0x02 0x00>; linux,default-trigger = "heartbeat"; }; }; 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 = <0x23 0x13 0x00>; enable-active-high; regulator-always-on; phandle = <0x2b>; }; regulator-vcc_3v3 { compatible = "regulator-fixed"; regulator-name = "VCC_3V3"; regulator-min-microvolt = <0x325aa0>; regulator-max-microvolt = <0x325aa0>; phandle = <0x24>; }; regulator-vcc-card { compatible = "regulator-gpio"; regulator-name = "VCC_CARD"; regulator-min-microvolt = <0x1b7740>; regulator-max-microvolt = <0x325aa0>; gpios = <0x37 0x03 0x00>; gpios-states = <0x00>; states = <0x325aa0 0x00 0x1b7740 0x01>; regulator-settling-time-up-us = <0xc8>; regulator-settling-time-down-us = <0xc350>; phandle = <0x25>; }; regulator-vddio_ao18 { compatible = "regulator-fixed"; regulator-name = "VDDIO_AO18"; regulator-min-microvolt = <0x1b7740>; regulator-max-microvolt = <0x1b7740>; phandle = <0x13>; }; regulator-vddio_boot { compatible = "regulator-fixed"; regulator-name = "VDDIO_BOOT"; regulator-min-microvolt = <0x1b7740>; regulator-max-microvolt = <0x1b7740>; vin-supply = <0x24>; phandle = <0x2a>; }; sound { compatible = "amlogic,gx-sound-card"; model = "LIBRETECH-CC"; audio-aux-devs = <0x38>; audio-widgets = "Line\0Lineout"; audio-routing = "AU2 INL\0ACODEC LOLN\0AU2 INR\0ACODEC LORN\0Lineout\0AU2 OUTL\0Lineout\0AU2 OUTR"; assigned-clocks = <0x03 0x0d 0x03 0x0e 0x03 0x0f>; assigned-clock-parents = <0x00 0x00 0x00>; assigned-clock-rates = <0x11940000 0x10266000 0x17700000>; status = "okay"; dai-link-0 { sound-dai = <0x39 0x00 0x00>; }; dai-link-1 { sound-dai = <0x39 0x00 0x02>; dai-format = "i2s"; mclk-fs = <0x100>; codec-0 { sound-dai = <0x39 0x01 0x00>; }; codec-1 { sound-dai = <0x39 0x02 0x00>; }; }; dai-link-2 { sound-dai = <0x39 0x01 0x02>; codec-0 { sound-dai = <0x16>; }; }; dai-link-3 { sound-dai = <0x39 0x02 0x02>; codec-0 { sound-dai = <0x3a>; }; }; }; };