/*
 * Copyright (c) 2022 Nordic Semiconductor
 * SPDX-License-Identifier: Apache-2.0
 */

&pinctrl {
	i2c0_default: i2c0_default {
		group1 {
			psels = <NRF_PSEL(TWIM_SDA, 0, 28)>,
				<NRF_PSEL(TWIM_SCL, 0, 2)>;
		};
	};

	i2c0_sleep: i2c0_sleep {
		group1 {
			psels = <NRF_PSEL(TWIM_SDA, 0, 28)>,
				<NRF_PSEL(TWIM_SCL, 0, 2)>;
			low-power-enable;
		};
	};

	uart0_default: uart0_default {
		group1 {
			psels = <NRF_PSEL(UART_TX, 0, 29)>,
				<NRF_PSEL(UART_RX, 0, 11)>;
		};
	};

	uart0_sleep: uart0_sleep {
		group1 {
			psels = <NRF_PSEL(UART_TX, 0, 29)>,
				<NRF_PSEL(UART_RX, 0, 11)>;
			low-power-enable;
		};
	};

	spi1_default: spi1_default {
		group1 {
			psels = <NRF_PSEL(SPIS_SCK, 0, 7)>,
				<NRF_PSEL(SPIS_MOSI, 0, 0)>,
				<NRF_PSEL(SPIS_MISO, 0, 30)>,
				<NRF_PSEL(SPIS_CSN, 0, 25)>;
		};
	};

};
