/*
 * Copyright (c) 2020, Linaro Ltd.
 * Copyright (c) 2022, Esco Medical ApS
 *
 * 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.
 */

#include <freq.h>
#include <zephyr/dt-bindings/led/led.h>

/ {
	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_spi: spi@33334444 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "vnd,spi";
			reg = <0x33334444 0x1000>;
			status = "okay";
			clock-frequency = <DT_FREQ_M(2)>;

			cs-gpios = <&test_gpio 0 0>;

			test_spi_tlc5971: tlc5971@0 {
				status = "okay";
				compatible = "ti,tlc59711", "ti,tlc5971";
				spi-max-frequency = <DT_FREQ_M(1)>;
				reg = <0x0>;
				chain-length = <8>; // two TLC5971 devices
				color-mapping = <LED_COLOR_ID_BLUE>,
						<LED_COLOR_ID_GREEN>,
						<LED_COLOR_ID_RED>;
			};
		};
	};
};
