break;
        case BTC_RPT_TYPE_STEP:
                pcinfo = &pfwinfo->rpt_fbtc_step.cinfo;
-               pfinfo = &pfwinfo->rpt_fbtc_step.finfo;
-               pcinfo->req_len = sizeof(pfwinfo->rpt_fbtc_step.finfo.step[0]) *
-                                 trace_step + 8;
+               if (chip->chip_id == RTL8852A) {
+                       pfinfo = &pfwinfo->rpt_fbtc_step.finfo;
+                       pcinfo->req_len = sizeof(pfwinfo->rpt_fbtc_step.finfo.step[0]) *
+                                         trace_step +
+                                         offsetof(struct rtw89_btc_fbtc_steps, step);
+               } else {
+                       pfinfo = &pfwinfo->rpt_fbtc_step.finfo_v1;
+                       pcinfo->req_len = sizeof(pfwinfo->rpt_fbtc_step.finfo_v1.step[0]) *
+                                         trace_step +
+                                         offsetof(struct rtw89_btc_fbtc_steps_v1, step);
+               }
                pcinfo->req_fver = chip->fcxstep_ver;
                pcinfo->rx_len = rpt_len;
                pcinfo->rx_cnt++;
 
        struct rtw89_btc_fbtc_step step[FCXMAX_STEP];
 } __packed;
 
+struct rtw89_btc_fbtc_steps_v1 {
+       u8 fver;
+       u8 en;
+       __le16 rsvd;
+       __le32 cnt;
+       struct rtw89_btc_fbtc_step step[FCXMAX_STEP];
+} __packed;
+
 struct rtw89_btc_fbtc_cysta { /* statistics for cycles */
        u8 fver; /* chip_info::fcxcysta_ver */
        u8 rsvd;
 
 struct rtw89_btc_rpt_fbtc_step {
        struct rtw89_btc_rpt_cmn_info cinfo; /* common info, by driver */
-       struct rtw89_btc_fbtc_steps finfo; /* info from fw */
+       union {
+               struct rtw89_btc_fbtc_steps finfo; /* info from fw */
+               struct rtw89_btc_fbtc_steps_v1 finfo_v1; /* info from fw */
+       };
 };
 
 struct rtw89_btc_rpt_fbtc_nullsta {