iwlwifi: debug: set NPK buffer in context info
authorGil Adam <gil.adam@intel.com>
Sat, 18 Apr 2020 08:08:57 +0000 (11:08 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Fri, 24 Apr 2020 13:38:12 +0000 (16:38 +0300)
When buffer destination for ini debug is configured
to NPK (TB22DTF) set the appropriate bit in the context
info struct.

Signed-off-by: Gil Adam <gil.adam@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20200418110539.3c9f0fa6033f.Id1d6c191f85efe0d6cf35434bfb186ffd46ff64c@changeid
drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c
drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c

index bf2f00b..9eb8fbf 100644 (file)
@@ -5,7 +5,7 @@
  *
  * GPL LICENSE SUMMARY
  *
- * Copyright (C) 2018 - 2019 Intel Corporation
+ * Copyright (C) 2018 - 2020 Intel Corporation
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of version 2 of the GNU General Public License as
@@ -28,7 +28,7 @@
  *
  * BSD LICENSE
  *
- * Copyright (C) 2018 - 2019 Intel Corporation
+ * Copyright (C) 2018 - 2020 Intel Corporation
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -170,14 +170,24 @@ static int iwl_dbg_tlv_alloc_buf_alloc(struct iwl_trans *trans,
 
        if (le32_to_cpu(tlv->length) != sizeof(*alloc) ||
            (buf_location != IWL_FW_INI_LOCATION_SRAM_PATH &&
-            buf_location != IWL_FW_INI_LOCATION_DRAM_PATH))
+            buf_location != IWL_FW_INI_LOCATION_DRAM_PATH &&
+            buf_location != IWL_FW_INI_LOCATION_NPK_PATH)) {
+               IWL_ERR(trans,
+                       "WRT: Invalid allocation TLV\n");
+               return -EINVAL;
+       }
+
+       if ((buf_location == IWL_FW_INI_LOCATION_SRAM_PATH ||
+            buf_location == IWL_FW_INI_LOCATION_NPK_PATH) &&
+            alloc_id != IWL_FW_INI_ALLOCATION_ID_DBGC1) {
+               IWL_ERR(trans,
+                       "WRT: Allocation TLV for SMEM/NPK path must have id %u (current: %u)\n",
+                       IWL_FW_INI_ALLOCATION_ID_DBGC1, alloc_id);
                return -EINVAL;
+       }
 
-       if ((buf_location == IWL_FW_INI_LOCATION_SRAM_PATH &&
-            alloc_id != IWL_FW_INI_ALLOCATION_ID_DBGC1) ||
-           (buf_location == IWL_FW_INI_LOCATION_DRAM_PATH &&
-            (alloc_id == IWL_FW_INI_ALLOCATION_INVALID ||
-             alloc_id >= IWL_FW_INI_ALLOCATION_NUM))) {
+       if (alloc_id == IWL_FW_INI_ALLOCATION_INVALID ||
+           alloc_id >= IWL_FW_INI_ALLOCATION_NUM) {
                IWL_ERR(trans,
                        "WRT: Invalid allocation id %u for allocation TLV\n",
                        alloc_id);
index 01f248b..27e94e6 100644 (file)
@@ -5,7 +5,7 @@
  *
  * GPL LICENSE SUMMARY
  *
- * Copyright(c) 2018 - 2019 Intel Corporation
+ * Copyright(c) 2018 - 2020 Intel Corporation
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of version 2 of the GNU General Public License as
@@ -18,7 +18,7 @@
  *
  * BSD LICENSE
  *
- * Copyright(c) 2018 - 2019 Intel Corporation
+ * Copyright(c) 2018 - 2020 Intel Corporation
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -84,32 +84,35 @@ iwl_pcie_ctxt_info_dbg_enable(struct iwl_trans *trans,
 
        fw_mon_cfg = &trans->dbg.fw_mon_cfg[alloc_id];
 
-       if (le32_to_cpu(fw_mon_cfg->buf_location) ==
-           IWL_FW_INI_LOCATION_SRAM_PATH) {
+       switch (le32_to_cpu(fw_mon_cfg->buf_location)) {
+       case IWL_FW_INI_LOCATION_SRAM_PATH:
                dbg_flags |= IWL_PRPH_SCRATCH_EDBG_DEST_INTERNAL;
-
                IWL_DEBUG_FW(trans,
-                            "WRT: Applying SMEM buffer destination\n");
-
-               goto out;
-       }
-
-       if (le32_to_cpu(fw_mon_cfg->buf_location) ==
-           IWL_FW_INI_LOCATION_DRAM_PATH &&
-           trans->dbg.fw_mon_ini[alloc_id].num_frags) {
-               struct iwl_dram_data *frag =
-                       &trans->dbg.fw_mon_ini[alloc_id].frags[0];
-
-               dbg_flags |= IWL_PRPH_SCRATCH_EDBG_DEST_DRAM;
+                               "WRT: Applying SMEM buffer destination\n");
+               break;
 
+       case IWL_FW_INI_LOCATION_NPK_PATH:
+               dbg_flags |= IWL_PRPH_SCRATCH_EDBG_DEST_TB22DTF;
                IWL_DEBUG_FW(trans,
-                            "WRT: Applying DRAM destination (alloc_id=%u)\n",
-                            alloc_id);
+                            "WRT: Applying NPK buffer destination\n");
+               break;
 
-               dbg_cfg->hwm_base_addr = cpu_to_le64(frag->physical);
-               dbg_cfg->hwm_size = cpu_to_le32(frag->size);
+       case IWL_FW_INI_LOCATION_DRAM_PATH:
+               if (trans->dbg.fw_mon_ini[alloc_id].num_frags) {
+                       struct iwl_dram_data *frag =
+                               &trans->dbg.fw_mon_ini[alloc_id].frags[0];
+                       dbg_flags |= IWL_PRPH_SCRATCH_EDBG_DEST_DRAM;
+                       dbg_cfg->hwm_base_addr = cpu_to_le64(frag->physical);
+                       dbg_cfg->hwm_size = cpu_to_le32(frag->size);
+                       IWL_DEBUG_FW(trans,
+                                    "WRT: Applying DRAM destination (alloc_id=%u, num_frags=%u)\n",
+                                    alloc_id,
+                                    trans->dbg.fw_mon_ini[alloc_id].num_frags);
+               }
+               break;
+       default:
+               IWL_ERR(trans, "WRT: Invalid buffer destination\n");
        }
-
 out:
        if (dbg_flags)
                *control_flags |= IWL_PRPH_SCRATCH_EARLY_DEBUG_EN | dbg_flags;