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

Commit 4956c88c authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cnss2: Add code to pick hang data offset based on deviceID"

parents dc0641f6 069d2c5f
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -78,7 +78,8 @@ static DEFINE_SPINLOCK(time_sync_lock);
#define CNSS_DEBUG_DUMP_SRAM_SIZE		10

#define HANG_DATA_LENGTH		384
#define HANG_DATA_OFFSET		((3 * 1024 * 1024) - HANG_DATA_LENGTH)
#define HST_HANG_DATA_OFFSET		((3 * 1024 * 1024) - HANG_DATA_LENGTH)
#define HSP_HANG_DATA_OFFSET		((2 * 1024 * 1024) - HANG_DATA_LENGTH)

static struct cnss_pci_reg ce_src[] = {
	{ "SRC_RING_BASE_LSB", QCA6390_CE_SRC_RING_BASE_LSB_OFFSET },
@@ -3813,15 +3814,29 @@ static void cnss_pci_send_hang_event(struct cnss_pci_data *pci_priv)
	struct cnss_fw_mem *fw_mem = plat_priv->fw_mem;
	struct cnss_hang_event hang_event = {0};
	void *hang_data_va = NULL;
	u64 offset = 0;
	int i = 0;

	if (!fw_mem || !plat_priv->fw_mem_seg_len)
		return;

	switch (pci_priv->device_id) {
	case QCA6390_DEVICE_ID:
		offset = HST_HANG_DATA_OFFSET;
		break;
	case QCA6490_DEVICE_ID:
		offset = HSP_HANG_DATA_OFFSET;
		break;
	default:
		cnss_pr_err("Skip Hang Event Data as unsupported Device ID received: %d\n",
			    pci_priv->device_id);
		return;
	}

	for (i = 0; i < plat_priv->fw_mem_seg_len; i++) {
		if (fw_mem[i].type == QMI_WLFW_MEM_TYPE_DDR_V01 &&
		    fw_mem[i].va) {
			hang_data_va = fw_mem[i].va + HANG_DATA_OFFSET;
			hang_data_va = fw_mem[i].va + offset;
			hang_event.hang_event_data = kmemdup(hang_data_va,
							     HANG_DATA_LENGTH,
							     GFP_ATOMIC);