/*
 * 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>;
			output-high;
		};
		group2 {
			pinmux = <UART0_RX_GPIO3>;
			bias-pull-up;
		};
	};

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

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

};
