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

	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_GPIO25>,
				 <SPIM3_SCLK_GPIO19>,
				 <SPIM3_CSEL_GPIO22>;
		};
		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;
		};
	};

	ledc0_default: ledc0_default {
		group1 {
			pinmux = <LEDC_CH0_GPIO0>,
				 <LEDC_CH1_GPIO2>,
				 <LEDC_CH2_GPIO4>;
			output-enable;
		};
	};

};
