From: Sasha Levin Date: Wed, 4 Sep 2019 01:24:31 +0000 (-0400) Subject: fixes for 5.2 X-Git-Tag: v4.4.191~17 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7ff62ba0e390cbd134d32797005dcf21b1f4ebd2;p=thirdparty%2Fkernel%2Fstable-queue.git fixes for 5.2 Signed-off-by: Sasha Levin --- diff --git a/queue-5.2/drm-i915-do-not-create-a-new-max_bpc-prop-for-mst-co.patch b/queue-5.2/drm-i915-do-not-create-a-new-max_bpc-prop-for-mst-co.patch new file mode 100644 index 00000000000..04e4f776b17 --- /dev/null +++ b/queue-5.2/drm-i915-do-not-create-a-new-max_bpc-prop-for-mst-co.patch @@ -0,0 +1,68 @@ +From b7b140bc37db4cfee82341df68a7e2df030bfab5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= +Date: Tue, 20 Aug 2019 19:16:57 +0300 +Subject: drm/i915: Do not create a new max_bpc prop for MST connectors +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +[ Upstream commit 1b9bd09630d4db4827cc04d358a41a16a6bc2cb0 ] + +We're not allowed to create new properties after device registration +so for MST connectors we need to either create the max_bpc property +earlier, or we reuse one we already have. Let's do the latter apporach +since the corresponding SST connector already has the prop and its +min/max are correct also for the MST connector. + +The problem was highlighted by commit 4f5368b5541a ("drm/kms: +Catch mode_object lifetime errors") which results in the following +spew: +[ 1330.878941] WARNING: CPU: 2 PID: 1554 at drivers/gpu/drm/drm_mode_object.c:45 __drm_mode_object_add+0xa0/0xb0 [drm] +... +[ 1330.879008] Call Trace: +[ 1330.879023] drm_property_create+0xba/0x180 [drm] +[ 1330.879036] drm_property_create_range+0x15/0x30 [drm] +[ 1330.879048] drm_connector_attach_max_bpc_property+0x62/0x80 [drm] +[ 1330.879086] intel_dp_add_mst_connector+0x11f/0x140 [i915] +[ 1330.879094] drm_dp_add_port.isra.20+0x20b/0x440 [drm_kms_helper] +... + +Cc: stable@vger.kernel.org +Cc: Lyude Paul +Cc: sunpeng.li@amd.com +Cc: Daniel Vetter +Cc: Sean Paul +Fixes: 5ca0ef8a56b8 ("drm/i915: Add max_bpc property for DP MST") +Signed-off-by: Ville Syrjälä +Link: https://patchwork.freedesktop.org/patch/msgid/20190820161657.9658-1-ville.syrjala@linux.intel.com +Reviewed-by: José Roberto de Souza +Reviewed-by: Lyude Paul +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/i915/intel_dp_mst.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c +index 8839eaea83715..d89120dcac67d 100644 +--- a/drivers/gpu/drm/i915/intel_dp_mst.c ++++ b/drivers/gpu/drm/i915/intel_dp_mst.c +@@ -535,7 +535,15 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo + + intel_attach_force_audio_property(connector); + intel_attach_broadcast_rgb_property(connector); +- drm_connector_attach_max_bpc_property(connector, 6, 12); ++ ++ /* ++ * Reuse the prop from the SST connector because we're ++ * not allowed to create new props after device registration. ++ */ ++ connector->max_bpc_property = ++ intel_dp->attached_connector->base.max_bpc_property; ++ if (connector->max_bpc_property) ++ drm_connector_attach_max_bpc_property(connector, 6, 12); + + return connector; + +-- +2.20.1 + diff --git a/queue-5.2/drm-i915-dp-fix-dsc-enable-code-to-use-cpu_transcode.patch b/queue-5.2/drm-i915-dp-fix-dsc-enable-code-to-use-cpu_transcode.patch new file mode 100644 index 00000000000..5253457b936 --- /dev/null +++ b/queue-5.2/drm-i915-dp-fix-dsc-enable-code-to-use-cpu_transcode.patch @@ -0,0 +1,42 @@ +From f9af7720813bb24109b989a14197c2068da45434 Mon Sep 17 00:00:00 2001 +From: Manasi Navare +Date: Wed, 21 Aug 2019 14:59:50 -0700 +Subject: drm/i915/dp: Fix DSC enable code to use cpu_transcoder instead of + encoder->type + +[ Upstream commit d4c61c4a16decd8ace8660f22c81609a539fccba ] + +This patch fixes the intel_configure_pps_for_dsc_encoder() function to use +cpu_transcoder instead of encoder->type to select the correct DSC registers +that was wrongly used in the original patch for one DSC register isntance. + +Fixes: 7182414e2530 ("drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling") +Cc: Ville Syrjala +Cc: Maarten Lankhorst +Cc: Jani Nikula +Cc: Ville Syrjala +Cc: # v5.0+ +Signed-off-by: Manasi Navare +Reviewed-by: Maarten Lankhorst +Link: https://patchwork.freedesktop.org/patch/msgid/20190821215950.24223-1-manasi.d.navare@intel.com +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/i915/intel_vdsc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/i915/intel_vdsc.c b/drivers/gpu/drm/i915/intel_vdsc.c +index 3f9921ba4a769..eb978e7238c24 100644 +--- a/drivers/gpu/drm/i915/intel_vdsc.c ++++ b/drivers/gpu/drm/i915/intel_vdsc.c +@@ -539,7 +539,7 @@ static void intel_configure_pps_for_dsc_encoder(struct intel_encoder *encoder, + pps_val |= DSC_PIC_HEIGHT(vdsc_cfg->pic_height) | + DSC_PIC_WIDTH(vdsc_cfg->pic_width / num_vdsc_instances); + DRM_INFO("PPS2 = 0x%08x\n", pps_val); +- if (encoder->type == INTEL_OUTPUT_EDP) { ++ if (cpu_transcoder == TRANSCODER_EDP) { + I915_WRITE(DSCA_PICTURE_PARAMETER_SET_2, pps_val); + /* + * If 2 VDSC instances are needed, configure PPS for second +-- +2.20.1 + diff --git a/queue-5.2/iwlwifi-add-new-cards-for-22000-and-change-wrong-str.patch b/queue-5.2/iwlwifi-add-new-cards-for-22000-and-change-wrong-str.patch new file mode 100644 index 00000000000..20a8e9bac8c --- /dev/null +++ b/queue-5.2/iwlwifi-add-new-cards-for-22000-and-change-wrong-str.patch @@ -0,0 +1,340 @@ +From a504e67ea6a52dc5d990d172d50cad1ea4707980 Mon Sep 17 00:00:00 2001 +From: Ihab Zhaika +Date: Wed, 19 Jun 2019 20:59:02 +0300 +Subject: iwlwifi: add new cards for 22000 and change wrong structs + +[ Upstream commit a976bfb44bdbc1b69365dc31f7c1339fff436c95 ] + +add few PCI ID'S for 22000 and chainge few cards structs names + +Signed-off-by: Ihab Zhaika +Signed-off-by: Luca Coelho +Signed-off-by: Kalle Valo +Signed-off-by: Sasha Levin +--- + .../net/wireless/intel/iwlwifi/cfg/22000.c | 36 ++++++ + .../net/wireless/intel/iwlwifi/iwl-config.h | 3 + + drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 122 +++++++++--------- + .../net/wireless/intel/iwlwifi/pcie/trans.c | 5 +- + 4 files changed, 103 insertions(+), 63 deletions(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +index 650ca46efc48f..e40fa12212b75 100644 +--- a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c ++++ b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +@@ -265,6 +265,42 @@ const struct iwl_cfg iwl_ax101_cfg_quz_hr = { + .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, + }; + ++const struct iwl_cfg iwl_ax201_cfg_quz_hr = { ++ .name = "Intel(R) Wi-Fi 6 AX201 160MHz", ++ .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++}; ++ ++const struct iwl_cfg iwl_ax1650s_cfg_quz_hr = { ++ .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201D2W)", ++ .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++}; ++ ++const struct iwl_cfg iwl_ax1650i_cfg_quz_hr = { ++ .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)", ++ .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++}; ++ + const struct iwl_cfg iwl_ax200_cfg_cc = { + .name = "Intel(R) Wi-Fi 6 AX200 160MHz", + .fw_name_pre = IWL_CC_A_FW_PRE, +diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h +index 29aaf649c13c3..dbe6437249f07 100644 +--- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h ++++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h +@@ -563,6 +563,9 @@ extern const struct iwl_cfg iwl_ax101_cfg_quz_hr; + extern const struct iwl_cfg iwl22000_2ax_cfg_hr; + extern const struct iwl_cfg iwl_ax200_cfg_cc; + extern const struct iwl_cfg iwl_ax201_cfg_qu_hr; ++extern const struct iwl_cfg iwl_ax201_cfg_quz_hr; ++extern const struct iwl_cfg iwl_ax1650i_cfg_quz_hr; ++extern const struct iwl_cfg iwl_ax1650s_cfg_quz_hr; + extern const struct iwl_cfg killer1650s_2ax_cfg_qu_b0_hr_b0; + extern const struct iwl_cfg killer1650i_2ax_cfg_qu_b0_hr_b0; + extern const struct iwl_cfg killer1650x_2ax_cfg; +diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +index 2f3ee5769fdd3..02af9073793af 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +@@ -517,8 +517,6 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x02F0, 0x0034, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x02F0, 0x0038, iwl9560_2ac_160_cfg_soc)}, + {IWL_PCI_DEVICE(0x02F0, 0x003C, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0040, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0044, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x02F0, 0x0060, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x02F0, 0x0064, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x02F0, 0x00A0, iwl9462_2ac_cfg_soc)}, +@@ -527,7 +525,6 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x02F0, 0x0234, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x02F0, 0x0238, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x02F0, 0x023C, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0244, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x02F0, 0x0260, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x02F0, 0x0264, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x02F0, 0x02A0, iwl9462_2ac_cfg_soc)}, +@@ -545,8 +542,6 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x06F0, 0x0034, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x06F0, 0x0038, iwl9560_2ac_160_cfg_soc)}, + {IWL_PCI_DEVICE(0x06F0, 0x003C, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0040, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0044, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x06F0, 0x0060, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x06F0, 0x0064, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x06F0, 0x00A0, iwl9462_2ac_cfg_soc)}, +@@ -555,7 +550,6 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x06F0, 0x0234, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x06F0, 0x0238, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x06F0, 0x023C, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0244, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x06F0, 0x0260, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x06F0, 0x0264, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x06F0, 0x02A0, iwl9462_2ac_cfg_soc)}, +@@ -621,7 +615,6 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x2720, 0x0034, iwl9560_2ac_160_cfg)}, + {IWL_PCI_DEVICE(0x2720, 0x0038, iwl9560_2ac_160_cfg)}, + {IWL_PCI_DEVICE(0x2720, 0x003C, iwl9560_2ac_160_cfg)}, +- {IWL_PCI_DEVICE(0x2720, 0x0044, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x2720, 0x0060, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x2720, 0x0064, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x2720, 0x00A0, iwl9462_2ac_cfg_soc)}, +@@ -630,7 +623,6 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x2720, 0x0234, iwl9560_2ac_cfg)}, + {IWL_PCI_DEVICE(0x2720, 0x0238, iwl9560_2ac_cfg)}, + {IWL_PCI_DEVICE(0x2720, 0x023C, iwl9560_2ac_cfg)}, +- {IWL_PCI_DEVICE(0x2720, 0x0244, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x2720, 0x0260, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x2720, 0x0264, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x2720, 0x02A0, iwl9462_2ac_cfg_soc)}, +@@ -708,7 +700,6 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x34F0, 0x0034, iwl9560_2ac_cfg_qu_b0_jf_b0)}, + {IWL_PCI_DEVICE(0x34F0, 0x0038, iwl9560_2ac_160_cfg_qu_b0_jf_b0)}, + {IWL_PCI_DEVICE(0x34F0, 0x003C, iwl9560_2ac_160_cfg_qu_b0_jf_b0)}, +- {IWL_PCI_DEVICE(0x34F0, 0x0044, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x34F0, 0x0060, iwl9461_2ac_cfg_qu_b0_jf_b0)}, + {IWL_PCI_DEVICE(0x34F0, 0x0064, iwl9461_2ac_cfg_qu_b0_jf_b0)}, + {IWL_PCI_DEVICE(0x34F0, 0x00A0, iwl9462_2ac_cfg_qu_b0_jf_b0)}, +@@ -717,7 +708,6 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x34F0, 0x0234, iwl9560_2ac_cfg_qu_b0_jf_b0)}, + {IWL_PCI_DEVICE(0x34F0, 0x0238, iwl9560_2ac_cfg_qu_b0_jf_b0)}, + {IWL_PCI_DEVICE(0x34F0, 0x023C, iwl9560_2ac_cfg_qu_b0_jf_b0)}, +- {IWL_PCI_DEVICE(0x34F0, 0x0244, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x34F0, 0x0260, iwl9461_2ac_cfg_qu_b0_jf_b0)}, + {IWL_PCI_DEVICE(0x34F0, 0x0264, iwl9461_2ac_cfg_qu_b0_jf_b0)}, + {IWL_PCI_DEVICE(0x34F0, 0x02A0, iwl9462_2ac_cfg_qu_b0_jf_b0)}, +@@ -764,7 +754,6 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x43F0, 0x0034, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x43F0, 0x0038, iwl9560_2ac_160_cfg_soc)}, + {IWL_PCI_DEVICE(0x43F0, 0x003C, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x43F0, 0x0044, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x43F0, 0x0060, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x43F0, 0x0064, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x43F0, 0x00A0, iwl9462_2ac_cfg_soc)}, +@@ -773,7 +762,6 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x43F0, 0x0234, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x43F0, 0x0238, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x43F0, 0x023C, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x43F0, 0x0244, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x43F0, 0x0260, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x43F0, 0x0264, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x43F0, 0x02A0, iwl9462_2ac_cfg_soc)}, +@@ -833,7 +821,6 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0xA0F0, 0x0034, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0xA0F0, 0x0038, iwl9560_2ac_160_cfg_soc)}, + {IWL_PCI_DEVICE(0xA0F0, 0x003C, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0xA0F0, 0x0044, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0xA0F0, 0x0060, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0xA0F0, 0x0064, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0xA0F0, 0x00A0, iwl9462_2ac_cfg_soc)}, +@@ -842,7 +829,6 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0xA0F0, 0x0234, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0xA0F0, 0x0238, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0xA0F0, 0x023C, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0xA0F0, 0x0244, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0xA0F0, 0x0260, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0xA0F0, 0x0264, iwl9461_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0xA0F0, 0x02A0, iwl9462_2ac_cfg_soc)}, +@@ -890,69 +876,80 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x2720, 0x0030, iwl9560_2ac_cfg_qnj_jf_b0)}, + + /* 22000 Series */ +- {IWL_PCI_DEVICE(0x02F0, 0x0070, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0074, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0078, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x02F0, 0x007C, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0310, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x02F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)}, +- {IWL_PCI_DEVICE(0x02F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)}, +- {IWL_PCI_DEVICE(0x02F0, 0x2074, iwl_ax201_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x02F0, 0x4070, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0070, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0074, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0078, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x06F0, 0x007C, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0310, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x06F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)}, +- {IWL_PCI_DEVICE(0x06F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)}, +- {IWL_PCI_DEVICE(0x06F0, 0x2074, iwl_ax201_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x06F0, 0x4070, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0070, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0074, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0078, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x007C, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0244, iwl_ax101_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0310, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x1651, iwl_ax1650s_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x1652, iwl_ax1650i_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x2074, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x4070, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x4244, iwl_ax101_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0070, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0074, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0078, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x007C, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0244, iwl_ax101_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0310, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x1651, iwl_ax1650s_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x1652, iwl_ax1650i_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x2074, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x4070, iwl_ax201_cfg_quz_hr)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x4244, iwl_ax101_cfg_quz_hr)}, + {IWL_PCI_DEVICE(0x2720, 0x0000, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x2720, 0x0040, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x2720, 0x0070, iwl22000_2ac_cfg_hr_cdb)}, +- {IWL_PCI_DEVICE(0x2720, 0x0074, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x2720, 0x0078, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x2720, 0x007C, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x2720, 0x0044, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x2720, 0x0070, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x2720, 0x0074, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x2720, 0x0078, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x2720, 0x007C, iwl_ax201_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x2720, 0x0090, iwl22000_2ac_cfg_hr_cdb)}, +- {IWL_PCI_DEVICE(0x2720, 0x0310, iwl22000_2ac_cfg_hr_cdb)}, +- {IWL_PCI_DEVICE(0x2720, 0x0A10, iwl22000_2ac_cfg_hr_cdb)}, ++ {IWL_PCI_DEVICE(0x2720, 0x0244, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x2720, 0x0310, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x2720, 0x0A10, iwl_ax201_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x2720, 0x1080, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x2720, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0x2720, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0x2720, 0x2074, iwl_ax201_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x2720, 0x4070, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x34F0, 0x0040, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x34F0, 0x0070, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x34F0, 0x0074, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x34F0, 0x0078, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x34F0, 0x007C, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x34F0, 0x0310, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x2720, 0x4070, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x2720, 0x4244, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x34F0, 0x0044, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x34F0, 0x0070, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x34F0, 0x0074, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x34F0, 0x0078, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x34F0, 0x007C, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x34F0, 0x0244, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x34F0, 0x0310, iwl_ax201_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x34F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0x34F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0x34F0, 0x2074, iwl_ax201_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x34F0, 0x4070, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x43F0, 0x0040, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x43F0, 0x0070, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x43F0, 0x0074, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x43F0, 0x0078, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x43F0, 0x007C, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x34F0, 0x4070, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x34F0, 0x4244, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x43F0, 0x0044, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x43F0, 0x0070, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x43F0, 0x0074, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x43F0, 0x0078, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x43F0, 0x007C, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x43F0, 0x0244, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x43F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0x43F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0x43F0, 0x2074, iwl_ax201_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0x43F0, 0x4070, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0xA0F0, 0x0000, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0xA0F0, 0x0040, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0xA0F0, 0x0070, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0xA0F0, 0x0074, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0xA0F0, 0x0078, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0xA0F0, 0x007C, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0xA0F0, 0x00B0, iwl_ax101_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0xA0F0, 0x0A10, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x43F0, 0x4070, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0x43F0, 0x4244, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0xA0F0, 0x0044, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0xA0F0, 0x0070, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0xA0F0, 0x0074, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0xA0F0, 0x0078, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0xA0F0, 0x007C, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0xA0F0, 0x0244, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0xA0F0, 0x0A10, iwl_ax201_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0xA0F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0xA0F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0xA0F0, 0x2074, iwl_ax201_cfg_qu_hr)}, +- {IWL_PCI_DEVICE(0xA0F0, 0x4070, iwl_ax101_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0xA0F0, 0x4070, iwl_ax201_cfg_qu_hr)}, ++ {IWL_PCI_DEVICE(0xA0F0, 0x4244, iwl_ax101_cfg_qu_hr)}, + + {IWL_PCI_DEVICE(0x2723, 0x0080, iwl_ax200_cfg_cc)}, + {IWL_PCI_DEVICE(0x2723, 0x0084, iwl_ax200_cfg_cc)}, +@@ -974,6 +971,9 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x7A70, 0x0310, iwlax211_2ax_cfg_so_gf_a0)}, + {IWL_PCI_DEVICE(0x7A70, 0x0510, iwlax211_2ax_cfg_so_gf_a0)}, + {IWL_PCI_DEVICE(0x7A70, 0x0A10, iwlax211_2ax_cfg_so_gf_a0)}, ++ {IWL_PCI_DEVICE(0x7AF0, 0x0310, iwlax211_2ax_cfg_so_gf_a0)}, ++ {IWL_PCI_DEVICE(0x7AF0, 0x0510, iwlax211_2ax_cfg_so_gf_a0)}, ++ {IWL_PCI_DEVICE(0x7AF0, 0x0A10, iwlax211_2ax_cfg_so_gf_a0)}, + + #endif /* CONFIG_IWLMVM */ + +diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +index 51a3f77474e66..38ab24d962446 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +@@ -3601,8 +3601,9 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, + } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(trans->hw_rf_id) == + CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_HR) && + ((trans->cfg != &iwl_ax200_cfg_cc && +- trans->cfg != &killer1650x_2ax_cfg && +- trans->cfg != &killer1650w_2ax_cfg) || ++ trans->cfg != &killer1650x_2ax_cfg && ++ trans->cfg != &killer1650w_2ax_cfg && ++ trans->cfg != &iwl_ax201_cfg_quz_hr) || + trans->hw_rev == CSR_HW_REV_TYPE_QNJ_B0)) { + u32 hw_status; + +-- +2.20.1 + diff --git a/queue-5.2/iwlwifi-add-new-cards-for-22000-and-fix-struct-name.patch b/queue-5.2/iwlwifi-add-new-cards-for-22000-and-fix-struct-name.patch new file mode 100644 index 00000000000..84c0e69bd34 --- /dev/null +++ b/queue-5.2/iwlwifi-add-new-cards-for-22000-and-fix-struct-name.patch @@ -0,0 +1,190 @@ +From 00d750ec84e48403e6d25db305101c226a414271 Mon Sep 17 00:00:00 2001 +From: Ihab Zhaika +Date: Fri, 14 Jun 2019 11:48:49 +0300 +Subject: iwlwifi: add new cards for 22000 and fix struct name + +[ Upstream commit d151b0a2efa128cb4f643b11baf54b1e4de2c528 ] + +add few PCI ID'S for 22000 and fix the wrong name for one +of the structs + +Signed-off-by: Ihab Zhaika +Signed-off-by: Luca Coelho +Signed-off-by: Kalle Valo +Signed-off-by: Sasha Levin +--- + .../net/wireless/intel/iwlwifi/cfg/22000.c | 20 ++++++++++++---- + .../net/wireless/intel/iwlwifi/iwl-config.h | 5 ++-- + drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 23 +++++++++++++------ + .../net/wireless/intel/iwlwifi/pcie/trans.c | 4 ++-- + 4 files changed, 37 insertions(+), 15 deletions(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +index a9c846c59289e..650ca46efc48f 100644 +--- a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c ++++ b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +@@ -241,6 +241,18 @@ const struct iwl_cfg iwl_ax101_cfg_qu_hr = { + .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, + }; + ++const struct iwl_cfg iwl_ax201_cfg_qu_hr = { ++ .name = "Intel(R) Wi-Fi 6 AX201 160MHz", ++ .fw_name_pre = IWL_22000_QU_B_HR_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++}; ++ + const struct iwl_cfg iwl_ax101_cfg_quz_hr = { + .name = "Intel(R) Wi-Fi 6 AX101", + .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, +@@ -424,12 +436,12 @@ const struct iwl_cfg iwlax210_2ax_cfg_so_jf_a0 = { + }; + + const struct iwl_cfg iwlax210_2ax_cfg_so_hr_a0 = { +- .name = "Intel(R) Wi-Fi 6 AX201 160MHz", ++ .name = "Intel(R) Wi-Fi 7 AX210 160MHz", + .fw_name_pre = IWL_22000_SO_A_HR_B_FW_PRE, + IWL_DEVICE_AX210, + }; + +-const struct iwl_cfg iwlax210_2ax_cfg_so_gf_a0 = { ++const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0 = { + .name = "Intel(R) Wi-Fi 7 AX211 160MHz", + .fw_name_pre = IWL_22000_SO_A_GF_A_FW_PRE, + .uhb_supported = true, +@@ -443,8 +455,8 @@ const struct iwl_cfg iwlax210_2ax_cfg_ty_gf_a0 = { + IWL_DEVICE_AX210, + }; + +-const struct iwl_cfg iwlax210_2ax_cfg_so_gf4_a0 = { +- .name = "Intel(R) Wi-Fi 7 AX210 160MHz", ++const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0 = { ++ .name = "Intel(R) Wi-Fi 7 AX411 160MHz", + .fw_name_pre = IWL_22000_SO_A_GF4_A_FW_PRE, + IWL_DEVICE_AX210, + }; +diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h +index f3e69edf89071..29aaf649c13c3 100644 +--- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h ++++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h +@@ -562,6 +562,7 @@ extern const struct iwl_cfg iwl_ax101_cfg_qu_hr; + extern const struct iwl_cfg iwl_ax101_cfg_quz_hr; + extern const struct iwl_cfg iwl22000_2ax_cfg_hr; + extern const struct iwl_cfg iwl_ax200_cfg_cc; ++extern const struct iwl_cfg iwl_ax201_cfg_qu_hr; + extern const struct iwl_cfg killer1650s_2ax_cfg_qu_b0_hr_b0; + extern const struct iwl_cfg killer1650i_2ax_cfg_qu_b0_hr_b0; + extern const struct iwl_cfg killer1650x_2ax_cfg; +@@ -580,9 +581,9 @@ extern const struct iwl_cfg iwl9560_2ac_cfg_qnj_jf_b0; + extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0; + extern const struct iwl_cfg iwlax210_2ax_cfg_so_jf_a0; + extern const struct iwl_cfg iwlax210_2ax_cfg_so_hr_a0; +-extern const struct iwl_cfg iwlax210_2ax_cfg_so_gf_a0; ++extern const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0; + extern const struct iwl_cfg iwlax210_2ax_cfg_ty_gf_a0; +-extern const struct iwl_cfg iwlax210_2ax_cfg_so_gf4_a0; ++extern const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0; + #endif /* CPTCFG_IWLMVM || CPTCFG_IWLFMAC */ + + #endif /* __IWL_CONFIG_H__ */ +diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +index cd035061cdd55..2f3ee5769fdd3 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +@@ -897,6 +897,7 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x02F0, 0x0310, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x02F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0x02F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x2074, iwl_ax201_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x02F0, 0x4070, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x06F0, 0x0070, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x06F0, 0x0074, iwl_ax101_cfg_qu_hr)}, +@@ -905,6 +906,7 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x06F0, 0x0310, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x06F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0x06F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x2074, iwl_ax201_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x06F0, 0x4070, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x2720, 0x0000, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x2720, 0x0040, iwl_ax101_cfg_qu_hr)}, +@@ -918,6 +920,7 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x2720, 0x1080, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x2720, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0x2720, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)}, ++ {IWL_PCI_DEVICE(0x2720, 0x2074, iwl_ax201_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x2720, 0x4070, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x34F0, 0x0040, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x34F0, 0x0070, iwl_ax101_cfg_qu_hr)}, +@@ -927,6 +930,7 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x34F0, 0x0310, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x34F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0x34F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)}, ++ {IWL_PCI_DEVICE(0x34F0, 0x2074, iwl_ax201_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x34F0, 0x4070, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x43F0, 0x0040, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x43F0, 0x0070, iwl_ax101_cfg_qu_hr)}, +@@ -935,6 +939,7 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x43F0, 0x007C, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x43F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0x43F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)}, ++ {IWL_PCI_DEVICE(0x43F0, 0x2074, iwl_ax201_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0x43F0, 0x4070, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0xA0F0, 0x0000, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0xA0F0, 0x0040, iwl_ax101_cfg_qu_hr)}, +@@ -946,6 +951,7 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0xA0F0, 0x0A10, iwl_ax101_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0xA0F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)}, + {IWL_PCI_DEVICE(0xA0F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)}, ++ {IWL_PCI_DEVICE(0xA0F0, 0x2074, iwl_ax201_cfg_qu_hr)}, + {IWL_PCI_DEVICE(0xA0F0, 0x4070, iwl_ax101_cfg_qu_hr)}, + + {IWL_PCI_DEVICE(0x2723, 0x0080, iwl_ax200_cfg_cc)}, +@@ -958,13 +964,16 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x2723, 0x4080, iwl_ax200_cfg_cc)}, + {IWL_PCI_DEVICE(0x2723, 0x4088, iwl_ax200_cfg_cc)}, + +- {IWL_PCI_DEVICE(0x2725, 0x0090, iwlax210_2ax_cfg_so_hr_a0)}, +- {IWL_PCI_DEVICE(0x7A70, 0x0090, iwlax210_2ax_cfg_so_hr_a0)}, +- {IWL_PCI_DEVICE(0x7A70, 0x0310, iwlax210_2ax_cfg_so_hr_a0)}, +- {IWL_PCI_DEVICE(0x2725, 0x0020, iwlax210_2ax_cfg_so_hr_a0)}, +- {IWL_PCI_DEVICE(0x2725, 0x0310, iwlax210_2ax_cfg_so_hr_a0)}, +- {IWL_PCI_DEVICE(0x2725, 0x0A10, iwlax210_2ax_cfg_so_hr_a0)}, +- {IWL_PCI_DEVICE(0x2725, 0x00B0, iwlax210_2ax_cfg_so_hr_a0)}, ++ {IWL_PCI_DEVICE(0x2725, 0x0090, iwlax211_2ax_cfg_so_gf_a0)}, ++ {IWL_PCI_DEVICE(0x2725, 0x0020, iwlax210_2ax_cfg_ty_gf_a0)}, ++ {IWL_PCI_DEVICE(0x2725, 0x0310, iwlax210_2ax_cfg_ty_gf_a0)}, ++ {IWL_PCI_DEVICE(0x2725, 0x0510, iwlax210_2ax_cfg_ty_gf_a0)}, ++ {IWL_PCI_DEVICE(0x2725, 0x0A10, iwlax210_2ax_cfg_ty_gf_a0)}, ++ {IWL_PCI_DEVICE(0x2725, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0)}, ++ {IWL_PCI_DEVICE(0x7A70, 0x0090, iwlax211_2ax_cfg_so_gf_a0)}, ++ {IWL_PCI_DEVICE(0x7A70, 0x0310, iwlax211_2ax_cfg_so_gf_a0)}, ++ {IWL_PCI_DEVICE(0x7A70, 0x0510, iwlax211_2ax_cfg_so_gf_a0)}, ++ {IWL_PCI_DEVICE(0x7A70, 0x0A10, iwlax211_2ax_cfg_so_gf_a0)}, + + #endif /* CONFIG_IWLMVM */ + +diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +index 199eddea82a9a..51a3f77474e66 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +@@ -3569,10 +3569,10 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, + trans->cfg = &iwlax210_2ax_cfg_so_jf_a0; + } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(trans->hw_rf_id) == + CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_GF)) { +- trans->cfg = &iwlax210_2ax_cfg_so_gf_a0; ++ trans->cfg = &iwlax211_2ax_cfg_so_gf_a0; + } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(trans->hw_rf_id) == + CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_GF4)) { +- trans->cfg = &iwlax210_2ax_cfg_so_gf4_a0; ++ trans->cfg = &iwlax411_2ax_cfg_so_gf4_a0; + } + } else if (cfg == &iwl_ax101_cfg_qu_hr) { + if ((CSR_HW_RF_ID_TYPE_CHIP_ID(trans->hw_rf_id) == +-- +2.20.1 + diff --git a/queue-5.2/iwlwifi-add-new-cards-for-9000-and-20000-series.patch b/queue-5.2/iwlwifi-add-new-cards-for-9000-and-20000-series.patch new file mode 100644 index 00000000000..7c4f55cd351 --- /dev/null +++ b/queue-5.2/iwlwifi-add-new-cards-for-9000-and-20000-series.patch @@ -0,0 +1,41 @@ +From 3caba7627f8ae717214ab127447a99624aa6a610 Mon Sep 17 00:00:00 2001 +From: Ihab Zhaika +Date: Mon, 8 Jul 2019 18:55:33 +0300 +Subject: iwlwifi: add new cards for 9000 and 20000 series + +[ Upstream commit ffcb60a54f245528e1d49f957ca2d20d6079577c ] + +add two new PCI ID's for 9000 and 20000 series + +Cc: stable@vger.kernel.org +Signed-off-by: Ihab Zhaika +Signed-off-by: Luca Coelho +Signed-off-by: Kalle Valo +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +index 02af9073793af..09cf5f4fccb0f 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +@@ -604,6 +604,7 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x2526, 0x40A4, iwl9460_2ac_cfg)}, + {IWL_PCI_DEVICE(0x2526, 0x4234, iwl9560_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x2526, 0x42A4, iwl9462_2ac_cfg_soc)}, ++ {IWL_PCI_DEVICE(0x2526, 0x6014, iwl9260_2ac_160_cfg)}, + {IWL_PCI_DEVICE(0x2526, 0x8014, iwl9260_2ac_160_cfg)}, + {IWL_PCI_DEVICE(0x2526, 0x8010, iwl9260_2ac_160_cfg)}, + {IWL_PCI_DEVICE(0x2526, 0xA014, iwl9260_2ac_160_cfg)}, +@@ -971,6 +972,7 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x7A70, 0x0310, iwlax211_2ax_cfg_so_gf_a0)}, + {IWL_PCI_DEVICE(0x7A70, 0x0510, iwlax211_2ax_cfg_so_gf_a0)}, + {IWL_PCI_DEVICE(0x7A70, 0x0A10, iwlax211_2ax_cfg_so_gf_a0)}, ++ {IWL_PCI_DEVICE(0x7AF0, 0x0090, iwlax211_2ax_cfg_so_gf_a0)}, + {IWL_PCI_DEVICE(0x7AF0, 0x0310, iwlax211_2ax_cfg_so_gf_a0)}, + {IWL_PCI_DEVICE(0x7AF0, 0x0510, iwlax211_2ax_cfg_so_gf_a0)}, + {IWL_PCI_DEVICE(0x7AF0, 0x0A10, iwlax211_2ax_cfg_so_gf_a0)}, +-- +2.20.1 + diff --git a/queue-5.2/iwlwifi-change-0x02f0-fw-from-qu-to-quz.patch b/queue-5.2/iwlwifi-change-0x02f0-fw-from-qu-to-quz.patch new file mode 100644 index 00000000000..d4071ef9dd8 --- /dev/null +++ b/queue-5.2/iwlwifi-change-0x02f0-fw-from-qu-to-quz.patch @@ -0,0 +1,278 @@ +From 3a4592204307a5b5086cab95a9105f048ca9a4bc Mon Sep 17 00:00:00 2001 +From: Ihab Zhaika +Date: Fri, 14 Jun 2019 11:48:51 +0300 +Subject: iwlwifi: change 0x02F0 fw from qu to quz + +[ Upstream commit 658521fc1bf1457a944d8408b8a792b31ed9cc20 ] + +change the fw of 0x02F0 platform from qu to quz + +Signed-off-by: Ihab Zhaika +Signed-off-by: Luca Coelho +Signed-off-by: Kalle Valo +Signed-off-by: Sasha Levin +--- + .../net/wireless/intel/iwlwifi/cfg/22000.c | 88 +++++++++++++++ + .../net/wireless/intel/iwlwifi/iwl-config.h | 6 ++ + drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 100 +++++++++--------- + 3 files changed, 144 insertions(+), 50 deletions(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +index e40fa12212b75..93526dfaf7912 100644 +--- a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c ++++ b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +@@ -82,6 +82,7 @@ + #define IWL_22000_HR_A0_FW_PRE "iwlwifi-QuQnj-a0-hr-a0-" + #define IWL_QU_B_JF_B_FW_PRE "iwlwifi-Qu-b0-jf-b0-" + #define IWL_QUZ_A_HR_B_FW_PRE "iwlwifi-QuZ-a0-hr-b0-" ++#define IWL_QUZ_A_JF_B_FW_PRE "iwlwifi-QuZ-a0-jf-b0-" + #define IWL_QNJ_B_JF_B_FW_PRE "iwlwifi-QuQnj-b0-jf-b0-" + #define IWL_CC_A_FW_PRE "iwlwifi-cc-a0-" + #define IWL_22000_SO_A_JF_B_FW_PRE "iwlwifi-so-a0-jf-b0-" +@@ -106,6 +107,8 @@ + IWL_22000_HR_A0_FW_PRE __stringify(api) ".ucode" + #define IWL_QUZ_A_HR_B_MODULE_FIRMWARE(api) \ + IWL_QUZ_A_HR_B_FW_PRE __stringify(api) ".ucode" ++#define IWL_QUZ_A_JF_B_MODULE_FIRMWARE(api) \ ++ IWL_QUZ_A_JF_B_FW_PRE __stringify(api) ".ucode" + #define IWL_QU_B_JF_B_MODULE_FIRMWARE(api) \ + IWL_QU_B_JF_B_FW_PRE __stringify(api) ".ucode" + #define IWL_QNJ_B_JF_B_MODULE_FIRMWARE(api) \ +@@ -381,6 +384,90 @@ const struct iwl_cfg iwl9560_2ac_cfg_qnj_jf_b0 = { + .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, + }; + ++const struct iwl_cfg iwl9560_2ac_cfg_quz_a0_jf_b0_soc = { ++ .name = "Intel(R) Wireless-AC 9560 160MHz", ++ .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++ .integrated = true, ++ .soc_latency = 5000, ++}; ++ ++const struct iwl_cfg iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc = { ++ .name = "Intel(R) Wireless-AC 9560 160MHz", ++ .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++ .integrated = true, ++ .soc_latency = 5000, ++}; ++ ++const struct iwl_cfg iwl9461_2ac_cfg_quz_a0_jf_b0_soc = { ++ .name = "Intel(R) Dual Band Wireless AC 9461", ++ .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++ .integrated = true, ++ .soc_latency = 5000, ++}; ++ ++const struct iwl_cfg iwl9462_2ac_cfg_quz_a0_jf_b0_soc = { ++ .name = "Intel(R) Dual Band Wireless AC 9462", ++ .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++ .integrated = true, ++ .soc_latency = 5000, ++}; ++ ++const struct iwl_cfg iwl9560_killer_s_2ac_cfg_quz_a0_jf_b0_soc = { ++ .name = "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)", ++ .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++ .integrated = true, ++ .soc_latency = 5000, ++}; ++ ++const struct iwl_cfg iwl9560_killer_i_2ac_cfg_quz_a0_jf_b0_soc = { ++ .name = "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)", ++ .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++ .integrated = true, ++ .soc_latency = 5000, ++}; ++ + const struct iwl_cfg killer1550i_2ac_cfg_qu_b0_jf_b0 = { + .name = "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)", + .fw_name_pre = IWL_QU_B_JF_B_FW_PRE, +@@ -505,6 +592,7 @@ MODULE_FIRMWARE(IWL_22000_HR_B_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); + MODULE_FIRMWARE(IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); + MODULE_FIRMWARE(IWL_QU_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); + MODULE_FIRMWARE(IWL_QUZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); ++MODULE_FIRMWARE(IWL_QUZ_A_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); + MODULE_FIRMWARE(IWL_QNJ_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); + MODULE_FIRMWARE(IWL_CC_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); + MODULE_FIRMWARE(IWL_22000_SO_A_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); +diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h +index dbe6437249f07..bc267bd2c3b0e 100644 +--- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h ++++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h +@@ -540,14 +540,20 @@ extern const struct iwl_cfg iwl9260_killer_2ac_cfg; + extern const struct iwl_cfg iwl9270_2ac_cfg; + extern const struct iwl_cfg iwl9460_2ac_cfg; + extern const struct iwl_cfg iwl9560_2ac_cfg; ++extern const struct iwl_cfg iwl9560_2ac_cfg_quz_a0_jf_b0_soc; + extern const struct iwl_cfg iwl9560_2ac_160_cfg; ++extern const struct iwl_cfg iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc; + extern const struct iwl_cfg iwl9460_2ac_cfg_soc; + extern const struct iwl_cfg iwl9461_2ac_cfg_soc; ++extern const struct iwl_cfg iwl9461_2ac_cfg_quz_a0_jf_b0_soc; + extern const struct iwl_cfg iwl9462_2ac_cfg_soc; ++extern const struct iwl_cfg iwl9462_2ac_cfg_quz_a0_jf_b0_soc; + extern const struct iwl_cfg iwl9560_2ac_cfg_soc; + extern const struct iwl_cfg iwl9560_2ac_160_cfg_soc; + extern const struct iwl_cfg iwl9560_killer_2ac_cfg_soc; + extern const struct iwl_cfg iwl9560_killer_s_2ac_cfg_soc; ++extern const struct iwl_cfg iwl9560_killer_i_2ac_cfg_quz_a0_jf_b0_soc; ++extern const struct iwl_cfg iwl9560_killer_s_2ac_cfg_quz_a0_jf_b0_soc; + extern const struct iwl_cfg iwl9460_2ac_cfg_shared_clk; + extern const struct iwl_cfg iwl9461_2ac_cfg_shared_clk; + extern const struct iwl_cfg iwl9462_2ac_cfg_shared_clk; +diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +index 09cf5f4fccb0f..fe645380bd2fa 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +@@ -513,56 +513,56 @@ static const struct pci_device_id iwl_hw_card_ids[] = { + {IWL_PCI_DEVICE(0x24FD, 0x9074, iwl8265_2ac_cfg)}, + + /* 9000 Series */ +- {IWL_PCI_DEVICE(0x02F0, 0x0030, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0034, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0038, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x003C, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0060, iwl9461_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0064, iwl9461_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x00A0, iwl9462_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x00A4, iwl9462_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0230, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0234, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0238, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x023C, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0260, iwl9461_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x0264, iwl9461_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x02A0, iwl9462_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x02A4, iwl9462_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x1551, iwl9560_killer_s_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x1552, iwl9560_killer_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x2030, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x2034, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x4030, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x4034, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x40A4, iwl9462_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x4234, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x02F0, 0x42A4, iwl9462_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0030, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0034, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0038, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x003C, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0060, iwl9461_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0064, iwl9461_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x00A0, iwl9462_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x00A4, iwl9462_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0230, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0234, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0238, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x023C, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0260, iwl9461_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x0264, iwl9461_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x02A0, iwl9462_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x02A4, iwl9462_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x1551, iwl9560_killer_s_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x1552, iwl9560_killer_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x2030, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x2034, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x4030, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x4034, iwl9560_2ac_160_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x40A4, iwl9462_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x4234, iwl9560_2ac_cfg_soc)}, +- {IWL_PCI_DEVICE(0x06F0, 0x42A4, iwl9462_2ac_cfg_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0030, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0034, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0038, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x003C, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0060, iwl9461_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0064, iwl9461_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x00A0, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x00A4, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0230, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0234, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0238, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x023C, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0260, iwl9461_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x0264, iwl9461_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x02A0, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x02A4, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x1551, iwl9560_killer_s_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x1552, iwl9560_killer_i_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x2030, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x2034, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x4030, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x4034, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x40A4, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x4234, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x02F0, 0x42A4, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0030, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0034, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0038, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x003C, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0060, iwl9461_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0064, iwl9461_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x00A0, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x00A4, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0230, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0234, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0238, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x023C, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0260, iwl9461_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x0264, iwl9461_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x02A0, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x02A4, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x1551, iwl9560_killer_s_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x1552, iwl9560_killer_i_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x2030, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x2034, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x4030, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x4034, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x40A4, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x4234, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)}, ++ {IWL_PCI_DEVICE(0x06F0, 0x42A4, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)}, + {IWL_PCI_DEVICE(0x2526, 0x0010, iwl9260_2ac_160_cfg)}, + {IWL_PCI_DEVICE(0x2526, 0x0014, iwl9260_2ac_160_cfg)}, + {IWL_PCI_DEVICE(0x2526, 0x0018, iwl9260_2ac_160_cfg)}, +-- +2.20.1 + diff --git a/queue-5.2/iwlwifi-pcie-add-support-for-qu-c-step-devices.patch b/queue-5.2/iwlwifi-pcie-add-support-for-qu-c-step-devices.patch new file mode 100644 index 00000000000..f9511601e47 --- /dev/null +++ b/queue-5.2/iwlwifi-pcie-add-support-for-qu-c-step-devices.patch @@ -0,0 +1,192 @@ +From 5b526e5c0cc111a16d87e9a6a58bc85ea4b7903c Mon Sep 17 00:00:00 2001 +From: Luca Coelho +Date: Mon, 8 Jul 2019 18:55:34 +0300 +Subject: iwlwifi: pcie: add support for qu c-step devices + +[ Upstream commit a7d544d63120061f89459585f06ca44d30842a22 ] + +Add support for C-step devices. Currently we don't have a nice way of +matching the step and choosing the proper configuration, so we need to +switch the config structs one by one. + +Cc: stable@vger.kernel.org +Signed-off-by: Luca Coelho +Signed-off-by: Kalle Valo +Signed-off-by: Sasha Levin +--- + .../net/wireless/intel/iwlwifi/cfg/22000.c | 53 +++++++++++++++++++ + .../net/wireless/intel/iwlwifi/iwl-config.h | 7 +++ + drivers/net/wireless/intel/iwlwifi/iwl-csr.h | 2 + + drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 21 ++++++++ + 4 files changed, 83 insertions(+) + +diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +index 93526dfaf7912..1f500cddb3a75 100644 +--- a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c ++++ b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +@@ -80,7 +80,9 @@ + #define IWL_22000_QU_B_HR_B_FW_PRE "iwlwifi-Qu-b0-hr-b0-" + #define IWL_22000_HR_B_FW_PRE "iwlwifi-QuQnj-b0-hr-b0-" + #define IWL_22000_HR_A0_FW_PRE "iwlwifi-QuQnj-a0-hr-a0-" ++#define IWL_QU_C_HR_B_FW_PRE "iwlwifi-Qu-c0-hr-b0-" + #define IWL_QU_B_JF_B_FW_PRE "iwlwifi-Qu-b0-jf-b0-" ++#define IWL_QU_C_JF_B_FW_PRE "iwlwifi-Qu-c0-jf-b0-" + #define IWL_QUZ_A_HR_B_FW_PRE "iwlwifi-QuZ-a0-hr-b0-" + #define IWL_QUZ_A_JF_B_FW_PRE "iwlwifi-QuZ-a0-jf-b0-" + #define IWL_QNJ_B_JF_B_FW_PRE "iwlwifi-QuQnj-b0-jf-b0-" +@@ -109,6 +111,8 @@ + IWL_QUZ_A_HR_B_FW_PRE __stringify(api) ".ucode" + #define IWL_QUZ_A_JF_B_MODULE_FIRMWARE(api) \ + IWL_QUZ_A_JF_B_FW_PRE __stringify(api) ".ucode" ++#define IWL_QU_C_HR_B_MODULE_FIRMWARE(api) \ ++ IWL_QU_C_HR_B_FW_PRE __stringify(api) ".ucode" + #define IWL_QU_B_JF_B_MODULE_FIRMWARE(api) \ + IWL_QU_B_JF_B_FW_PRE __stringify(api) ".ucode" + #define IWL_QNJ_B_JF_B_MODULE_FIRMWARE(api) \ +@@ -256,6 +260,30 @@ const struct iwl_cfg iwl_ax201_cfg_qu_hr = { + .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, + }; + ++const struct iwl_cfg iwl_ax101_cfg_qu_c0_hr_b0 = { ++ .name = "Intel(R) Wi-Fi 6 AX101", ++ .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++}; ++ ++const struct iwl_cfg iwl_ax201_cfg_qu_c0_hr_b0 = { ++ .name = "Intel(R) Wi-Fi 6 AX201 160MHz", ++ .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++}; ++ + const struct iwl_cfg iwl_ax101_cfg_quz_hr = { + .name = "Intel(R) Wi-Fi 6 AX101", + .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, +@@ -372,6 +400,30 @@ const struct iwl_cfg iwl9560_2ac_160_cfg_qu_b0_jf_b0 = { + IWL_DEVICE_22500, + }; + ++const struct iwl_cfg iwl9461_2ac_cfg_qu_c0_jf_b0 = { ++ .name = "Intel(R) Wireless-AC 9461", ++ .fw_name_pre = IWL_QU_C_JF_B_FW_PRE, ++ IWL_DEVICE_22500, ++}; ++ ++const struct iwl_cfg iwl9462_2ac_cfg_qu_c0_jf_b0 = { ++ .name = "Intel(R) Wireless-AC 9462", ++ .fw_name_pre = IWL_QU_C_JF_B_FW_PRE, ++ IWL_DEVICE_22500, ++}; ++ ++const struct iwl_cfg iwl9560_2ac_cfg_qu_c0_jf_b0 = { ++ .name = "Intel(R) Wireless-AC 9560", ++ .fw_name_pre = IWL_QU_C_JF_B_FW_PRE, ++ IWL_DEVICE_22500, ++}; ++ ++const struct iwl_cfg iwl9560_2ac_160_cfg_qu_c0_jf_b0 = { ++ .name = "Intel(R) Wireless-AC 9560 160MHz", ++ .fw_name_pre = IWL_QU_C_JF_B_FW_PRE, ++ IWL_DEVICE_22500, ++}; ++ + const struct iwl_cfg iwl9560_2ac_cfg_qnj_jf_b0 = { + .name = "Intel(R) Wireless-AC 9560 160MHz", + .fw_name_pre = IWL_QNJ_B_JF_B_FW_PRE, +@@ -590,6 +642,7 @@ MODULE_FIRMWARE(IWL_22000_HR_A_F0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); + MODULE_FIRMWARE(IWL_22000_HR_B_F0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); + MODULE_FIRMWARE(IWL_22000_HR_B_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); + MODULE_FIRMWARE(IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); ++MODULE_FIRMWARE(IWL_QU_C_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); + MODULE_FIRMWARE(IWL_QU_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); + MODULE_FIRMWARE(IWL_QUZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); + MODULE_FIRMWARE(IWL_QUZ_A_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); +diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h +index bc267bd2c3b0e..1c1bf1b281cd9 100644 +--- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h ++++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h +@@ -565,10 +565,13 @@ extern const struct iwl_cfg iwl22000_2ac_cfg_hr; + extern const struct iwl_cfg iwl22000_2ac_cfg_hr_cdb; + extern const struct iwl_cfg iwl22000_2ac_cfg_jf; + extern const struct iwl_cfg iwl_ax101_cfg_qu_hr; ++extern const struct iwl_cfg iwl_ax101_cfg_qu_c0_hr_b0; + extern const struct iwl_cfg iwl_ax101_cfg_quz_hr; + extern const struct iwl_cfg iwl22000_2ax_cfg_hr; + extern const struct iwl_cfg iwl_ax200_cfg_cc; + extern const struct iwl_cfg iwl_ax201_cfg_qu_hr; ++extern const struct iwl_cfg iwl_ax201_cfg_qu_hr; ++extern const struct iwl_cfg iwl_ax201_cfg_qu_c0_hr_b0; + extern const struct iwl_cfg iwl_ax201_cfg_quz_hr; + extern const struct iwl_cfg iwl_ax1650i_cfg_quz_hr; + extern const struct iwl_cfg iwl_ax1650s_cfg_quz_hr; +@@ -580,6 +583,10 @@ extern const struct iwl_cfg iwl9461_2ac_cfg_qu_b0_jf_b0; + extern const struct iwl_cfg iwl9462_2ac_cfg_qu_b0_jf_b0; + extern const struct iwl_cfg iwl9560_2ac_cfg_qu_b0_jf_b0; + extern const struct iwl_cfg iwl9560_2ac_160_cfg_qu_b0_jf_b0; ++extern const struct iwl_cfg iwl9461_2ac_cfg_qu_c0_jf_b0; ++extern const struct iwl_cfg iwl9462_2ac_cfg_qu_c0_jf_b0; ++extern const struct iwl_cfg iwl9560_2ac_cfg_qu_c0_jf_b0; ++extern const struct iwl_cfg iwl9560_2ac_160_cfg_qu_c0_jf_b0; + extern const struct iwl_cfg killer1550i_2ac_cfg_qu_b0_jf_b0; + extern const struct iwl_cfg killer1550s_2ac_cfg_qu_b0_jf_b0; + extern const struct iwl_cfg iwl22000_2ax_cfg_jf; +diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-csr.h b/drivers/net/wireless/intel/iwlwifi/iwl-csr.h +index 93da96a7247c3..cb4c5514a5560 100644 +--- a/drivers/net/wireless/intel/iwlwifi/iwl-csr.h ++++ b/drivers/net/wireless/intel/iwlwifi/iwl-csr.h +@@ -328,6 +328,8 @@ enum { + #define CSR_HW_REV_TYPE_NONE (0x00001F0) + #define CSR_HW_REV_TYPE_QNJ (0x0000360) + #define CSR_HW_REV_TYPE_QNJ_B0 (0x0000364) ++#define CSR_HW_REV_TYPE_QU_B0 (0x0000334) ++#define CSR_HW_REV_TYPE_QU_C0 (0x0000338) + #define CSR_HW_REV_TYPE_QUZ (0x0000354) + #define CSR_HW_REV_TYPE_HR_CDB (0x0000340) + #define CSR_HW_REV_TYPE_SO (0x0000370) +diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +index fe645380bd2fa..ea2a03d4bf55c 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +@@ -1039,6 +1039,27 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) + } + iwl_trans->cfg = cfg; + } ++ ++ /* ++ * This is a hack to switch from Qu B0 to Qu C0. We need to ++ * do this for all cfgs that use Qu B0. All this code is in ++ * urgent need for a refactor, but for now this is the easiest ++ * thing to do to support Qu C-step. ++ */ ++ if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QU_C0) { ++ if (iwl_trans->cfg == &iwl_ax101_cfg_qu_hr) ++ iwl_trans->cfg = &iwl_ax101_cfg_qu_c0_hr_b0; ++ else if (iwl_trans->cfg == &iwl_ax201_cfg_qu_hr) ++ iwl_trans->cfg = &iwl_ax201_cfg_qu_c0_hr_b0; ++ else if (iwl_trans->cfg == &iwl9461_2ac_cfg_qu_b0_jf_b0) ++ iwl_trans->cfg = &iwl9461_2ac_cfg_qu_c0_jf_b0; ++ else if (iwl_trans->cfg == &iwl9462_2ac_cfg_qu_b0_jf_b0) ++ iwl_trans->cfg = &iwl9462_2ac_cfg_qu_c0_jf_b0; ++ else if (iwl_trans->cfg == &iwl9560_2ac_cfg_qu_b0_jf_b0) ++ iwl_trans->cfg = &iwl9560_2ac_cfg_qu_c0_jf_b0; ++ else if (iwl_trans->cfg == &iwl9560_2ac_160_cfg_qu_b0_jf_b0) ++ iwl_trans->cfg = &iwl9560_2ac_160_cfg_qu_c0_jf_b0; ++ } + #endif + + pci_set_drvdata(pdev, iwl_trans); +-- +2.20.1 + diff --git a/queue-5.2/iwlwifi-pcie-don-t-switch-fw-to-qnj-when-ax201-is-de.patch b/queue-5.2/iwlwifi-pcie-don-t-switch-fw-to-qnj-when-ax201-is-de.patch new file mode 100644 index 00000000000..6d91b4ed1b1 --- /dev/null +++ b/queue-5.2/iwlwifi-pcie-don-t-switch-fw-to-qnj-when-ax201-is-de.patch @@ -0,0 +1,34 @@ +From bc124075a7a187d7fe662cff9f7b4e1019fe6e6c Mon Sep 17 00:00:00 2001 +From: Luca Coelho +Date: Fri, 16 Aug 2019 15:55:53 +0300 +Subject: iwlwifi: pcie: don't switch FW to qnj when ax201 is detected + +[ Upstream commit 17e40e6979aaf60f356331bac129df20e1fd74a0 ] + +We have a too generic condition that switches from Qu configurations +to QnJ configurations. We need to exclude some configurations so that +they are not erroneously switched. Add the ax201 configuration to the +list of exclusions. + +Signed-off-by: Luca Coelho +Signed-off-by: Kalle Valo +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +index 38ab24d962446..5209e8c3643eb 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +@@ -3601,6 +3601,7 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, + } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(trans->hw_rf_id) == + CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_HR) && + ((trans->cfg != &iwl_ax200_cfg_cc && ++ trans->cfg != &iwl_ax201_cfg_qu_hr && + trans->cfg != &killer1650x_2ax_cfg && + trans->cfg != &killer1650w_2ax_cfg && + trans->cfg != &iwl_ax201_cfg_quz_hr) || +-- +2.20.1 + diff --git a/queue-5.2/iwlwifi-pcie-handle-switching-killer-qu-b0-nics-to-c.patch b/queue-5.2/iwlwifi-pcie-handle-switching-killer-qu-b0-nics-to-c.patch new file mode 100644 index 00000000000..54dce954cde --- /dev/null +++ b/queue-5.2/iwlwifi-pcie-handle-switching-killer-qu-b0-nics-to-c.patch @@ -0,0 +1,113 @@ +From e06fe8bd1a0df8218c7dd8155763f9db176f38b7 Mon Sep 17 00:00:00 2001 +From: Luca Coelho +Date: Wed, 21 Aug 2019 20:17:32 +0300 +Subject: iwlwifi: pcie: handle switching killer Qu B0 NICs to C0 + +[ Upstream commit b9500577d361522a3d9f14da8cf41dc1d824904e ] + +We need to use a different firmware for C0 versions of killer Qu NICs. +Add structures for them and handle them in the if block that detects +C0 revisions. + +Additionally, instead of having an inclusive check for QnJ devices, +make the selection exclusive, so that switching to QnJ is the +exception, not the default. This prevents us from having to add all +the non-QnJ cards to an exclusion list. To do so, only go into the +QnJ block if the device has an RF ID type HR and HW revision QnJ. + +Cc: stable@vger.kernel.org # 5.2 +Signed-off-by: Luca Coelho +Link: https://lore.kernel.org/r/20190821171732.2266-1-luca@coelho.fi +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + .../net/wireless/intel/iwlwifi/cfg/22000.c | 24 +++++++++++++++++++ + .../net/wireless/intel/iwlwifi/iwl-config.h | 2 ++ + drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 4 ++++ + .../net/wireless/intel/iwlwifi/pcie/trans.c | 7 +----- + 4 files changed, 31 insertions(+), 6 deletions(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +index 1f500cddb3a75..55b713255b8ea 100644 +--- a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c ++++ b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +@@ -556,6 +556,30 @@ const struct iwl_cfg killer1650i_2ax_cfg_qu_b0_hr_b0 = { + .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, + }; + ++const struct iwl_cfg killer1650s_2ax_cfg_qu_c0_hr_b0 = { ++ .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)", ++ .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++}; ++ ++const struct iwl_cfg killer1650i_2ax_cfg_qu_c0_hr_b0 = { ++ .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201D2W)", ++ .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, ++ IWL_DEVICE_22500, ++ /* ++ * This device doesn't support receiving BlockAck with a large bitmap ++ * so we need to restrict the size of transmitted aggregation to the ++ * HT size; mac80211 would otherwise pick the HE max (256) by default. ++ */ ++ .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, ++}; ++ + const struct iwl_cfg iwl22000_2ax_cfg_jf = { + .name = "Intel(R) Dual Band Wireless AX 22000", + .fw_name_pre = IWL_QU_B_JF_B_FW_PRE, +diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h +index 1c1bf1b281cd9..6c04f8223aff3 100644 +--- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h ++++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h +@@ -577,6 +577,8 @@ extern const struct iwl_cfg iwl_ax1650i_cfg_quz_hr; + extern const struct iwl_cfg iwl_ax1650s_cfg_quz_hr; + extern const struct iwl_cfg killer1650s_2ax_cfg_qu_b0_hr_b0; + extern const struct iwl_cfg killer1650i_2ax_cfg_qu_b0_hr_b0; ++extern const struct iwl_cfg killer1650s_2ax_cfg_qu_c0_hr_b0; ++extern const struct iwl_cfg killer1650i_2ax_cfg_qu_c0_hr_b0; + extern const struct iwl_cfg killer1650x_2ax_cfg; + extern const struct iwl_cfg killer1650w_2ax_cfg; + extern const struct iwl_cfg iwl9461_2ac_cfg_qu_b0_jf_b0; +diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +index ea2a03d4bf55c..54cb4950f32fd 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +@@ -1059,6 +1059,10 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) + iwl_trans->cfg = &iwl9560_2ac_cfg_qu_c0_jf_b0; + else if (iwl_trans->cfg == &iwl9560_2ac_160_cfg_qu_b0_jf_b0) + iwl_trans->cfg = &iwl9560_2ac_160_cfg_qu_c0_jf_b0; ++ else if (iwl_trans->cfg == &killer1650s_2ax_cfg_qu_b0_hr_b0) ++ iwl_trans->cfg = &killer1650s_2ax_cfg_qu_c0_hr_b0; ++ else if (iwl_trans->cfg == &killer1650i_2ax_cfg_qu_b0_hr_b0) ++ iwl_trans->cfg = &killer1650i_2ax_cfg_qu_c0_hr_b0; + } + #endif + +diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +index 5209e8c3643eb..dc95a5abc4d66 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +@@ -3600,12 +3600,7 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, + } + } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(trans->hw_rf_id) == + CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_HR) && +- ((trans->cfg != &iwl_ax200_cfg_cc && +- trans->cfg != &iwl_ax201_cfg_qu_hr && +- trans->cfg != &killer1650x_2ax_cfg && +- trans->cfg != &killer1650w_2ax_cfg && +- trans->cfg != &iwl_ax201_cfg_quz_hr) || +- trans->hw_rev == CSR_HW_REV_TYPE_QNJ_B0)) { ++ trans->hw_rev == CSR_HW_REV_TYPE_QNJ_B0) { + u32 hw_status; + + hw_status = iwl_read_prph(trans, UMAG_GEN_HW_STATUS); +-- +2.20.1 + diff --git a/queue-5.2/mmc-sdhci-sprd-add-get_ro-hook-function.patch b/queue-5.2/mmc-sdhci-sprd-add-get_ro-hook-function.patch new file mode 100644 index 00000000000..6a9e86c665f --- /dev/null +++ b/queue-5.2/mmc-sdhci-sprd-add-get_ro-hook-function.patch @@ -0,0 +1,48 @@ +From 6704aff99bdd8016b2ce8ccc9ccb4fd35d73f28b Mon Sep 17 00:00:00 2001 +From: Chunyan Zhang +Date: Wed, 28 Aug 2019 10:17:33 +0800 +Subject: mmc: sdhci-sprd: add get_ro hook function + +[ Upstream commit 4eae8cbdff942a423926486be4e781a77d619966 ] + +sprd's sd host controller doesn't support write protect to sd card. + +Fixes: fb8bd90f83c4 ("mmc: sdhci-sprd: Add Spreadtrum's initial host controller") +Signed-off-by: Chunyan Zhang +Signed-off-by: Chunyan Zhang +Reviewed-by: Baolin Wang +Tested-by: Baolin Wang +Cc: stable@vger.kernel.org +Signed-off-by: Ulf Hansson +Signed-off-by: Sasha Levin +--- + drivers/mmc/host/sdhci-sprd.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c +index 1c5e6b77ca641..fc892a8d882fd 100644 +--- a/drivers/mmc/host/sdhci-sprd.c ++++ b/drivers/mmc/host/sdhci-sprd.c +@@ -291,6 +291,11 @@ static unsigned int sdhci_sprd_get_max_timeout_count(struct sdhci_host *host) + return 1 << 31; + } + ++static unsigned int sdhci_sprd_get_ro(struct sdhci_host *host) ++{ ++ return 0; ++} ++ + static struct sdhci_ops sdhci_sprd_ops = { + .read_l = sdhci_sprd_readl, + .write_l = sdhci_sprd_writel, +@@ -303,6 +308,7 @@ static struct sdhci_ops sdhci_sprd_ops = { + .set_uhs_signaling = sdhci_sprd_set_uhs_signaling, + .hw_reset = sdhci_sprd_hw_reset, + .get_max_timeout_count = sdhci_sprd_get_max_timeout_count, ++ .get_ro = sdhci_sprd_get_ro, + }; + + static void sdhci_sprd_request(struct mmc_host *mmc, struct mmc_request *mrq) +-- +2.20.1 + diff --git a/queue-5.2/mmc-sdhci-sprd-clear-the-uhs-i-modes-read-from-regis.patch b/queue-5.2/mmc-sdhci-sprd-clear-the-uhs-i-modes-read-from-regis.patch new file mode 100644 index 00000000000..04f621526fa --- /dev/null +++ b/queue-5.2/mmc-sdhci-sprd-clear-the-uhs-i-modes-read-from-regis.patch @@ -0,0 +1,56 @@ +From 466a59fff94e569147892eddbe83eb6740de7a65 Mon Sep 17 00:00:00 2001 +From: Chunyan Zhang +Date: Wed, 28 Aug 2019 10:17:36 +0800 +Subject: mmc: sdhci-sprd: clear the UHS-I modes read from registers + +[ Upstream commit 2f765c175e1d1acae911f889e71e5933c6488929 ] + +sprd's sd host controller supports SDR50/SDR104/DDR50 though, the UHS-I +mode used by the specific card can be selected via devicetree only. + +Fixes: fb8bd90f83c4 ("mmc: sdhci-sprd: Add Spreadtrum's initial host controller") +Signed-off-by: Chunyan Zhang +Signed-off-by: Chunyan Zhang +Reviewed-by: Baolin Wang +Tested-by: Baolin Wang +Cc: stable@vger.kernel.org +Signed-off-by: Ulf Hansson +Signed-off-by: Sasha Levin +--- + drivers/mmc/host/sdhci-sprd.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c +index dee30aa23cf72..9d0f58a665276 100644 +--- a/drivers/mmc/host/sdhci-sprd.c ++++ b/drivers/mmc/host/sdhci-sprd.c +@@ -320,7 +320,8 @@ static void sdhci_sprd_request(struct mmc_host *mmc, struct mmc_request *mrq) + + static const struct sdhci_pltfm_data sdhci_sprd_pdata = { + .quirks = SDHCI_QUIRK_BROKEN_CARD_DETECTION | +- SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK, ++ SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK | ++ SDHCI_QUIRK_MISSING_CAPS, + .quirks2 = SDHCI_QUIRK2_BROKEN_HS200 | + SDHCI_QUIRK2_USE_32BIT_BLK_CNT | + SDHCI_QUIRK2_PRESET_VALUE_BROKEN, +@@ -389,6 +390,16 @@ static int sdhci_sprd_probe(struct platform_device *pdev) + + sdhci_enable_v4_mode(host); + ++ /* ++ * Supply the existing CAPS, but clear the UHS-I modes. This ++ * will allow these modes to be specified only by device ++ * tree properties through mmc_of_parse(). ++ */ ++ host->caps = sdhci_readl(host, SDHCI_CAPABILITIES); ++ host->caps1 = sdhci_readl(host, SDHCI_CAPABILITIES_1); ++ host->caps1 &= ~(SDHCI_SUPPORT_SDR50 | SDHCI_SUPPORT_SDR104 | ++ SDHCI_SUPPORT_DDR50); ++ + ret = sdhci_setup_host(host); + if (ret) + goto pm_runtime_disable; +-- +2.20.1 + diff --git a/queue-5.2/mmc-sdhci-sprd-implement-the-get_max_timeout_count-i.patch b/queue-5.2/mmc-sdhci-sprd-implement-the-get_max_timeout_count-i.patch new file mode 100644 index 00000000000..768a5c05570 --- /dev/null +++ b/queue-5.2/mmc-sdhci-sprd-implement-the-get_max_timeout_count-i.patch @@ -0,0 +1,46 @@ +From a808d034e3a03d651dbf518d69283467e58d7132 Mon Sep 17 00:00:00 2001 +From: Baolin Wang +Date: Tue, 4 Jun 2019 16:14:24 +0800 +Subject: mmc: sdhci-sprd: Implement the get_max_timeout_count() interface + +[ Upstream commit 7486831d7d6aebcf851f9a4bbe65080351d5c9fb ] + +Implement the get_max_timeout_count() interface to set the Spredtrum SD +host controller actual maximum timeout count. + +Signed-off-by: Baolin Wang +Acked-by: Adrian Hunter +Signed-off-by: Ulf Hansson +Signed-off-by: Sasha Levin +--- + drivers/mmc/host/sdhci-sprd.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c +index 9d0f58a665276..1c5e6b77ca641 100644 +--- a/drivers/mmc/host/sdhci-sprd.c ++++ b/drivers/mmc/host/sdhci-sprd.c +@@ -285,6 +285,12 @@ static void sdhci_sprd_hw_reset(struct sdhci_host *host) + usleep_range(300, 500); + } + ++static unsigned int sdhci_sprd_get_max_timeout_count(struct sdhci_host *host) ++{ ++ /* The Spredtrum controller actual maximum timeout count is 1 << 31 */ ++ return 1 << 31; ++} ++ + static struct sdhci_ops sdhci_sprd_ops = { + .read_l = sdhci_sprd_readl, + .write_l = sdhci_sprd_writel, +@@ -296,6 +302,7 @@ static struct sdhci_ops sdhci_sprd_ops = { + .reset = sdhci_reset, + .set_uhs_signaling = sdhci_sprd_set_uhs_signaling, + .hw_reset = sdhci_sprd_hw_reset, ++ .get_max_timeout_count = sdhci_sprd_get_max_timeout_count, + }; + + static void sdhci_sprd_request(struct mmc_host *mmc, struct mmc_request *mrq) +-- +2.20.1 + diff --git a/queue-5.2/series b/queue-5.2/series index 585ca842629..11f1c9b8454 100644 --- a/queue-5.2/series +++ b/queue-5.2/series @@ -126,3 +126,15 @@ mac80211-fix-possible-sta-leak.patch cfg80211-fix-extended-key-id-key-install-checks.patch mac80211-don-t-memset-rxcb-prior-to-pae-intercept.patch mac80211-correctly-set-noencrypt-for-pae-frames.patch +mmc-sdhci-sprd-clear-the-uhs-i-modes-read-from-regis.patch +mmc-sdhci-sprd-implement-the-get_max_timeout_count-i.patch +mmc-sdhci-sprd-add-get_ro-hook-function.patch +iwlwifi-add-new-cards-for-22000-and-fix-struct-name.patch +iwlwifi-add-new-cards-for-22000-and-change-wrong-str.patch +iwlwifi-add-new-cards-for-9000-and-20000-series.patch +iwlwifi-change-0x02f0-fw-from-qu-to-quz.patch +iwlwifi-pcie-add-support-for-qu-c-step-devices.patch +iwlwifi-pcie-don-t-switch-fw-to-qnj-when-ax201-is-de.patch +iwlwifi-pcie-handle-switching-killer-qu-b0-nics-to-c.patch +drm-i915-do-not-create-a-new-max_bpc-prop-for-mst-co.patch +drm-i915-dp-fix-dsc-enable-code-to-use-cpu_transcode.patch