summaryrefslogtreecommitdiff
path: root/zephyr/program/geralt/motionsense.dtsi
blob: 9ec9faa038872cb29cae9ffdd1ebac3123c48ca0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/* Copyright 2020 The ChromiumOS Authors
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include <dt-bindings/motionsense/utils.h>


/ {
	aliases {
		/*
		 * motion sense's <>_INT_EVENT is handled
		 * by alias. Using the alias, each driver creates
		 * its own <>_INT_EVENT.
		 */
		icm42607-int = &lid_accel;
	};

	/*
	 * Declare mutexes used by sensor drivers.
	 * A mutex node is used to create an instance of mutex_t.
	 * A mutex node is referenced by a sensor node if the
	 * corresponding sensor driver needs to use the
	 * instance of the mutex.
	 */
	motionsense-mutex {
		compatible = "cros-ec,motionsense-mutex";
		lid_mutex: lid-mutex {
		};
	};

	/* Rotation matrix used by drivers. */
	motionsense-rotation-ref {
		compatible = "cros-ec,motionsense-rotation-ref";
		lid_rot_ref: lid-rotation-ref {
			mat33 = <1 0 0
				 0 1 0
				 0 0 1>;
		};
	};

	/*
	 * Driver specific data. A driver-specific data can be shared with
	 * different motion sensors while they are using the same driver.
	 *
	 * If a node's compatible starts with "cros-ec,accelgyro-", it is for
	 * a common structure defined in accelgyro.h.
	 * e.g) compatible = "cros-ec,accelgyro-als-drv-data" is for
	 * "struct als_drv_data_t" in accelgyro.h
	 */
	motionsense-sensor-data {
		icm42607_data: icm42607-drv-data {
			compatible = "cros-ec,drvdata-icm42607";
			status = "okay";
		};
	};

	/*
	 * List of motion sensors that creates motion_sensors array.
	 * The nodelabel "lid_accel" and "base_accel" are used to indicate
	 * motion sensor IDs for lid angle calculation.
	 */
	motionsense-sensor {
		lid_accel: lid-accel {
			compatible = "cros-ec,icm42607-accel";
			status = "okay";

			active-mask = "SENSOR_ACTIVE_S0_S3";
			location = "MOTIONSENSE_LOC_LID";
			mutex = <&lid_mutex>;
			port = <&i2c_sensor>;
			rot-standard-ref = <&lid_rot_ref>;
			default-range = <2>;
			drv-data = <&icm42607_data>;
			configs {
				compatible =
					"cros-ec,motionsense-sensor-config";
				ec-s0 {
					odr = <(10000 | ROUND_UP_FLAG)>;
				};
				ec-s3 {
					odr = <(10000 | ROUND_UP_FLAG)>;
				};
			};
		};

		lid_gyro: lid-gyro {
			compatible = "cros-ec,icm42607-gyro";
			status = "okay";

			active-mask = "SENSOR_ACTIVE_S0_S3";
			location = "MOTIONSENSE_LOC_LID";
			mutex = <&lid_mutex>;
			port = <&i2c_sensor>;
			rot-standard-ref = <&lid_rot_ref>;
			drv-data = <&icm42607_data>;
		};
	};

	motionsense-sensor-info {
		compatible = "cros-ec,motionsense-sensor-info";

		/*
		 * list of GPIO interrupts that have to
		 * be enabled at initial stage
		 */
		sensor-irqs = <&int_lid_imu>;
	};
};