Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 500fc34f authored by Kalle Valo's avatar Kalle Valo
Browse files

Merge tag 'iwlwifi-next-for-kalle-2017-04-19-2' of...

Merge tag 'iwlwifi-next-for-kalle-2017-04-19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next

Another series of patches intended for v4.12.  These are the changes:

 * Heavy work for the A000 device series;
 * Some cleanup patches;
 * A few fixes;
 * Dynamic SAR support;
 * Geographical SAR support;
 * Support a few new PCI device IDs;
parents f9558f5f 718ceb22
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ iwlwifi-objs += iwl-notif-wait.o
iwlwifi-objs		+= iwl-eeprom-read.o iwl-eeprom-parse.o
iwlwifi-objs		+= iwl-phy-db.o iwl-nvm-parse.o
iwlwifi-objs		+= pcie/drv.o pcie/rx.o pcie/tx.o pcie/trans.o
iwlwifi-objs		+= pcie/ctxt-info.o pcie/trans-gen2.o
iwlwifi-objs		+= pcie/ctxt-info.o pcie/trans-gen2.o pcie/tx-gen2.o
iwlwifi-$(CONFIG_IWLDVM) += iwl-1000.o iwl-2000.o iwl-5000.o iwl-6000.o
iwlwifi-$(CONFIG_IWLMVM) += iwl-7000.o iwl-8000.o iwl-9000.o iwl-a000.o
iwlwifi-objs		+= iwl-trans.o
+1 −1
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@
#define IWL9000_UCODE_API_MAX	30

/* Lowest firmware API version supported */
#define IWL9000_UCODE_API_MIN	17
#define IWL9000_UCODE_API_MIN	30

/* NVM versions */
#define IWL9000_NVM_VERSION		0x0a1d
+19 −7
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
 *
 * GPL LICENSE SUMMARY
 *
 * Copyright(c) 2015-2016 Intel Deutschland GmbH
 * Copyright(c) 2015-2017 Intel Deutschland GmbH
 *
 * 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) 2015-2016 Intel Deutschland GmbH
 * Copyright(c) 2015-2017 Intel Deutschland GmbH
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
@@ -65,15 +65,16 @@
#define IWL_A000_TX_POWER_VERSION	0xffff /* meaningless */

/* Memory offsets and lengths */
#define IWL_A000_DCCM_OFFSET		0x800000
#define IWL_A000_DCCM_LEN		0x18000
#define IWL_A000_DCCM_OFFSET		0x800000 /* LMAC1 */
#define IWL_A000_DCCM_LEN		0x10000 /* LMAC1 */
#define IWL_A000_DCCM2_OFFSET		0x880000
#define IWL_A000_DCCM2_LEN		0x8000
#define IWL_A000_SMEM_OFFSET		0x400000
#define IWL_A000_SMEM_LEN		0x68000
#define IWL_A000_SMEM_LEN		0xD0000

#define IWL_A000_JF_FW_PRE	"iwlwifi-Qu-a0-jf-b0-"
#define IWL_A000_HR_FW_PRE	"iwlwifi-Qu-a0-hr-a0-"
#define IWL_A000_HR_CDB_FW_PRE	"iwlwifi-QuIcp-a0-hrcdb-a0-"

#define IWL_A000_HR_MODULE_FIRMWARE(api) \
	IWL_A000_HR_FW_PRE "-" __stringify(api) ".ucode"
@@ -134,6 +135,17 @@ const struct iwl_cfg iwla000_2ac_cfg_hr = {
		.max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
};

const struct iwl_cfg iwla000_2ac_cfg_hr_cdb = {
		.name = "Intel(R) Dual Band Wireless AC a000",
		.fw_name_pre = IWL_A000_HR_CDB_FW_PRE,
		IWL_DEVICE_A000,
		.ht_params = &iwl_a000_ht_params,
		.nvm_ver = IWL_A000_NVM_VERSION,
		.nvm_calib_ver = IWL_A000_TX_POWER_VERSION,
		.max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
		.cdb = true,
};

const struct iwl_cfg iwla000_2ac_cfg_jf = {
		.name = "Intel(R) Dual Band Wireless AC a000",
		.fw_name_pre = IWL_A000_JF_FW_PRE,
+4 −11
Original line number Diff line number Diff line
@@ -90,16 +90,6 @@ enum iwl_device_family {
	IWL_DEVICE_FAMILY_8000,
};

static inline bool iwl_has_secure_boot(u32 hw_rev,
				       enum iwl_device_family family)
{
	/* return 1 only for family 8000 B0 */
	if ((family == IWL_DEVICE_FAMILY_8000) && (hw_rev & 0xC))
		return true;

	return false;
}

/*
 * LED mode
 *    IWL_LED_DEFAULT:  use device default
@@ -324,6 +314,7 @@ struct iwl_pwr_tx_backoff {
 * @rf_id: need to read rf_id to determine the firmware image
 * @integrated: discrete or integrated
 * @gen2: a000 and on transport operation
 * @cdb: CDB support
 *
 * We enable the driver to be backward compatible wrt. hardware features.
 * API differences in uCode shouldn't be handled here but through TLVs
@@ -370,7 +361,8 @@ struct iwl_cfg {
	    rf_id:1,
	    integrated:1,
	    use_tfh:1,
	    gen2:1;
	    gen2:1,
	    cdb:1;
	u8 valid_tx_ant;
	u8 valid_rx_ant;
	u8 non_shared_ant;
@@ -460,6 +452,7 @@ 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 iwla000_2ac_cfg_hr;
extern const struct iwl_cfg iwla000_2ac_cfg_hr_cdb;
extern const struct iwl_cfg iwla000_2ac_cfg_jf;
#endif /* CONFIG_IWLMVM */

+4 −6
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ void iwl_notification_wait_init(struct iwl_notif_wait_data *notif_wait)
}
IWL_EXPORT_SYMBOL(iwl_notification_wait_init);

void iwl_notification_wait_notify(struct iwl_notif_wait_data *notif_wait,
bool iwl_notification_wait(struct iwl_notif_wait_data *notif_wait,
			   struct iwl_rx_packet *pkt)
{
	bool triggered = false;
@@ -118,13 +118,11 @@ void iwl_notification_wait_notify(struct iwl_notif_wait_data *notif_wait,
			}
		}
		spin_unlock(&notif_wait->notif_wait_lock);

	}

	if (triggered)
		wake_up_all(&notif_wait->notif_waitq);
	return triggered;
}
IWL_EXPORT_SYMBOL(iwl_notification_wait_notify);
IWL_EXPORT_SYMBOL(iwl_notification_wait);

void iwl_abort_notification_waits(struct iwl_notif_wait_data *notif_wait)
{
Loading