/*
 * Copyright (c) 2020 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Application overlay for testing the devicetree.h API.
 *
 * 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 = <0x1>;
		#size-cells = <0x1>;

		test_gpio_0: gpio@ffff {
			gpio-controller;
			#gpio-cells = <0x2>;
			compatible = "vnd,gpio-device";
			status = "okay";
			reg = <0xffff 0x1000>;
		};

		test_i2c: i2c@11112222 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "vnd,i2c";
			status = "okay";
			reg = <0x11112222 0x1000>;
			clock-frequency = <100000>;

			test_dev_a: test-i2c-dev@10 {
				compatible = "vnd,i2c-device";
				status = "okay";
				reg = <0x10>;
				supply-gpios = <&test_gpio_0 1 0>;
			};

			test_gpiox: test-i2c-dev@11 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "vnd,gpio-expander";
				status = "okay";
				reg = <0x11>;
			};

			test_dev_b: test-i2c-dev@12 {
				compatible = "vnd,i2c-device";
				status = "okay";
				reg = <0x12>;
				supply-gpios = <&test_gpiox 2 0>;
			};

			test_dev_c: test-i2c-dev@13 {
				compatible = "vnd,i2c-device";
				reg = <0x13>;
				status = "disabled";

				partitions {
					compatible = "fixed-partitions";
					#address-cells = <1>;
					#size-cells = <1>;

					test_p0: partition@0 {
						label = "partition-0";
						reg = <0x00000000 0x0000C000>;
					};
					test_p1: partition@c000 {
						label = "partition-1";
						reg = <0x0000C000 0x00067000>;
					};
				};
			};

			test-i2c-dev@14 {
				compatible = "vnd,i2c-device";
				status = "okay";
				reg = <0x14>;
				supply-gpios = <&test_gpiox 2 0>;
			};
		};

		test_gpio_injected: gpio@1000 {
			gpio-controller;
			#gpio-cells = <0x2>;
			compatible = "vnd,gpio-device";
			status = "okay";
			reg = <0x1000 0x1000>;
		};
	};
};
