/*
 * Copyright (c) 2022 Vaishnav Achath
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/dt-bindings/pinctrl/cc13xx_cc26xx-pinctrl.h>

&pinctrl {
	/* UART0 */
	uart0_tx_default: uart0_tx_default {
		pinmux = <13 IOC_PORT_MCU_UART0_TX>;
		bias-disable;
	};

	uart0_rx_default: uart0_rx_default {
		pinmux = <12 IOC_PORT_MCU_UART0_RX>;
		bias-disable;
		input-enable;
	};

	/* UART1 */
	uart1_tx_default: uart1_tx_default {
		pinmux = <22 IOC_PORT_MCU_UART1_TX>;
		bias-disable;
	};

	uart1_rx_default: uart1_rx_default {
		pinmux = <24 IOC_PORT_MCU_UART1_RX>;
		bias-disable;
		input-enable;
	};

	/* I2C0 */
	i2c0_scl_default: i2c0_scl_default {
		pinmux = <4 IOC_PORT_MCU_I2C_MSSCL>;
		bias-pull-up;
		drive-open-drain;
		input-enable;
	};

	i2c0_sda_default: i2c0_sda_default {
		pinmux = <5 IOC_PORT_MCU_I2C_MSSDA>;
		bias-pull-up;
		drive-open-drain;
		input-enable;
	};

	i2c0_scl_sleep: i2c0_scl_sleep {
		pinmux = <4 IOC_PORT_GPIO>;
		bias-disable;
	};

	i2c0_sda_sleep: i2c0_sda_sleep {
		pinmux = <5 IOC_PORT_GPIO>;
		bias-disable;
	};

	/* SPI0 */
	spi0_sck_default: spi0_sck_default {
		pinmux = <10 IOC_PORT_MCU_SSI0_CLK>;
		bias-disable;
	};

	spi0_mosi_default: spi0_mosi_default {
		pinmux = <9 IOC_PORT_MCU_SSI0_TX>;
		bias-disable;
	};

	spi0_miso_default: spi0_miso_default {
		pinmux = <8 IOC_PORT_MCU_SSI0_RX>;
		bias-disable;
		input-enable;
	};

	spi0_cs_default: spi0_cs_default {
		pinmux = <11 IOC_PORT_MCU_SSI0_FSS>;
		bias-disable;
	};
};
