我已经设置了一个 i2c 协议来检测地址 0x68 处的 mpu9250。现在我想配置 MPU,并且我已使用以下代码行更新了我的 dts 文件:
mpu9250@68 {
compatible = "invensense,mpu9250";
reg = <0x68>;
i2c-gate {
#address-cells = <1>;
#size-cells = <0>;
ax8975@c {
compatible = "ak,ak8975";
reg = <0x0c>;
};
};
};
但是,我在运行 >> dmesg | 时收到以下错误grep 主机
inv-mpu6050-i2c 1-0068:无效 whoami 0x40 预期 0x71 (MPU9250)
为此,我还通过开发人员 shell 使用“make menuconfig”命令配置了 i2cmux 和工业 I/O (IIO)。但我没有看到预期的结果。我哪里可能出错了?
答案1
对于 Linux 设备树中定义的 mpu9250,需要定义兼容、注册和中断。为 Android 定义时需要更多字段。
您给出的设备树定义缺少所需的现场中断
关于此的 Linux 内核文档:- https://www.kernel.org/doc/Documentation/devicetree/bindings/iio/imu/invensense%2Cmpu6050.yaml