From f36a0afeb43ae05725b31fc954d283f46e054b7d Mon Sep 17 00:00:00 2001 From: bnister <30509454+bnister@users.noreply.github.com> Date: Wed, 4 Mar 2026 04:49:04 +0300 Subject: [PATCH] Bluetooth fw upload fix: chip_mcu_id == 1 needs cache_mem_addr |= 1 --- drivers/aic8800/aic_load_fw/aic_compat_8800d80.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/aic8800/aic_load_fw/aic_compat_8800d80.c b/drivers/aic8800/aic_load_fw/aic_compat_8800d80.c index f4affca..2c80c93 100644 --- a/drivers/aic8800/aic_load_fw/aic_compat_8800d80.c +++ b/drivers/aic8800/aic_load_fw/aic_compat_8800d80.c @@ -303,6 +303,7 @@ int system_config_8800d80(struct aic_usb_dev *usb_dev){ int syscfg_num; int ret, cnt; const u32 mem_addr = 0x40500000; + const u32 cache_mem_addr = 0x40100020; struct dbg_mem_read_cfm rd_mem_addr_cfm; ret = rwnx_send_dbg_mem_read_req(usb_dev, mem_addr, &rd_mem_addr_cfm); if (ret) { @@ -314,6 +315,19 @@ int system_config_8800d80(struct aic_usb_dev *usb_dev){ } chip_id = (u8)(rd_mem_addr_cfm.memdata >> 16); printk("chip_id=%x, chip_mcu_id = %d\n", chip_id, chip_mcu_id); + if (chip_mcu_id) { + ret = rwnx_send_dbg_mem_read_req(usb_dev, cache_mem_addr, &rd_mem_addr_cfm); + if (ret) { + printk("%x rd fail: %d\n", mem_addr, ret); + return ret; + } + rd_mem_addr_cfm.memdata |= 0x01; + ret = rwnx_send_dbg_mem_write_req(usb_dev, cache_mem_addr, rd_mem_addr_cfm.memdata); + if (ret) { + printk("%x write fail: %d\n", cache_mem_addr, ret); + return ret; + } + } #if 1 syscfg_num = sizeof(syscfg_tbl_8800d80) / sizeof(u32) / 2; for (cnt = 0; cnt < syscfg_num; cnt++) {