xref: /freebsd/sys/contrib/device-tree/src/arm64/amlogic/meson-gxl-s905x-vero4k.dts (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
10e8011faSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
20e8011faSEmmanuel Vadot/*
30e8011faSEmmanuel Vadot * Copyright (c) 2024 Christian Hewitt <christianshewitt@gmail.com>
40e8011faSEmmanuel Vadot */
50e8011faSEmmanuel Vadot
60e8011faSEmmanuel Vadot/dts-v1/;
70e8011faSEmmanuel Vadot
80e8011faSEmmanuel Vadot#include "meson-gxl-s905x-p212.dtsi"
90e8011faSEmmanuel Vadot#include <dt-bindings/input/input.h>
100e8011faSEmmanuel Vadot#include <dt-bindings/leds/common.h>
110e8011faSEmmanuel Vadot#include <dt-bindings/sound/meson-aiu.h>
120e8011faSEmmanuel Vadot
130e8011faSEmmanuel Vadot/ {
140e8011faSEmmanuel Vadot	compatible = "osmc,vero4k", "amlogic,s905x", "amlogic,meson-gxl";
150e8011faSEmmanuel Vadot	model = "OSMC Vero 4K";
160e8011faSEmmanuel Vadot
170e8011faSEmmanuel Vadot	reserved-memory {
180e8011faSEmmanuel Vadot		/* 32 MiB reserved for ARM Trusted Firmware (BL32) */
190e8011faSEmmanuel Vadot		secmon_reserved_bl32: secmon@5300000 {
200e8011faSEmmanuel Vadot			reg = <0x0 0x05300000 0x0 0x2000000>;
210e8011faSEmmanuel Vadot			no-map;
220e8011faSEmmanuel Vadot		};
230e8011faSEmmanuel Vadot	};
240e8011faSEmmanuel Vadot
250e8011faSEmmanuel Vadot	gpio-keys-polled {
260e8011faSEmmanuel Vadot		compatible = "gpio-keys-polled";
270e8011faSEmmanuel Vadot		poll-interval = <20>;
280e8011faSEmmanuel Vadot
290e8011faSEmmanuel Vadot		button {
300e8011faSEmmanuel Vadot			label = "power";
310e8011faSEmmanuel Vadot			linux,code = <KEY_POWER>;
320e8011faSEmmanuel Vadot			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
330e8011faSEmmanuel Vadot		};
340e8011faSEmmanuel Vadot	};
350e8011faSEmmanuel Vadot
360e8011faSEmmanuel Vadot	leds {
370e8011faSEmmanuel Vadot		compatible = "gpio-leds";
380e8011faSEmmanuel Vadot
390e8011faSEmmanuel Vadot		led-standby {
400e8011faSEmmanuel Vadot			color = <LED_COLOR_ID_RED>;
410e8011faSEmmanuel Vadot			function = LED_FUNCTION_POWER;
420e8011faSEmmanuel Vadot			gpios = <&gpio GPIODV_24 GPIO_ACTIVE_LOW>;
430e8011faSEmmanuel Vadot			default-state = "off";
440e8011faSEmmanuel Vadot			panic-indicator;
450e8011faSEmmanuel Vadot		};
460e8011faSEmmanuel Vadot	};
470e8011faSEmmanuel Vadot
480e8011faSEmmanuel Vadot	dio2133: analog-amplifier {
490e8011faSEmmanuel Vadot		compatible = "simple-audio-amplifier";
500e8011faSEmmanuel Vadot		sound-name-prefix = "AU2";
510e8011faSEmmanuel Vadot		VCC-supply = <&hdmi_5v>;
520e8011faSEmmanuel Vadot		enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
530e8011faSEmmanuel Vadot	};
540e8011faSEmmanuel Vadot
550e8011faSEmmanuel Vadot	spdif_dit: audio-codec-0 {
560e8011faSEmmanuel Vadot		#sound-dai-cells = <0>;
570e8011faSEmmanuel Vadot		compatible = "linux,spdif-dit";
580e8011faSEmmanuel Vadot		sound-name-prefix = "DIT";
590e8011faSEmmanuel Vadot	};
600e8011faSEmmanuel Vadot
610e8011faSEmmanuel Vadot	cvbs-connector {
620e8011faSEmmanuel Vadot		compatible = "composite-video-connector";
630e8011faSEmmanuel Vadot
640e8011faSEmmanuel Vadot		port {
650e8011faSEmmanuel Vadot			cvbs_connector_in: endpoint {
660e8011faSEmmanuel Vadot				remote-endpoint = <&cvbs_vdac_out>;
670e8011faSEmmanuel Vadot			};
680e8011faSEmmanuel Vadot		};
690e8011faSEmmanuel Vadot	};
700e8011faSEmmanuel Vadot
710e8011faSEmmanuel Vadot	hdmi-connector {
720e8011faSEmmanuel Vadot		compatible = "hdmi-connector";
730e8011faSEmmanuel Vadot		type = "a";
740e8011faSEmmanuel Vadot
750e8011faSEmmanuel Vadot		port {
760e8011faSEmmanuel Vadot			hdmi_connector_in: endpoint {
770e8011faSEmmanuel Vadot				remote-endpoint = <&hdmi_tx_tmds_out>;
780e8011faSEmmanuel Vadot			};
790e8011faSEmmanuel Vadot		};
800e8011faSEmmanuel Vadot	};
810e8011faSEmmanuel Vadot
820e8011faSEmmanuel Vadot	sound {
830e8011faSEmmanuel Vadot		compatible = "amlogic,gx-sound-card";
840e8011faSEmmanuel Vadot		model = "VERO4K";
850e8011faSEmmanuel Vadot		audio-aux-devs = <&dio2133>;
860e8011faSEmmanuel Vadot		audio-widgets = "Line", "Lineout";
870e8011faSEmmanuel Vadot		audio-routing = "AU2 INL", "ACODEC LOLP",
880e8011faSEmmanuel Vadot				"AU2 INR", "ACODEC LORP",
890e8011faSEmmanuel Vadot				"AU2 INL", "ACODEC LOLN",
900e8011faSEmmanuel Vadot				"AU2 INR", "ACODEC LORN",
910e8011faSEmmanuel Vadot				"Lineout", "AU2 OUTL",
920e8011faSEmmanuel Vadot				"Lineout", "AU2 OUTR";
93*b2d2a78aSEmmanuel Vadot
94*b2d2a78aSEmmanuel Vadot		clocks = <&clkc CLKID_MPLL0>,
95*b2d2a78aSEmmanuel Vadot			 <&clkc CLKID_MPLL1>,
96*b2d2a78aSEmmanuel Vadot			 <&clkc CLKID_MPLL2>;
97*b2d2a78aSEmmanuel Vadot
980e8011faSEmmanuel Vadot		assigned-clocks = <&clkc CLKID_MPLL0>,
990e8011faSEmmanuel Vadot				  <&clkc CLKID_MPLL1>,
1000e8011faSEmmanuel Vadot				  <&clkc CLKID_MPLL2>;
1010e8011faSEmmanuel Vadot		assigned-clock-parents = <0>, <0>, <0>;
1020e8011faSEmmanuel Vadot		assigned-clock-rates = <294912000>,
1030e8011faSEmmanuel Vadot				       <270950400>,
1040e8011faSEmmanuel Vadot				       <393216000>;
1050e8011faSEmmanuel Vadot
1060e8011faSEmmanuel Vadot		dai-link-0 {
1070e8011faSEmmanuel Vadot			sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
1080e8011faSEmmanuel Vadot		};
1090e8011faSEmmanuel Vadot
1100e8011faSEmmanuel Vadot		dai-link-1 {
1110e8011faSEmmanuel Vadot			sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
1120e8011faSEmmanuel Vadot		};
1130e8011faSEmmanuel Vadot
1140e8011faSEmmanuel Vadot		dai-link-2 {
1150e8011faSEmmanuel Vadot			sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
1160e8011faSEmmanuel Vadot			dai-format = "i2s";
1170e8011faSEmmanuel Vadot			mclk-fs = <256>;
1180e8011faSEmmanuel Vadot
1190e8011faSEmmanuel Vadot			codec-0 {
1200e8011faSEmmanuel Vadot				sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
1210e8011faSEmmanuel Vadot			};
1220e8011faSEmmanuel Vadot
1230e8011faSEmmanuel Vadot			codec-1 {
1240e8011faSEmmanuel Vadot				sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
1250e8011faSEmmanuel Vadot			};
1260e8011faSEmmanuel Vadot		};
1270e8011faSEmmanuel Vadot
1280e8011faSEmmanuel Vadot		dai-link-3 {
1290e8011faSEmmanuel Vadot			sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
1300e8011faSEmmanuel Vadot
1310e8011faSEmmanuel Vadot			codec-0 {
1320e8011faSEmmanuel Vadot				sound-dai = <&spdif_dit>;
1330e8011faSEmmanuel Vadot			};
1340e8011faSEmmanuel Vadot		};
1350e8011faSEmmanuel Vadot
1360e8011faSEmmanuel Vadot		dai-link-4 {
1370e8011faSEmmanuel Vadot			sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
1380e8011faSEmmanuel Vadot
1390e8011faSEmmanuel Vadot			codec-0 {
1400e8011faSEmmanuel Vadot				sound-dai = <&hdmi_tx>;
1410e8011faSEmmanuel Vadot			};
1420e8011faSEmmanuel Vadot		};
1430e8011faSEmmanuel Vadot
1440e8011faSEmmanuel Vadot		dai-link-5 {
1450e8011faSEmmanuel Vadot			sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;
1460e8011faSEmmanuel Vadot
1470e8011faSEmmanuel Vadot			codec-0 {
1480e8011faSEmmanuel Vadot				sound-dai = <&acodec>;
1490e8011faSEmmanuel Vadot			};
1500e8011faSEmmanuel Vadot		};
1510e8011faSEmmanuel Vadot	};
1520e8011faSEmmanuel Vadot};
1530e8011faSEmmanuel Vadot
1540e8011faSEmmanuel Vadot&acodec {
1550e8011faSEmmanuel Vadot	AVDD-supply = <&vddio_ao18>;
1560e8011faSEmmanuel Vadot	status = "okay";
1570e8011faSEmmanuel Vadot};
1580e8011faSEmmanuel Vadot
1590e8011faSEmmanuel Vadot&aiu {
1600e8011faSEmmanuel Vadot	status = "okay";
1610e8011faSEmmanuel Vadot	pinctrl-0 = <&spdif_out_h_pins>;
1620e8011faSEmmanuel Vadot	pinctrl-names = "default";
1630e8011faSEmmanuel Vadot};
1640e8011faSEmmanuel Vadot
1650e8011faSEmmanuel Vadot&cec_AO {
1660e8011faSEmmanuel Vadot	status = "okay";
1670e8011faSEmmanuel Vadot	pinctrl-0 = <&ao_cec_pins>;
1680e8011faSEmmanuel Vadot	pinctrl-names = "default";
1690e8011faSEmmanuel Vadot	hdmi-phandle = <&hdmi_tx>;
1700e8011faSEmmanuel Vadot};
1710e8011faSEmmanuel Vadot
1720e8011faSEmmanuel Vadot&cvbs_vdac_port {
1730e8011faSEmmanuel Vadot	cvbs_vdac_out: endpoint {
1740e8011faSEmmanuel Vadot		remote-endpoint = <&cvbs_connector_in>;
1750e8011faSEmmanuel Vadot	};
1760e8011faSEmmanuel Vadot};
1770e8011faSEmmanuel Vadot
1780e8011faSEmmanuel Vadot&ethmac {
1790e8011faSEmmanuel Vadot	phy-mode = "rmii";
1800e8011faSEmmanuel Vadot	phy-handle = <&internal_phy>;
1810e8011faSEmmanuel Vadot};
1820e8011faSEmmanuel Vadot
1830e8011faSEmmanuel Vadot&hdmi_tx {
1840e8011faSEmmanuel Vadot	status = "okay";
1850e8011faSEmmanuel Vadot	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
1860e8011faSEmmanuel Vadot	pinctrl-names = "default";
1870e8011faSEmmanuel Vadot	hdmi-supply = <&hdmi_5v>;
1880e8011faSEmmanuel Vadot};
1890e8011faSEmmanuel Vadot
1900e8011faSEmmanuel Vadot&hdmi_tx_tmds_port {
1910e8011faSEmmanuel Vadot	hdmi_tx_tmds_out: endpoint {
1920e8011faSEmmanuel Vadot		remote-endpoint = <&hdmi_connector_in>;
1930e8011faSEmmanuel Vadot	};
1940e8011faSEmmanuel Vadot};
1950e8011faSEmmanuel Vadot
1960e8011faSEmmanuel Vadot&internal_phy {
1970e8011faSEmmanuel Vadot	pinctrl-0 = <&eth_link_led_pins>, <&eth_act_led_pins>;
1980e8011faSEmmanuel Vadot	pinctrl-names = "default";
1990e8011faSEmmanuel Vadot};
2000e8011faSEmmanuel Vadot
2010e8011faSEmmanuel Vadot/* This UART is brought out to the DB9 connector */
2020e8011faSEmmanuel Vadot&uart_AO {
2030e8011faSEmmanuel Vadot	status = "okay";
2040e8011faSEmmanuel Vadot};
205