// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2013 Christian Hemp, Phytec Messtechnik GmbH
 */

#include <dt-bindings/sound/fsl-imx-audmux.h>

/ {
	chosen {
		stdout-path = &uart4;
	};

	regulators {
		sound_1v8: regulator@2 {
			compatible = "regulator-fixed";
			reg = <2>;
			regulator-name = "i2s-audio-1v8";
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		sound_3v3: regulator@3 {
			compatible = "regulator-fixed";
			reg = <3>;
			regulator-name = "i2s-audio-3v3";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
		};
	};

	tlv320_mclk: oscillator {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <19200000>;
		clock-output-names = "tlv320-mclk";
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "OnboardTLV320AIC3007";
		simple-audio-card,format = "i2s";
		simple-audio-card,bitclock-master = <&dailink_master>;
		simple-audio-card,frame-master = <&dailink_master>;
		simple-audio-card,widgets =
			"Microphone", "Mic Jack",
			"Line", "Line In",
			"Line", "Line Out",
			"Speaker", "Speaker",
			"Headphone", "Headphone Jack";
		simple-audio-card,routing =
			"Line Out", "LLOUT",
			"Line Out", "RLOUT",
			"Speaker", "SPOP",
			"Speaker", "SPOM",
			"Headphone Jack", "HPLOUT",
			"Headphone Jack", "HPROUT",
			"MIC3L", "Mic Jack",
			"MIC3R", "Mic Jack",
			"Mic Jack", "Mic Bias",
			"LINE1L", "Line In",
			"LINE1R", "Line In";

		simple-audio-card,cpu {
			sound-dai = <&ssi2>;
		};

		dailink_master: simple-audio-card,codec {
			sound-dai = <&codec>;
			clocks = <&tlv320_mclk>;
		};
	};

};

&audmux {
	status = "okay";

	mux-ssi2 {
		fsl,audmux-port = <1>;
		fsl,port-config = <
			(IMX_AUDMUX_V2_PTCR_SYN |
			IMX_AUDMUX_V2_PTCR_TFSDIR |
			IMX_AUDMUX_V2_PTCR_TFSEL(4) |
			IMX_AUDMUX_V2_PTCR_TCLKDIR |
			IMX_AUDMUX_V2_PTCR_TCSEL(4))
			IMX_AUDMUX_V2_PDCR_RXDSEL(4)
		>;
	};

	mux-pins5 {
		fsl,audmux-port = <4>;
		fsl,port-config = <
			IMX_AUDMUX_V2_PTCR_SYN
			IMX_AUDMUX_V2_PDCR_RXDSEL(1)
		>;
	};
};

&can1 {
	status = "okay";
};

&fec {
	status = "okay";
};

&hdmi {
	status = "okay";
};

&i2c2 {
	status = "okay";

	codec: tlv320@18 {
		compatible = "ti,tlv320aic3007";
		#sound-dai-cells = <0>;
		reg = <0x18>;
		ai3x-micbias-vg = <2>;

		AVDD-supply = <&sound_3v3>;
		IOVDD-supply = <&sound_3v3>;
		DRVDD-supply = <&sound_3v3>;
		DVDD-supply = <&sound_1v8>;
	};

	stmpe@41 {
		compatible = "st,stmpe811";
		reg = <0x41>;
	};

	rtc@51 {
		compatible = "epson,rtc8564";
		reg = <0x51>;
	};

	adc@64 {
		compatible = "maxim,max1037";
		reg = <0x64>;
	};
};

&i2c3 {
	status = "okay";
};

&pcie {
	status = "okay";
};

&ssi2 {
	status = "okay";
};

&uart3 {
	status = "okay";
};

&uart4 {
	status = "okay";
};

&usbh1 {
	status = "okay";
};

&usbotg {
	status = "okay";
	dr_mode = "peripheral";
};

&usdhc2 {
	status = "okay";
};

&usdhc3 {
	status = "okay";
};