summaryrefslogtreecommitdiff
path: root/zephyr/program/skyrim/winterhold/motionsense.dtsi
blob: 60d345c0a2653f447997a63d02b1396e2809b1da (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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/* Copyright 2022 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.
		 */
		bmi3xx-int = &base_accel;
		lis2dw12-int = &base_accel;

		/* Use base accelerometer for on-body sensor */
		on-body-sensor = &base_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 {
		mutex_bmi3xx: bmi3xx-mutex {
		};
		mutex_lis2dw12: lis2dw12-mutex {
		};
	};

	/*
	 * 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 {
		bmi3xx_data: bmi3xx-drv-data {
			compatible = "cros-ec,drvdata-bmi3xx";
			status = "okay";
		};
		lis2dw12_data: lis2dw12-drv-data {
			compatible = "cros-ec,drvdata-lis2dw12";
			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 {
		base_accel: base-accel {
			compatible = "cros-ec,lis2dw12";
			status = "okay";

			active-mask = "SENSOR_ACTIVE_S0_S3";
			location = "MOTIONSENSE_LOC_BASE";
			mutex = <&mutex_lis2dw12>;
			port = <&i2c_sensor>;
			rot-standard-ref = <&base_rot_ref>;
			default-range = <2>;
			drv-data = <&lis2dw12_data>;
			i2c-spi-addr-flags = "LIS2DWL_ADDR1_FLAGS";

			configs {
				compatible =
					"cros-ec,motionsense-sensor-config";
				ec-s0 {
					odr = <(12500 | ROUND_UP_FLAG)>;
				};
				ec-s3 {
					odr = <(12500 | ROUND_UP_FLAG)>;
				};
			};
		};
	};

	motionsense-sensor-alt {
		alt_base_accel: alt-base-accel {
			compatible = "cros-ec,bmi3xx-accel";
			status = "okay";

			active-mask = "SENSOR_ACTIVE_S0_S3";
			location = "MOTIONSENSE_LOC_BASE";
			mutex = <&mutex_bmi3xx>;
			port = <&i2c_sensor>;
			rot-standard-ref = <&base_rot_ref>;
			drv-data = <&bmi3xx_data>;
			alternate-for = <&base_accel>;
			configs {
				compatible =
					"cros-ec,motionsense-sensor-config";
				ec-s0 {
					odr = <(12500 | ROUND_UP_FLAG)>;
					ec-rate = <100>;
				};
				ec-s3 {
					odr = <(12500 | ROUND_UP_FLAG)>;
				};
			};
		};
	};

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

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