// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
 * Copyright 2023 Toradex
 *
 * Common dtsi for Verdin AM62 SoM on Mallow carrier board
 *
 * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62
 * https://www.toradex.com/products/carrier-board/mallow-carrier-board
 */

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

/ {
	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_qspi1_clk_gpio>,
			    <&pinctrl_qspi1_cs_gpio>,
			    <&pinctrl_qspi1_io0_gpio>,
			    <&pinctrl_qspi1_io1_gpio>;

		/* SODIMM 52 - USER_LED_1_RED */
		led-0 {
			color = <LED_COLOR_ID_RED>;
			function = LED_FUNCTION_DEBUG;
			function-enumerator = <1>;
			gpios = <&main_gpio0 0 GPIO_ACTIVE_HIGH>;
		};

		/* SODIMM 54 - USER_LED_1_GREEN */
		led-1 {
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_DEBUG;
			function-enumerator = <1>;
			gpios = <&main_gpio0 11 GPIO_ACTIVE_HIGH>;
		};

		/* SODIMM 56 - USER_LED_2_RED */
		led-2 {
			color = <LED_COLOR_ID_RED>;
			function = LED_FUNCTION_DEBUG;
			function-enumerator = <2>;
			gpios = <&main_gpio0 3 GPIO_ACTIVE_HIGH>;
		};

		/* SODIMM 58 - USER_LED_2_GREEN */
		led-3 {
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_DEBUG;
			function-enumerator = <2>;
			gpios = <&main_gpio0 4 GPIO_ACTIVE_HIGH>;
		};
	};
};

/* Verdin ETH */
&cpsw3g {
	status = "okay";
};

/* Verdin MDIO */
&cpsw3g_mdio {
	status = "okay";
};

/* Verdin ETH_1*/
&cpsw_port1 {
	status = "okay";
};

/* Verdin PWM_1 and PWM_2*/
&epwm0 {
	status = "okay";
};

/* Verdin PWM_3 DSI */
&epwm1 {
	status = "okay";
};

&main_gpio0 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ctrl_sleep_moci>,
		    <&pinctrl_gpio_1>,
		    <&pinctrl_gpio_2>,
		    <&pinctrl_gpio_3>,
		    <&pinctrl_gpio_4>;
};

/* Verdin I2C_1 */
&main_i2c1 {
	status = "okay";

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

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

/* Verdin I2C_2 DSI */
&main_i2c2 {
	status = "okay";
};

/* Verdin I2C_4 CSI */
&main_i2c3 {
	status = "okay";
};

/* Verdin CAN_1 */
&main_mcan0 {
	status = "okay";
};

/* Verdin SPI_1 */
&main_spi1 {
	pinctrl-0 = <&pinctrl_spi1>,
		    <&pinctrl_spi1_cs0>,
		    <&pinctrl_qspi1_cs2_gpio>;
	cs-gpios = <0>, <&main_gpio0 12 GPIO_ACTIVE_LOW>;
	status = "okay";

	tpm@1 {
		compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
		reg = <1>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_qspi1_dqs_gpio>;
		interrupt-parent = <&main_gpio1>;
		interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
		spi-max-frequency = <18500000>;
	};
};

/* Verdin UART_3 */
&main_uart0 {
	status = "okay";
};

/* Verdin UART_1 */
&main_uart1 {
	status = "okay";
};

/* Verdin I2C_3_HDMI */
&mcu_i2c0 {
	status = "okay";
};

/* Verdin CAN_2 */
&mcu_mcan0 {
	status = "okay";
};

/* Verdin UART_4 */
&mcu_uart0 {
	status = "okay";
};

/* Verdin SD_1 */
&sdhci1 {
	status = "okay";
};

/* Verdin USB_1 */
&usbss0 {
	status = "okay";
};

&usb0 {
	status = "okay";
};

/* Verdin USB_2 */
&usbss1 {
	status = "okay";
};

&usb1 {
	status = "okay";
};

/* Verdin CTRL_WAKE1_MICO# */
&verdin_gpio_keys {
	status = "okay";
};

/* Verdin UART_2 */
&wkup_uart0 {
	status = "okay";
};
