/*
 * Copyright (c) 2023 YuLong Yao<feilongphone@gmail.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/dt-bindings/pinctrl/esp-pinctrl-common.h>
#include <dt-bindings/pinctrl/esp32c3-pinctrl.h>
#include <zephyr/dt-bindings/pinctrl/esp32c3-gpio-sigmap.h>

&pinctrl {
	uart0_default: uart0_default {
		group1 {
			pinmux = <UART0_TX_GPIO21>;
			output-high;
		};
		group2 {
			pinmux = <UART0_RX_GPIO20>;
			bias-pull-up;
		};
	};

	spim2_default: spim2_default {
		group1 {
			pinmux = <SPIM2_MISO_GPIO2>,
				<SPIM2_SCLK_GPIO6>,
				<SPIM2_CSEL_GPIO10>;
		};
		group2 {
			pinmux = <SPIM2_MOSI_GPIO7>;
			output-low;
		};
	};

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

	twai_default: twai_default {
		group1 {
			pinmux = <TWAI_TX_GPIO4>,
				<TWAI_RX_GPIO5>;
		};
	};
};
