/*
 * Copyright (c) 2022 AVSystem Sławomir Wolf Sp.j. (AVSystem)
 * Copyright (c) 2023 Martin Kiepfer <m.kiepfer@teleschrim.org>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/dt-bindings/pinctrl/esp-pinctrl-common.h>
#include <dt-bindings/pinctrl/esp32-pinctrl.h>
#include <zephyr/dt-bindings/pinctrl/esp32-gpio-sigmap.h>

&pinctrl {

	uart0_tx_gpio1: uart0_tx_gpio1 {
		pinmux = <UART0_TX_GPIO1>;
	};

	uart0_rx_gpio3: uart0_rx_gpio3 {
		pinmux = <UART0_RX_GPIO3>;
		bias-pull-up;
	};

	uart1_rx_gpio33: uart1_rx_gpio33 {
		pinmux = <UART1_RX_GPIO33>;
	};

	uart1_tx_gpio32: uart1_tx_gpio32 {
		pinmux = <UART1_TX_GPIO32>;
	};

	spim3_default: spim3_default {
		group1 {
			pinmux = <SPIM3_MISO_GPIO38>,
				 <SPIM3_SCLK_GPIO18>,
				 <SPIM3_CSEL_GPIO5>;
		};
		group2 {
			pinmux = <SPIM3_MOSI_GPIO23>;
			output-low;
		};
	};

	spim2_default: spim2_default {
		group1 {
			pinmux = <SPIM2_SCLK_GPIO6>,
				 <SPIM2_MISO_GPIO7>,
				 <SPIM2_CSEL_GPIO11>;
		};
		group2 {
			pinmux = <SPIM2_MOSI_GPIO8>;
			output-low;
		};
	};

	i2c0_default: i2c0_default {
		group1 {
			pinmux = <I2C0_SDA_GPIO21>,
				 <I2C0_SCL_GPIO22>;
			drive-open-drain;
			output-high;
		};
	};

	i2c1_default: i2c1_default {
		group1 {
			pinmux = <I2C1_SDA_GPIO32>,
				 <I2C1_SCL_GPIO33>;
			drive-open-drain;
			output-high;
		};
	};

};
