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

/dts-v1/;

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

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

	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 IMX8MN_CLK_SAI5>;
	assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
	assigned-clock-rates = <24576000>;
	#sound-dai-cells = <0>;
	status = "okay";
};

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

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

	pinctrl_sai5: sai5grp {
		fsl,pins = <
			MX8MN_IOMUXC_SAI5_RXD3_SAI5_TX_DATA0	0xd6
			MX8MN_IOMUXC_SAI5_RXD2_SAI5_TX_BCLK	0xd6
			MX8MN_IOMUXC_SAI5_RXD1_SAI5_TX_SYNC	0xd6
		>;
	};
};
