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

&pinctrl {
	uart0_default: uart0_default {
		group1 {
			psels = <NRF_PSEL(UART_TX, 0, 5)>,
				<NRF_PSEL(UART_RX, 0, 4)>,
				<NRF_PSEL(UART_CTS, 0, 31)>,
				<NRF_PSEL(UART_RTS, 0, 30)>;
		};
	};

	uart0_sleep: uart0_sleep {
		group1 {
			psels = <NRF_PSEL(UART_TX, 0, 5)>,
				<NRF_PSEL(UART_RX, 0, 4)>,
				<NRF_PSEL(UART_CTS, 0, 31)>,
				<NRF_PSEL(UART_RTS, 0, 30)>;
			low-power-enable;
		};
	};

	spi0_default: spi0_default {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK, 0, 29)>,
				<NRF_PSEL(SPIM_MOSI, 0, 25)>,
				<NRF_PSEL(SPIM_MISO, 0, 28)>;
		};
	};

	spi0_sleep: spi0_sleep {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK, 0, 29)>,
				<NRF_PSEL(SPIM_MOSI, 0, 25)>,
				<NRF_PSEL(SPIM_MISO, 0, 28)>;
			low-power-enable;
		};
	};

};
