/*
 * 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_i2c: i2c@11112222 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "vnd,i2c";
			reg = <0x11112222 0x1000>;
			status = "okay";
			clock-frequency = <100000>;

			test_i2c_at24: at24@0 {
				compatible = "atmel,at24";
				reg = <0x0>;
				size = <32768>;
				pagesize = <64>;
				address-width = <16>;
				timeout = <5>;
				wp-gpios = <&test_gpio 0 0>;
				/* read-only; */
			};
		};

		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_spi_at25: at25@0 {
				compatible = "atmel,at25";
				reg = <0x0>;
				spi-max-frequency = <0>;
				size = <32768>;
				pagesize = <64>;
				address-width = <16>;
				timeout = <5>;
				wp-gpios = <&test_gpio 0 0>;
				/* read-only; */
			};
		};
	};
};
