struct completion tpc_complete;
 
        /* protected by conf_mutex */
-       u32 fw_dbglog_mask;
+       u64 fw_dbglog_mask;
        u32 fw_dbglog_level;
        u32 pktlog_filter;
        u32 reg_addr;
 
 {
        struct ath10k *ar = file->private_data;
        unsigned int len;
-       char buf[64];
+       char buf[96];
 
-       len = scnprintf(buf, sizeof(buf), "0x%08x %u\n",
+       len = scnprintf(buf, sizeof(buf), "0x%16llx %u\n",
                        ar->debug.fw_dbglog_mask, ar->debug.fw_dbglog_level);
 
        return simple_read_from_buffer(user_buf, count, ppos, buf, len);
 {
        struct ath10k *ar = file->private_data;
        int ret;
-       char buf[64];
-       unsigned int log_level, mask;
+       char buf[96];
+       unsigned int log_level;
+       u64 mask;
 
        simple_write_to_buffer(buf, sizeof(buf) - 1, ppos, user_buf, count);
 
        /* make sure that buf is null terminated */
        buf[sizeof(buf) - 1] = 0;
 
-       ret = sscanf(buf, "%x %u", &mask, &log_level);
+       ret = sscanf(buf, "%llx %u", &mask, &log_level);
 
        if (!ret)
                return -EINVAL;
 
                                             enum wmi_force_fw_hang_type type,
                                             u32 delay_ms);
        struct sk_buff *(*gen_mgmt_tx)(struct ath10k *ar, struct sk_buff *skb);
-       struct sk_buff *(*gen_dbglog_cfg)(struct ath10k *ar, u32 module_enable,
+       struct sk_buff *(*gen_dbglog_cfg)(struct ath10k *ar, u64 module_enable,
                                          u32 log_level);
        struct sk_buff *(*gen_pktlog_enable)(struct ath10k *ar, u32 filter);
        struct sk_buff *(*gen_pktlog_disable)(struct ath10k *ar);
 }
 
 static inline int
-ath10k_wmi_dbglog_cfg(struct ath10k *ar, u32 module_enable, u32 log_level)
+ath10k_wmi_dbglog_cfg(struct ath10k *ar, u64 module_enable, u32 log_level)
 {
        struct sk_buff *skb;
 
 
 }
 
 static struct sk_buff *
-ath10k_wmi_tlv_op_gen_dbglog_cfg(struct ath10k *ar, u32 module_enable,
+ath10k_wmi_tlv_op_gen_dbglog_cfg(struct ath10k *ar, u64 module_enable,
                                 u32 log_level) {
        struct wmi_tlv_dbglog_cmd *cmd;
        struct wmi_tlv *tlv;
 
 }
 
 static struct sk_buff *
-ath10k_wmi_op_gen_dbglog_cfg(struct ath10k *ar, u32 module_enable,
+ath10k_wmi_op_gen_dbglog_cfg(struct ath10k *ar, u64 module_enable,
                             u32 log_level)
 {
        struct wmi_dbglog_cfg_cmd *cmd;
        return skb;
 }
 
+static struct sk_buff *
+ath10k_wmi_10_4_op_gen_dbglog_cfg(struct ath10k *ar, u64 module_enable,
+                                 u32 log_level)
+{
+       struct wmi_10_4_dbglog_cfg_cmd *cmd;
+       struct sk_buff *skb;
+       u32 cfg;
+
+       skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd));
+       if (!skb)
+               return ERR_PTR(-ENOMEM);
+
+       cmd = (struct wmi_10_4_dbglog_cfg_cmd *)skb->data;
+
+       if (module_enable) {
+               cfg = SM(log_level,
+                        ATH10K_DBGLOG_CFG_LOG_LVL);
+       } else {
+               /* set back defaults, all modules with WARN level */
+               cfg = SM(ATH10K_DBGLOG_LEVEL_WARN,
+                        ATH10K_DBGLOG_CFG_LOG_LVL);
+               module_enable = ~0;
+       }
+
+       cmd->module_enable = __cpu_to_le64(module_enable);
+       cmd->module_valid = __cpu_to_le64(~0);
+       cmd->config_enable = __cpu_to_le32(cfg);
+       cmd->config_valid = __cpu_to_le32(ATH10K_DBGLOG_CFG_LOG_LVL_MASK);
+
+       ath10k_dbg(ar, ATH10K_DBG_WMI,
+                  "wmi dbglog cfg modules 0x%016llx 0x%016llx config %08x %08x\n",
+                  __le64_to_cpu(cmd->module_enable),
+                  __le64_to_cpu(cmd->module_valid),
+                  __le32_to_cpu(cmd->config_enable),
+                  __le32_to_cpu(cmd->config_valid));
+       return skb;
+}
+
 static struct sk_buff *
 ath10k_wmi_op_gen_pktlog_enable(struct ath10k *ar, u32 ev_bitmap)
 {
        .gen_pdev_set_wmm = ath10k_wmi_op_gen_pdev_set_wmm,
        .gen_force_fw_hang = ath10k_wmi_op_gen_force_fw_hang,
        .gen_mgmt_tx = ath10k_wmi_op_gen_mgmt_tx,
-       .gen_dbglog_cfg = ath10k_wmi_op_gen_dbglog_cfg,
+       .gen_dbglog_cfg = ath10k_wmi_10_4_op_gen_dbglog_cfg,
        .gen_pktlog_enable = ath10k_wmi_op_gen_pktlog_enable,
        .gen_pktlog_disable = ath10k_wmi_op_gen_pktlog_disable,
        .gen_pdev_set_quiet_mode = ath10k_wmi_op_gen_pdev_set_quiet_mode,
 
        __le32 config_valid;
 } __packed;
 
+struct wmi_10_4_dbglog_cfg_cmd {
+       /* bitmask to hold mod id config*/
+       __le64 module_enable;
+
+       /* see ATH10K_DBGLOG_CFG_ */
+       __le32 config_enable;
+
+       /* mask of module id bits to be changed */
+       __le64 module_valid;
+
+       /* mask of config bits to be changed, see ATH10K_DBGLOG_CFG_ */
+       __le32 config_valid;
+} __packed;
+
 enum wmi_roam_reason {
        WMI_ROAM_REASON_BETTER_AP = 1,
        WMI_ROAM_REASON_BEACON_MISS = 2,