/*
 * 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;
		};
	};

	spim3_default: spim3_default {
		group1 {
			pinmux = <SPIM3_MISO_GPIO19>,
				 <SPIM3_SCLK_GPIO5>;
		};
		group2 {
			pinmux = <SPIM3_MOSI_GPIO27>;
			output-low;
		};
	};

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

};
