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

Commit aa2b1770 authored by Johannes Berg's avatar Johannes Berg
Browse files

iwlwifi: fix calibration parser



The firmware TLV for calibration data isn't
really a u64, but two u32 values. Define a
struct for that and change the parser.

Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 4a4ee101
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -268,7 +268,7 @@ struct fw_sec_parsing {
 */
struct iwl_tlv_calib_data {
	__le32 ucode_type;
	__le64 calib;
	struct iwl_tlv_calib_ctrl calib;
} __packed;

struct iwl_firmware_pieces {
@@ -358,7 +358,11 @@ static int iwl_set_default_calib(struct iwl_drv *drv, const u8 *data)
			ucode_type);
		return -EINVAL;
	}
	drv->fw.default_calib[ucode_type] = le64_to_cpu(def_calib->calib);
	drv->fw.default_calib[ucode_type].flow_trigger =
		def_calib->calib.flow_trigger;
	drv->fw.default_calib[ucode_type].event_trigger =
		def_calib->calib.event_trigger;

	return 0;
}

+14 −1
Original line number Diff line number Diff line
@@ -139,6 +139,19 @@ struct fw_img {
#define IWL_UCODE_API(ver)	(((ver) & 0x0000FF00) >> 8)
#define IWL_UCODE_SERIAL(ver)	((ver) & 0x000000FF)

/*
 * Calibration control struct.
 * Sent as part of the phy configuration command.
 * @flow_trigger: bitmap for which calibrations to perform according to
 *		flow triggers.
 * @event_trigger: bitmap for which calibrations to perform according to
 *		event triggers.
 */
struct iwl_tlv_calib_ctrl {
	__le32 flow_trigger;
	__le32 event_trigger;
} __packed;

/**
 * struct iwl_fw - variables associated with the firmware
 *
@@ -168,7 +181,7 @@ struct iwl_fw {
	u32 init_evtlog_ptr, init_evtlog_size, init_errlog_ptr;
	u32 inst_evtlog_ptr, inst_evtlog_size, inst_errlog_ptr;

	u64 default_calib[IWL_UCODE_TYPE_MAX];
	struct iwl_tlv_calib_ctrl default_calib[IWL_UCODE_TYPE_MAX];
	u32 phy_config;

	bool mvm_fw;