const struct rtw89_chip_info *chip = rtwdev->chip;
        struct rtw89_fw_info *fw_info = &rtwdev->fw;
        const u32 *c2h_reg = chip->c2h_regs;
-       u32 ret;
+       u32 ret, timeout;
        u8 i, val;
 
        info->id = RTW89_FWCMD_C2HREG_FUNC_NULL;
 
+       if (rtwdev->hci.type == RTW89_HCI_TYPE_USB)
+               timeout = RTW89_C2H_TIMEOUT_USB;
+       else
+               timeout = RTW89_C2H_TIMEOUT;
+
        ret = read_poll_timeout_atomic(rtw89_read8, val, val, 1,
-                                      RTW89_C2H_TIMEOUT, false, rtwdev,
+                                      timeout, false, rtwdev,
                                       chip->c2h_ctrl_reg);
        if (ret) {
                rtw89_warn(rtwdev, "c2h reg timeout\n");
 
 #define RTW89_C2HREG_HDR_LEN 2
 #define RTW89_H2CREG_HDR_LEN 2
 #define RTW89_C2H_TIMEOUT 1000000
+#define RTW89_C2H_TIMEOUT_USB 4000
+
 struct rtw89_mac_c2h_info {
        u8 id;
        u8 content_len;