/* Copyright 2022 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include / { aliases { /* * Interrupt bindings for sensor devices. */ lsm6dso-int = &base_accel; lis2dw12-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 { label = "LID_MUTEX"; }; base_mutex: base-mutex { label = "BASE_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)>; }; base_rot_ref: base-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 { lsm6dso_data: lsm6dso-drv-data { compatible = "cros-ec,drvdata-lsm6dso"; status = "okay"; }; lis2dw12_data: lis2dw12-drv-data { compatible = "cros-ec,drvdata-lis2dw12"; status = "okay"; }; }; /* * List of motion sensors that creates motion_sensors array. * The label "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,lsm6dso-accel"; status = "okay"; label = "Base Accel"; active-mask = "SENSOR_ACTIVE_S0_S3"; location = "MOTIONSENSE_LOC_BASE"; mutex = <&base_mutex>; port = <&i2c_ec_i2c_sensor>; rot-standard-ref = <&base_rot_ref>; drv-data = <&lsm6dso_data>; configs { compatible = "cros-ec,motionsense-sensor-config"; ec-s0 { label = "SENSOR_CONFIG_EC_S0"; odr = <(10000 | ROUND_UP_FLAG)>; }; ec-s3 { label = "SENSOR_CONFIG_EC_S3"; odr = <(10000 | ROUND_UP_FLAG)>; }; }; }; base_gyro: base-gyro { compatible = "cros-ec,lsm6dso-gyro"; status = "okay"; label = "Base Gyro"; active-mask = "SENSOR_ACTIVE_S0_S3"; location = "MOTIONSENSE_LOC_BASE"; mutex = <&base_mutex>; port = <&i2c_ec_i2c_sensor>; rot-standard-ref = <&base_rot_ref>; drv-data = <&lsm6dso_data>; }; lid_accel: lid-accel { compatible = "cros-ec,lis2dw12"; status = "okay"; label = "Lid Accel"; active-mask = "SENSOR_ACTIVE_S0_S3"; location = "MOTIONSENSE_LOC_LID"; mutex = <&lid_mutex>; port = <&i2c_ec_i2c_sensor>; rot-standard-ref = <&lid_rot_ref>; default-range = <2>; drv-data = <&lis2dw12_data>; i2c-spi-addr-flags = "LIS2DWL_ADDR0_FLAGS"; configs { compatible = "cros-ec,motionsense-sensor-config"; ec-s0 { label = "SENSOR_CONFIG_EC_S0"; odr = <(10000 | ROUND_UP_FLAG)>; }; ec-s3 { label = "SENSOR_CONFIG_EC_S3"; odr = <(10000 | 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_imu>; /* list of sensors in force mode */ accel-force-mode-sensors = <&lid_accel>; }; };