All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] rsi: add driver and firmware version info
@ 2017-08-30 12:02 Amitkumar Karwar
  2017-09-19 14:39 ` Kalle Valo
  0 siblings, 1 reply; 3+ messages in thread
From: Amitkumar Karwar @ 2017-08-30 12:02 UTC (permalink / raw)
  To: Kalle Valo
  Cc: linux-wireless, Amitkumar Karwar, Prameela Rani Garnepudi,
	Pavani Muthyala

From: Pavani Muthyala <pavani.muthyala@redpinesignals.com>

We will dump information about driver and firmware versions,
firmware file name and operating mode during initialization.

Signed-off-by: Pavani Muthyala <pavani.muthyala@redpinesignals.com>
Signed-off-by: Amitkumar Karwar <amit.karwar@redpinesignals.com>
---
 drivers/net/wireless/rsi/rsi_91x_debugfs.c | 20 +++++++-------------
 drivers/net/wireless/rsi/rsi_91x_hal.c     | 13 +++++++++++++
 drivers/net/wireless/rsi/rsi_91x_main.c    | 29 +++++++++++++++++++++++++++++
 drivers/net/wireless/rsi/rsi_hal.h         |  3 +++
 drivers/net/wireless/rsi/rsi_main.h        | 17 +++++++++++++----
 5 files changed, 65 insertions(+), 17 deletions(-)

diff --git a/drivers/net/wireless/rsi/rsi_91x_debugfs.c b/drivers/net/wireless/rsi/rsi_91x_debugfs.c
index e98eb55..a1b5e28 100644
--- a/drivers/net/wireless/rsi/rsi_91x_debugfs.c
+++ b/drivers/net/wireless/rsi/rsi_91x_debugfs.c
@@ -83,19 +83,13 @@ static int rsi_version_read(struct seq_file *seq, void *data)
 {
 	struct rsi_common *common = seq->private;
 
-	common->driver_ver.major = 0;
-	common->driver_ver.minor = 1;
-	common->driver_ver.release_num = 0;
-	common->driver_ver.patch_num = 0;
-	seq_printf(seq, "Driver : %x.%d.%d.%d\nLMAC   : %d.%d.%d.%d\n",
-		   common->driver_ver.major,
-		   common->driver_ver.minor,
-		   common->driver_ver.release_num,
-		   common->driver_ver.patch_num,
-		   common->fw_ver.major,
-		   common->fw_ver.minor,
-		   common->fw_ver.release_num,
-		   common->fw_ver.patch_num);
+	seq_printf(seq, "Driver : %s\nLMAC   : %d.%d.%d.%d\n",
+		   common->driver_ver,
+		   common->lmac_ver.major,
+		   common->lmac_ver.minor,
+		   common->lmac_ver.release_num,
+		   common->lmac_ver.patch_num);
+
 	return 0;
 }
 
diff --git a/drivers/net/wireless/rsi/rsi_91x_hal.c b/drivers/net/wireless/rsi/rsi_91x_hal.c
index 7e8e5d4..71b02ad 100644
--- a/drivers/net/wireless/rsi/rsi_91x_hal.c
+++ b/drivers/net/wireless/rsi/rsi_91x_hal.c
@@ -769,6 +769,7 @@ static int auto_fw_upgrade(struct rsi_hw *adapter, u8 *flash_content,
 
 static int rsi_load_firmware(struct rsi_hw *adapter)
 {
+	struct rsi_common *common = adapter->priv;
 	struct rsi_host_intf_ops *hif_ops = adapter->host_intf_ops;
 	const struct firmware *fw_entry = NULL;
 	u32 regout_val = 0, content_size;
@@ -844,6 +845,18 @@ static int rsi_load_firmware(struct rsi_hw *adapter)
 	content_size = fw_entry->size;
 	rsi_dbg(INFO_ZONE, "FW Length = %d bytes\n", content_size);
 
+	/* Get the firmware version */
+	common->lmac_ver.ver.info.fw_ver[0] =
+		flash_content[LMAC_VER_OFFSET] & 0xFF;
+	common->lmac_ver.ver.info.fw_ver[1] =
+		flash_content[LMAC_VER_OFFSET + 1] & 0xFF;
+	common->lmac_ver.major = flash_content[LMAC_VER_OFFSET + 2] & 0xFF;
+	common->lmac_ver.release_num =
+		flash_content[LMAC_VER_OFFSET + 3] & 0xFF;
+	common->lmac_ver.minor = flash_content[LMAC_VER_OFFSET + 4] & 0xFF;
+	common->lmac_ver.patch_num = 0;
+	rsi_print_version(common);
+
 	status = bl_write_header(adapter, flash_content, content_size);
 	if (status) {
 		rsi_dbg(ERR_ZONE,
diff --git a/drivers/net/wireless/rsi/rsi_91x_main.c b/drivers/net/wireless/rsi/rsi_91x_main.c
index b57bfdc..ed988b3 100644
--- a/drivers/net/wireless/rsi/rsi_91x_main.c
+++ b/drivers/net/wireless/rsi/rsi_91x_main.c
@@ -20,6 +20,7 @@
 #include <linux/firmware.h>
 #include "rsi_mgmt.h"
 #include "rsi_common.h"
+#include "rsi_hal.h"
 
 u32 rsi_zone_enabled = /* INFO_ZONE |
 			INIT_ZONE |
@@ -56,6 +57,34 @@ void rsi_dbg(u32 zone, const char *fmt, ...)
 }
 EXPORT_SYMBOL_GPL(rsi_dbg);
 
+static char *opmode_str(int oper_mode)
+{
+	switch (oper_mode) {
+	case RSI_DEV_OPMODE_WIFI_ALONE:
+		return "Wi-Fi alone";
+	}
+
+	return "Unknown";
+}
+
+void rsi_print_version(struct rsi_common *common)
+{
+	memcpy(common->driver_ver, DRV_VER, ARRAY_SIZE(DRV_VER));
+	common->driver_ver[ARRAY_SIZE(DRV_VER)] = '\0';
+
+	rsi_dbg(ERR_ZONE, "================================================\n");
+	rsi_dbg(ERR_ZONE, "================ RSI Version Info ==============\n");
+	rsi_dbg(ERR_ZONE, "================================================\n");
+	rsi_dbg(ERR_ZONE, "FW Version\t: %d.%d.%d\n",
+		common->lmac_ver.major, common->lmac_ver.minor,
+		common->lmac_ver.release_num);
+	rsi_dbg(ERR_ZONE, "Driver Version\t: %s", common->driver_ver);
+	rsi_dbg(ERR_ZONE, "Operating mode\t: %d [%s]",
+		common->oper_mode, opmode_str(common->oper_mode));
+	rsi_dbg(ERR_ZONE, "Firmware file\t: %s", common->priv->fw_file_name);
+	rsi_dbg(ERR_ZONE, "================================================\n");
+}
+
 /**
  * rsi_prepare_skb() - This function prepares the skb.
  * @common: Pointer to the driver private structure.
diff --git a/drivers/net/wireless/rsi/rsi_hal.h b/drivers/net/wireless/rsi/rsi_hal.h
index ad0d653..a09d36b 100644
--- a/drivers/net/wireless/rsi/rsi_hal.h
+++ b/drivers/net/wireless/rsi/rsi_hal.h
@@ -101,6 +101,9 @@
 
 #define BBP_INFO_40MHZ 0x6
 
+#define FW_FLASH_OFFSET			0x820
+#define LMAC_VER_OFFSET			(FW_FLASH_OFFSET + 0x200)
+
 struct bl_header {
 	__le32 flags;
 	__le32 image_no;
diff --git a/drivers/net/wireless/rsi/rsi_main.h b/drivers/net/wireless/rsi/rsi_main.h
index 34089ab..53343a3f 100644
--- a/drivers/net/wireless/rsi/rsi_main.h
+++ b/drivers/net/wireless/rsi/rsi_main.h
@@ -32,6 +32,8 @@ struct rsi_hw;
 
 #include "rsi_ps.h"
 
+#define DRV_VER				"RS911X.NB0.NL.GNU.LNX.1.0"
+
 #define ERR_ZONE                        BIT(0)  /* For Error Msgs             */
 #define INFO_ZONE                       BIT(1)  /* For General Status Msgs    */
 #define INIT_ZONE                       BIT(2)  /* For Driver Init Seq Msgs   */
@@ -113,8 +115,13 @@ extern __printf(2, 3) void rsi_dbg(u32 zone, const char *fmt, ...);
 struct version_info {
 	u16 major;
 	u16 minor;
-	u16 release_num;
-	u16 patch_num;
+	u8 release_num;
+	u8 patch_num;
+	union {
+		struct {
+			u8 fw_ver[8];
+		} info;
+	} ver;
 } __packed;
 
 struct skb_info {
@@ -199,8 +206,8 @@ struct rsi_common {
 	struct vif_priv vif_info[RSI_MAX_VIFS];
 
 	bool mgmt_q_block;
-	struct version_info driver_ver;
-	struct version_info fw_ver;
+	char driver_ver[32];
+	struct version_info lmac_ver;
 
 	struct rsi_thread tx_thread;
 	struct sk_buff_head tx_queue[NUM_EDCA_QUEUES + 2];
@@ -334,6 +341,8 @@ struct rsi_hw {
 	int (*determine_event_timeout)(struct rsi_hw *adapter);
 };
 
+void rsi_print_version(struct rsi_common *common);
+
 struct rsi_host_intf_ops {
 	int (*read_pkt)(struct rsi_hw *adapter, u8 *pkt, u32 len);
 	int (*write_pkt)(struct rsi_hw *adapter, u8 *pkt, u32 len);
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] rsi: add driver and firmware version info
  2017-08-30 12:02 [PATCH] rsi: add driver and firmware version info Amitkumar Karwar
@ 2017-09-19 14:39 ` Kalle Valo
  2017-09-21 14:33   ` Amitkumar Karwar
  0 siblings, 1 reply; 3+ messages in thread
From: Kalle Valo @ 2017-09-19 14:39 UTC (permalink / raw)
  To: Amitkumar Karwar
  Cc: linux-wireless, Amitkumar Karwar, Prameela Rani Garnepudi,
	Pavani Muthyala

Amitkumar Karwar <amitkarwar@gmail.com> writes:

> From: Pavani Muthyala <pavani.muthyala@redpinesignals.com>
>
> We will dump information about driver and firmware versions,
> firmware file name and operating mode during initialization.
>
> Signed-off-by: Pavani Muthyala <pavani.muthyala@redpinesignals.com>
> Signed-off-by: Amitkumar Karwar <amit.karwar@redpinesignals.com>

[...]

> +void rsi_print_version(struct rsi_common *common)
> +{
> +	memcpy(common->driver_ver, DRV_VER, ARRAY_SIZE(DRV_VER));
> +	common->driver_ver[ARRAY_SIZE(DRV_VER)] = '\0';
> +
> +	rsi_dbg(ERR_ZONE, "================================================\n");
> +	rsi_dbg(ERR_ZONE, "================ RSI Version Info ==============\n");
> +	rsi_dbg(ERR_ZONE, "================================================\n");
> +	rsi_dbg(ERR_ZONE, "FW Version\t: %d.%d.%d\n",
> +		common->lmac_ver.major, common->lmac_ver.minor,
> +		common->lmac_ver.release_num);
> +	rsi_dbg(ERR_ZONE, "Driver Version\t: %s", common->driver_ver);
> +	rsi_dbg(ERR_ZONE, "Operating mode\t: %d [%s]",
> +		common->oper_mode, opmode_str(common->oper_mode));
> +	rsi_dbg(ERR_ZONE, "Firmware file\t: %s", common->priv->fw_file_name);
> +	rsi_dbg(ERR_ZONE, "================================================\n");
> +}
> +

[...]

> +#define DRV_VER				"RS911X.NB0.NL.GNU.LNX.1.0"

The concept of a driver version does not really work with upstream
drivers. The history has shown multiple times that the driver version
won't be updated for years and thus it won't have any meaning. So better
remove driver_ver from the driver entirely.

-- 
Kalle Valo

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] rsi: add driver and firmware version info
  2017-09-19 14:39 ` Kalle Valo
@ 2017-09-21 14:33   ` Amitkumar Karwar
  0 siblings, 0 replies; 3+ messages in thread
From: Amitkumar Karwar @ 2017-09-21 14:33 UTC (permalink / raw)
  To: Kalle Valo
  Cc: linux-wireless, Amitkumar Karwar, Prameela Rani Garnepudi,
	Pavani Muthyala

On Tue, Sep 19, 2017 at 8:09 PM, Kalle Valo <kvalo@codeaurora.org> wrote:
> Amitkumar Karwar <amitkarwar@gmail.com> writes:
>
>> From: Pavani Muthyala <pavani.muthyala@redpinesignals.com>
>>
>> We will dump information about driver and firmware versions,
>> firmware file name and operating mode during initialization.
>>
>> Signed-off-by: Pavani Muthyala <pavani.muthyala@redpinesignals.com>
>> Signed-off-by: Amitkumar Karwar <amit.karwar@redpinesignals.com>
>
> [...]
>
>> +void rsi_print_version(struct rsi_common *common)
>> +{
>> +     memcpy(common->driver_ver, DRV_VER, ARRAY_SIZE(DRV_VER));
>> +     common->driver_ver[ARRAY_SIZE(DRV_VER)] = '\0';
>> +
>> +     rsi_dbg(ERR_ZONE, "================================================\n");
>> +     rsi_dbg(ERR_ZONE, "================ RSI Version Info ==============\n");
>> +     rsi_dbg(ERR_ZONE, "================================================\n");
>> +     rsi_dbg(ERR_ZONE, "FW Version\t: %d.%d.%d\n",
>> +             common->lmac_ver.major, common->lmac_ver.minor,
>> +             common->lmac_ver.release_num);
>> +     rsi_dbg(ERR_ZONE, "Driver Version\t: %s", common->driver_ver);
>> +     rsi_dbg(ERR_ZONE, "Operating mode\t: %d [%s]",
>> +             common->oper_mode, opmode_str(common->oper_mode));
>> +     rsi_dbg(ERR_ZONE, "Firmware file\t: %s", common->priv->fw_file_name);
>> +     rsi_dbg(ERR_ZONE, "================================================\n");
>> +}
>> +
>
> [...]
>
>> +#define DRV_VER                              "RS911X.NB0.NL.GNU.LNX.1.0"
>
> The concept of a driver version does not really work with upstream
> drivers. The history has shown multiple times that the driver version
> won't be updated for years and thus it won't have any meaning. So better
> remove driver_ver from the driver entirely.

I agree. Driver version has been removed in v2 patch.

Thanks,
Amitkumar Karwar

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-09-21 14:33 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-30 12:02 [PATCH] rsi: add driver and firmware version info Amitkumar Karwar
2017-09-19 14:39 ` Kalle Valo
2017-09-21 14:33   ` Amitkumar Karwar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.