.board_size = IPQ8074_MAX_BOARD_DATA_SZ,
                        .cal_size =  IPQ8074_MAX_CAL_DATA_SZ,
                },
+               .max_radios = 3,
        },
 };
 
 
        int total_num_buffs_reaped = 0;
        int ret, i;
 
-       for (i = 0; i < MAX_RADIOS; i++)
+       for (i = 0; i < ab->num_radios; i++)
                __skb_queue_head_init(&msdu_list[i]);
 
        srng = &ab->hal.srng_list[dp->rx_rel_ring.ring_id];
 
                htc->wmi_ep_count = 3;
                break;
        default:
-               htc->wmi_ep_count = 3;
+               htc->wmi_ep_count = ab->hw_params.max_radios;
                break;
        }
 
 
 struct ath11k_hw_params {
        const char *name;
        u16 hw_rev;
+       u8 max_radios;
        struct {
                const char *dir;
                size_t board_size;
 
 {
        int i;
 
-       for (i = 0; i < MAX_RADIOS; i++) {
+       for (i = 0; i < ab->hw_params.max_radios; i++) {
                kfree(ab->default_regd[i]);
                kfree(ab->new_regd[i]);
        }
 
        u8 wmi_ep_count;
 
        wmi_ep_count = ab->htc.wmi_ep_count;
-       if (wmi_ep_count > MAX_RADIOS)
+       if (wmi_ep_count > ab->hw_params.max_radios)
                return -1;
 
        for (i = 0; i < wmi_ep_count; i++)
 {
        struct ath11k_pdev_wmi *wmi_handle;
 
-       if (pdev_id >= MAX_RADIOS)
+       if (pdev_id >= ab->hw_params.max_radios)
                return -EINVAL;
 
        wmi_handle = &ab->wmi_ab.wmi[pdev_id];