/*
 * Copyright (c) 2022 Espressif Systems (Shanghai) Co., Ltd.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <dt-bindings/pinctrl/esp-pinctrl-common.h>
#include <dt-bindings/pinctrl/esp32-pinctrl.h>
#include <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_tx_gpio10: uart1_tx_gpio10 {
		pinmux = <UART0_TX_GPIO10>;
	};

	uart1_rx_gpio9: uart1_rx_gpio9 {
		pinmux = <UART0_RX_GPIO9>;
		bias-pull-up;
	};

	uart2_tx_gpio17: uart2_tx_gpio17 {
		pinmux = <UART0_TX_GPIO17>;
	};

	uart2_rx_gpio16: uart2_rx_gpio16 {
		pinmux = <UART0_RX_GPIO16>;
		bias-pull-up;
	};

	spim2_miso_gpio12: spim2_miso_gpio12 {
		pinmux = <SPIM2_MISO_GPIO12>;
	};

	spim2_mosi_gpio13: spim2_mosi_gpio13 {
		pinmux = <SPIM2_MOSI_GPIO13>;
		output-low;
	};

	spim2_sclk_gpio14: spim2_sclk_gpio14 {
		pinmux = <SPIM2_SCLK_GPIO14>;
	};

	spim2_csel_gpio15: spim2_csel_gpio15 {
		pinmux = <SPIM2_CSEL_GPIO15>;
	};

	spim3_miso_gpio19: spim3_miso_gpio19 {
		pinmux = <SPIM3_MISO_GPIO19>;
	};

	spim3_mosi_gpio23: spim3_mosi_gpio23 {
		pinmux = <SPIM3_MOSI_GPIO23>;
		output-low;
	};

	spim3_sclk_gpio18: spim3_sclk_gpio18 {
		pinmux = <SPIM3_SCLK_GPIO18>;
	};

	spim3_csel_gpio5: spim3_csel_gpio5 {
		pinmux = <SPIM3_CSEL_GPIO5>;
	};

	i2c0_sda_gpio21: i2c0_sda_gpio21 {
		pinmux = <I2C0_SDA_GPIO21>;
		bias-pull-up;
		drive-open-drain;
		output-high;
	};

	i2c0_scl_gpio22: i2c0_scl_gpio22 {
		pinmux = <I2C0_SCL_GPIO22>;
		bias-pull-up;
		drive-open-drain;
		output-high;
	};

};
