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

&pinctrl {
	adc1_usb_cc_pins_a: adc1-usb-cc-pins-0 {
		pins {
			pinmux = <STM32_PINMUX('F', 12, ANALOG)>, /* ADC1 in6 */
				 <STM32_PINMUX('A', 3, ANALOG)>; /* ADC1 in12 */
		};
	};

	i2c1_pins_a: i2c1-0 {
		pins {
			pinmux = <STM32_PINMUX('D', 12, AF5)>, /* I2C1_SCL */
				 <STM32_PINMUX('E', 8, AF5)>; /* I2C1_SDA */
			bias-disable;
			drive-open-drain;
			slew-rate = <0>;
		};
	};

	i2c1_sleep_pins_a: i2c1-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('D', 12, ANALOG)>, /* I2C1_SCL */
				 <STM32_PINMUX('E', 8, ANALOG)>; /* I2C1_SDA */
		};
	};

	i2c5_pins_a: i2c5-0 {
		pins {
			pinmux = <STM32_PINMUX('D', 1, AF4)>, /* I2C5_SCL */
				 <STM32_PINMUX('H', 6, AF4)>; /* I2C5_SDA */
			bias-disable;
			drive-open-drain;
			slew-rate = <0>;
		};
	};

	i2c5_sleep_pins_a: i2c5-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('D', 1, ANALOG)>, /* I2C5_SCL */
				 <STM32_PINMUX('H', 6, ANALOG)>; /* I2C5_SDA */
		};
	};

	mcp23017_pins_a: mcp23017-0 {
		pins {
			pinmux = <STM32_PINMUX('G', 12, GPIO)>;
			bias-pull-up;
		};
	};

	pwm3_pins_a: pwm3-0 {
		pins {
			pinmux = <STM32_PINMUX('B', 1, AF2)>; /* TIM3_CH4 */
			bias-pull-down;
			drive-push-pull;
			slew-rate = <0>;
		};
	};

	pwm3_sleep_pins_a: pwm3-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('B', 1, ANALOG)>; /* TIM3_CH4 */
		};
	};

	pwm4_pins_a: pwm4-0 {
		pins {
			pinmux = <STM32_PINMUX('D', 13, AF2)>; /* TIM4_CH2 */
			bias-pull-down;
			drive-push-pull;
			slew-rate = <0>;
		};
	};

	pwm4_sleep_pins_a: pwm4-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('D', 13, ANALOG)>; /* TIM4_CH2 */
		};
	};

	pwm8_pins_a: pwm8-0 {
		pins {
			pinmux = <STM32_PINMUX('E', 5, AF3)>; /* TIM8_CH3 */
			bias-pull-down;
			drive-push-pull;
			slew-rate = <0>;
		};
	};

	pwm8_sleep_pins_a: pwm8-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('E', 5, ANALOG)>; /* TIM8_CH3 */
		};
	};

	pwm14_pins_a: pwm14-0 {
		pins {
			pinmux = <STM32_PINMUX('F', 9, AF9)>; /* TIM14_CH1 */
			bias-pull-down;
			drive-push-pull;
			slew-rate = <0>;
		};
	};

	pwm14_sleep_pins_a: pwm14-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('F', 9, ANALOG)>; /* TIM14_CH1 */
		};
	};

	sdmmc1_b4_pins_a: sdmmc1-b4-0 {
		pins {
			pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
				 <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
				 <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */
				 <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1_D3 */
				 <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
			slew-rate = <1>;
			drive-push-pull;
			bias-disable;
		};
	};

	sdmmc1_b4_od_pins_a: sdmmc1-b4-od-0 {
		pins1 {
			pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
				 <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
				 <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */
				 <STM32_PINMUX('C', 11, AF12)>; /* SDMMC1_D3 */
			slew-rate = <1>;
			drive-push-pull;
			bias-disable;
		};
		pins2 {
			pinmux = <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
			slew-rate = <1>;
			drive-open-drain;
			bias-disable;
		};
	};

	sdmmc1_b4_sleep_pins_a: sdmmc1-b4-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('C', 8, ANALOG)>, /* SDMMC1_D0 */
				 <STM32_PINMUX('C', 9, ANALOG)>, /* SDMMC1_D1 */
				 <STM32_PINMUX('C', 10, ANALOG)>, /* SDMMC1_D2 */
				 <STM32_PINMUX('C', 11, ANALOG)>, /* SDMMC1_D3 */
				 <STM32_PINMUX('C', 12, ANALOG)>, /* SDMMC1_CK */
				 <STM32_PINMUX('D', 2, ANALOG)>; /* SDMMC1_CMD */
		};
	};

	sdmmc1_clk_pins_a: sdmmc1-clk-0 {
		pins {
			pinmux = <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1_CK */
			slew-rate = <1>;
			drive-push-pull;
			bias-disable;
		};
	};

	sdmmc2_b4_pins_a: sdmmc2-b4-0 {
		pins {
			pinmux = <STM32_PINMUX('B', 14, AF10)>, /* SDMMC2_D0 */
				 <STM32_PINMUX('B', 15, AF10)>, /* SDMMC2_D1 */
				 <STM32_PINMUX('B', 3, AF10)>, /* SDMMC2_D2 */
				 <STM32_PINMUX('B', 4, AF10)>, /* SDMMC2_D3 */
				 <STM32_PINMUX('G', 6, AF10)>; /* SDMMC2_CMD */
			slew-rate = <1>;
			drive-push-pull;
			bias-pull-up;
		};
	};

	sdmmc2_b4_od_pins_a: sdmmc2-b4-od-0 {
		pins1 {
			pinmux = <STM32_PINMUX('B', 14, AF10)>, /* SDMMC2_D0 */
				 <STM32_PINMUX('B', 15, AF10)>, /* SDMMC2_D1 */
				 <STM32_PINMUX('B', 3, AF10)>, /* SDMMC2_D2 */
				 <STM32_PINMUX('B', 4, AF10)>; /* SDMMC2_D3 */
			slew-rate = <1>;
			drive-push-pull;
			bias-pull-up;
		};
		pins2 {
			pinmux = <STM32_PINMUX('G', 6, AF10)>; /* SDMMC2_CMD */
			slew-rate = <1>;
			drive-open-drain;
			bias-pull-up;
		};
	};

	sdmmc2_b4_sleep_pins_a: sdmmc2-b4-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('B', 14, ANALOG)>, /* SDMMC2_D0 */
				 <STM32_PINMUX('B', 15, ANALOG)>, /* SDMMC2_D1 */
				 <STM32_PINMUX('B', 3, ANALOG)>, /* SDMMC2_D2 */
				 <STM32_PINMUX('B', 4, ANALOG)>, /* SDMMC2_D3 */
				 <STM32_PINMUX('E', 3, ANALOG)>, /* SDMMC2_CK */
				 <STM32_PINMUX('G', 6, ANALOG)>; /* SDMMC2_CMD */
		};
	};

	sdmmc2_clk_pins_a: sdmmc2-clk-0 {
		pins {
			pinmux = <STM32_PINMUX('E', 3, AF10)>; /* SDMMC2_CK */
			slew-rate = <1>;
			drive-push-pull;
			bias-pull-up;
		};
	};

	spi5_pins_a: spi5-0 {
		pins1 {
			pinmux = <STM32_PINMUX('H', 7, AF6)>, /* SPI5_SCK */
				 <STM32_PINMUX('H', 3, AF5)>; /* SPI5_MOSI */
			bias-disable;
			drive-push-pull;
			slew-rate = <1>;
		};

		pins2 {
			pinmux = <STM32_PINMUX('A', 8, AF5)>; /* SPI5_MISO */
			bias-disable;
		};
	};

	spi5_sleep_pins_a: spi5-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('H', 7, ANALOG)>, /* SPI5_SCK */
				 <STM32_PINMUX('A', 8, ANALOG)>, /* SPI5_MISO */
				 <STM32_PINMUX('H', 3, ANALOG)>; /* SPI5_MOSI */
		};
	};

	stm32g0_intn_pins_a: stm32g0-intn-0 {
		pins {
			pinmux = <STM32_PINMUX('I', 2, GPIO)>;
			bias-pull-up;
		};
	};

	uart4_pins_a: uart4-0 {
		pins1 {
			pinmux = <STM32_PINMUX('D', 6, AF8)>; /* UART4_TX */
			bias-disable;
			drive-push-pull;
			slew-rate = <0>;
		};
		pins2 {
			pinmux = <STM32_PINMUX('D', 8, AF8)>; /* UART4_RX */
			bias-disable;
		};
	};

	uart4_idle_pins_a: uart4-idle-0 {
		pins1 {
			pinmux = <STM32_PINMUX('D', 6, ANALOG)>; /* UART4_TX */
		};
		pins2 {
			pinmux = <STM32_PINMUX('D', 8, AF8)>; /* UART4_RX */
			bias-disable;
		};
	};

	uart4_sleep_pins_a: uart4-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('D', 6, ANALOG)>, /* UART4_TX */
				 <STM32_PINMUX('D', 8, ANALOG)>; /* UART4_RX */
		};
	};

	uart8_pins_a: uart8-0 {
		pins1 {
			pinmux = <STM32_PINMUX('E', 1, AF8)>; /* UART8_TX */
			bias-disable;
			drive-push-pull;
			slew-rate = <0>;
		};
		pins2 {
			pinmux = <STM32_PINMUX('F', 9, AF8)>; /* UART8_RX */
			bias-pull-up;
		};
	};

	uart8_idle_pins_a: uart8-idle-0 {
		pins1 {
			pinmux = <STM32_PINMUX('E', 1, ANALOG)>; /* UART8_TX */
		};
		pins2 {
			pinmux = <STM32_PINMUX('F', 9, AF8)>; /* UART8_RX */
			bias-pull-up;
		};
	};

	uart8_sleep_pins_a: uart8-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('E', 1, ANALOG)>, /* UART8_TX */
				 <STM32_PINMUX('F', 9, ANALOG)>; /* UART8_RX */
		};
	};

	usart1_pins_a: usart1-0 {
		pins1 {
			pinmux = <STM32_PINMUX('C', 0, AF7)>, /* USART1_TX */
				 <STM32_PINMUX('C', 2, AF7)>; /* USART1_RTS */
			bias-disable;
			drive-push-pull;
			slew-rate = <0>;
		};
		pins2 {
			pinmux = <STM32_PINMUX('B', 0, AF4)>, /* USART1_RX */
				 <STM32_PINMUX('A', 7, AF7)>; /* USART1_CTS_NSS */
			bias-pull-up;
		};
	};

	usart1_idle_pins_a: usart1-idle-0 {
		pins1 {
			pinmux = <STM32_PINMUX('C', 0, ANALOG)>, /* USART1_TX */
				 <STM32_PINMUX('A', 7, ANALOG)>; /* USART1_CTS_NSS */
		};
		pins2 {
			pinmux = <STM32_PINMUX('C', 2, AF7)>; /* USART1_RTS */
			bias-disable;
			drive-push-pull;
			slew-rate = <0>;
		};
		pins3 {
			pinmux = <STM32_PINMUX('B', 0, AF4)>; /* USART1_RX */
			bias-pull-up;
		};
	};

	usart1_sleep_pins_a: usart1-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('C', 0, ANALOG)>, /* USART1_TX */
				 <STM32_PINMUX('C', 2, ANALOG)>, /* USART1_RTS */
				 <STM32_PINMUX('A', 7, ANALOG)>, /* USART1_CTS_NSS */
				 <STM32_PINMUX('B', 0, ANALOG)>; /* USART1_RX */
		};
	};

	usart2_pins_a: usart2-0 {
		pins1 {
			pinmux = <STM32_PINMUX('H', 12, AF1)>, /* USART2_TX */
				 <STM32_PINMUX('D', 4, AF3)>; /* USART2_RTS */
			bias-disable;
			drive-push-pull;
			slew-rate = <0>;
		};
		pins2 {
			pinmux = <STM32_PINMUX('D', 15, AF1)>, /* USART2_RX */
				 <STM32_PINMUX('E', 11, AF2)>; /* USART2_CTS_NSS */
			bias-disable;
		};
	};

	usart2_idle_pins_a: usart2-idle-0 {
		pins1 {
			pinmux = <STM32_PINMUX('H', 12, ANALOG)>, /* USART2_TX */
				 <STM32_PINMUX('E', 11, ANALOG)>; /* USART2_CTS_NSS */
		};
		pins2 {
			pinmux = <STM32_PINMUX('D', 4, AF3)>; /* USART2_RTS */
			bias-disable;
			drive-push-pull;
			slew-rate = <0>;
		};
		pins3 {
			pinmux = <STM32_PINMUX('D', 15, AF1)>; /* USART2_RX */
			bias-disable;
		};
	};

	usart2_sleep_pins_a: usart2-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('H', 12, ANALOG)>, /* USART2_TX */
				 <STM32_PINMUX('D', 4, ANALOG)>, /* USART2_RTS */
				 <STM32_PINMUX('D', 15, ANALOG)>, /* USART2_RX */
				 <STM32_PINMUX('E', 11, ANALOG)>; /* USART2_CTS_NSS */
		};
	};
};
