cmd = (struct wmi_init_cmd_10_2 *)buf->data;
 
        features = WMI_10_2_RX_BATCH_MODE;
+       if (test_bit(WMI_SERVICE_COEX_GPIO, ar->wmi.svc_map))
+               features |= WMI_10_2_COEX_GPIO;
        cmd->resource_config.feature_mask = __cpu_to_le32(features);
 
        memcpy(&cmd->resource_config.common, &config, sizeof(config));
 
        WMI_SERVICE_MDNS_OFFLOAD,
        WMI_SERVICE_SAP_AUTH_OFFLOAD,
        WMI_SERVICE_ATF,
+       WMI_SERVICE_COEX_GPIO,
 
        /* keep last */
        WMI_SERVICE_MAX,
        WMI_10X_SERVICE_FORCE_FW_HANG,
        WMI_10X_SERVICE_SMART_ANTENNA_HW_SUPPORT,
        WMI_10X_SERVICE_ATF,
+       WMI_10X_SERVICE_COEX_GPIO,
 };
 
 enum wmi_main_service {
        SVCSTR(WMI_SERVICE_MDNS_OFFLOAD);
        SVCSTR(WMI_SERVICE_SAP_AUTH_OFFLOAD);
        SVCSTR(WMI_SERVICE_ATF);
+       SVCSTR(WMI_SERVICE_COEX_GPIO);
        default:
                return NULL;
        }
               WMI_SERVICE_SMART_ANTENNA_HW_SUPPORT, len);
        SVCMAP(WMI_10X_SERVICE_ATF,
               WMI_SERVICE_ATF, len);
+       SVCMAP(WMI_10X_SERVICE_COEX_GPIO,
+              WMI_SERVICE_COEX_GPIO, len);
 }
 
 static inline void wmi_main_svc_map(const __le32 *in, unsigned long *out,
 enum wmi_10_2_feature_mask {
        WMI_10_2_RX_BATCH_MODE = BIT(0),
        WMI_10_2_ATF_CONFIG    = BIT(1),
+       WMI_10_2_COEX_GPIO     = BIT(3),
 };
 
 struct wmi_resource_config_10_2 {