/*
 * Copyright (c) 2022 Henrik Brix Andersen <henrik@brixandersen.dk>
 *
 * 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>;
	};

	uart1_tx_gpio4: uart1_tx_gpio4 {
		pinmux = <UART1_TX_GPIO4>;
	};

	uart1_rx_gpio36: uart1_rx_gpio36 {
		pinmux = <UART1_RX_GPIO36>;
	};

	i2c0_scl_gpio16: i2c0_scl_gpio16 {
		pinmux = <I2C0_SCL_GPIO16>;
		drive-open-drain;
		output-high;
	};

	i2c0_sda_gpio13: i2c0_sda_gpio13 {
		pinmux = <I2C0_SDA_GPIO13>;
		drive-open-drain;
		output-high;
	};

	spim2_miso_gpio15: spim2_miso_gpio15 {
		pinmux = <SPIM2_MISO_GPIO15>;
	};

	spim2_mosi_gpio2: spim2_mosi_gpio2 {
		pinmux = <SPIM2_MOSI_GPIO2>;
		output-low;
	};

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

	spim2_csel_gpio17: spim2_csel_gpio17 {
		pinmux = <SPIM2_CSEL_GPIO17>;
	};
};
