// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
 * Copyright 2014-2022 Toradex
 * Copyright 2012 Freescale Semiconductor, Inc.
 * Copyright 2011 Linaro Ltd.
 */

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include "imx6q.dtsi"
#include "imx6qdl-apalis.dtsi"

/ {
	model = "Toradex Apalis iMX6Q/D Module on Ixora Carrier Board V1.2";
	compatible = "toradex,apalis_imx6q-ixora-v1.2", "toradex,apalis_imx6q",
		     "fsl,imx6q";

	aliases {
		i2c0 = &i2c1;
		i2c1 = &i2c3;
		i2c2 = &i2c2;
		rtc0 = &rtc_i2c;
		rtc1 = &snvs_rtc;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	leds {
		compatible = "gpio-leds";

		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_leds_ixora>;

		led4-green {
			gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
			label = "LED_4_GREEN";
		};

		led4-red {
			gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
			label = "LED_4_RED";
		};

		led5-green {
			gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
			label = "LED_5_GREEN";
		};

		led5-red {
			gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
			label = "LED_5_RED";
		};
	};

	reg_3v3_vmmc: regulator-3v3-vmmc {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio2 0 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_enable_3v3_vmmc>;
		regulator-max-microvolt = <3300000>;
		regulator-min-microvolt = <3300000>;
		regulator-name = "3v3_vmmc";
		startup-delay-us = <100>;
	};

	reg_can1_supply: regulator-can1-supply {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio2 3 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_enable_can1_power>;
		regulator-name = "can1_supply";
		startup-delay-us = <1000>;
	};

	reg_can2_supply: regulator-can2-supply {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio3 15 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_enable_can2_power>;
		regulator-name = "can2_supply";
		startup-delay-us = <1000>;
	};
};

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

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

&gpio1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart24_forceoff>;

	/*
	 * uart-2-4-on-x21-enable-hog enables the UART transceiver for Apalis
	 * UART2 and UART3. If one wants to disable the transceiver force
	 * the GPIO to output-low, if one wants to control the transceiver
	 * from user space delete the hog node.
	 */
	uart-2-4-on-x21-enable-hog {
		gpio-hog;
		gpios = <11 GPIO_ACTIVE_HIGH>; /* MXM3 180 */
		output-high;
	};
};

/* I2C1_SDA/SCL on MXM3 209/211 (e.g. RTC on carrier board) */
&i2c1 {
	status = "okay";

	/* M41T0M6 real time clock on carrier board */
	rtc_i2c: rtc@68 {
		compatible = "st,m41t0";
		reg = <0x68>;
	};

	eeprom: eeprom@50 {
		compatible = "atmel,24c02";
		reg = <0x50>;
		pagesize = <16>;
	};
};

/*
 * I2C3_SDA/SCL (CAM) on MXM3 pin 201/203 (e.g. camera sensor on carrier
 * board)
 */
&i2c3 {
	status = "okay";
};

&pcie {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_reset_moci>;
	/* active-high meaning opposite of regular PERST# active-low polarity */
	reset-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
	reset-gpio-active-high;
	status = "okay";
};

&pwm1 {
	status = "okay";
};

&pwm2 {
	status = "okay";
};

&pwm3 {
	status = "okay";
};

&pwm4 {
	status = "okay";
};

&reg_usb_host_vbus {
	status = "okay";
};

&reg_usb_otg_vbus {
	status = "okay";
};

&sata {
	status = "okay";
};

&sound_spdif {
	status = "okay";
};

&spdif {
	status = "okay";
};

&uart1 {
	status = "okay";
};

&uart2 {
	status = "okay";
};

&uart4 {
	status = "okay";
};

&uart5 {
	status = "okay";
};

&usbh1 {
	disable-over-current;
	vbus-supply = <&reg_usb_host_vbus>;
	status = "okay";
};

&usbotg {
	disable-over-current;
	vbus-supply = <&reg_usb_otg_vbus>;
	status = "okay";
};

/* MMC1 */
&usdhc1 {
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_usdhc1_4bit &pinctrl_mmc_cd>;
	pinctrl-1 = <&pinctrl_usdhc1_4bit_sleep &pinctrl_mmc_cd_sleep>;
	bus-width = <4>;
	cap-power-off-card;
	vmmc-supply = <&reg_3v3_vmmc>;
	status = "okay";
};

&iomuxc {
	pinctrl_enable_3v3_vmmc: enable3v3vmmcgrp {
		fsl,pins = <
			MX6QDL_PAD_NANDF_D0__GPIO2_IO00 0x1b0b0
		>;
	};

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

	pinctrl_enable_can2_power: enablecan2powergrp {
		fsl,pins = <
			MX6QDL_PAD_EIM_DA15__GPIO3_IO15 0x1b0b0
		>;
	};

	pinctrl_uart24_forceoff: uart24forceoffgrp {
		fsl,pins = <
			MX6QDL_PAD_SD2_CMD__GPIO1_IO11 0x1b0b0
		>;
	};

	pinctrl_leds_ixora: ledsixoragrp {
		fsl,pins = <
			MX6QDL_PAD_SD2_DAT1__GPIO1_IO14 0x1b0b0
			MX6QDL_PAD_SD2_DAT3__GPIO1_IO12 0x1b0b0
			MX6QDL_PAD_NANDF_D1__GPIO2_IO01 0x1b0b0
			MX6QDL_PAD_NANDF_D2__GPIO2_IO02 0x1b0b0
		>;
	};

	pinctrl_mmc_cd_sleep: mmccdslpgrp {
		fsl,pins = <
			 /* MMC1 CD */
			MX6QDL_PAD_DI0_PIN4__GPIO4_IO20 0x0
		>;
	};

	pinctrl_usdhc1_4bit_sleep: usdhc1-4bitslpgrp {
		fsl,pins = <
			MX6QDL_PAD_SD1_CMD__SD1_CMD     0x3000
			MX6QDL_PAD_SD1_CLK__SD1_CLK     0x3000
			MX6QDL_PAD_SD1_DAT0__SD1_DATA0  0x3000
			MX6QDL_PAD_SD1_DAT1__SD1_DATA1  0x3000
			MX6QDL_PAD_SD1_DAT2__SD1_DATA2  0x3000
			MX6QDL_PAD_SD1_DAT3__SD1_DATA3  0x3000
		>;
	};
};
