/*
 * 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>;
			label = "TEST_GPIO_1";
			status = "okay";
		};

		test_spi: spi@33334444 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "vnd,spi";
			reg = <0x33334444 0x1000>;
			label = "TEST_SPI_CTLR";
			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";
				label = "ENC28J60";
				reg = <0x0>;
				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";
				label = "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";
				label = "w5500";
				reg = <0x2>;
				spi-max-frequency = <0>;
				int-gpios = <&test_gpio 0 0>;
				reset-gpios = <&test_gpio 0 0>;
			};
		};
	};
};
