/*
 * Copyright (c) 2019, Nordic Semiconductor
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

// Used by testedtlib.py

/dts-v1/;

/ {
	//
	// Interrupts
	//

	interrupt-parent-test {
		controller {
			compatible = "interrupt-three-cell";
			#interrupt-cells = <3>;
			interrupt-controller;
		};
		node {
			interrupts = <1 2 3 4 5 6>;
			interrupt-names = "foo", "bar";
			interrupt-parent = <&{/interrupt-parent-test/controller}>;
		};
	};
	interrupts-extended-test {
		controller-0 {
			compatible = "interrupt-one-cell";
			#interrupt-cells = <1>;
			interrupt-controller;
		};
		controller-1 {
			compatible = "interrupt-two-cell";
			#interrupt-cells = <2>;
			interrupt-controller;
		};
		controller-2 {
			compatible = "interrupt-three-cell";
			#interrupt-cells = <3>;
			interrupt-controller;
		};
		node {
			interrupts-extended = <
				&{/interrupts-extended-test/controller-0} 1
				&{/interrupts-extended-test/controller-1} 2 3
				&{/interrupts-extended-test/controller-2} 4 5 6>;
		};
	};
	interrupt-map-test {
		#address-cells = <2>;
		#size-cells = <0>;

		controller-0 {
			compatible = "interrupt-one-cell";
			#address-cells = <1>;
			#interrupt-cells = <1>;
			interrupt-controller;
		};
		controller-1 {
			compatible = "interrupt-two-cell";
			#address-cells = <2>;
			#interrupt-cells = <2>;
			interrupt-controller;
		};
		controller-2 {
			compatible = "interrupt-three-cell";
			#address-cells = <3>;
			#interrupt-cells = <3>;
			interrupt-controller;
		};
		nexus {
			#interrupt-cells = <2>;
			interrupt-map = <
				0 0  0 0  &{/interrupt-map-test/controller-0}  0      0
				0 0  0 1  &{/interrupt-map-test/controller-1}  0 0    0 1
				0 0  0 2  &{/interrupt-map-test/controller-2}  0 0 0  0 0 2
				0 1  0 0  &{/interrupt-map-test/controller-0}  0      3
				0 1  0 1  &{/interrupt-map-test/controller-1}  0 0    0 4
				0 1  0 2  &{/interrupt-map-test/controller-2}  0 0 0  0 0 5>;
		};
		node@0 {
			reg = <0 0>;
			interrupts = <0 0 0 1 0 2>;
			interrupt-parent = <&{/interrupt-map-test/nexus}>;
		};
		node@1 {
			reg = <0 1>;
			interrupts-extended = <
			    &{/interrupt-map-test/nexus} 0 0
			    &{/interrupt-map-test/nexus} 0 1
			    &{/interrupt-map-test/nexus} 0 2>;
		};
	};
	interrupt-map-bitops-test {
		#address-cells = <2>;
		#size-cells = <0>;

		controller {
			compatible = "interrupt-two-cell";
			#address-cells = <0>;
			#interrupt-cells = <2>;
			interrupt-controller;
		};
		nexus {
			#interrupt-cells = <2>;
			interrupt-map = <
			    6 6  6 6  &{/interrupt-map-bitops-test/controller}  2 1
			>;
			interrupt-map-mask = <0xE 0x7 0xE 0x7>;
			// Not specified in the DT spec., but shows up due to
			// common code with GPIO. Might as well test it here.
			interrupt-map-pass-thru = <1 2 3 3>;
		};
		// Child unit specifier: 00000007 0000000E 00000007 0000000E
		// Mask:                 0000000E 00000007 0000000E 00000007
		// Pass-thru:            00000001 00000002 00000003 00000003
		node@70000000E {
			reg = <0x7 0xE>;
			interrupt-parent = <&{/interrupt-map-bitops-test/nexus}>;
			interrupts = <0x7 0xE>;
		};
	};

	//
	// 'ranges'
	//

	ranges-zero-cells {
		#address-cells = <0>;

		node {
			#address-cells = <0>;
			#size-cells = <0>;

			ranges;
		};
	};

	ranges-zero-parent-cells {
		#address-cells = <0>;

		node {
			#address-cells = <1>;
			#size-cells = <0>;

			ranges = <0xA>,
				 <0x1A>,
				 <0x2A>;
		};
	};

	ranges-one-address-cells {
		#address-cells = <0>;

		node {
			reg = <1>;
			#address-cells = <1>;

			ranges = <0xA 0xB>,
				 <0x1A 0x1B>,
				 <0x2A 0x2B>;
		};
	};

	ranges-one-address-two-size-cells {
		#address-cells = <0>;

		node {
			reg = <1>;
			#address-cells = <1>;
			#size-cells = <2>;

			ranges = <0xA 0xB 0xC>,
				 <0x1A 0x1B 0x1C>,
				 <0x2A 0x2B 0x2C>;
		};
	};

	ranges-two-address-cells {
		#address-cells = <1>;

		node@1 {
			reg = <1 2>;

			ranges = <0xA 0xB 0xC 0xD>,
				 <0x1A 0x1B 0x1C 0x1D>,
				 <0x2A 0x2B 0x2C 0x2D>;
		};
	};

	ranges-two-address-two-size-cells {
		#address-cells = <1>;

		node@1 {
			reg = <1 2>;
			#size-cells = <2>;

			ranges = <0xA 0xB 0xC 0xD 0xE>,
				 <0x1A 0x1B 0x1C 0x1D 0x1E>,
				 <0x2A 0x2B 0x2C 0x2D 0x1D>;
		};
	};

	ranges-three-address-cells {
		node@1 {
			reg = <0 1 2>;
			#address-cells = <3>;

			ranges = <0xA 0xB 0xC 0xD 0xE 0xF>,
				 <0x1A 0x1B 0x1C 0x1D 0x1E 0x1F>,
				 <0x2A 0x2B 0x2C 0x2D 0x2E 0x2F>;
		};
	};

	ranges-three-address-two-size-cells {
		node@1 {
			reg = <0 1 2>;
			#address-cells = <3>;
			#size-cells = <2>;

			ranges = <0xA 0xB 0xC 0xD 0xE 0xF 0x10>,
				 <0x1A 0x1B 0x1C 0x1D 0x1E 0x1F 0x110>,
				 <0x2A 0x2B 0x2C 0x2D 0x2E 0x2F 0x210>;
		};
	};


	//
	// 'reg'
	//

	reg-zero-address-cells {
		#address-cells = <0>;
		#size-cells = <1>;

		node {
			reg = <1 2>;
		};
	};
	reg-zero-size-cells {
		#address-cells = <1>;
		#size-cells = <0>;

		node {
			reg = <1 2>;
		};
	};
	// Use implied #size-cells = <1>
	reg-ranges {
		#address-cells = <2>;

		parent {
			#address-cells = <1>;
			ranges = <1  0xA 0xB  1 /* 1    -> 0xA 0xB */
				  2  0xC 0xD  2 /* 2..3 -> 0xC 0xD */
				  4  0xE 0xF  1 /* 4    -> 0xE 0xF */
				 >;

			node {
				reg = <5 1 /* Matches no range */
				       4 1 /* Matches third range */
				       3 1 /* Matches second range */
				       2 1 /* Matches second range */
				       1 1 /* Matches first range */
				       0 1 /* Matches no range */
				       >;
			};
		};
	};
	// Build up <3 2 1> address with nested 'ranges'
	reg-nested-ranges {
		#address-cells = <3>;

		grandparent {
			#address-cells = <2>;
			#size-cells = <2>;
			ranges = <0 0  3 0 0  2 2>;

			parent {
				#address-cells = <1>;
				ranges = <0  2 0  2>;

				node {
					reg = <1 1>;
				};
			};
		};
	};

	//
	// 'pinctrl-<index>'
	//

	pinctrl {
		dev {
			pinctrl-0 = <>;
			pinctrl-1 = <&{/pinctrl/pincontroller/state-1}>;
			pinctrl-2 = <&{/pinctrl/pincontroller/state-1}
				     &{/pinctrl/pincontroller/state-2}>;
			pinctrl-names = "zero", "one", "two";
		};
		pincontroller {
			state-1 {
			};
			state-2 {
			};
		};
	};

	//
	// For testing Node.parent and Node.children
	//

	parent {
		child-1 {
		};
		child-2 {
			grandchild {
			};
		};
	};

	//
	// For testing 'include:'
	//

	binding-include {
		compatible = "binding-include-test";
		foo = <0>;
		bar = <1>;
		baz = <2>;
		qaz = <3>;
	};

	//
	// For testing Node.props (derived from 'properties:' in the binding)
	//

	props {
		compatible = "props";
		existent-boolean;
		int = <1>;
		array = <1 2 3>;
		uint8-array = [ 12 34 ];
		string = "foo";
		string-array = "foo", "bar", "baz";
		phandle-ref = < &{/ctrl-1} >;
		phandle-refs = < &{/ctrl-1} &{/ctrl-2} >;
		phandle-array-foos = < &{/ctrl-1} 1 &{/ctrl-2} 2 3 >;
		foo-gpios = < &{/ctrl-1} 1 >;
		path = &{/ctrl-1};
	};

	ctrl-1 {
		compatible = "phandle-array-controller-1";
		#phandle-array-foo-cells = <1>;
		#gpio-cells = <1>;
	};

	ctrl-2 {
		compatible = "phandle-array-controller-2";
		#phandle-array-foo-cells = <2>;
	};

	props-2 {
		compatible = "props";
		phandle-array-foos = < &{/ctrl-0-1} 0 &{/ctrl-0-2} >;
		phandle-array-foo-names = "a", "missing", "b";
	};

	ctrl-0-1 {
		compatible = "phandle-array-controller-0";
		#phandle-array-foo-cells = <0>;
	};

	ctrl-0-2 {
		compatible = "phandle-array-controller-0";
		#phandle-array-foo-cells = <0>;
	};

	//
	// Test <prefix>-map, via gpio-map
	//

	gpio-map {
		source {
			compatible = "gpio-src";
			foo-gpios = <&{/gpio-map/connector} 3 4
				     &{/gpio-map/connector} 1 2>;
		};
		connector {
			#gpio-cells = <2>;
			// Use different data lengths for source and
			// destination to make it a bit trickier
			gpio-map = <1 2 &{/gpio-map/destination} 5
				    3 4 &{/gpio-map/destination} 6>;
		};
		destination {
			compatible = "gpio-dst";
			gpio-controller;
			#gpio-cells = <1>;
		};
	};

	//
	// For testing Node.props with 'default:' values in binding
	//

	defaults {
		compatible = "defaults";
		// Should override the 'default:' in the binding
		default-not-used = <234>;
	};

	//
	// For testing 'enum:'
	//

	enums {
		compatible = "enums";
		int-enum = <1>;
		string-enum = "foo_bar";
		tokenizable-enum = "123 is ok";
		tokenizable-lower-enum = "bar";
		no-enum = "baz";
	};

	//
	// For testing 'bus:' and 'on-bus:'
	//

	buses {
		// The 'node' nodes below will map to different bindings since
		// they appear on different buses
		foo-bus {
			compatible = "foo-bus";
			node1 {
				compatible = "on-bus", "on-any-bus";
				nested {
					compatible = "on-bus";
				};
			};
			node2 {
				compatible = "on-any-bus", "on-bus";
			};
		};
		bar-bus {
			compatible = "bar-bus";
			node {
				compatible = "on-bus";
			};
		};
		no-bus-node {
			compatible = "on-any-bus";
		};
	};

	//
	// Node with 'child-binding:' in binding (along with a recursive
	// 'child-binding:')
	//

	child-binding {
		compatible = "top-binding";
		child-1 {
			child-prop = <1>;
			grandchild {
				grandchild-prop = <2>;
			};
		};
		child-2 {
			child-prop = <3>;
		};
	};

	//
	// zephyr,user binding inference
	//

	zephyr,user {
		boolean;
		bytes = [81 82 83];
		number = <23>;
		numbers = <1>, <2>, <3>;
		string = "text";
		strings = "a", "b", "c";
		handle = <&{/ctrl-1}>;
		phandles = <&{/ctrl-1}>, <&{/ctrl-2}>;
		phandle-array-foos = <&{/ctrl-2} 1 2>;
	};

	//
	// For testing that neither 'include: [foo.yaml, bar.yaml]' nor
	// 'include: [bar.yaml, foo.yaml]' causes errors when one of the files
	// has 'required: true' and the other 'required: false'
	//

	include-order {
		node-1 {
			compatible = "order-1";
			foo = <1>;
		};
		node-2 {
			compatible = "order-2";
			foo = <2>;
		};
	};

	//
	// For testing deprecated property
	//
	test-deprecated {
		compatible = "test-deprecated";
		oldprop = <4>;	/* deprecated property */
		curprop = <5>;
	};


	//
	// For testing deprecated features
	//

	deprecated {
		compatible = "deprecated";
		required = <1>;
		required-2 = <2>;
		#foo-cells = <2>;
		sub-node {
			foos = <&{/deprecated} 1 2>;
		};
	};
};
