Commit 5feff053 authored by Christian Hewitt's avatar Christian Hewitt Committed by Neil Armstrong
Browse files

arm64: dts: meson: add support for OSMC Vero 4K



The OSMC Vero 4K device is based on the Amlogic S905X (P212)
reference design with the following specifications:

- 2GB DDR4 RAM
- 16GB eMMC
- HDMI 2.1 video
- S/PDIF optical output
- AV output
- 10/100 Ethernet
- AP6255 Wireless (802.11 a/b/g/n/ac, BT 4.2)
- 2x USB 2.0 ports (1x OTG)
- IR receiver (internal)
- IR extender port (external)
- 1x micro SD card slot
- 1x Power LED (red)
- 1x Reset button (in AV jack)

Signed-off-by: default avatarChristian Hewitt <christianshewitt@gmail.com>
Reviewed-by: default avatarNeil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20240622135117.2608890-2-christianshewitt@gmail.com


Signed-off-by: default avatarNeil Armstrong <neil.armstrong@linaro.org>
parent 7d7dd631
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-libretech-cc-v2.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-libretech-cc.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-nexbox-a95x.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-p212.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-vero4k.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-gxlx-s905l-p271.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-gt1-ultimate.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-khadas-vim2.dtb
+199 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2024 Christian Hewitt <christianshewitt@gmail.com>
 */

/dts-v1/;

#include "meson-gxl-s905x-p212.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/sound/meson-aiu.h>

/ {
	compatible = "osmc,vero4k", "amlogic,s905x", "amlogic,meson-gxl";
	model = "OSMC Vero 4K";

	reserved-memory {
		/* 32 MiB reserved for ARM Trusted Firmware (BL32) */
		secmon_reserved_bl32: secmon@5300000 {
			reg = <0x0 0x05300000 0x0 0x2000000>;
			no-map;
		};
	};

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

		button {
			label = "power";
			linux,code = <KEY_POWER>;
			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
		};
	};

	leds {
		compatible = "gpio-leds";

		led-standby {
			color = <LED_COLOR_ID_RED>;
			function = LED_FUNCTION_POWER;
			gpios = <&gpio GPIODV_24 GPIO_ACTIVE_LOW>;
			default-state = "off";
			panic-indicator;
		};
	};

	dio2133: analog-amplifier {
		compatible = "simple-audio-amplifier";
		sound-name-prefix = "AU2";
		VCC-supply = <&hdmi_5v>;
		enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
	};

	spdif_dit: audio-codec-0 {
		#sound-dai-cells = <0>;
		compatible = "linux,spdif-dit";
		sound-name-prefix = "DIT";
	};

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

		port {
			cvbs_connector_in: endpoint {
				remote-endpoint = <&cvbs_vdac_out>;
			};
		};
	};

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

		port {
			hdmi_connector_in: endpoint {
				remote-endpoint = <&hdmi_tx_tmds_out>;
			};
		};
	};

	sound {
		compatible = "amlogic,gx-sound-card";
		model = "VERO4K";
		audio-aux-devs = <&dio2133>;
		audio-widgets = "Line", "Lineout";
		audio-routing = "AU2 INL", "ACODEC LOLP",
				"AU2 INR", "ACODEC LORP",
				"AU2 INL", "ACODEC LOLN",
				"AU2 INR", "ACODEC LORN",
				"Lineout", "AU2 OUTL",
				"Lineout", "AU2 OUTR";
		assigned-clocks = <&clkc CLKID_MPLL0>,
				  <&clkc CLKID_MPLL1>,
				  <&clkc CLKID_MPLL2>;
		assigned-clock-parents = <0>, <0>, <0>;
		assigned-clock-rates = <294912000>,
				       <270950400>,
				       <393216000>;

		dai-link-0 {
			sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
		};

		dai-link-1 {
			sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
		};

		dai-link-2 {
			sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
			dai-format = "i2s";
			mclk-fs = <256>;

			codec-0 {
				sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
			};

			codec-1 {
				sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
			};
		};

		dai-link-3 {
			sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;

			codec-0 {
				sound-dai = <&spdif_dit>;
			};
		};

		dai-link-4 {
			sound-dai = <&aiu AIU_HDMI CTRL_OUT>;

			codec-0 {
				sound-dai = <&hdmi_tx>;
			};
		};

		dai-link-5 {
			sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;

			codec-0 {
				sound-dai = <&acodec>;
			};
		};
	};
};

&acodec {
	AVDD-supply = <&vddio_ao18>;
	status = "okay";
};

&aiu {
	status = "okay";
	pinctrl-0 = <&spdif_out_h_pins>;
	pinctrl-names = "default";
};

&cec_AO {
	status = "okay";
	pinctrl-0 = <&ao_cec_pins>;
	pinctrl-names = "default";
	hdmi-phandle = <&hdmi_tx>;
};

&cvbs_vdac_port {
	cvbs_vdac_out: endpoint {
		remote-endpoint = <&cvbs_connector_in>;
	};
};

&ethmac {
	phy-mode = "rmii";
	phy-handle = <&internal_phy>;
};

&hdmi_tx {
	status = "okay";
	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
	pinctrl-names = "default";
	hdmi-supply = <&hdmi_5v>;
};

&hdmi_tx_tmds_port {
	hdmi_tx_tmds_out: endpoint {
		remote-endpoint = <&hdmi_connector_in>;
	};
};

&internal_phy {
	pinctrl-0 = <&eth_link_led_pins>, <&eth_act_led_pins>;
	pinctrl-names = "default";
};

/* This UART is brought out to the DB9 connector */
&uart_AO {
	status = "okay";
};