// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Copyright 2020 Compass Electronics Group, LLC
 */

/dts-v1/;

#include "imx8mm.dtsi"
#include "imx8mm-beacon-som.dtsi"
#include "imx8mm-beacon-baseboard.dtsi"

/ {
	model = "Beacon EmbeddedWorks i.MX8M Mini Development Kit";
	compatible = "beacon,imx8mm-beacon-kit", "fsl,imx8mm";

	chosen {
		stdout-path = &uart2;
	};

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

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

	reg_hdmi: regulator-hdmi-dvdd {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_reg_hdmi>;
		regulator-name = "hdmi_pwr_en";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio2 11 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		startup-delay-us = <70000>;
		regulator-always-on;
	};

	sound-hdmi {
		compatible = "simple-audio-card";
		simple-audio-card,name = "sound-hdmi";
		simple-audio-card,format = "i2s";

		simple-audio-card,cpu {
			sound-dai = <&sai5>;
			system-clock-direction-out;
		};

		simple-audio-card,codec {
			sound-dai = <&adv_bridge>;
		};
	};
};

&i2c2 {
	adv_bridge: hdmi@3d {
		compatible = "adi,adv7535";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_hdmi_bridge>;
		reg = <0x3d>, <0x3c>, <0x3e>, <0x3f>;
		reg-names = "main", "cec", "edid", "packet";
		adi,dsi-lanes = <4>;
		avdd-supply = <&reg_hdmi>;
		a2vdd-supply = <&reg_hdmi>;
		dvdd-supply = <&reg_hdmi>;
		pvdd-supply = <&reg_hdmi>;
		v1p2-supply = <&reg_hdmi>;
		v3p3-supply = <&reg_hdmi>;
		interrupt-parent = <&gpio1>;
		interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
		#sound-dai-cells = <0>;

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

			port@0 {
				reg = <0>;

				adv7535_in: endpoint {
					remote-endpoint = <&dsi_out>;
				};
			};

			port@1 {
				reg = <1>;

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

&lcdif {
	status = "okay";
};

&mipi_dsi {
	samsung,esc-clock-frequency = <20000000>;
	status = "okay";

	ports {
		port@1 {
			reg = <1>;

			dsi_out: endpoint {
				remote-endpoint = <&adv7535_in>;
			};
		};
	};
};

&sai5 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sai5>;
	assigned-clocks = <&clk IMX8MM_CLK_SAI5>;
	assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
	assigned-clock-rates = <24576000>;
	#sound-dai-cells = <0>;
	status = "okay";
};

&iomuxc {
	pinctrl_hdmi_bridge: hdmibridgegrp {
		fsl,pins = <
			MX8MM_IOMUXC_GPIO1_IO09_GPIO1_IO9		0x19
		>;
	};

	pinctrl_reg_hdmi: reghdmigrp {
		fsl,pins = <
			MX8MM_IOMUXC_SD1_STROBE_GPIO2_IO11              0x16
		>;
	};

	pinctrl_sai5: sai5grp {
		fsl,pins = <
			MX8MM_IOMUXC_SAI5_RXD3_SAI5_TX_DATA0	0xd6
			MX8MM_IOMUXC_SAI5_RXD2_SAI5_TX_BCLK	0xd6
			MX8MM_IOMUXC_SAI5_RXD1_SAI5_TX_SYNC	0xd6
		>;
	};
};