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

&pinctrl {
	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;
		};
	};

	sdmmc1_b4_od_pins_a: sdmmc1-b4-od-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 */
			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;
		};
		pins3 {
			pinmux = <STM32_PINMUX('E', 2, AF10)>; /* SDMMC1_CMD */
			slew-rate = <2>;
			drive-open-drain;
			bias-disable;
		};
	};

	sdmmc1_b4_sleep_pins_a: sdmmc1-b4-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('E', 4, ANALOG)>, /* SDMMC1_D0 */
				 <STM32_PINMUX('E', 5, ANALOG)>, /* SDMMC1_D1 */
				 <STM32_PINMUX('E', 0, ANALOG)>, /* SDMMC1_D2 */
				 <STM32_PINMUX('E', 1, ANALOG)>, /* SDMMC1_D3 */
				 <STM32_PINMUX('E', 3, ANALOG)>, /* SDMMC1_CK */
				 <STM32_PINMUX('E', 2, ANALOG)>; /* SDMMC1_CMD */
		};
	};

	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;
		};
	};

	usart2_idle_pins_a: usart2-idle-0 {
		pins1 {
			pinmux = <STM32_PINMUX('A', 4, ANALOG)>; /* USART2_TX */
		};
		pins2 {
			pinmux = <STM32_PINMUX('A', 8, AF8)>; /* USART2_RX */
			bias-disable;
		};
	};

	usart2_sleep_pins_a: usart2-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('A', 4, ANALOG)>, /* USART2_TX */
				 <STM32_PINMUX('A', 8, ANALOG)>; /* USART2_RX */
		};
	};
};
