// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause)
/*
 * Copyright (C) 2023-2025, STMicroelectronics - All Rights Reserved
 * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
 */
#include <dt-bindings/pinctrl/stm32-pinfunc.h>

&pinctrl {
	/omit-if-no-ref/
	i2c7_pins_a: i2c7-0 {
		pins1 {
			pinmux = <STM32_PINMUX('D', 15, AF10)>, /* I2C7_SCL */
				 <STM32_PINMUX('D', 14, AF10)>; /* I2C7_SDA */
			bias-disable;
			drive-open-drain;
			slew-rate = <0>;
		};
	};

	/omit-if-no-ref/
	sdmmc1_b4_pins_a: sdmmc1-b4-0 {
		pins1 {
			pinmux = <STM32_PINMUX('E', 4, AF10)>, /* SDMMC1_D0 */
				 <STM32_PINMUX('E', 5, AF10)>, /* SDMMC1_D1 */
				 <STM32_PINMUX('E', 0, AF10)>, /* SDMMC1_D2 */
				 <STM32_PINMUX('E', 1, AF10)>, /* SDMMC1_D3 */
				 <STM32_PINMUX('E', 2, AF10)>; /* SDMMC1_CMD */
			slew-rate = <2>;
			drive-push-pull;
			bias-disable;
		};
		pins2 {
			pinmux = <STM32_PINMUX('E', 3, AF10)>; /* SDMMC1_CK */
			slew-rate = <3>;
			drive-push-pull;
			bias-disable;
		};
	};

	/omit-if-no-ref/
	sdmmc1_b4_pins_b: sdmmc1-b4-1 {
		pins1 {
			pinmux = <STM32_PINMUX('E', 4, AF10)>, /* SDMMC1_D0 */
				 <STM32_PINMUX('E', 5, AF10)>, /* SDMMC1_D1 */
				 <STM32_PINMUX('E', 0, AF10)>, /* SDMMC1_D2 */
				 <STM32_PINMUX('E', 1, AF10)>, /* SDMMC1_D3 */
				 <STM32_PINMUX('E', 2, AF10)>; /* SDMMC1_CMD */
			slew-rate = <1>;
			drive-push-pull;
			bias-disable;
		};
		pins2 {
			pinmux = <STM32_PINMUX('E', 3, AF10)>; /* SDMMC1_CK */
			slew-rate = <2>;
			drive-push-pull;
			bias-disable;
		};
	};

	/omit-if-no-ref/
	sdmmc2_b4_pins_a: sdmmc2-b4-0 {
		pins1 {
			pinmux = <STM32_PINMUX('E', 13, AF12)>, /* SDMMC2_D0 */
				 <STM32_PINMUX('E', 11, AF12)>, /* SDMMC2_D1 */
				 <STM32_PINMUX('E', 8, AF12)>, /* SDMMC2_D2 */
				 <STM32_PINMUX('E', 12, AF12)>, /* SDMMC2_D3 */
				 <STM32_PINMUX('E', 15, AF12)>; /* SDMMC2_CMD */
			slew-rate = <1>;
			drive-push-pull;
			bias-pull-up;
		};
		pins2 {
			pinmux = <STM32_PINMUX('E', 14, AF12)>; /* SDMMC2_CK */
			slew-rate = <2>;
			drive-push-pull;
			bias-pull-up;
		};
	};

	/omit-if-no-ref/
	sdmmc2_d47_pins_a: sdmmc2-d47-0 {
		pins {
			pinmux = <STM32_PINMUX('E', 10, AF12)>, /* SDMMC2_D4 */
				 <STM32_PINMUX('E', 9, AF12)>, /* SDMMC2_D5 */
				 <STM32_PINMUX('E', 6, AF12)>, /* SDMMC2_D6 */
				 <STM32_PINMUX('E', 7, AF12)>; /* SDMMC2_D7 */
			slew-rate = <1>;
			drive-push-pull;
			bias-pull-up;
		};
	};

	/omit-if-no-ref/
	usart2_pins_a: usart2-0 {
		pins1 {
			pinmux = <STM32_PINMUX('A', 4, AF6)>; /* USART2_TX */
			bias-disable;
			drive-push-pull;
			slew-rate = <0>;
		};
		pins2 {
			pinmux = <STM32_PINMUX('A', 8, AF8)>; /* USART2_RX */
			bias-disable;
		};
	};
};
