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

	uart1_default: uart1_default {
		group1 {
			pinmux = <UART1_TX_GPIO4>,
				 <UART1_RX_GPIO36>;
		};
	};

	i2c0_default: i2c0_default {
		group1 {
			pinmux = <I2C0_SCL_GPIO16>,
				 <I2C0_SDA_GPIO13>;
			drive-open-drain;
			output-high;
		};
	};

	spim2_default: spim2_default {
		group1 {
			pinmux = <SPIM2_MISO_GPIO15>,
				 <SPIM2_SCLK_GPIO14>,
				 <SPIM2_CSEL_GPIO17>;
		};
		group2 {
			pinmux = <SPIM2_MOSI_GPIO2>;
			output-low;
		};
	};

	twai_default: twai_default {
		group1 {
			pinmux = <TWAI_TX_GPIO5>,
				 <TWAI_RX_GPIO35>;
		};
	};
};
