/*
 * Copyright (c) 2022 Espressif Systems (Shanghai) Co., Ltd.
 *
 * 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_default: uart0_default {
		group1 {
			pinmux = <UART0_TX_GPIO1>;
		};
		group2 {
			pinmux = <UART0_RX_GPIO3>;
			bias-pull-up;
		};
	};

	uart1_default: uart1_default {
		group1 {
			pinmux = <UART1_TX_GPIO10>;
		};
		group2 {
			pinmux = <UART1_RX_GPIO9>;
			bias-pull-up;
		};
	};

	uart2_default: uart2_default {
		group1 {
			pinmux = <UART2_TX_GPIO17>;
		};
		group2 {
			pinmux = <UART2_RX_GPIO16>;
			bias-pull-up;
		};
	};

	spim2_default: spim2_default {
		group1 {
			pinmux = <SPIM2_MISO_GPIO12>,
				 <SPIM2_SCLK_GPIO14>,
				 <SPIM2_CSEL_GPIO15>;
		};
		group2 {
			pinmux = <SPIM2_MOSI_GPIO13>;
			output-low;
		};
	};

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

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

};
