rsi: add version information
We will dump information about firmware version, 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> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
7dfb0ebd02
commit
192524a499
|
@ -83,19 +83,12 @@ static int rsi_version_read(struct seq_file *seq, void *data)
|
||||||
{
|
{
|
||||||
struct rsi_common *common = seq->private;
|
struct rsi_common *common = seq->private;
|
||||||
|
|
||||||
common->driver_ver.major = 0;
|
seq_printf(seq, "LMAC : %d.%d.%d.%d\n",
|
||||||
common->driver_ver.minor = 1;
|
common->lmac_ver.major,
|
||||||
common->driver_ver.release_num = 0;
|
common->lmac_ver.minor,
|
||||||
common->driver_ver.patch_num = 0;
|
common->lmac_ver.release_num,
|
||||||
seq_printf(seq, "Driver : %x.%d.%d.%d\nLMAC : %d.%d.%d.%d\n",
|
common->lmac_ver.patch_num);
|
||||||
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);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
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;
|
struct rsi_host_intf_ops *hif_ops = adapter->host_intf_ops;
|
||||||
const struct firmware *fw_entry = NULL;
|
const struct firmware *fw_entry = NULL;
|
||||||
u32 regout_val = 0, content_size;
|
u32 regout_val = 0, content_size;
|
||||||
|
@ -844,6 +845,18 @@ static int rsi_load_firmware(struct rsi_hw *adapter)
|
||||||
content_size = fw_entry->size;
|
content_size = fw_entry->size;
|
||||||
rsi_dbg(INFO_ZONE, "FW Length = %d bytes\n", content_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);
|
status = bl_write_header(adapter, flash_content, content_size);
|
||||||
if (status) {
|
if (status) {
|
||||||
rsi_dbg(ERR_ZONE,
|
rsi_dbg(ERR_ZONE,
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <linux/firmware.h>
|
#include <linux/firmware.h>
|
||||||
#include "rsi_mgmt.h"
|
#include "rsi_mgmt.h"
|
||||||
#include "rsi_common.h"
|
#include "rsi_common.h"
|
||||||
|
#include "rsi_hal.h"
|
||||||
|
|
||||||
u32 rsi_zone_enabled = /* INFO_ZONE |
|
u32 rsi_zone_enabled = /* INFO_ZONE |
|
||||||
INIT_ZONE |
|
INIT_ZONE |
|
||||||
|
@ -56,6 +57,30 @@ void rsi_dbg(u32 zone, const char *fmt, ...)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(rsi_dbg);
|
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)
|
||||||
|
{
|
||||||
|
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, "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.
|
* rsi_prepare_skb() - This function prepares the skb.
|
||||||
* @common: Pointer to the driver private structure.
|
* @common: Pointer to the driver private structure.
|
||||||
|
|
|
@ -101,6 +101,9 @@
|
||||||
|
|
||||||
#define BBP_INFO_40MHZ 0x6
|
#define BBP_INFO_40MHZ 0x6
|
||||||
|
|
||||||
|
#define FW_FLASH_OFFSET 0x820
|
||||||
|
#define LMAC_VER_OFFSET (FW_FLASH_OFFSET + 0x200)
|
||||||
|
|
||||||
struct bl_header {
|
struct bl_header {
|
||||||
__le32 flags;
|
__le32 flags;
|
||||||
__le32 image_no;
|
__le32 image_no;
|
||||||
|
|
|
@ -113,8 +113,13 @@ extern __printf(2, 3) void rsi_dbg(u32 zone, const char *fmt, ...);
|
||||||
struct version_info {
|
struct version_info {
|
||||||
u16 major;
|
u16 major;
|
||||||
u16 minor;
|
u16 minor;
|
||||||
u16 release_num;
|
u8 release_num;
|
||||||
u16 patch_num;
|
u8 patch_num;
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
u8 fw_ver[8];
|
||||||
|
} info;
|
||||||
|
} ver;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
struct skb_info {
|
struct skb_info {
|
||||||
|
@ -199,8 +204,7 @@ struct rsi_common {
|
||||||
struct vif_priv vif_info[RSI_MAX_VIFS];
|
struct vif_priv vif_info[RSI_MAX_VIFS];
|
||||||
|
|
||||||
bool mgmt_q_block;
|
bool mgmt_q_block;
|
||||||
struct version_info driver_ver;
|
struct version_info lmac_ver;
|
||||||
struct version_info fw_ver;
|
|
||||||
|
|
||||||
struct rsi_thread tx_thread;
|
struct rsi_thread tx_thread;
|
||||||
struct sk_buff_head tx_queue[NUM_EDCA_QUEUES + 2];
|
struct sk_buff_head tx_queue[NUM_EDCA_QUEUES + 2];
|
||||||
|
@ -334,6 +338,8 @@ struct rsi_hw {
|
||||||
int (*determine_event_timeout)(struct rsi_hw *adapter);
|
int (*determine_event_timeout)(struct rsi_hw *adapter);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void rsi_print_version(struct rsi_common *common);
|
||||||
|
|
||||||
struct rsi_host_intf_ops {
|
struct rsi_host_intf_ops {
|
||||||
int (*read_pkt)(struct rsi_hw *adapter, u8 *pkt, u32 len);
|
int (*read_pkt)(struct rsi_hw *adapter, u8 *pkt, u32 len);
|
||||||
int (*write_pkt)(struct rsi_hw *adapter, u8 *pkt, u32 len);
|
int (*write_pkt)(struct rsi_hw *adapter, u8 *pkt, u32 len);
|
||||||
|
|
Loading…
Reference in New Issue