.wakeup_mhi = false,
                .supports_rssi_stats = false,
                .fw_wmi_diag_event = false,
+               .current_cc_support = false,
        },
        {
                .hw_rev = ATH11K_HW_IPQ6018_HW10,
                .wakeup_mhi = false,
                .supports_rssi_stats = false,
                .fw_wmi_diag_event = false,
+               .current_cc_support = false,
        },
        {
                .name = "qca6390 hw2.0",
                .wakeup_mhi = true,
                .supports_rssi_stats = true,
                .fw_wmi_diag_event = true,
+               .current_cc_support = true,
        },
        {
                .name = "qcn9074 hw1.0",
                .wakeup_mhi = false,
                .supports_rssi_stats = false,
                .fw_wmi_diag_event = false,
+               .current_cc_support = false,
        },
        {
                .name = "wcn6855 hw2.0",
                .wakeup_mhi = true,
                .supports_rssi_stats = true,
                .fw_wmi_diag_event = true,
+               .current_cc_support = true,
        },
        {
                .name = "wcn6855 hw2.1",
                .wakeup_mhi = true,
                .supports_rssi_stats = true,
                .fw_wmi_diag_event = true,
+               .current_cc_support = true,
        },
 };
 
 
 {
        struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy);
        struct wmi_init_country_params init_country_param;
+       struct wmi_set_current_country_params set_current_param = {};
        struct ath11k *ar = hw->priv;
        int ret;
 
                return;
        }
 
-       /* Set the country code to the firmware and wait for
+       /* Set the country code to the firmware and will receive
         * the WMI_REG_CHAN_LIST_CC EVENT for updating the
         * reg info
         */
-       init_country_param.flags = ALPHA_IS_SET;
-       memcpy(&init_country_param.cc_info.alpha2, request->alpha2, 2);
-       init_country_param.cc_info.alpha2[2] = 0;
+       if (ar->ab->hw_params.current_cc_support) {
+               memcpy(&set_current_param.alpha2, request->alpha2, 2);
+               ret = ath11k_wmi_send_set_current_country_cmd(ar, &set_current_param);
+               if (ret)
+                       ath11k_warn(ar->ab,
+                                   "failed set current country code: %d\n", ret);
+       } else {
+               init_country_param.flags = ALPHA_IS_SET;
+               memcpy(&init_country_param.cc_info.alpha2, request->alpha2, 2);
+               init_country_param.cc_info.alpha2[2] = 0;
 
-       ret = ath11k_wmi_send_init_country_cmd(ar, init_country_param);
-       if (ret)
-               ath11k_warn(ar->ab,
-                           "INIT Country code set to fw failed : %d\n", ret);
+               ret = ath11k_wmi_send_init_country_cmd(ar, init_country_param);
+               if (ret)
+                       ath11k_warn(ar->ab,
+                                   "INIT Country code set to fw failed : %d\n", ret);
+       }
 
        ath11k_mac_11d_scan_stop(ar);
        ar->regdom_set_by_user = true;