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

Commit 7d77371a authored by Yuanyuan Liu's avatar Yuanyuan Liu
Browse files

cnss2: Add segment version info in cnss_dump_data structure



Add segment version info in cnss_dump_data structure. Remove
unused vaddr from this structure.

CRs-Fixed: 2049917
Change-Id: I3a28dd4891c2f2c53f483339adadcd0249a71371
Signed-off-by: default avatarYuanyuan Liu <yuanliu@codeaurora.org>
parent 822fa236
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#define CNSS_DUMP_MAGIC_VER_V2		0x42445953
#define CNSS_DUMP_NAME			"CNSS_WLAN"
#define CNSS_DUMP_DESC_SIZE		0x1000
#define CNSS_DUMP_SEG_VER		0x1
#define WLAN_RECOVERY_DELAY		1000
#define FILE_SYSTEM_READY		1
#define FW_READY_TIMEOUT		20000
@@ -1223,7 +1224,7 @@ static int cnss_qca6290_ramdump(struct cnss_plat_data *plat_priv)
{
	struct cnss_ramdump_info_v2 *info_v2 = &plat_priv->ramdump_info_v2;
	struct cnss_dump_data *dump_data = &info_v2->dump_data;
	struct cnss_dump_seg *dump_seg = dump_data->vaddr;
	struct cnss_dump_seg *dump_seg = info_v2->dump_data_vaddr;
	struct ramdump_segment *ramdump_segs, *s;
	int i, ret = 0;

@@ -1834,13 +1835,14 @@ static int cnss_qca6290_register_ramdump(struct cnss_plat_data *plat_priv)

	cnss_pr_dbg("Ramdump size 0x%lx\n", info_v2->ramdump_size);

	dump_data->vaddr = kzalloc(CNSS_DUMP_DESC_SIZE, GFP_KERNEL);
	if (!dump_data->vaddr)
	info_v2->dump_data_vaddr = kzalloc(CNSS_DUMP_DESC_SIZE, GFP_KERNEL);
	if (!info_v2->dump_data_vaddr)
		return -ENOMEM;

	dump_data->paddr = virt_to_phys(dump_data->vaddr);
	dump_data->paddr = virt_to_phys(info_v2->dump_data_vaddr);
	dump_data->version = CNSS_DUMP_FORMAT_VER_V2;
	dump_data->magic = CNSS_DUMP_MAGIC_VER_V2;
	dump_data->seg_version = CNSS_DUMP_SEG_VER;
	strlcpy(dump_data->name, CNSS_DUMP_NAME,
		sizeof(dump_data->name));
	dump_entry.id = MSM_DUMP_DATA_CNSS_WLAN;
@@ -1864,24 +1866,22 @@ static int cnss_qca6290_register_ramdump(struct cnss_plat_data *plat_priv)
	return 0;

free_ramdump:
	kfree(dump_data->vaddr);
	dump_data->vaddr = NULL;
	kfree(info_v2->dump_data_vaddr);
	info_v2->dump_data_vaddr = NULL;
	return ret;
}

static void cnss_qca6290_unregister_ramdump(struct cnss_plat_data *plat_priv)
{
	struct cnss_ramdump_info_v2 *info_v2;
	struct cnss_dump_data *dump_data;

	info_v2 = &plat_priv->ramdump_info_v2;
	dump_data = &info_v2->dump_data;

	if (info_v2->ramdump_dev)
		destroy_ramdump_device(info_v2->ramdump_dev);

	kfree(dump_data->vaddr);
	dump_data->vaddr = NULL;
	kfree(info_v2->dump_data_vaddr);
	info_v2->dump_data_vaddr = NULL;
	info_v2->dump_data_valid = false;
}

+2 −1
Original line number Diff line number Diff line
@@ -72,13 +72,14 @@ struct cnss_dump_data {
	uint32_t magic;
	char name[32];
	phys_addr_t paddr;
	void *vaddr;
	int nentries;
	uint32_t seg_version;
};

struct cnss_ramdump_info_v2 {
	struct ramdump_device *ramdump_dev;
	unsigned long ramdump_size;
	void *dump_data_vaddr;
	bool dump_data_valid;
	struct cnss_dump_data dump_data;
};
+1 −1
Original line number Diff line number Diff line
@@ -1088,7 +1088,7 @@ void cnss_pci_collect_dump_info(struct cnss_pci_data *pci_priv)

	dump_data->nentries = 0;

	start_addr = dump_data->vaddr;
	start_addr = plat_priv->ramdump_info_v2.dump_data_vaddr;
	end_addr = cnss_pci_collect_dump_seg(pci_priv,
					     MHI_RDDM_FW_SEGMENT, start_addr);