IWL_UCODE_TLV_FW_RECOVERY_INFO  = 57,
        IWL_UCODE_TLV_HW_TYPE                   = 58,
        IWL_UCODE_TLV_FW_FSEQ_VERSION           = 60,
+       IWL_UCODE_TLV_PHY_INTEGRATION_VERSION   = 61,
 
        IWL_UCODE_TLV_PNVM_VERSION              = 62,
        IWL_UCODE_TLV_PNVM_SKU                  = 64,
 
        u8 human_readable[FW_VER_HUMAN_READABLE_SZ];
 
        struct iwl_fw_dbg dbg;
+
+       u8 *phy_integration_ver;
+       u32 phy_integration_ver_len;
 };
 
 static inline const char *get_fw_dbg_mode_string(int mode)
 
        kfree(drv->fw.dbg.mem_tlv);
        kfree(drv->fw.iml);
        kfree(drv->fw.ucode_capa.cmd_versions);
+       kfree(drv->fw.phy_integration_ver);
 
        for (i = 0; i < IWL_UCODE_TYPE_MAX; i++)
                iwl_free_fw_img(drv, drv->fw.img + i);
                        capa->n_cmd_versions =
                                tlv_len / sizeof(struct iwl_fw_cmd_version);
                        break;
+               case IWL_UCODE_TLV_PHY_INTEGRATION_VERSION:
+                       if (drv->fw.phy_integration_ver) {
+                               IWL_ERR(drv,
+                                       "phy integration str ignored, already exists\n");
+                               break;
+                       }
+
+                       drv->fw.phy_integration_ver =
+                               kmemdup(tlv_data, tlv_len, GFP_KERNEL);
+                       if (!drv->fw.phy_integration_ver)
+                               return -ENOMEM;
+                       drv->fw.phy_integration_ver_len = tlv_len;
+                       break;
                default:
                        IWL_DEBUG_INFO(drv, "unknown TLV: %d\n", tlv_type);
                        break;