/*
 * 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_dac43608: dac43608@1 {
				compatible = "ti,dac43608";
				reg = <0x1>;
				#io-channel-cells = <1>;
			};

			test_i2c_dac53608: dac53608@2 {
				compatible = "ti,dac53608";
				reg = <0x2>;
				#io-channel-cells = <1>;
			};

			test_i2c_ad559x: ad559x@3 {
				compatible = "adi,ad559x";
				status = "okay";
				reg = <0x3>;
				reset-gpios = <&test_gpio 0 0>;

				test_i2c_ad559x_dac: dac-controller {
					compatible = "adi,ad559x-dac";
					#io-channel-cells = <1>;
				};
			};

			test_i2c_mcp4725: mcp4725@60 {
				compatible = "microchip,mcp4725";
				reg = <0x60>;
				#io-channel-cells = <1>;
			};

			test_i2c_mcp4728: mcp4728@61 {
				compatible = "microchip,mcp4728";
				reg = <0x61>;
				#io-channel-cells = <1>;
				voltage_reference = <0>;
				power_down_mode = <0>;
			};

			test_i2c_dacx0501:dacx0501@62 {
				compatible = "ti,dacx0501";
				status = "okay";
				reg = <0x62>;
				voltage-reference = "internal";
				output-gain = "mul2";
			};

			test_ad5691: ad5691@4a {
				status = "okay";
				compatible = "adi,ad5691";
				reg = <0x4a>;
				resolution = <12>;
				voltage-reference-mv = <2500>;
				#io-channel-cells = < 1 >;
			};

			test_ad5692: ad5692@4b {
				status = "okay";
				compatible = "adi,ad5692";
				reg = <0x4b>;
				resolution = <14>;
				voltage-reference-mv = <2500>;
				#io-channel-cells = < 1 >;
			};

			test_ad5693: ad5693@4c {
				status = "okay";
				compatible = "adi,ad5693";
				reg = <0x4c>;
				resolution = <16>;
				voltage-reference-mv = <2500>;
				#io-channel-cells = < 1 >;
			};
		};

		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_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>,
				   <&test_gpio 0 0>;

			test_spi_dac60508: dac60508@0 {
				compatible = "ti,dac60508";
				reg = <0x0>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				voltage-reference = <0>;
				channel0-gain = <0>;
				channel1-gain = <0>;
				channel2-gain = <0>;
				channel3-gain = <0>;
				channel4-gain = <0>;
				channel5-gain = <0>;
				channel6-gain = <0>;
				channel7-gain = <0>;
			};

			test_spi_dac70508: dac70508@1 {
				compatible = "ti,dac70508";
				reg = <0x1>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				voltage-reference = <0>;
				channel0-gain = <0>;
				channel1-gain = <0>;
				channel2-gain = <0>;
				channel3-gain = <0>;
				channel4-gain = <0>;
				channel5-gain = <0>;
				channel6-gain = <0>;
				channel7-gain = <0>;
			};

			test_spi_dac80508: dac80508@2 {
				compatible = "ti,dac80508";
				reg = <0x2>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				voltage-reference = <0>;
				channel0-gain = <0>;
				channel1-gain = <0>;
				channel2-gain = <0>;
				channel3-gain = <0>;
				channel4-gain = <0>;
				channel5-gain = <0>;
				channel6-gain = <0>;
				channel7-gain = <0>;
			};

			test_spi_ltc1660: ltc1660@3 {
				compatible = "lltc,ltc1660";
				reg = <0x3>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
			};

			test_spi_ltc1665: ltc1665@4 {
				compatible = "lltc,ltc1665";
				reg = <0x4>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
			};

			test_spi_ad5628: ad5628@5 {
				compatible = "adi,ad5628";
				reg = <0x5>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_spi_ad5648: ad5648@6 {
				compatible = "adi,ad5648";
				reg = <0x6>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_spi_ad5668: ad5668@7 {
				compatible = "adi,ad5668";
				reg = <0x7>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_spi_ad5672: ad5672@8 {
				compatible = "adi,ad5672";
				reg = <0x8>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_spi_ad5674: ad5674@9 {
				compatible = "adi,ad5674";
				reg = <0x9>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_spi_ad5676: ad5676@a {
				compatible = "adi,ad5676";
				reg = <0xA>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_spi_ad5679: ad5679@b {
				compatible = "adi,ad5679";
				reg = <0xB>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_spi_ad5684: ad5684@c {
				compatible = "adi,ad5684";
				reg = <0xC>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_spi_ad5686: ad5686@d {
				compatible = "adi,ad5686";
				reg = <0xD>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_spi_ad5687: ad5687@e {
				compatible = "adi,ad5687";
				reg = <0xE>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_spi_ad5689: ad5689@f {
				compatible = "adi,ad5689";
				reg = <0xF>;
				spi-max-frequency = <0>;
				#io-channel-cells = <1>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_spi_ad559x: ad559x@10 {
				compatible = "adi,ad559x";
				status = "okay";
				reg = <0x10>;
				spi-max-frequency = <0>;
				reset-gpios = <&test_gpio 0 0>;

				test_spi_ad559x_dac: dac-controller {
					compatible = "adi,ad559x-dac";
					#io-channel-cells = <1>;
				};
			};
		};
	};
};
