/*
 * 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.
 */

/ {
	aliases {
		test-alias = &test_nodelabel;
	};

	chosen {
		ztest,gpio = &test_nodelabel;
	};

	zephyr,user {
		ph = <&test_gpio_1>;
		string = "foo";
	};

	test {
		#address-cells = < 0x1 >;
		#size-cells = < 0x1 >;
		interrupt-parent = <&test_intc>;

		test_pinctrl: pin-controller {
			compatible = "vnd,pinctrl";
			test_pincfg_a: pincfg-a {};
			test_pincfg_b: pincfg-b {};
			test_pincfg_c: pincfg-c {};
			test_pincfg_d: pincfg-d {};
		};

		test_arrays: array-holder {
			/*
			 * vnd,undefined-compat is for DT_NODE_HAS_COMPAT_STATUS(..,okay).
			 * There should only be one vnd,array-holder in the entire DTS.
			 */
			compatible = "vnd,array-holder", "vnd,undefined-compat";
			a = <1000 2000 3000>;
			b = [aa bb cc dd];
			c = "bar", "baz";
		};

		test_phandles: phandle-holder-0 {
                        /*
                         * There should only be one vnd,phandle-holder in the entire DTS.
                         */
			compatible = "vnd,phandle-holder";
			/*
			 * At least one of these phandles must refer to
			 * test_gpio_1, or dependency ordinal tests may fail.
			 */
			ph = <&test_gpio_1>;
			phs = <&test_i2c &test_spi>;
			phs-or = <&test_enum_default_0 &test_enum_default_1>;
			gpios = <&test_gpio_1 10 20>, <&test_gpio_2 30 40>;
			pha-gpios = <&test_gpio_1 50 60>, <0>, <&test_gpio_3 70>, <&test_gpio_2 80 90>;
			foos = <&test_gpio_1 100>, <&test_gpio_2 110>;
			foo-names = "A", "b-c";
			pwms = <&test_pwm1 8 200 3>, <&test_pwm2 5 100 1>;
			pwm-names = "red", "green";
			bar = <&test_gpio_1 200>, <&test_gpio_2 210>;
			baz-names = "john", "doe";
		};

		test_enum_0: enum-0 {
			compatible = "vnd,enum-holder";
			val = "zero";
		};

		test_enum_1: enum-1 {
			compatible = "vnd,enum-holder";
			val = "two";
		};

		test_enum_default_0: enum-2 {
			compatible = "vnd,enum-required-false-holder";
			val = "one";
		};

		test_enum_default_1: enum-3 {
			compatible = "vnd,enum-required-false-holder";
		};

		test_enum_int_default_0: enum-4 {
			compatible = "vnd,enum-int-required-false-holder";
			val = < 5 >;
		};

		test_enum_int_default_1: enum-5 {
			compatible = "vnd,enum-int-required-false-holder";
		};

		enum-6 {
			compatible = "vnd,enum-holder-inst";
			val = "zero";
		};

		enum-7 {
			compatible = "vnd,enum-required-false-holder-inst";
		};

		/*
		 * disabled/reserved should be the only nodes with their
		 * compatible in the tree.
		 */
		disabled-node@0 {
			compatible = "vnd,disabled-compat";
			reg = < 0x0 0x1000 >;
			status = "disabled";
		};

		reserved-node@0 {
			compatible = "vnd,reserved-node";
			reg = < 0x0 0x1000 >;
			status = "reserved";
		};

		disabled_gpio: gpio@0 {
			compatible = "vnd,gpio-device";
			gpio-controller;
			reg = < 0x0 0x1000 >;
			interrupts = <3 1>;
			#gpio-cells = < 0x2 >;
			status = "disabled";
		};

		reserved_gpio: gpio@1 {
			compatible = "vnd,gpio-device";
			gpio-controller;
			reg = < 0x1 0x1000 >;
			interrupts = <3 1>;
			#gpio-cells = < 0x2 >;
			label = "TEST_GPIO_1";
			status = "reserved";
		};

		test_no_status: intc_no_status@0 {
			compatible = "vnd,intc";
			reg = <0x0 0x1000>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		test_nodelabel: TEST_NODELABEL_ALLCAPS: test_gpio_1: gpio@deadbeef {
			compatible = "vnd,gpio-device";
			gpio-controller;
			reg = < 0xdeadbeef 0x1000 >;
			#gpio-cells = < 0x2 >;
			#foo-cells = < 0x1 >;
			#baz-cells = < 0x1 >;
			label = "TEST_GPIO_1";
			interrupts = <4 3>;
			status = "okay";
                        ngpios = <100>;

			test_gpio_hog_1 {
				gpio-hog;
				gpios = <0x0 0x00>, <0x1 0x10>;
				output-high;
			};

			test_gpio_hog_2 {
				gpio-hog;
				gpios = <0x3 0x20>;
				output-low;
			};
		};

		test_gpio_2: gpio@abcd1234 {
			compatible = "vnd,gpio-device";
			gpio-controller;
			reg = < 0xabcd1234 0x500 0x98765432 0xff >;
			reg-names = "one", "two";
			#gpio-cells = < 0x2 >;
			#foo-cells = < 0x1 >;
			#baz-cells = < 0x1 >;
			interrupts = <5 2>;
			label = "TEST_GPIO_2";
			status = "okay";
                        ngpios = <200>;

			test_gpio_hog_3 {
				gpio-hog;
				gpios = <0x4 0x30>;
				input;
				line-name = "TEST_GPIO_HOG_3";
			};
		};

		test_gpio_3: gpio@1234 {
			compatible = "vnd,gpio-one-cell";
			gpio-controller;
			reg = < 0x1234 0x500 >;
			#gpio-cells = < 0x1 >;
			status = "okay";
		};

		test_i2c: i2c@11112222 {
			#address-cells = < 1 >;
			#size-cells = < 0 >;
			compatible = "vnd,i2c";
			reg = < 0x11112222 0x1000 >;
			label = "TEST_I2C_CTLR";
			status = "okay";
			clock-frequency = < 100000 >;
			interrupts = <6 2 7 1>;
			interrupt-names = "status", "error";

			test-i2c-dev@10 {
				compatible = "vnd,i2c-device";
				label = "TEST_I2C_DEV_10";
				reg = < 0x10 >;
			};

			gpio@11 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "vnd,gpio-expander";
				reg = <0x11>;
			};

			test_i2c_mux: i2c-mux@12 {
				compatible = "vnd,i2c-mux";
				reg = <0x12>;
				i2c-mux-ctlr-1 {
					compatible = "vnd,i2c-mux-controller";
					#address-cells = <1>;
					#size-cells = <0>;
					test_muxed_i2c_dev_1: muxed-i2c-dev@10 {
						compatible = "vnd,i2c-device";
						status = "disabled";
						reg = <0x10>;
					};
				};
				i2c-mux-ctlr-2 {
					compatible = "vnd,i2c-mux-controller";
					#address-cells = <1>;
					#size-cells = <0>;
					test_muxed_i2c_dev_2: muxed-i2c-dev@10 {
						compatible = "vnd,i2c-device";
						status = "disabled";
						reg = <0x10>;
					};
				};
			};
		};

		test_i2c_no_reg: i2c {
			#address-cells = < 1 >;
			#size-cells = < 0 >;
			compatible = "vnd,i2c";
			status = "okay";
			clock-frequency = < 100000 >;

			test-i2c-dev@12 {
				compatible = "vnd,i2c-device";
				reg = < 0x12 >;
			};
		};

		test_i3c: i3c@88889999 {
			#address-cells = < 3 >;
			#size-cells = < 0 >;
			compatible = "vnd,i3c";
			reg = < 0x88889999 0x1000 >;
			label = "TEST_I3C_CTLR";
			status = "okay";

			test-i3c-dev@420000ABCD12345678 {
				compatible = "vnd,i3c-device";
				label = "TEST_I3C_DEV_42";
				reg = < 0x42 0xABCD 0x12345678 >;
			};

			test-i3c-i2c-dev@380000000000000050 {
				compatible = "vnd,i3c-i2c-device";
				label = "TEST_I3C_I2C_DEV_38";
				reg = < 0x38 0x0 0x50 >;
			};
		};

		test_mbox: mbox {
			compatible = "vnd,mbox";
			#mbox-cells = <1>;
			status = "okay";
		};

		test_mbox_zero_cell: mbox_zero_cell {
			compatible = "vnd,mbox-zero-cell";
			#mbox-cells = <0>;
			status = "okay";
		};

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

			cs-gpios = <&test_gpio_1 0x10 0x20>,
					<&test_gpio_2 0x30 0x40>,
					<&test_gpio_2 0x50 0x60>;

			/* all vnd,spi-device instances should have CS */

			test-spi-dev@0 {
				compatible = "vnd,spi-device";
				label = "TEST_SPI_DEV_0";
				reg = <0>;
				spi-max-frequency = < 2000000 >;
			};

			test-spi-dev@1 {
				compatible = "vnd,spi-device";
				reg = <1>;
				spi-max-frequency = < 2000000 >;
			};

			gpio@2 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "vnd,gpio-expander";
				reg = <2>;
				spi-max-frequency = <(1 * 1000 * 1000)>;
			};
		};

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

			/*
			 * There should only be one spi-device-2 node.
			 * It should not have a CS GPIO.
			 */
			test_spi_dev_no_cs: test-spi-dev@0 {
				compatible = "vnd,spi-device-2";
				reg = <0>;
				spi-max-frequency = < 2000000 >;
			};
		};

		test_i2c_1: i2c@77778888 {
			#address-cells = < 1 >;
			#size-cells = < 0 >;
			compatible = "vnd,i2c";
			reg = < 0x77778888 0x1000 >;
			status = "okay";
			clock-frequency = < 100000 >;
			interrupts = <11 3 12 2>;
			interrupt-names = "status", "error";
		};

		test_adc_1: adc@10002000 {
			reg = <0x10002000 0x1000>;
			compatible = "vnd,adc";
			status = "okay";
			#io-channel-cells = <1>;
		};

		test_adc_2: adc@10003000 {
			reg = <0x10003000 0x1000>;
			compatible = "vnd,adc";
			status = "okay";
			#io-channel-cells = <1>;
		};

		/* there should only be one of these */
		test_temp_sensor: temperature-sensor {
			compatible = "vnd,adc-temp-sensor";
			io-channels = <&test_adc_1 10>, <&test_adc_2 20>;
			io-channel-names = "ch1", "ch2";
			dmas = <&test_dma1 1 2>, <&test_dma2 3 4>;
			dma-names = "tx", "rx";
			clocks = <&test_clk 3 7>, <&test_fixed_clk>, <&test_clk 8 2>;
			clock-names = "clk-a", "clk-fixed", "clk-b";
			resets = <&test_reset 10>, <&test_reset 20>;
			reset-names = "reset-a", "reset-b";
			pinctrl-0 = <&test_pincfg_a &test_pincfg_b>;
			pinctrl-1 = <&test_pincfg_c &test_pincfg_d>;
			pinctrl-2 = <&test_pincfg_d>;
			pinctrl-names = "default", "sleep", "f.o.o2";
			mboxes = <&test_mbox 1>, <&test_mbox 2>, <&test_mbox_zero_cell>;
			mbox-names = "tx", "rx", "zero";
		};

		/* there should only be one of these */
		test_reg: reg-holder@9999aaaa {
			compatible = "vnd,reg-holder";
			reg = < 0x9999aaaa 0x1000 0xbbbbcccc 0x3f >;
			status = "okay";
			reg-names = "first", "second";
			misc-prop = <1234>;
		};

		test_vendor: vendor {
			compatible = "vnd,model1", "gpio", "zephyr,model2";
			status = "okay";
		};

		test_intc: interrupt-controller@bbbbcccc  {
			compatible = "vnd,intc";
			reg = <0xbbbbcccc 0x1000>;
			interrupt-controller;
			#interrupt-cells = <2>;
			interrupts = <11 0>;
		};

		/* there should only be one of these */
		test_irq: interrupt-holder {
			compatible = "vnd,interrupt-holder";
			status = "okay";
			interrupts = <30 3 40 5 60 7>;
			interrupt-parent = <&test_intc>;
			interrupt-names = "err", "stat", "done";
		};

		test_fixed_clk: test-fixed-clock {
			compatible = "fixed-clock";
			clock-frequency = <25000000>;
			#clock-cells = <0>;
		};

		test_clk: test-clock {
			compatible = "vnd,clock";
			#clock-cells = <2>;
		};

		test_reset: test-reset@abcd1234 {
			compatible = "vnd,reset";
			reg-width = <4>;
			reg = <0xabcd1234 0x100>;
			#reset-cells = <1>;
		};

		test_dma1: dma@44443333 {
			compatible = "vnd,dma";
			#dma-cells = <2>;
			reg = < 0x44443333 0x1000 >;
			interrupts = <11 3>;
			status = "okay";
		};

		test_dma2: dma@44442222 {
			compatible = "vnd,dma";
			#dma-cells = <2>;
			reg = < 0x44442222 0x1000 >;
			interrupts = <12 3>;
			status = "okay";
		};

		test_pwm1: pwm@55551111 {
			compatible = "vnd,pwm";
			#pwm-cells = <3>;
			reg = < 0x55551111 0x1000 >;
			status = "okay";
		};

		test_pwm2: pwm@55552222 {
			compatible = "vnd,pwm";
			#pwm-cells = <3>;
			reg = < 0x55552222 0x1000 >;
			status = "okay";
		};

		test_transceiver0: can-phy0 {
			compatible = "vnd,can-transceiver";
			status = "okay";
			#phy-cells = <0>;
			max-bitrate = <5000000>;
		};

		test_can0: can@55553333 {
			compatible = "vnd,can-controller";
			reg = < 0x55553333 0x1000 >;
			sample-point = <875>;
			bus-speed = <125000>;
			status = "okay";
			phys = <&test_transceiver0>;
		};

		test_can1: can@55554444 {
			compatible = "vnd,can-controller";
			reg = < 0x55554444 0x1000 >;
			sample-point = <875>;
			bus-speed = <125000>;
			status = "okay";

			can-transceiver {
				max-bitrate = <2000000>;
			};
		};

		/* there should only be one of these */
		test_children: test-children {
			compatible = "vnd,child-bindings";

			test_child_a: child-a {
				val = <0>;
				status = "okay";
			};
			test_child_b: child-b {
				val = <1>;
				status = "okay";
			};
			test_child_c: child-c {
				val = <2>;
				status = "disabled";
			};
		};

		test-great-grandchildren {
			compatible = "vnd,great-grandchild-bindings";

			child {
				grandchild {
					test_ggc: great-grandchild {
						ggc-prop = <42>;
					};
				};
			};
		};

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

			test_ranges_pcie: pcie@0 {
				compatible = "vnd,pcie";
				reg = <0 0 1>;
				#address-cells = <3>;
				#size-cells = <2>;

				ranges = <0x1000000 0 0 0 0x3eff0000 0 0x10000>,
					 <0x2000000 0 0x10000000 0 0x10000000 0 0x2eff0000>,
					 <0x3000000 0x80 0 0x80 0 0x80 0>;
			};

			test_ranges_other: other@1 {
				reg = <0 1 1>;
				#address-cells = <2>;
				#size-cells = <1>;

				ranges = <0x0 0x0 0x0 0x3eff0000 0x10000>,
				         <0x0 0x10000000 0x0 0x10000000 0x2eff0000>;
			};

			test_ranges_empty: empty@2 {
				reg = <0 2 1>;
				#address-cells = <2>;
				#size-cells = <1>;

				ranges;
			};
		};

		device-with-props-0 {
			compatible = "vnd,device-with-props";
			status = "okay";
			foo = <1>;
			bar = <2>;
		};

		device-with-props-1 {
			compatible = "vnd,device-with-props";
			status = "okay";
			foo = <2>;
		};

		device-with-props-2 {
			compatible = "vnd,device-with-props";
			status = "disabled";
			baz = <1>;
		};

		test_string_token_0: string-token-0 {
			compatible = "vnd,string-token";
			val = "token_zero";
		};

		test_string_token_1: string-token-1 {
			compatible = "vnd,string-token";
			val = "token_one";
		};

		test_string_token_2: string-token-2 {
			compatible = "vnd,string-token";
			val = "token_two";
		};

		test_str_array_token_0: string-array-token-0 {
			compatible = "vnd,string-array-token";
			val = "token_first_idx_zero",
			      "token_first_idx_one",
			      "token_first_idx_two";
		};

		test_str_array_token_1: string-array-token-1 {
			compatible = "vnd,string-array-token";
			val = "token_second_idx_zero",
			      "token_second_idx_one",
			      "token_second_idx_two",
			      "token_second_idx_three";
		};

		test_str_unquoted_f0: string-unquoted-f0 {
			compatible = "vnd,string-unquoted";
			val = "0.1234";
		};

		test_str_unquoted_f1: string-unquoted-f1 {
			compatible = "vnd,string-unquoted";
			val = "0.9e-3";
		};

		test_str_unquoted_t: string-unquoted-t {
			compatible = "vnd,string-unquoted";
			val = "XA XPLUS XB";
		};

		test_stra_unquoted_f0: string-array-unquoted-f0 {
			compatible = "vnd,string-array-unquoted";
			val = "1.0e2", "2.0e2", "3.0e2", "4.0e2";
		};

		test_stra_unquoted_f1: string-array-unquoted-f1 {
			compatible = "vnd,string-array-unquoted";
			val = "0.01", "0.1", "1.0", "10.0";
		};

		test_stra_unquoted_t: string-array-unquoted-t {
			compatible = "vnd,string-array-unquoted";
			val = "XA XPLUS XB", "XC XPLUS XD", "XA XMINUS XB", "XC XMINUS XD";
		};

		test-mtd@ffeeddcc {
			reg = < 0x0 0x1000 >;
			#address-cells = < 1 >;
			#size-cells = < 1 >;

			flash@20000000 {
				compatible = "soc-nv-flash";
				reg = < 0x20000000 0x100 >;
				partitions {
					compatible = "fixed-partitions";
					#address-cells = < 1 >;
					#size-cells = < 1 >;

					partition@0 {
						reg = < 0x0 0xc0 >;
						label = "test-partition-0";
					};
					partition@c0 {
						reg = < 0xc0 0x40 >;
						label = "test-partition-1";
					};
				};
			};
		};

		test-mtd@33221100 {
			reg = < 0x33221100 0x1000 >;

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

				partition@6ff80 {
					reg = < 0x6ff80 0x80 >;
					label = "test-partition-2";
				};
			};
		};
	};

	test_64 {
		#address-cells = < 2 >;
		#size-cells = < 0 >;

		test_reg_64: reg-holder-64@ffffffff11223344 {
			compatible = "vnd,reg-holder-64";
			reg = < 0xffffffff 0x11223344>;
			status = "okay";
			reg-names = "test_name";
		};
	};

        non-deprecated-label {
                compatible = "vnd,non-deprecated-label";
                label = "FOO";
        };
};
