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

Add code to pick hang data offset based on deviceID.

Change-Id: I865fc90ea558d2626672b51c5cecadfdf93358b3
Signed-off-by: Mohammed Siddiq <msiddiq@codeaurora.org>
This commit is contained in:
Mohammed Siddiq 2020-04-24 22:37:37 +05:30
commit 42815d2c8f

View file

@ -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 },
@ -3883,16 +3884,30 @@ 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;
void *hang_data_va = NULL;
u64 offset = 0;
int i = 0;
if (!fw_mem || !plat_priv->fw_mem_seg_len)
return;
memset(&hang_event, 0, sizeof(hang_event));
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);