/*
 * 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_sx1509b: sx1509b@0 {
				compatible = "semtech,sx1509b";
				reg = <0x0>;
				#gpio-cells = <2>;
				ngpios = <16>;
				gpio-controller;
			};

			test_i2c_pcal6408a: pcal6408a@1 {
				compatible = "nxp,pcal6408a";
				reg = <0x1>;
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <8>;
				int-gpios = <&test_gpio 0 0>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_i2c_pcal6416a: pcal6416a@2 {
				compatible = "nxp,pcal6416a";
				reg = <0x2>;
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <16>;
				int-gpios = <&test_gpio 0 0>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_i2c_pca95xx: pca95xx@20 {
				compatible = "nxp,pca95xx";
				reg = <0x20>;
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <16>;
				interrupt-gpios = <&test_gpio 0 0>;
			};

			test_i2c_pcf8575: pcf8575@21 {
				compatible = "nxp,pcf857x";
				reg = <0x21>;
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <16>;
				int-gpios = <&test_gpio 0 0>;
			};

			test_i2c_pcf8574: pcf8574@27 {
				compatible = "nxp,pcf857x";
				reg = <0x27>;
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <8>;
				int-gpios = <&test_gpio 0 0>;
			};

			test_i2c_pca953x: pca953x@70 {
				compatible = "ti,tca9538";
				reg = <0x70>;
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <8>;
				nint-gpios = <&test_gpio 0 0>;
			};

			test_i2c_mcp230xx: mcp230xx@0 {
				compatible = "microchip,mcp230xx";
				reg = <0x0>;
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <16>;
			};

			test_i2c_fxl6408: fxl6408@43 {
				status = "okay";
				compatible = "fcs,fxl6408";
				reg = <0x43>;
				ngpios = <8>;
				#gpio-cells = <2>;
				gpio-controller;
			};

			mfd-nct38xx@72 {
				compatible = "nuvoton,nct38xx";
				reg = <0x72>;
				test_i2c_nct3807: nct3807 {
					#address-cells = <1>;
					#size-cells = <0>;
					compatible = "nuvoton,nct38xx-gpio";

					gpio@0 {
						compatible = "nuvoton,nct38xx-gpio-port";
						reg = <0x0>;
						gpio-controller;
						#gpio-cells = <2>;
						ngpios = <8>;
						pin_mask = <0xff>;
						pinmux_mask = <0xf7>;
					};

					gpio@1 {
						compatible = "nuvoton,nct38xx-gpio-port";
						reg = <0x1>;
						gpio-controller;
						#gpio-cells = <2>;
						ngpios = <8>;
						pin_mask = <0xff>;
					};
				};
			};

			test_i2c_nct3808_p1: mfd-nct38xx@71 {
				compatible = "nuvoton,nct38xx";
				reg = <0x71>;
				nct3808_0_P1 {
					#address-cells = <1>;
					#size-cells = <0>;
					compatible = "nuvoton,nct38xx-gpio";

					gpio@0 {
						compatible = "nuvoton,nct38xx-gpio-port";
						reg = <0x0>;
						gpio-controller;
						#gpio-cells = <2>;
						ngpios = <8>;
						pin_mask = <0xdc>;
						pinmux_mask = <0xff>;
					};
				};
			};

			test_i2c_nct3808_p2: mfd-nct38xx@75 {
				compatible = "nuvoton,nct38xx";
				reg = <0x75>;
				nct3808_0_P2 {
					#address-cells = <1>;
					#size-cells = <0>;
					compatible = "nuvoton,nct38xx-gpio";

					gpio@0 {
						compatible = "nuvoton,nct38xx-gpio-port";
						reg = <0x0>;
						gpio-controller;
						#gpio-cells = <2>;
						ngpios = <8>;
						pin_mask = <0xdc>;
						pinmux_mask = <0xff>;
					};
				};
			};

			test_i2c_tca6424a: tca6424a@23 {
				compatible = "ti,tca6424a";
				reg = <0x23>;
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <24>;
				int-gpios = <&test_gpio 0 0>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_i2c_axp192: axp192@24 {
				compatible = "x-powers,axp192";
				reg = <0x24>;

				axp192_gpio {
					compatible = "x-powers,axp192-gpio";
					gpio-controller;
					#gpio-cells = <2>;
					ngpios = <5>;
				};
			};
		};

		nct3807_alert_1 {
			compatible = "nuvoton,nct38xx-gpio-alert";
			irq-gpios =  <&test_gpio 0 0>;
			nct38xx-dev = <&test_i2c_nct3808_p1 &test_i2c_nct3808_p2>;
		};

		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_spi_mcp23s17: mcp23s17@0 {
				compatible = "microchip,mcp23s17";
				spi-max-frequency = <0>;
				reg = <0x0>;
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <16>;
			};

			test_spi_mcp23sxx: mcp23sxx@1 {
				compatible = "microchip,mcp23sxx";
				spi-max-frequency = <0>;
				reg = <0x01>;
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <16>;
			};

			test_spi_bd8lb600fs: bd8lb600fs@2 {
				compatible = "rohm,bd8lb600fs";
				spi-max-frequency = <0>;
				reg = <0x02>;
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <8>;
				reset-gpios = <&test_gpio 0 0>;
			};

			test_spi_ad5592: ad5592@3 {
				compatible = "adi,ad5592";
				status = "okay";
				reg = <0x03>;
				spi-max-frequency = <0>;
				reset-gpios = <&test_gpio 0 0>;

				ad5592_gpio: gpio-controller {
					compatible = "adi,ad5592-gpio";
					gpio-controller;
					#gpio-cells = <2>;
					ngpios = <8>;
				};
			};

			test_spi_tle9104: tle9104@4 {
				compatible = "infineon,tle9104";
				spi-max-frequency = <0>;
				reg = <0x04>;
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <4>;
				resn-gpios = <&test_gpio 0 0>;
				en-gpios = <&test_gpio 0 0>;
			};
		};
	};
};
