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

&pinctrl {
	spi00_default: spi00_default {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK, 2, 6)>,
				<NRF_PSEL(SPIM_MISO, 2, 9)>,
				<NRF_PSEL(SPIM_MOSI, 2, 8)>;
		};
	};

	spi00_sleep: spi00_sleep {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK, 2, 6)>,
				<NRF_PSEL(SPIM_MISO, 2, 9)>,
				<NRF_PSEL(SPIM_MOSI, 2, 8)>;
			low-power-enable;
		};
	};
};

&spi00 {
	status = "okay";
	pinctrl-0 = <&spi00_default>;
	pinctrl-1 = <&spi00_sleep>;
	pinctrl-names = "default", "sleep";
	overrun-character = <0x00>;
	slow@0 {
		compatible = "test-spi-loopback-slow";
		reg = <0>;
		spi-max-frequency = <DT_FREQ_M(2)>;
	};
	fast@0 {
		compatible = "test-spi-loopback-fast";
		reg = <0>;
		spi-max-frequency = <DT_FREQ_M(4)>;
	};
};

&gpio2 {
	status = "okay";
};
