/*
 * Copyright (c) 2022 Friedt Professional Engineering Services, Inc
 *
 * 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>;
		};
	};

	spim2_default: spim2_default {
		group1 {
			pinmux = <SPIM2_MISO_GPIO4>,
				 <SPIM2_SCLK_GPIO5>,
				 <SPIM2_CSEL_GPIO6>;
		};
		group2 {
			pinmux = <SPIM2_MOSI_GPIO7>;
			output-low;
		};
	};

	i2c0_default: i2c0_default {
		group1 {
			pinmux = <I2C0_SDA_GPIO2>,
				 <I2C0_SCL_GPIO8>;
			/* Note: external 10k pull-ups on GPIO2 and GPIO8 */
			drive-open-drain;
			output-high;
		};
	};

};
