/*
 * 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;
	};

	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 {
			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_gpio_1 &test_gpio_2 &test_i2c>;
			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";
		};

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

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

		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";
		};

		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";
		};

		test_gpio_3: gpio@1234 {
			compatible = "vnd,gpio-one-cell";
			gpio-controller;
			reg = < 0x1234 0x500 >;
			#gpio-cells = < 0x1 >;
			label = "TEST_GPIO_3";
			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>;
				label = "TEST_EXPANDER_I2C";
			};

			test_i2c_mux: i2c-mux@12 {
				compatible = "vnd,i2c-mux";
				label = "I2C_MUX";
				reg = <0x12>;
				i2c-mux-ctlr-1 {
					compatible = "vnd,i2c-mux-controller";
					#address-cells = <1>;
					#size-cells = <0>;
					label = "I2C_MUX_CTLR_1";
					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>;
					label = "I2C_MUX_CTLR_1";
					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";
			label = "TEST_I2C_NO_REG_CTLR";
			status = "okay";
			clock-frequency = < 100000 >;

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

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

		test_mbox_zero_cell: mbox_zero_cell {
			label = "TEST_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";
				label = "TEST_SPI_DEV_1";
				reg = <1>;
				spi-max-frequency = < 2000000 >;
			};

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

		test_spi_no_cs: spi@55556666 {
			#address-cells = < 1 >;
			#size-cells = < 0 >;
			compatible = "vnd,spi";
			reg = < 0x55556666 0x1000 >;
			label = "TEST_SPI_CTLR_NO_CS";
			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";
				label = "TEST_SPI_DEV_NO_CS";
				reg = <0>;
				spi-max-frequency = < 2000000 >;
			};
		};

		test_i2c_1: i2c@77778888 {
			#address-cells = < 1 >;
			#size-cells = < 0 >;
			compatible = "vnd,i2c";
			reg = < 0x77778888 0x1000 >;
			label = "TEST_I2C_CTLR_1";
			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";
			label = "TEST_ADC_1";
			status = "okay";
			#io-channel-cells = <1>;
		};

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

		/* there should only be one of these */
		test_temp_sensor: temperature-sensor {
			compatible = "vnd,adc-temp-sensor";
			label = "TEST_TEMP";
			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_intc: interrupt-controller@bbbbcccc  {
			compatible = "vnd,intc";
			reg = <0xbbbbcccc 0x1000>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		/* 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-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";
                        label = "TEST_CLOCK";
			#clock-cells = <2>;
		};

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

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

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

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

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

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

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

		test_can1: can@55554444 {
			compatible = "vnd,can-controller";
			reg = < 0x55554444 0x1000 >;
			sjw = <1>;
			sample-point = <875>;
			bus-speed = <125000>;
			label = "TEST_CAN_CTRL_1";
			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_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";
		};
	};
};
