/*
 * Copyright (c) 2020, Linaro Ltd.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Application overlay for testing driver builds
 *
 * Names in this file should be chosen in a way that won't conflict
 * with real-world devicetree nodes, to allow these tests to run on
 * (and be extended to test) real hardware.
 */

/ {
	test {
		#address-cells = <1>;
		#size-cells = <1>;

		test_gpio: gpio@deadbeef {
			compatible = "vnd,gpio";
			gpio-controller;
			reg = <0xdeadbeef 0x1000>;
			#gpio-cells = <0x2>;
			status = "okay";
		};

		test_spi: spi@33334444 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "vnd,spi";
			reg = <0x33334444 0x1000>;
			status = "okay";
			clock-frequency = <2000000>;

			/* one entry for every devices at spi.dtsi */
			cs-gpios = <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>;

			test_spi_enc28j60: enc28j60@0 {
				compatible = "microchip,enc28j60";
				reg = <0x0>;
				full-duplex;
				spi-max-frequency = <0>;
				int-gpios = <&test_gpio 0 0>;
				local-mac-address = [00 00 00 00 00 00];
			};

			test_spi_enc424j600: enc424j600@1 {
				compatible = "microchip,enc424j600";
				reg = <0x1>;
				spi-max-frequency = <0>;
				int-gpios = <&test_gpio 0 0>;
				local-mac-address = [00 00 00 00 00 00];
			};

			test_spi_w5500: w5500@2 {
				compatible = "wiznet,w5500";
				reg = <0x2>;
				spi-max-frequency = <0>;
				int-gpios = <&test_gpio 0 0>;
				reset-gpios = <&test_gpio 0 0>;
			};
		};
	};
};
