qcacmn: Replace kernel calls with pfrm wrapper

HIF layer have kernel calls for interrupt registration
which need to be replaced in case of whunt framework,
as interrupt generation will be simulated by framework
itself, hence adding abstraction to call either kernel call
or whunt calls based on platform bus type.

Change-Id: Ife113d6338defa8e693e761992ce3a1bb9524306
CRs-Fixed: 2582523
diff --git a/hif/src/pcie/if_pci.c b/hif/src/pcie/if_pci.c
index 36471e4..d095cfa 100644
--- a/hif/src/pcie/if_pci.c
+++ b/hif/src/pcie/if_pci.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2019 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -618,7 +618,7 @@
 	struct hif_pci_softc *sc = HIF_GET_PCI_SOFTC(scn);
 
 	/* Check device ID from PCIe configuration space for link status */
-	pci_read_config_word(sc->pdev, PCI_DEVICE_ID, &device_id);
+	pfrm_read_config_word(sc->pdev, PCI_DEVICE_ID, &device_id);
 	if (device_id != sc->devid) {
 		HIF_ERROR("%s: device ID does match (read 0x%x, expect 0x%x)",
 			  __func__, device_id, sc->devid);
@@ -1302,8 +1302,8 @@
 	}
 
 	/* Disable ASPM when pkt log is enabled */
-	pci_read_config_dword(sc->pdev, 0x80, &sc->lcr_val);
-	pci_write_config_dword(sc->pdev, 0x80, (sc->lcr_val & 0xffffff00));
+	pfrm_read_config_dword(sc->pdev, 0x80, &sc->lcr_val);
+	pfrm_write_config_dword(sc->pdev, 0x80, (sc->lcr_val & 0xffffff00));
 }
 
 /**
@@ -1321,7 +1321,7 @@
 	}
 
 	/* Re-enable ASPM after firmware/OTP download is complete */
-	pci_write_config_dword(sc->pdev, 0x80, sc->lcr_val);
+	pfrm_write_config_dword(sc->pdev, 0x80, sc->lcr_val);
 }
 
 /**
@@ -2370,7 +2370,7 @@
 		hif_debug("%s: (ce_id %d, msi_data %d, irq %d)", __func__,
 			  ce_id, msi_data, irq);
 
-		free_irq(irq, &ce_sc->tasklets[ce_id]);
+		pfrm_free_irq(scn->qdf_dev->dev, irq, &ce_sc->tasklets[ce_id]);
 	}
 
 	return ret;
@@ -2388,7 +2388,8 @@
 			hif_ext_group->irq_requested = false;
 			for (j = 0; j < hif_ext_group->numirq; j++) {
 				irq = hif_ext_group->os_irq[j];
-				free_irq(irq, hif_ext_group);
+				pfrm_free_irq(scn->qdf_dev->dev,
+					      irq, hif_ext_group);
 			}
 			hif_ext_group->numirq = 0;
 		}
@@ -2422,7 +2423,7 @@
 		/* ce irqs freed in hif_ce_srng_msi_free_irq */
 
 		if (scn->wake_irq)
-			free_irq(scn->wake_irq, scn);
+			pfrm_free_irq(scn->qdf_dev->dev, scn->wake_irq, scn);
 		scn->wake_irq = 0;
 	} else if (sc->num_msi_intrs > 0) {
 		/* MSI interrupt(s) */
@@ -2591,7 +2592,7 @@
 		return -EINVAL;
 	}
 
-	pci_read_config_word(sc->pdev, PCI_DEVICE_ID, &dev_id);
+	pfrm_read_config_word(sc->pdev, PCI_DEVICE_ID, &dev_id);
 
 	if (dev_id == sc->devid)
 		return 0;
@@ -3020,23 +3021,23 @@
 	HIF_ERROR("%s: keep_awake_count = %d",
 			__func__, hif_state->keep_awake_count);
 
-	pci_read_config_word(sc->pdev, PCI_VENDOR_ID, &val);
+	pfrm_read_config_word(sc->pdev, PCI_VENDOR_ID, &val);
 
 	HIF_ERROR("%s: PCI Vendor ID = 0x%04x", __func__, val);
 
-	pci_read_config_word(sc->pdev, PCI_DEVICE_ID, &val);
+	pfrm_read_config_word(sc->pdev, PCI_DEVICE_ID, &val);
 
 	HIF_ERROR("%s: PCI Device ID = 0x%04x", __func__, val);
 
-	pci_read_config_word(sc->pdev, PCI_COMMAND, &val);
+	pfrm_read_config_word(sc->pdev, PCI_COMMAND, &val);
 
 	HIF_ERROR("%s: PCI Command = 0x%04x", __func__, val);
 
-	pci_read_config_word(sc->pdev, PCI_STATUS, &val);
+	pfrm_read_config_word(sc->pdev, PCI_STATUS, &val);
 
 	HIF_ERROR("%s: PCI Status = 0x%04x", __func__, val);
 
-	pci_read_config_dword(sc->pdev, PCI_BASE_ADDRESS_0, &bar);
+	pfrm_read_config_dword(sc->pdev, PCI_BASE_ADDRESS_0, &bar);
 
 	HIF_ERROR("%s: PCI BAR 0 = 0x%08x", __func__, bar);
 
@@ -3331,12 +3332,14 @@
  */
 static void hif_ce_srng_msi_irq_disable(struct hif_softc *hif_sc, int ce_id)
 {
-	disable_irq_nosync(hif_ce_msi_map_ce_to_irq(hif_sc, ce_id));
+	pfrm_disable_irq_nosync(hif_sc->qdf_dev->dev,
+				hif_ce_msi_map_ce_to_irq(hif_sc, ce_id));
 }
 
 static void hif_ce_srng_msi_irq_enable(struct hif_softc *hif_sc, int ce_id)
 {
-	enable_irq(hif_ce_msi_map_ce_to_irq(hif_sc, ce_id));
+	pfrm_enable_irq(hif_sc->qdf_dev->dev,
+			hif_ce_msi_map_ce_to_irq(hif_sc, ce_id));
 }
 
 static void hif_ce_legacy_msi_irq_disable(struct hif_softc *hif_sc, int ce_id)
@@ -3368,8 +3371,9 @@
 		return ret;
 
 	scn->wake_irq = pld_get_msi_irq(scn->qdf_dev->dev, msi_irq_start);
-	ret = request_irq(scn->wake_irq, hif_wake_interrupt_handler,
-			  IRQF_NO_SUSPEND, "wlan_wake_irq", scn);
+	ret = pfrm_request_irq(scn->qdf_dev->dev, scn->wake_irq,
+			       hif_wake_interrupt_handler,
+			       IRQF_NO_SUSPEND, "wlan_wake_irq", scn);
 	if (ret)
 		return ret;
 
@@ -3408,10 +3412,11 @@
 			continue;
 
 		pci_sc->ce_msi_irq_num[ce_id] = irq;
-		ret = request_irq(irq, hif_ce_interrupt_handler,
-				  IRQF_SHARED,
-				  ce_name[ce_id],
-				  &ce_sc->tasklets[ce_id]);
+		ret = pfrm_request_irq(scn->qdf_dev->dev,
+				       irq, hif_ce_interrupt_handler,
+				       IRQF_SHARED,
+				       ce_name[ce_id],
+				       &ce_sc->tasklets[ce_id]);
 		if (ret)
 			goto free_irq;
 	}
@@ -3426,11 +3431,13 @@
 		ce_id--;
 		msi_data = (ce_id % msi_data_count) + msi_irq_start;
 		irq = pld_get_msi_irq(scn->qdf_dev->dev, msi_data);
-		free_irq(irq, &ce_sc->tasklets[ce_id]);
+		pfrm_free_irq(scn->qdf_dev->dev,
+			      irq, &ce_sc->tasklets[ce_id]);
 	}
 
 free_wake_irq:
-	free_irq(scn->wake_irq, scn->qdf_dev->dev);
+	pfrm_free_irq(scn->qdf_dev->dev,
+		      scn->wake_irq, scn->qdf_dev->dev);
 	scn->wake_irq = 0;
 
 	return ret;
@@ -3439,17 +3446,20 @@
 static void hif_exec_grp_irq_disable(struct hif_exec_context *hif_ext_group)
 {
 	int i;
+	struct hif_softc *scn = HIF_GET_SOFTC(hif_ext_group->hif);
 
 	for (i = 0; i < hif_ext_group->numirq; i++)
-		disable_irq_nosync(hif_ext_group->os_irq[i]);
+		pfrm_disable_irq_nosync(scn->qdf_dev->dev,
+					hif_ext_group->os_irq[i]);
 }
 
 static void hif_exec_grp_irq_enable(struct hif_exec_context *hif_ext_group)
 {
 	int i;
+	struct hif_softc *scn = HIF_GET_SOFTC(hif_ext_group->hif);
 
 	for (i = 0; i < hif_ext_group->numirq; i++)
-		enable_irq(hif_ext_group->os_irq[i]);
+		pfrm_enable_irq(scn->qdf_dev->dev, hif_ext_group->os_irq[i]);
 }
 
 /**
@@ -3483,11 +3493,12 @@
 
 		hif_info("request_irq = %d for grp %d",
 			 irq, hif_ext_group->grp_id);
-		ret = request_irq(irq,
-				  hif_ext_group_interrupt_handler,
-				  IRQF_SHARED | IRQF_NO_SUSPEND,
-				  "wlan_EXT_GRP",
-				  hif_ext_group);
+		ret = pfrm_request_irq(
+				scn->qdf_dev->dev, irq,
+				hif_ext_group_interrupt_handler,
+				IRQF_SHARED | IRQF_NO_SUSPEND,
+				"wlan_EXT_GRP",
+				hif_ext_group);
 		if (ret) {
 			HIF_ERROR("%s: request_irq failed ret = %d",
 				  __func__, ret);
@@ -3770,7 +3781,7 @@
 	hif_disable_power_gating(hif_hdl);
 
 	device_disable_async_suspend(&pdev->dev);
-	pci_read_config_word(pdev, 0x08, &revision_id);
+	pfrm_read_config_word(pdev, 0x08, &revision_id);
 
 	ret = hif_get_device_type(id->device, revision_id,
 						&hif_type, &target_type);
diff --git a/hif/src/pcie/if_pci_internal.h b/hif/src/pcie/if_pci_internal.h
index 16aea4a..c334862 100644
--- a/hif/src/pcie/if_pci_internal.h
+++ b/hif/src/pcie/if_pci_internal.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016, 2018 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2015-2016, 2018-2020 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -23,8 +23,8 @@
 #define PCI_CFG_TO_DISABLE_L1SS_STATES(pdev, addr) \
 { \
 	uint32_t lcr_val; \
-	pci_read_config_dword(pdev, addr, &lcr_val); \
-	pci_write_config_dword(pdev, addr, (lcr_val & ~0x0000000f)); \
+	pfrm_read_config_dword(pdev, addr, &lcr_val); \
+	pfrm_write_config_dword(pdev, addr, (lcr_val & ~0x0000000f)); \
 }
 #else
 #define PCI_CFG_TO_DISABLE_L1SS_STATES(pdev, addr)
diff --git a/hif/src/snoc/if_ahb.c b/hif/src/snoc/if_ahb.c
index 3ec81c9..0168244 100644
--- a/hif/src/snoc/if_ahb.c
+++ b/hif/src/snoc/if_ahb.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2019 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -271,13 +271,21 @@
 	for (i = 0; i < scn->ce_count; i++) {
 		if (host_ce_conf[i].flags & CE_ATTR_DISABLE_INTR)
 			continue;
-		qal_vbus_get_irq((struct qdf_pfm_hndl *)pdev,
-				 ic_irqname[HIF_IC_CE0_IRQ_OFFSET + i], &irq);
+		ret = pfrm_get_irq(&pdev->dev, (struct qdf_pfm_hndl *)pdev,
+				   ic_irqname[HIF_IC_CE0_IRQ_OFFSET + i],
+				   HIF_IC_CE0_IRQ_OFFSET + i, &irq);
+		if (ret) {
+			dev_err(&pdev->dev, "get irq failed\n");
+			ret = -1;
+			goto end;
+		}
+
 		ic_irqnum[HIF_IC_CE0_IRQ_OFFSET + i] = irq;
-		ret = request_irq(irq ,
-				hif_ahb_interrupt_handler,
-				IRQF_TRIGGER_RISING, ic_irqname[HIF_IC_CE0_IRQ_OFFSET + i],
-				&hif_state->tasklets[i]);
+		ret = pfrm_request_irq(&pdev->dev, irq,
+				       hif_ahb_interrupt_handler,
+				       IRQF_TRIGGER_RISING,
+				       ic_irqname[HIF_IC_CE0_IRQ_OFFSET + i],
+				       &hif_state->tasklets[i]);
 		if (ret) {
 			dev_err(&pdev->dev, "ath_request_irq failed\n");
 			ret = -1;
@@ -308,18 +316,23 @@
 	qdf_spin_lock_irqsave(&hif_ext_group->irq_lock);
 
 	for (j = 0; j < hif_ext_group->numirq; j++) {
-		qal_vbus_get_irq((struct qdf_pfm_hndl *)pdev,
-				 ic_irqname[hif_ext_group->irq[j]], &irq);
-
+		ret = pfrm_get_irq(&pdev->dev, (struct qdf_pfm_hndl *)pdev,
+				   ic_irqname[hif_ext_group->irq[j]],
+				   hif_ext_group->irq[j], &irq);
+		if (ret) {
+			dev_err(&pdev->dev, "get irq failed\n");
+			ret = -1;
+			goto end;
+		}
 		ic_irqnum[hif_ext_group->irq[j]] = irq;
 		irq_set_status_flags(irq, IRQ_DISABLE_UNLAZY);
-		ret = request_irq(irq, hif_ext_group_interrupt_handler,
-				  IRQF_TRIGGER_RISING,
-				  ic_irqname[hif_ext_group->irq[j]],
-				  hif_ext_group);
+		ret = pfrm_request_irq(scn->qdf_dev->dev,
+				       irq, hif_ext_group_interrupt_handler,
+				       IRQF_TRIGGER_RISING,
+				       ic_irqname[hif_ext_group->irq[j]],
+				       hif_ext_group);
 		if (ret) {
-			dev_err(&pdev->dev,
-				"ath_request_irq failed\n");
+			dev_err(&pdev->dev, "ath_request_irq failed\n");
 			ret = -1;
 			goto end;
 		}
@@ -363,7 +376,8 @@
 			 */
 			for (j = 0; j < hif_ext_group->numirq; j++) {
 				irq = hif_ext_group->os_irq[j];
-				free_irq(irq, hif_ext_group);
+				pfrm_free_irq(scn->qdf_dev->dev,
+					      irq, hif_ext_group);
 			}
 		}
 	}
@@ -450,19 +464,23 @@
 	int mem_pa_size = 0;
 	struct hif_target_info *tgt_info = NULL;
 	struct qdf_vbus_resource *vmres = NULL;
+	QDF_STATUS status;
 
 	tgt_info = &scn->target_info;
 	/*Disable WIFI clock input*/
 	if (sc->mem) {
-		qal_vbus_get_resource((struct qdf_pfm_hndl *)pdev, &vmres,
-				      IORESOURCE_MEM, 0);
-		memres = (struct resource *)vmres;
-		if (!memres) {
+		status = pfrm_platform_get_resource(
+				scn->qdf_dev->dev,
+				(struct qdf_pfm_hndl *)pdev, &vmres,
+				IORESOURCE_MEM, 0);
+		if (QDF_IS_STATUS_ERROR(status)) {
 			HIF_INFO("%s: Failed to get IORESOURCE_MEM\n",
-								__func__);
+				 __func__);
 			return;
 		}
-		mem_pa_size = memres->end - memres->start + 1;
+		memres = (struct resource *)vmres;
+		if (memres)
+			mem_pa_size = memres->end - memres->start + 1;
 
 		/* Should not be executed on 8074 platform */
 		if ((tgt_info->target_type != TARGET_TYPE_QCA8074) &&
@@ -474,9 +492,9 @@
 		}
 		mem = (void __iomem *)sc->mem;
 		if (mem) {
-			devm_iounmap(&pdev->dev, mem);
-			devm_release_mem_region(&pdev->dev, scn->mem_pa,
-								mem_pa_size);
+			pfrm_devm_iounmap(&pdev->dev, mem);
+			pfrm_devm_release_mem_region(&pdev->dev, scn->mem_pa,
+						     mem_pa_size);
 			sc->mem = NULL;
 		}
 	}
@@ -510,6 +528,8 @@
 	void __iomem *mem = NULL;
 	uint32_t revision_id = 0;
 	struct hif_pci_softc *sc = HIF_GET_PCI_SOFTC(ol_sc);
+	QDF_STATUS status;
+	struct qdf_vbus_resource *vmres = NULL;
 
 	sc->pdev = (struct pci_dev *)pdev;
 	sc->dev = &pdev->dev;
@@ -523,22 +543,30 @@
 		return QDF_STATUS_E_FAILURE;
 	}
 
-	memres = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	status = pfrm_platform_get_resource(&pdev->dev,
+					    (struct qdf_pfm_hndl *)pdev,
+					    &vmres,
+					    IORESOURCE_MEM, 0);
+	if (QDF_IS_STATUS_ERROR(status)) {
+		HIF_INFO("%s: Failed to get IORESOURCE_MEM\n", __func__);
+		return -EIO;
+	}
+	memres = (struct resource *)vmres;
 	if (!memres) {
 		HIF_INFO("%s: Failed to get IORESOURCE_MEM\n", __func__);
 		return -EIO;
 	}
 
-	ret = dma_set_mask(dev, DMA_BIT_MASK(32));
+	ret = pfrm_dma_set_mask(dev, 32);
 	if (ret) {
 		HIF_INFO("ath: 32-bit DMA not available\n");
 		goto err_cleanup1;
 	}
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
-	ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
+	ret = pfrm_dma_set_mask_and_coherent(dev, 32);
 #else
-	ret = dma_set_coherent_mask(dev, DMA_BIT_MASK(32));
+	ret = pfrm_dma_set_coherent_mask(dev, 32);
 #endif
 	if (ret) {
 		HIF_ERROR("%s: failed to set dma mask error = %d",
@@ -548,11 +576,16 @@
 
 	/* Arrange for access to Target SoC registers. */
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
-	mem = devm_ioremap_resource(&pdev->dev, memres);
+	status = pfrm_devm_ioremap_resource(dev,
+					    (struct qdf_vbus_resource *)memres,
+					    &mem);
 #else
-	mem = devm_request_and_ioremap(&pdev->dev, memres);
+	status = pfrm_devm_request_and_ioremap(
+					dev,
+					(struct qdf_vbus_resource *)memres,
+					&mem);
 #endif
-	if (IS_ERR(mem)) {
+	if (QDF_IS_STATUS_ERROR(status)) {
 		HIF_INFO("ath: ioremap error\n");
 		ret = PTR_ERR(mem);
 		goto err_cleanup1;
@@ -640,20 +673,22 @@
 	if (sc->num_msi_intrs > 0) {
 		/* MSI interrupt(s) */
 		for (i = 0; i < sc->num_msi_intrs; i++) {
-			free_irq(sc->irq + i, sc);
+			pfrm_free_irq(scn->qdf_dev->dev, sc->irq + i, sc);
 		}
 		sc->num_msi_intrs = 0;
 	} else {
 		if (!scn->per_ce_irq) {
-			free_irq(sc->irq, sc);
+			pfrm_free_irq(scn->qdf_dev->dev, sc->irq, sc);
 		} else {
 			for (i = 0; i < scn->ce_count; i++) {
 				if (host_ce_conf[i].flags
 						& CE_ATTR_DISABLE_INTR)
 					continue;
 
-				free_irq(ic_irqnum[HIF_IC_CE0_IRQ_OFFSET + i],
-						&hif_state->tasklets[i]);
+				pfrm_free_irq(
+					scn->qdf_dev->dev,
+					ic_irqnum[HIF_IC_CE0_IRQ_OFFSET + i],
+					&hif_state->tasklets[i]);
 			}
 			hif_ahb_deconfigure_grp_irq(scn);
 		}