// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause)
/*
 * Copyright (C) 2020 STMicroelectronics - All Rights Reserved
 * Copyright (C) 2021 Rouven Czerwinski, Pengutronix
 * Copyright (C) 2023 Leonard Göhrs, Pengutronix
 */

/dts-v1/;

#include "stm32mp157.dtsi"
#include "stm32mp15xc-lxa-tac.dtsi"

/ {
	model = "Linux Automation Test Automation Controller (TAC) Gen 2";
	compatible = "lxa,stm32mp157c-tac-gen2", "oct,stm32mp15xx-osd32", "st,stm32mp157";

	backlight: backlight {
		compatible = "pwm-backlight";
		power-supply = <&v3v3>;

		brightness-levels = <0 31 63 95 127 159 191 223 255>;
		default-brightness-level = <7>;
		pwms = <&led_pwm 3 1000000 0>;
	};

	reg_iobus_12v: regulator-iobus-12v {
		compatible = "regulator-fixed";
		vin-supply = <&reg_12v>;
		gpio = <&gpioh 13 GPIO_ACTIVE_LOW>;
		regulator-max-microvolt = <12000000>;
		regulator-min-microvolt = <12000000>;
		regulator-name = "12V_IOBUS";
	};

	led-controller-1 {
		compatible = "pwm-leds-multicolor";

		multi-led {
			color = <LED_COLOR_ID_RGB>;
			function = LED_FUNCTION_STATUS;
			max-brightness = <65535>;

			led-red {
				active-low;
				color = <LED_COLOR_ID_RED>;
				pwms = <&led_pwm 0 1000000 0>;
			};

			led-green {
				active-low;
				color = <LED_COLOR_ID_GREEN>;
				pwms = <&led_pwm 2 1000000 0>;
			};

			led-blue {
				active-low;
				color = <LED_COLOR_ID_BLUE>;
				pwms = <&led_pwm 1 1000000 0>;
			};
		};
	};

	led-controller-2 {
		compatible = "gpio-leds";

		led-5 {
			label = "tac:green:iobus";
			gpios = <&gpiog 1 GPIO_ACTIVE_HIGH>;
		};

		led-6 {
			label = "tac:green:can";
			gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>;
		};

		led-7 {
			label = "tac:green:out0";
			gpios = <&gpiob 8 GPIO_ACTIVE_HIGH>;
		};

		led-8 {
			label = "tac:green:out1";
			gpios = <&gpiog 3 GPIO_ACTIVE_HIGH>;
		};

		led-9 {
			label = "tac:green:uarttx";
			gpios = <&gpiod 3 GPIO_ACTIVE_HIGH>;
		};

		led-10 {
			label = "tac:green:uartrx";
			gpios = <&gpiof 6 GPIO_ACTIVE_HIGH>;
		};

		led-11 {
			label = "tac:green:usbh1";
			gpios = <&gpioc 8 GPIO_ACTIVE_HIGH>;
		};

		led-12 {
			label = "tac:green:usbh2";
			gpios = <&gpiod 6 GPIO_ACTIVE_HIGH>;
		};

		led-13 {
			label = "tac:green:usbh3";
			gpios = <&gpiob 9 GPIO_ACTIVE_HIGH>;
		};

		led-14 {
			label = "tac:green:usbg";
			gpios = <&gpiod 14 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "usb-gadget";
		};

		led-15 {
			label = "tac:green:dutpwr";
			gpios = <&gpioa 15 GPIO_ACTIVE_HIGH>;
		};
	};
};

&gpioa {
	gpio-line-names = "", "", "DUT_PWR_EN", "", "STACK_CS3", /*  0 */
	"ETH_GPIO1", "ETH_INT", "", "", "",                      /*  5 */
	"", "", "", "BOOTROM_LED", "ETH_LAB_LEDRP",              /* 10 */
	"";                                                      /* 15 */
};

&gpioc {
	gpio-line-names = "", "DUT_PWR_DISCH", "", "", "", /*  0 */
	"", "", "", "", "",                                /*  5 */
	"", "";                                            /* 10 */
};

&gpu {
	status = "disabled";
};

&m_can2 {
	termination-gpios = <&gpioe 4 GPIO_ACTIVE_HIGH>;
	termination-ohms = <120>;
};

&spi2 {
	adc@0 {
		compatible = "ti,lmp92064";
		reg = <0>;

		reset-gpios = <&gpioa 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		shunt-resistor-micro-ohms = <15000>;
		spi-max-frequency = <5000000>;
		vdd-supply = <&reg_pb_3v3>;
		vdig-supply = <&reg_pb_3v3>;
	};
};

&timers8 {
	/* spare dmas for other usage */
	/delete-property/dmas;
	/delete-property/dma-names;

	status = "okay";

	led_pwm: pwm {
		pinctrl-names = "default", "sleep";
		pinctrl-0 = <&pwm8_pins_b>;
		pinctrl-1 = <&pwm8_sleep_pins_b>;
		status = "okay";
	};
};
