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

#include <dt-bindings/leds/common.h>

/ {
	aliases {
		rtc0 = &rtc_i2c;
		rtc1 = &rtc;
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_leds_ixora>;

		/* LED_4_GREEN / MXM3_188 */
		led-1 {
			color = <LED_COLOR_ID_GREEN>;
			default-state = "off";
			function = LED_FUNCTION_STATUS;
			gpios = <&lsio_gpio5 27 GPIO_ACTIVE_HIGH>;
		};

		/* LED_4_RED / MXM3_178 */
		led-2 {
			color = <LED_COLOR_ID_RED>;
			default-state = "off";
			function = LED_FUNCTION_STATUS;
			gpios = <&lsio_gpio5 29 GPIO_ACTIVE_HIGH>;
		};

		/* LED_5_GREEN / MXM3_152 */
		led-3 {
			color = <LED_COLOR_ID_GREEN>;
			default-state = "off";
			function = LED_FUNCTION_STATUS;
			gpios = <&lsio_gpio5 20 GPIO_ACTIVE_HIGH>;
		};

		/* LED_5_RED / MXM3_156 */
		led-4 {
			color = <LED_COLOR_ID_RED>;
			default-state = "off";
			function = LED_FUNCTION_STATUS;
			gpios = <&lsio_gpio5 21 GPIO_ACTIVE_HIGH>;
		};
	};

	reg_3v3_vmmc: regulator-3v3-vmmc {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_enable_3v3_vmmc>;
		/* MMC1_PWR_CTRL */
		gpio = <&lsio_gpio5 19 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-max-microvolt = <3300000>;
		regulator-min-microvolt = <3300000>;
		regulator-name = "3v3_vmmc";
	};

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

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

	reg_usb_host_vbus: regulator-usb-host-vbus {
		regulator-name = "VCC_USBH(2|4)";
	};
};

&adc0 {
	status = "okay";
};

&adc1 {
	status = "okay";
};

/* TODO: Audio Mixer */

/* TODO: Asynchronous Sample Rate Converter (ASRC) */

/* TODO: Display Controller */

/* TODO: DPU */

/* Apalis ETH1 */
&fec1 {
	status = "okay";
};

/* Apalis CAN1 */
&flexcan1 {
	xceiver-supply = <&reg_can1_supply>;
	status = "okay";
};

/* Apalis CAN2 */
&flexcan2 {
	xceiver-supply = <&reg_can2_supply>;
	status = "okay";
};

/* TODO: GPU */

/* Apalis I2C1 */
&i2c2 {
	status = "okay";

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

	/* M41T0M6 real time clock on carrier board */
	rtc_i2c: rtc@68 {
		status = "okay";
	};
};

/* Apalis I2C3 (CAM) */
&i2c3 {
	status = "okay";
};

&iomuxc {
	pinctrl-0 = <&pinctrl_cam1_gpios>, <&pinctrl_dap1_gpios>,
		    <&pinctrl_esai0_gpios>, <&pinctrl_fec2_gpios>,
		    <&pinctrl_gpio3>, <&pinctrl_gpio4>, <&pinctrl_gpio_usbh_oc_n>,
		    <&pinctrl_lpuart1ctrl>, <&pinctrl_lvds0_i2c0_gpio>,
		    <&pinctrl_lvds1_i2c0_gpios>, <&pinctrl_mipi_dsi_0_1_en>,
		    <&pinctrl_mipi_dsi1_gpios>, <&pinctrl_mlb_gpios>,
		    <&pinctrl_qspi1a_gpios>, <&pinctrl_sim0_gpios>,
		    <&pinctrl_uart24_forceoff>, <&pinctrl_usdhc1_gpios>;

	/* PMIC MMC1 power-switch */
	pinctrl_enable_3v3_vmmc: enable3v3vmmcgrp {
		fsl,pins = <IMX8QM_USDHC1_DATA4_LSIO_GPIO5_IO19	0x00000021>; /* MXM3_148, PMIC */
	};

	/* FlexCAN PMIC */
	pinctrl_enable_can1_power: enablecan1powergrp {
		fsl,pins = <IMX8QM_USDHC1_DATA7_LSIO_GPIO5_IO22	0x00000021>; /* MXM3_158, PMIC */
	};

	pinctrl_leds_ixora: ledsixoragrp {
		fsl,pins = <IMX8QM_USDHC2_DATA1_LSIO_GPIO5_IO27	0x06000061>, /* LED_4_GREEN */
			   <IMX8QM_USDHC2_DATA3_LSIO_GPIO5_IO29	0x06000061>, /* LED_4_RED */
			   <IMX8QM_USDHC1_DATA5_LSIO_GPIO5_IO20	0x06000061>, /* LED_5_GREEN */
			   <IMX8QM_USDHC1_DATA6_LSIO_GPIO5_IO21	0x06000061>; /* LED_5_RED */
	};

	pinctrl_uart24_forceoff: uart24forceoffgrp {
		fsl,pins = <IMX8QM_USDHC2_CMD_LSIO_GPIO5_IO25		0x00000021>;
	};
};

/* Apalis SPI1 */
&lpspi0 {
	status = "okay";
};

/* Apalis SPI2 */
&lpspi2 {
	status = "okay";
};

/* Apalis UART3 */
&lpuart0 {
	status = "okay";
};

/* Apalis UART1 */
&lpuart1 {
	status = "okay";
};

/* Apalis UART4 */
&lpuart2 {
	status = "okay";
};

/* Apalis UART2 */
&lpuart3 {
	status = "okay";
};

&lsio_gpio5 {
	gpio-line-names = "gpio5-00", "gpio5-01", "gpio5-02", "gpio5-03",
			  "gpio5-04", "gpio5-05", "gpio5-06", "gpio5-07",
			  "gpio5-08", "gpio5-09", "gpio5-10", "gpio5-11",
			  "gpio5-12", "gpio5-13", "gpio5-14", "gpio5-15",
			  "gpio5-16", "gpio5-17", "gpio5-18", "gpio5-19",
			  "LED-5-GREEN", "LED-5-RED", "gpio5-22", "gpio5-23",
			  "gpio5-24", "UART24-FORCEOFF", "gpio5-26",
			  "LED-4-GREEN", "gpio5-28", "LED-4-RED", "gpio5-30",
			  "gpio5-31";
};

/* Apalis PWM3, MXM3 pin 6 */
&lsio_pwm0 {
	status = "okay";
};

/* Apalis PWM4, MXM3 pin 8 */
&lsio_pwm1 {
	status = "okay";
};

/* Apalis PWM1, MXM3 pin 2 */
&lsio_pwm2 {
	status = "okay";
};

/* Apalis PWM2, MXM3 pin 4 */
&lsio_pwm3 {
	status = "okay";
};

/* TODO: Apalis PCIE1 */

/* TODO: Apalis BKL1_PWM */

/* TODO: Apalis DAP1 */

/* TODO: Apalis Analogue Audio */

/* TODO: Apalis SATA1 */

/* TODO: Apalis SPDIF1 */

/* TODO: Apalis USBH2, Apalis USBH3 and on-module Wi-Fi via on-module HSIC Hub */

/* Apalis USBO1 */
&usbotg1 {
	status = "okay";
};

/* TODO: Apalis USBH4 SuperSpeed */

/* Apalis MMC1 */
&usdhc2 {
	pinctrl-0 = <&pinctrl_usdhc2_4bit>, <&pinctrl_mmc1_cd>;
	pinctrl-1 = <&pinctrl_usdhc2_4bit_100mhz>, <&pinctrl_mmc1_cd>;
	pinctrl-2 = <&pinctrl_usdhc2_4bit_200mhz>, <&pinctrl_mmc1_cd>;
	pinctrl-3 = <&pinctrl_usdhc2_4bit_sleep>, <&pinctrl_mmc1_cd_sleep>;
	bus-width = <4>;
	cap-power-off-card;
	/delete-property/ no-1-8-v;
	vmmc-supply = <&reg_3v3_vmmc>;
	status = "okay";
};
