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>;
};
};
|