// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
 * Copyright 2024 Toradex
 */

/dts-v1/;

#include "imx6q-apalis-eval.dtsi"

/ {
	model = "Toradex Apalis iMX6Q/D Module on Apalis Evaluation Board v1.2";
	compatible = "toradex,apalis_imx6q-eval-v1.2", "toradex,apalis_imx6q",
		     "fsl,imx6q";

	reg_3v3_mmc: regulator-3v3-mmc {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio2 0 GPIO_ACTIVE_HIGH>;
		off-on-delay-us = <100000>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_enable_3v3_mmc>;
		regulator-max-microvolt = <3300000>;
		regulator-min-microvolt = <3300000>;
		regulator-name = "3.3V_MMC";
		startup-delay-us = <10000>;
	};

	reg_3v3_sd: regulator-3v3-sd {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio2 1 GPIO_ACTIVE_HIGH>;
		off-on-delay-us = <100000>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_enable_3v3_sd>;
		regulator-max-microvolt = <3300000>;
		regulator-min-microvolt = <3300000>;
		regulator-name = "3.3V_SD";
		startup-delay-us = <10000>;
	};

	reg_can1: regulator-can1 {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio2 3 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_enable_can1_power>;
		regulator-name = "5V_SW_CAN1";
		startup-delay-us = <10000>;
	};

	reg_can2: regulator-can2 {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio2 2 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_enable_can2_power>;
		regulator-name = "5V_SW_CAN2";
		startup-delay-us = <10000>;
	};

	sound-carrier {
		compatible = "simple-audio-card";
		simple-audio-card,bitclock-master = <&codec_dai>;
		simple-audio-card,format = "i2s";
		simple-audio-card,frame-master = <&codec_dai>;
		simple-audio-card,name = "apalis-nau8822";
		simple-audio-card,routing =
			"Headphones", "LHP",
			"Headphones", "RHP",
			"Speaker", "LSPK",
			"Speaker", "RSPK",
			"Line Out", "AUXOUT1",
			"Line Out", "AUXOUT2",
			"LAUX", "Line In",
			"RAUX", "Line In",
			"LMICP", "Mic In",
			"RMICP", "Mic In";
		simple-audio-card,widgets =
			"Headphones", "Headphones",
			"Line Out", "Line Out",
			"Speaker", "Speaker",
			"Microphone", "Mic In",
			"Line", "Line In";

		codec_dai: simple-audio-card,codec {
			sound-dai = <&nau8822_1a>;
			system-clock-frequency = <12288000>;
		};

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

&can1 {
	xceiver-supply = <&reg_can1>;
	status = "okay";
};

&can2 {
	xceiver-supply = <&reg_can2>;
	status = "okay";
};

/* I2C1_SDA/SCL on MXM3 209/211 */
&i2c1 {
	/* Audio Codec */
	nau8822_1a: audio-codec@1a {
		compatible = "nuvoton,nau8822";
		reg = <0x1a>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_nau8822>;
		#sound-dai-cells = <0>;
	};

	/* Current measurement into module VCC */
	hwmon@40 {
		compatible = "ti,ina219";
		reg = <0x40>;
		shunt-resistor = <5000>;
	};

	/* Temperature Sensor */
	temperature-sensor@4f {
		compatible = "ti,tmp75c";
		reg = <0x4f>;
	};

	/* EEPROM */
	eeprom@57 {
		compatible = "st,24c02", "atmel,24c02";
		reg = <0x57>;
		pagesize = <16>;
		size = <256>;
	};
};

&pcie {
	status = "okay";
};

&ssi2 {
	status = "okay";
};

/* MMC1 */
&usdhc1 {
	bus-width = <4>;
	pinctrl-0 = <&pinctrl_usdhc1_4bit &pinctrl_mmc_cd>;
	vmmc-supply = <&reg_3v3_mmc>;
	status = "okay";
};

/* SD1 */
&usdhc2 {
	cd-gpios = <&gpio6 14 GPIO_ACTIVE_LOW>;
	pinctrl-0 = <&pinctrl_usdhc2 &pinctrl_sd_cd>;
	vmmc-supply = <&reg_3v3_sd>;
	status = "okay";
};

&iomuxc {
	pinctrl_enable_3v3_mmc: enable3v3mmcgrp {
		fsl,pins = <
			/* MMC1_PWR_CTRL */
			MX6QDL_PAD_NANDF_D0__GPIO2_IO00 0x1b0b0
		>;
	};

	pinctrl_enable_3v3_sd: enable3v3sdgrp {
		fsl,pins = <
			/* SD1_PWR_CTRL */
			MX6QDL_PAD_NANDF_D1__GPIO2_IO01 0x1b0b0
		>;
	};

	pinctrl_enable_can1_power: enablecan1powergrp {
		fsl,pins = <
			/* CAN1_PWR_EN */
			MX6QDL_PAD_NANDF_D3__GPIO2_IO03 0x1b0b0
		>;
	};

	pinctrl_enable_can2_power: enablecan2powergrp {
		fsl,pins = <
			/* CAN2_PWR_EN */
			MX6QDL_PAD_NANDF_D2__GPIO2_IO02 0x1b0b0
		>;
	};

	pinctrl_nau8822: nau8822grp {
		fsl,pins = <
			MX6QDL_PAD_DISP0_DAT16__AUD5_TXC	0x130b0
			MX6QDL_PAD_DISP0_DAT17__AUD5_TXD	0x130b0
			MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS	0x130b0
			MX6QDL_PAD_DISP0_DAT19__AUD5_RXD	0x130b0
		>;
	};
};
