/*
 * Copyright (c) 2019 STMicroelectronics
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/ {
	aliases {
		magn0 = &lis2mdl_1e_x_nucleo_iks01a3;
		accel0 = &lis2dw12_19_x_nucleo_iks01a3;
		accel1 = &lsm6dso_6b_x_nucleo_iks01a3;
	};
};

&arduino_i2c {

	hts221_x_nucleo_iks01a3: hts221@5f {
		compatible = "st,hts221";
		reg = <0x5f>;
	};

	lps22hh_x_nucleo_iks01a3: lps22hh@5d {
		compatible = "st,lps22hh";
		reg = <0x5d>;
		drdy-gpios =  <&arduino_header 12 GPIO_ACTIVE_HIGH>; /* D6 */
	};

	stts751_x_nucleo_iks01a3: stts751@4a {
		compatible = "st,stts751";
		reg = <0x4a>;
		drdy-gpios =  <&arduino_header 4 GPIO_ACTIVE_LOW>; /* A4 */
	};

	lis2mdl_1e_x_nucleo_iks01a3: lis2mdl@1e {
		compatible = "st,lis2mdl";
		reg = <0x1e>;
		irq-gpios =  <&arduino_header 2 GPIO_ACTIVE_HIGH>; /* A2 */
	};

	lis2dw12_19_x_nucleo_iks01a3: lis2dw12@19 {
		compatible = "st,lis2dw12";
		reg = <0x19>;
		irq-gpios =  <&arduino_header 3 GPIO_ACTIVE_HIGH>; /* A3 */
	};

	lsm6dso_6b_x_nucleo_iks01a3: lsm6dso@6b {
		compatible = "st,lsm6dso";
		reg = <0x6b>;
		irq-gpios =  <&arduino_header 11 GPIO_ACTIVE_HIGH>; /* D5 */
		int-pin = <2>;
	};
};
