Loading...
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
/*
 * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
 * Author: Amelie Delaunay <amelie.delaunay@foss.st.com> for STMicroelectronics.
 */

/dts-v1/;

#include "stm32mp157.dtsi"
#include "stm32mp15xf.dtsi"
#include "stm32mp15-pinctrl.dtsi"
#include "stm32mp15xxac-pinctrl.dtsi"
#include "stm32mp15xx-dkx.dtsi"
#include "stm32mp157f-dk2-scmi.dtsi"

/ {
	model = "STMicroelectronics STM32MP157F-DK2 Discovery Board";
	compatible = "st,stm32mp157f-dk2", "st,stm32mp157";

	aliases {
		ethernet0 = &ethernet0;
		serial3 = &usart2;
	};

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

	wifi_pwrseq: wifi-pwrseq {
		compatible = "mmc-pwrseq-simple";
		reset-gpios = <&gpioh 4 GPIO_ACTIVE_LOW>;
	};
};

&arm_wdt {
	timeout-sec = <32>;
	status = "okay";
};

&cryp1 {
	status = "okay";
};

&dsi {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	panel@0 {
		compatible = "orisetech,otm8009a";
		reg = <0>;
		reset-gpios = <&gpioe 4 GPIO_ACTIVE_LOW>;
		power-supply = <&scmi_v3v3>;

		port {
			panel_in: endpoint {
				remote-endpoint = <&dsi_out>;
			};
		};
	};
};

&dsi_in {
	remote-endpoint = <&ltdc_ep1_out>;
};

&dsi_out {
	remote-endpoint = <&panel_in>;
};

&i2c1 {
	touchscreen@38 {
		compatible = "focaltech,ft6236";
		reg = <0x38>;
		interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
		interrupt-parent = <&gpiof>;
		touchscreen-size-x = <480>;
		touchscreen-size-y = <800>;
	};
};

/* I2C4 is managed by OP-TEE */
&i2c4 {
	status = "disabled";

	/* i2c4 subnodes, which won't be managed by Linux */
	typec@28 {
		status = "disabled";
		connector {
			status = "disabled";
		};
	};

	stpmic@33 {
		status = "disabled";
	};
};

&ltdc {
	status = "okay";

	port {
		#address-cells = <1>;
		#size-cells = <0>;

		ltdc_ep1_out: endpoint@1 {
			reg = <1>;
			remote-endpoint = <&dsi_in>;
		};
	};
};

&rtc {
	pinctrl-names = "default";
	pinctrl-0 = <&rtc_rsvd_pins_a>;

	rtc_lsco_pins_a: rtc-lsco-0 {
		pins = "out2_rmp";
		function = "lsco";
	};
};

/* Wifi */
&sdmmc2 {
	pinctrl-names = "default", "opendrain", "sleep";
	pinctrl-0 = <&sdmmc2_b4_pins_a>;
	pinctrl-1 = <&sdmmc2_b4_od_pins_a>;
	pinctrl-2 = <&sdmmc2_b4_sleep_pins_a>;
	non-removable;
	cap-sdio-irq;
	st,neg-edge;
	bus-width = <4>;
	vmmc-supply = <&scmi_v3v3>;
	mmc-pwrseq = <&wifi_pwrseq>;
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	brcmf: wifi@1 {
		reg = <1>;
		compatible = "brcm,bcm4329-fmac";
		pinctrl-names = "default";
		pinctrl-0 = <&rtc_lsco_pins_a>;
	};
};

/* Bluetooth */
&usart2 {
	pinctrl-names = "default", "sleep", "idle";
	pinctrl-0 = <&usart2_pins_c>;
	pinctrl-1 = <&usart2_sleep_pins_c>;
	pinctrl-2 = <&usart2_idle_pins_c>;
	uart-has-rtscts;
	status = "okay";

	bluetooth {
		shutdown-gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>;
		compatible = "brcm,bcm43438-bt";
		max-speed = <3000000>;
		vbat-supply = <&scmi_v3v3>;
		vddio-supply = <&scmi_v3v3>;
	};
};

/* Since I2C4 is disabled, STUSB1600 is also disabled so there is no Type-C support */
&usbotg_hs {
	dr_mode = "peripheral";
	role-switch-default-mode = "peripheral";
	/*
	 * Forcing dr_mode = "peripheral"/"role-switch-default-mode = "peripheral";
	 * will cause the pull-up on D+/D- to be raised as soon as the OTG is configured at runtime,
	 * regardless of the presence of VBUS. Notice that on self-powered devices like
	 * stm32mp157f-dk2, this isn't compliant with the USB standard. That's why usbotg_hs is kept
	 * disabled here.
	 */
	status = "disabled";
};