Skip to content

Commit dd11a14

Browse files
张林盛claude
andcommitted
fix(imu): address PR review issues for BMI220 support
HIGH fixes: - Revert bmi2.c chip_id hack: remove hardcoded 0x26 from shared library. The BMI220 driver sets dev->chip_id = 0x26 before calling bmi2_sec_init(), so the original check (chip_id == dev->chip_id) passes naturally. - Add tkl_i2c_deinit() on all BMI220 init error paths to prevent I2C leak - Fix misleading comments about config firmware source MEDIUM fixes: - Move bmi260_config_file.c from bmi270/ to bmi220/ directory - Add CONFIG_ENABLE_IMU_BMI220 section in imu/CMakeLists.txt - Populate dev->chip_id field after successful init - Remove production debug logging in sand_update_physics() - Remove unused board_bmi220_scan_i2c() and board_bmi220_read_gyro() - Add comments explaining why bmi270_* APIs are valid for BMI220 - Fix inaccurate Kconfig descriptions LOW fixes: - Convert migration doc from Chinese to English Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 5030ab6 commit dd11a14

8 files changed

Lines changed: 80 additions & 148 deletions

File tree

Lines changed: 50 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,90 @@
1-
# BMI270 BMI220 迁移总结
1+
# BMI270 to BMI220 Migration Summary
22

3-
## 背景
3+
## Background
44

5-
TUYA_T5AI_PIXEL 开发板上实际搭载的 IMU 芯片为 **BMI220**chip_id = `0x26`),而非 BMI270chip_id = `0x24`)。原 BMI270 驱动初始化时 chip_id 校验失败,即使绕过校验,BMI270 的配置固件与 BMI220 不兼容,导致传感器数据全部为零。
5+
The TUYA_T5AI_PIXEL board ships with a **BMI220** IMU (chip_id = `0x26`), not the BMI270 (chip_id = `0x24`). The original BMI270 driver failed during chip_id validation. Even when that check was bypassed, the BMI270 config firmware is incompatible with BMI220, causing all sensor outputs to read zero.
66

7-
## 问题根因
7+
## Root Cause
88

9-
BMI2xx 系列传感器在上电后必须上传一份 **8192 字节的配置固件(config file)**,芯片内部微引擎才能正常工作。每个型号的固件不通用:
9+
BMI2xx sensors require an **8192-byte config firmware upload** after power-on for the internal micro-engine to function. Each variant needs its own firmware — they are not interchangeable:
1010

11-
| 芯片 | Chip ID | 配置固件数组名 | 固件来源 |
12-
|----------|---------|--------------------------|----------|
13-
| BMI270 | 0x24 | `bmi270_config_file` | Bosch BMI270 SDK |
14-
| BMI220 | 0x26 | `bmi260_config_file` | ChromeOS EC `third_party/bmi220` (v2.47.1) |
11+
| Chip | Chip ID | Config Array Name | Firmware Source |
12+
|--------|---------|--------------------------|-----------------|
13+
| BMI270 | 0x24 | `bmi270_config_file` | Bosch BMI270 SDK |
14+
| BMI220 | 0x26 | `bmi260_config_file` | ChromeOS EC `third_party/bmi220` (v2.47.1) |
1515

16-
上传错误的固件后,`INTERNAL_STATUS` 寄存器(0x21)返回 `0x00`(未初始化),加速度计和陀螺仪输出全为零。
16+
Uploading the wrong firmware results in `INTERNAL_STATUS` register (0x21) returning `0x00` (not initialized), with accelerometer and gyroscope outputs stuck at zero.
1717

18-
## 修改清单
18+
## Changes
1919

20-
### 1. 新增文件
20+
### 1. New Files
2121

22-
| 文件 | 说明 |
23-
|------|------|
24-
| `boards/T5AI/TUYA_T5AI_PIXEL/board_bmi220_api.h` | BMI220 驱动头文件,定义 `bmi220_dev_t``bmi220_sensor_data_t` 结构体及 API |
25-
| `boards/T5AI/TUYA_T5AI_PIXEL/board_bmi220_api.c` | BMI220 驱动实现,基于 Bosch BMI2 库,使用 `bmi260_config_file` 固件 |
26-
| `src/peripherals/imu/bmi270/bmi260_config_file.c` | BMI220 专用配置固件(8192 字节),数组名 `bmi260_config_file[]` |
22+
| File | Description |
23+
|------|-------------|
24+
| `boards/T5AI/TUYA_T5AI_PIXEL/board_bmi220_api.h` | BMI220 driver header — `bmi220_dev_t`, `bmi220_sensor_data_t` structs and API |
25+
| `boards/T5AI/TUYA_T5AI_PIXEL/board_bmi220_api.c` | BMI220 driver implementation using Bosch BMI2 library with `bmi260_config_file` |
26+
| `src/peripherals/imu/bmi220/bmi260_config_file.c` | BMI220-specific config firmware (8192 bytes), array `bmi260_config_file[]` |
2727

28-
### 2. 修改文件
29-
30-
#### `src/peripherals/imu/bmi270/bmi2.c`(第 1907 行)
31-
32-
```c
33-
// 修改前
34-
if (chip_id == dev->chip_id)
35-
36-
// 修改后
37-
if (chip_id == dev->chip_id || chip_id == 0x26)
38-
```
39-
40-
> 允许 BMI220 的 chip_id `0x26` 通过 Bosch BMI2 库的校验。
41-
42-
#### `boards/T5AI/TUYA_T5AI_PIXEL/board_bmi220_api.c`
43-
44-
```c
45-
// 修改前
46-
extern const uint8_t bmi270_config_file[];
47-
bmi2_dev_220.config_file_ptr = bmi270_config_file;
48-
49-
// 修改后
50-
extern const uint8_t bmi260_config_file[];
51-
bmi2_dev_220.config_file_ptr = bmi260_config_file;
52-
```
53-
54-
> 指向 BMI220 专用的配置固件。
28+
### 2. Modified Files
5529

5630
#### `apps/tuya_t5_pixel/tuya_t5_pixel_demo/src/tuya_main.c`
5731

58-
- 新增 `#include "board_bmi220_api.h"`
59-
- 新增 IMU 抽象层:`imu_type_t` 枚举(`IMU_TYPE_NONE` / `IMU_TYPE_BMI220` / `IMU_TYPE_BMI270`
60-
- 新增 `imu_read_data()` `imu_is_ready()` 统一接口
61-
- `user_main()` 中优先初始化 BMI220,失败则回退到 BMI270
62-
- `sand_update_physics()` 使用 `imu_read_data()` 替代直接调用 BMI270 API
32+
- Added `#include "board_bmi220_api.h"`
33+
- Added IMU abstraction layer: `imu_type_t` enum (`IMU_TYPE_NONE` / `IMU_TYPE_BMI220` / `IMU_TYPE_BMI270`)
34+
- Added unified `imu_read_data()` and `imu_is_ready()` interface
35+
- `user_main()` tries BMI220 first, falls back to BMI270
36+
- `sand_update_physics()` uses `imu_read_data()` instead of direct BMI270 calls
6337

6438
#### `src/peripherals/imu/Kconfig`
6539

66-
新增 `ENABLE_IMU_BMI220` 配置选项。
40+
Added `ENABLE_IMU_BMI220` config option.
6741

6842
#### `boards/T5AI/TUYA_T5AI_PIXEL/Kconfig`
6943

70-
新增 `select ENABLE_IMU_BMI220`,与 `ENABLE_IMU_BMI270` 同时启用。
44+
Added `select ENABLE_IMU_BMI220` alongside `select ENABLE_IMU_BMI270`.
45+
46+
#### `src/peripherals/imu/CMakeLists.txt`
7147

72-
## 架构设计
48+
Added BMI220 source directory glob under `CONFIG_ENABLE_IMU_BMI220`.
49+
50+
## Architecture
7351

7452
```
7553
tuya_main.c
7654
|
77-
|-- imu_read_data() / imu_is_ready() ← 统一抽象层
55+
|-- imu_read_data() / imu_is_ready() <-- unified abstraction
7856
| |
79-
| |-- g_imu_type == IMU_TYPE_BMI220 board_bmi220_read_data()
80-
| |-- g_imu_type == IMU_TYPE_BMI270 board_bmi270_read_data()
57+
| |-- g_imu_type == IMU_TYPE_BMI220 -> board_bmi220_read_data()
58+
| |-- g_imu_type == IMU_TYPE_BMI270 -> board_bmi270_read_data()
8159
|
8260
|-- user_main()
83-
|-- board_bmi220_register() ← 优先尝试 BMI220
84-
|-- board_bmi270_register() ← 回退 BMI270
61+
|-- board_bmi220_register() <-- try BMI220 first
62+
|-- board_bmi270_register() <-- fallback to BMI270
8563
```
8664

87-
BMI270 原有代码完整保留,两个驱动通过不同接口独立初始化,运行时根据 `g_imu_type` 选择对应驱动读取数据。
65+
The BMI270 driver code is fully preserved. Both drivers initialize independently via separate interfaces. At runtime, `g_imu_type` selects the active driver.
66+
67+
### Why bmi270_* API functions appear in the BMI220 driver
68+
69+
`bmi270_get_sensor_config()`, `bmi270_set_sensor_config()`, and `bmi270_sensor_enable()` operate on generic BMI2 registers (ACC_CONF, GYR_CONF, POWER_CTRL) that are identical across BMI220/BMI260/BMI270. This is safe and intentional — these are not BMI270-specific functions despite their naming.
8870

89-
## BMI220 驱动配置参数
71+
## BMI220 Driver Configuration
9072

91-
| 参数 | |
92-
|------|----|
93-
| I2C 端口 | `TUYA_I2C_NUM_0` |
94-
| I2C 地址 | `0x68`SDO = GND |
95-
| I2C 速率 | 400 kHz |
73+
| Parameter | Value |
74+
|-----------|-------|
75+
| I2C Port | `TUYA_I2C_NUM_0` |
76+
| I2C Address | `0x68` (SDO = GND) |
77+
| I2C Speed | 400 kHz |
9678
| SCL / SDA | GPIO20 / GPIO21 |
97-
| 加速度计 | 16G 量程,200Hz ODR |
98-
| 陀螺仪 | 2000 dps 量程,200Hz ODR |
79+
| Accelerometer | 16G range, 200Hz ODR |
80+
| Gyroscope | 2000 dps range, 200Hz ODR |
9981

100-
## 验证结果
82+
## Verification
10183

10284
```
10385
IMU data: acc(7.32, -5.68, -3.85) gyr(-7.93, 9.58, 61.40)
10486
IMU data: acc(7.19, -5.01, -4.19) gyr(-2.08, 2.38, 0.18)
10587
IMU data: acc(6.57, -3.36, -3.98) gyr(19.04, -80.81, -57.80)
10688
```
10789

108-
加速度计和陀螺仪数据正常输出,沙子物理模式中重力方向响应正确。
90+
Accelerometer and gyroscope data output correctly. Sand physics mode responds to gravity direction as expected.

apps/tuya_t5_pixel/tuya_t5_pixel_demo/src/tuya_main.c

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,29 +1035,13 @@ static void sand_update_physics(void)
10351035
float gyr_x = 0.0f, gyr_y = 0.0f;
10361036

10371037
// Read sensor data if available
1038-
static uint32_t imu_dbg_cnt = 0;
10391038
if (imu_is_ready()) {
10401039
OPERATE_RET imu_ret = imu_read_data(&sensor_data);
10411040
if (imu_ret == OPRT_OK) {
10421041
acc_x = sensor_data.acc_x;
10431042
acc_y = sensor_data.acc_y;
1044-
// acc_z = sensor_data.acc_z;
10451043
gyr_x = sensor_data.gyr_x;
10461044
gyr_y = sensor_data.gyr_y;
1047-
// gyr_z = sensor_data.gyr_z;
1048-
if (imu_dbg_cnt++ % 500 == 0) {
1049-
PR_NOTICE("IMU data: acc(%.2f, %.2f, %.2f) gyr(%.2f, %.2f, %.2f)",
1050-
sensor_data.acc_x, sensor_data.acc_y, sensor_data.acc_z,
1051-
sensor_data.gyr_x, sensor_data.gyr_y, sensor_data.gyr_z);
1052-
}
1053-
} else {
1054-
if (imu_dbg_cnt++ % 500 == 0) {
1055-
PR_ERR("IMU read failed: %d", imu_ret);
1056-
}
1057-
}
1058-
} else {
1059-
if (imu_dbg_cnt++ % 500 == 0) {
1060-
PR_WARN("IMU not ready, imu_type=%d", g_imu_type);
10611045
}
10621046
}
10631047

boards/T5AI/TUYA_T5AI_PIXEL/board_bmi220_api.c

Lines changed: 21 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22
* @file board_bmi220_api.c
33
* @author Tuya Inc.
44
* @brief BMI220 (chip ID 0x26) sensor driver for TUYA_T5AI_PIXEL board.
5-
* Uses the Bosch BMI2 library with BMI270 config file, but accepts
6-
* chip ID 0x26 instead of 0x24.
5+
* Uses the Bosch BMI2 library with BMI220-specific config firmware
6+
* (bmi260_config_file, sourced from ChromeOS EC v2.47.1).
7+
* BMI270 register-level API functions (bmi270_get/set_sensor_config,
8+
* bmi270_sensor_enable) are reused because BMI220/BMI260/BMI270 share
9+
* the same BMI2 register map for basic accel/gyro operations.
710
*
811
* @copyright Copyright (c) 2021-2025 Tuya Inc. All Rights Reserved.
912
*/
@@ -36,7 +39,7 @@ static uint8_t sensor_list_220[2] = {BMI2_ACCEL, BMI2_GYRO};
3639
static TUYA_IIC_BASE_CFG_T g_bmi220_i2c_cfg = {
3740
.role = TUYA_IIC_MODE_MASTER, .speed = TUYA_IIC_BUS_SPEED_400K, .addr_width = TUYA_IIC_ADDRESS_7BIT};
3841

39-
/* External: BMI270 config file (we reuse it for chip ID 0x26) */
42+
/* BMI220-specific config firmware (8192 bytes, from ChromeOS EC v2.47.1) */
4043
extern const uint8_t bmi260_config_file[];
4144

4245
/***********************************************************
@@ -63,6 +66,8 @@ static int8_t set_accel_gyro_config_220(struct bmi2_dev *dev)
6366
config[ACCEL].type = BMI2_ACCEL;
6467
config[GYRO].type = BMI2_GYRO;
6568

69+
/* bmi270_get_sensor_config() reads generic BMI2 registers (ACC_CONF, GYR_CONF)
70+
* shared across BMI220/BMI260/BMI270 — safe to reuse for BMI220. */
6671
rslt = bmi270_get_sensor_config(config, 2, dev);
6772
if (rslt != BMI2_OK) {
6873
PR_ERR("BMI220: get sensor config failed: %d", rslt);
@@ -88,6 +93,7 @@ static int8_t set_accel_gyro_config_220(struct bmi2_dev *dev)
8893
config[GYRO].cfg.gyr.noise_perf = BMI2_POWER_OPT_MODE;
8994
config[GYRO].cfg.gyr.filter_perf = BMI2_PERF_OPT_MODE;
9095

96+
/* Same rationale as bmi270_get_sensor_config() above */
9197
rslt = bmi270_set_sensor_config(config, 2, dev);
9298
if (rslt != BMI2_OK) {
9399
PR_ERR("BMI220: set sensor config failed: %d", rslt);
@@ -132,19 +138,20 @@ OPERATE_RET board_bmi220_init(bmi220_dev_t *dev)
132138
rslt = bmi2_interface_init(&bmi2_dev_220, BMI2_I2C_INTF);
133139
if (rslt != BMI2_OK) {
134140
PR_ERR("BMI220: interface init failed: %d", rslt);
141+
tkl_i2c_deinit(BMI220_I2C_PORT);
135142
return OPRT_COM_ERROR;
136143
}
137144

138145
/* Key: set expected chip_id to 0x26 (our actual chip) instead of BMI270's 0x24 */
139146
bmi2_dev_220.chip_id = BMI220_CHIP_ID;
140147

141-
/* Use BMI270 config file (same BMI2 family, compatible internal engine) */
148+
/* BMI220-specific config firmware from ChromeOS EC (v2.47.1), NOT the BMI270 firmware */
142149
bmi2_dev_220.config_file_ptr = bmi260_config_file;
143150

144151
/* Call bmi270_init-equivalent: set config_size and call bmi2_sec_init */
145152
/* We replicate what bmi270_init() does, but with our chip_id */
146153
{
147-
/* Get config file size - BMI270 config is 8192 bytes */
154+
/* Get config file size - BMI220 config is 8192 bytes */
148155
bmi2_dev_220.config_size = 8192;
149156

150157
/* Enable variant features (same as BMI270) */
@@ -159,6 +166,7 @@ OPERATE_RET board_bmi220_init(bmi220_dev_t *dev)
159166
rslt = bmi2_sec_init(&bmi2_dev_220);
160167
if (rslt != BMI2_OK) {
161168
PR_ERR("BMI220: bmi2_sec_init failed: %d (chip_id read=0x%02X)", rslt, bmi2_dev_220.chip_id);
169+
tkl_i2c_deinit(BMI220_I2C_PORT);
162170
return OPRT_COM_ERROR;
163171
}
164172
PR_NOTICE("BMI220: Config file uploaded successfully");
@@ -168,17 +176,24 @@ OPERATE_RET board_bmi220_init(bmi220_dev_t *dev)
168176
rslt = set_accel_gyro_config_220(&bmi2_dev_220);
169177
if (rslt != BMI2_OK) {
170178
PR_ERR("BMI220: sensor config failed: %d", rslt);
179+
tkl_i2c_deinit(BMI220_I2C_PORT);
171180
return OPRT_COM_ERROR;
172181
}
173182

174-
/* Enable accel and gyro */
183+
/* Enable accel and gyro.
184+
* bmi270_sensor_enable() is used here because BMI220 shares the same BMI2
185+
* register map and sensor enable logic as BMI270 — they are in the same
186+
* Bosch BMI2 family. The function writes to the generic BMI2_POWER_CTRL
187+
* register, which is identical across BMI220/BMI260/BMI270. */
175188
rslt = bmi270_sensor_enable(sensor_list_220, 2, &bmi2_dev_220);
176189
if (rslt != BMI2_OK) {
177190
PR_ERR("BMI220: sensor enable failed: %d", rslt);
191+
tkl_i2c_deinit(BMI220_I2C_PORT);
178192
return OPRT_COM_ERROR;
179193
}
180194

181195
dev->initialized = true;
196+
dev->chip_id = BMI220_CHIP_ID;
182197
PR_NOTICE("BMI220: Initialized successfully (Chip ID: 0x%02X, ACC:16G@200Hz, GYR:2000dps@200Hz)",
183198
BMI220_CHIP_ID);
184199
return OPRT_OK;
@@ -246,27 +261,6 @@ OPERATE_RET board_bmi220_read_accel(bmi220_dev_t *dev, float *acc_x, float *acc_
246261
return OPRT_OK;
247262
}
248263

249-
OPERATE_RET board_bmi220_read_gyro(bmi220_dev_t *dev, float *gyr_x, float *gyr_y, float *gyr_z)
250-
{
251-
int8_t rslt;
252-
struct bmi2_sens_data sensor_data = {{0}};
253-
254-
if (!dev || !gyr_x || !gyr_y || !gyr_z || !dev->initialized) {
255-
return OPRT_INVALID_PARM;
256-
}
257-
258-
rslt = bmi2_get_sensor_data(&sensor_data, &bmi2_dev_220);
259-
if (rslt != BMI2_OK) {
260-
return OPRT_COM_ERROR;
261-
}
262-
263-
*gyr_x = lsb_to_dps(sensor_data.gyr.x, 2000, bmi2_dev_220.resolution);
264-
*gyr_y = lsb_to_dps(sensor_data.gyr.y, 2000, bmi2_dev_220.resolution);
265-
*gyr_z = lsb_to_dps(sensor_data.gyr.z, 2000, bmi2_dev_220.resolution);
266-
267-
return OPRT_OK;
268-
}
269-
270264
bmi220_dev_t *board_bmi220_get_handle(void)
271265
{
272266
return &g_bmi220_dev;
@@ -279,33 +273,3 @@ bool board_bmi220_is_ready(bmi220_dev_t *dev)
279273
}
280274
return dev->initialized;
281275
}
282-
283-
OPERATE_RET board_bmi220_scan_i2c(TUYA_I2C_NUM_E port)
284-
{
285-
OPERATE_RET ret;
286-
uint8_t reg = 0x00;
287-
uint8_t chip_id = 0;
288-
289-
PR_DEBUG("BMI220: Scanning I2C bus %d...", port);
290-
291-
ret = tkl_i2c_master_send(port, BMI220_I2C_ADDR, &reg, 1, FALSE);
292-
if (ret == OPRT_OK) {
293-
ret = tkl_i2c_master_receive(port, BMI220_I2C_ADDR, &chip_id, 1, TRUE);
294-
if (ret == OPRT_OK) {
295-
PR_DEBUG("BMI220: Found at 0x%02X, chip_id=0x%02X", BMI220_I2C_ADDR, chip_id);
296-
return OPRT_OK;
297-
}
298-
}
299-
300-
ret = tkl_i2c_master_send(port, BMI220_I2C_ADDR_ALT, &reg, 1, FALSE);
301-
if (ret == OPRT_OK) {
302-
ret = tkl_i2c_master_receive(port, BMI220_I2C_ADDR_ALT, &chip_id, 1, TRUE);
303-
if (ret == OPRT_OK) {
304-
PR_DEBUG("BMI220: Found at 0x%02X, chip_id=0x%02X", BMI220_I2C_ADDR_ALT, chip_id);
305-
return OPRT_OK;
306-
}
307-
}
308-
309-
PR_ERR("BMI220: Not found on I2C bus %d", port);
310-
return OPRT_COM_ERROR;
311-
}

boards/T5AI/TUYA_T5AI_PIXEL/board_bmi220_api.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
* @file board_bmi220_api.h
33
* @author Tuya Inc.
44
* @brief BMI220 (chip ID 0x26) sensor driver API for TUYA_T5AI_PIXEL board.
5-
* Uses Bosch BMI2 library with patched chip ID acceptance.
6-
* Compatible with BMI270 config file for initialization.
5+
* Uses Bosch BMI2 library with BMI220-specific config firmware.
76
*
87
* @copyright Copyright (c) 2021-2025 Tuya Inc. All Rights Reserved.
98
*/
@@ -61,10 +60,8 @@ OPERATE_RET board_bmi220_register(void);
6160
OPERATE_RET board_bmi220_deinit(bmi220_dev_t *dev);
6261
OPERATE_RET board_bmi220_read_data(bmi220_dev_t *dev, bmi220_sensor_data_t *data);
6362
OPERATE_RET board_bmi220_read_accel(bmi220_dev_t *dev, float *acc_x, float *acc_y, float *acc_z);
64-
OPERATE_RET board_bmi220_read_gyro(bmi220_dev_t *dev, float *gyr_x, float *gyr_y, float *gyr_z);
6563
bmi220_dev_t *board_bmi220_get_handle(void);
6664
bool board_bmi220_is_ready(bmi220_dev_t *dev);
67-
OPERATE_RET board_bmi220_scan_i2c(TUYA_I2C_NUM_E port);
6865

6966
#ifdef __cplusplus
7067
}

src/peripherals/imu/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ if (CONFIG_ENABLE_IMU_BMI270 STREQUAL "y")
2222
list(APPEND LIB_PUBLIC_INC ${MODULE_PATH}/bmi270)
2323
endif()
2424

25+
if (CONFIG_ENABLE_IMU_BMI220 STREQUAL "y")
26+
file(GLOB BMI220_SOURCES "${MODULE_PATH}/bmi220/*.c")
27+
list(APPEND LIB_SRCS ${BMI220_SOURCES})
28+
endif()
29+
2530
########################################
2631
# Target Configure
2732
########################################

src/peripherals/imu/Kconfig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ config ENABLE_IMU
44

55
if (ENABLE_IMU)
66
config ENABLE_IMU_BMI220
7-
bool "Enable bmi220 (direct register, no firmware upload)"
7+
bool "Enable bmi220 (chip_id 0x26, requires bmi260 config firmware)"
88
default y
99

1010
config ENABLE_IMU_BMI270
11-
bool "Enable bmi270 (requires firmware upload)"
11+
bool "Enable bmi270 (chip_id 0x24, requires bmi270 config firmware)"
1212
default y
1313
endif
File renamed without changes.

0 commit comments

Comments
 (0)