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

Commit c02b3acd authored by Chatre, Reinette's avatar Chatre, Reinette Committed by John W. Linville
Browse files

iwlwifi: store ucode version number



We store the ucode version number as part of
iwl_priv/iwl3945_priv. This enables us to determine
if particular ucode has support for features in order
to have driver support more than one ucode API.

Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent f3f911d1
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -69,6 +69,12 @@
#ifndef __iwl_3945_commands_h__
#define __iwl_3945_commands_h__

/* uCode version contains 4 values: Major/Minor/API/Serial */
#define IWL_UCODE_MAJOR(ver)	(((ver) & 0xFF000000) >> 24)
#define IWL_UCODE_MINOR(ver)	(((ver) & 0x00FF0000) >> 16)
#define IWL_UCODE_API(ver)	(((ver) & 0x0000FF00) >> 8)
#define IWL_UCODE_SERIAL(ver)	((ver) & 0x000000FF)

enum {
	REPLY_ALIVE = 0x1,
	REPLY_ERROR = 0x2,
+3 −1
Original line number Diff line number Diff line
@@ -505,7 +505,7 @@ struct fw_desc {

/* uCode file layout */
struct iwl3945_ucode {
	__le32 ver;		/* major/minor/subminor */
	__le32 ver;		/* major/minor/API/serial */
	__le32 inst_size;	/* bytes of runtime instructions */
	__le32 data_size;	/* bytes of runtime data */
	__le32 init_size;	/* bytes of initialization instructions */
@@ -762,6 +762,8 @@ struct iwl3945_priv {
	void __iomem *hw_base;

	/* uCode images, save to reload in case of failure */
	u32 ucode_ver;			/* ucode version, copy of
					   iwl3945_ucode.ver */
	struct fw_desc ucode_code;	/* runtime inst */
	struct fw_desc ucode_data;	/* runtime data original */
	struct fw_desc ucode_data_backup;	/* runtime data save/restore */
+9 −3
Original line number Diff line number Diff line
@@ -1575,7 +1575,7 @@ static int iwl_read_ucode(struct iwl_priv *priv)
	const char *name = priv->cfg->fw_name;
	u8 *src;
	size_t len;
	u32 ver, inst_size, data_size, init_size, init_data_size, boot_size;
	u32 inst_size, data_size, init_size, init_data_size, boot_size;

	/* Ask kernel firmware_class module to get the boot firmware off disk.
	 * request_firmware() is synchronous, file is in memory on return. */
@@ -1599,14 +1599,20 @@ static int iwl_read_ucode(struct iwl_priv *priv)
	/* Data from ucode file:  header followed by uCode images */
	ucode = (void *)ucode_raw->data;

	ver = le32_to_cpu(ucode->ver);
	priv->ucode_ver = le32_to_cpu(ucode->ver);
	inst_size = le32_to_cpu(ucode->inst_size);
	data_size = le32_to_cpu(ucode->data_size);
	init_size = le32_to_cpu(ucode->init_size);
	init_data_size = le32_to_cpu(ucode->init_data_size);
	boot_size = le32_to_cpu(ucode->boot_size);

	IWL_DEBUG_INFO("f/w package hdr ucode version = 0x%x\n", ver);
	IWL_DEBUG_INFO("f/w package hdr ucode version raw = 0x%x\n",
		       priv->ucode_ver);
	IWL_DEBUG_INFO("f/w package hdr ucode version = %u.%u.%u.%u\n",
		       IWL_UCODE_MAJOR(priv->ucode_ver),
		       IWL_UCODE_MINOR(priv->ucode_ver),
		       IWL_UCODE_API(priv->ucode_ver),
		       IWL_UCODE_SERIAL(priv->ucode_ver));
	IWL_DEBUG_INFO("f/w package hdr runtime inst size = %u\n",
		       inst_size);
	IWL_DEBUG_INFO("f/w package hdr runtime data size = %u\n",
+6 −0
Original line number Diff line number Diff line
@@ -69,6 +69,12 @@
#ifndef __iwl_commands_h__
#define __iwl_commands_h__

/* uCode version contains 4 values: Major/Minor/API/Serial */
#define IWL_UCODE_MAJOR(ver)	(((ver) & 0xFF000000) >> 24)
#define IWL_UCODE_MINOR(ver)	(((ver) & 0x00FF0000) >> 16)
#define IWL_UCODE_API(ver)	(((ver) & 0x0000FF00) >> 8)
#define IWL_UCODE_SERIAL(ver)	((ver) & 0x000000FF)

enum {
	REPLY_ALIVE = 0x1,
	REPLY_ERROR = 0x2,
+3 −1
Original line number Diff line number Diff line
@@ -462,7 +462,7 @@ struct fw_desc {

/* uCode file layout */
struct iwl_ucode {
	__le32 ver;		/* major/minor/subminor */
	__le32 ver;		/* major/minor/API/serial */
	__le32 inst_size;	/* bytes of runtime instructions */
	__le32 data_size;	/* bytes of runtime data */
	__le32 init_size;	/* bytes of initialization instructions */
@@ -843,6 +843,8 @@ struct iwl_priv {
	u8   rev_id;

	/* uCode images, save to reload in case of failure */
	u32 ucode_ver;			/* version of ucode, copy of
					   iwl_ucode.ver */
	struct fw_desc ucode_code;	/* runtime inst */
	struct fw_desc ucode_data;	/* runtime data original */
	struct fw_desc ucode_data_backup;	/* runtime data save/restore */
Loading