/*
 * rpi-enviro-board.dts
 * Device Tree Overlay to support Coral Environmental Sensor Board
 *
 * Copyright (C) 2019 Google LLC
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 */

/dts-v1/;
/plugin/;

/ {
	compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";

	fragment@0 {
		target = <&i2c_arm>;
		__overlay__ {
			#address-cells = <1>;
			#size-cells = <0>;
			status = "okay";

			opt3002@44 {
				compatible = "ti,opt3001";
				reg = <0x45>; /* address */
				interrupt-parent = <&gpio>;
				interrupts = <27 2>; /* IRQ_TYPE_EDGE_FALLING */
				#gpio-cells = <2>;
			};

			hdc2010@40 {
				compatible = "hdc20x0";
				reg = <0x40>; /* address */
			};

			bmp280@76 {
				compatible = "bmp280";
				reg = <0x76>; /* address */
			};

			tla2021@49 {
				compatible = "ti,tla202x";
				reg = <0x49>; /* address */
				#address-cells = <1>;
				#size-cells = <0>;

				channel@0 {
					reg = <0>;
					ti,gain = <0>; /* +/- 6.144 V range */
				};
			};
		};
	};

	fragment@1 {
		target = <&spi0>;
		__overlay__ {
			status = "okay";
		};
	};
};

