浏览代码

qcacmn: Fix compilation and update SHADOW REG OFFSET for qca6750

For qca6750, update the SHADOW REGISTER OFFSET value and
fix the compilation issue.

Change-Id: Ic4b44c1c40e62ddcc50c0a66d37c0663a70b5c54
CRs-Fixed: 2633044
Alok Kumar 5 年之前
父节点
当前提交
32de2fe166
共有 4 个文件被更改,包括 35 次插入34 次删除
  1. 6 2
      hal/wifi3.0/hal_api.h
  2. 12 3
      hal/wifi3.0/qca6750/hal_6750.c
  3. 14 26
      hif/src/ipcie/if_ipci.c
  4. 3 3
      hif/src/regtable.c

+ 6 - 2
hal/wifi3.0/hal_api.h

@@ -28,8 +28,7 @@
 #include "qdf_platform.h"
 
 /* calculate the register address offset from bar0 of shadow register x */
-#if defined(QCA_WIFI_QCA6390) || defined(QCA_WIFI_QCA6490) || \
-    defined(QCA_WIFI_QCA6750)
+#if defined(QCA_WIFI_QCA6390) || defined(QCA_WIFI_QCA6490)
 #define SHADOW_REGISTER_START_ADDRESS_OFFSET 0x000008FC
 #define SHADOW_REGISTER_END_ADDRESS_OFFSET \
 	((SHADOW_REGISTER_START_ADDRESS_OFFSET) + (4 * (MAX_SHADOW_REGISTERS)))
@@ -39,6 +38,11 @@
 #define SHADOW_REGISTER_END_ADDRESS_OFFSET \
 	((SHADOW_REGISTER_START_ADDRESS_OFFSET) + (4 * (MAX_SHADOW_REGISTERS)))
 #define SHADOW_REGISTER(x) ((SHADOW_REGISTER_START_ADDRESS_OFFSET) + (4 * (x)))
+#elif defined(QCA_WIFI_QCA6750)
+#define SHADOW_REGISTER_START_ADDRESS_OFFSET 0x00000504
+#define SHADOW_REGISTER_END_ADDRESS_OFFSET \
+	((SHADOW_REGISTER_START_ADDRESS_OFFSET) + (4 * (MAX_SHADOW_REGISTERS)))
+#define SHADOW_REGISTER(x) ((SHADOW_REGISTER_START_ADDRESS_OFFSET) + (4 * (x)))
 #else
 #define SHADOW_REGISTER(x) 0
 #endif /* QCA_WIFI_QCA6390 || QCA_WIFI_QCA6490 || QCA_WIFI_QCA6750 */

+ 12 - 3
hal/wifi3.0/qca6750/hal_6750.c

@@ -954,14 +954,16 @@ static uint32_t hal_rx_tid_get_6750(hal_soc_handle_t hal_soc_hdl, uint8_t *buf)
 
 /**
  * hal_rx_hw_desc_get_ppduid_get_6750(): retrieve ppdu id
- * @hw_desc_addr: hw addr
+ * @rx_tlv_hdr: rx tlv header
+ * @rxdma_dst_ring_desc: rxdma HW descriptor
  *
  * Return: ppdu id
  */
-static uint32_t hal_rx_hw_desc_get_ppduid_get_6750(void *hw_desc_addr)
+static uint32_t hal_rx_hw_desc_get_ppduid_get_6750(void *rx_tlv_hdr,
+						   void *rxdma_dst_ring_desc)
 {
 	struct rx_mpdu_info *rx_mpdu_info;
-	struct rx_pkt_tlvs *rx_desc = (struct rx_pkt_tlvs *)hw_desc_addr;
+	struct rx_pkt_tlvs *rx_desc = (struct rx_pkt_tlvs *)rx_tlv_hdr;
 
 	rx_mpdu_info =
 		&rx_desc->mpdu_start_tlv.rx_mpdu_start.rx_mpdu_info_details;
@@ -1413,6 +1415,13 @@ struct hal_hw_txrx_ops qca6750_hal_hw_txrx_ops = {
 	NULL,
 	/* rx - msdu end fast path info fields */
 	hal_rx_msdu_packet_metadata_get_generic,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
 };
 
 struct hal_hw_srng_config hw_srng_table_6750[] = {

+ 14 - 26
hif/src/ipcie/if_ipci.c

@@ -172,7 +172,7 @@ static int hif_ce_srng_msi_free_irq(struct hif_softc *scn)
 		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;
@@ -196,7 +196,8 @@ static void hif_ipci_deconfigure_grp_irq(struct hif_softc *scn)
 			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;
 		}
@@ -216,13 +217,6 @@ void hif_ipci_nointrs(struct hif_softc *scn)
 	hif_ipci_deconfigure_grp_irq(scn);
 
 	ret = hif_ce_srng_msi_free_irq(scn);
-	if (ret != -EINVAL) {
-		/* ce irqs freed in hif_ce_srng_msi_free_irq */
-
-		if (scn->wake_irq)
-			free_irq(scn->wake_irq, scn);
-		scn->wake_irq = 0;
-	}
 
 	scn->request_irq_done = false;
 }
@@ -293,15 +287,11 @@ int hif_ipci_bus_suspend_noirq(struct hif_softc *scn)
 	if (hif_can_suspend_link(GET_HIF_OPAQUE_HDL(scn)))
 		qdf_atomic_set(&scn->link_suspended, 1);
 
-	hif_apps_wake_irq_enable(GET_HIF_OPAQUE_HDL(scn));
-
 	return 0;
 }
 
 int hif_ipci_bus_resume_noirq(struct hif_softc *scn)
 {
-	hif_apps_wake_irq_disable(GET_HIF_OPAQUE_HDL(scn));
-
 	if (hif_can_suspend_link(GET_HIF_OPAQUE_HDL(scn)))
 		qdf_atomic_set(&scn->link_suspended, 0);
 
@@ -428,10 +418,11 @@ static int hif_ce_msi_configure_irq(struct hif_softc *scn)
 			continue;
 
 		ipci_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;
 	}
@@ -446,7 +437,7 @@ free_irq:
 		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]);
 	}
 
 	return ret;
@@ -502,11 +493,11 @@ int hif_ipci_configure_grp_irq(struct hif_softc *scn,
 
 		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);
@@ -620,7 +611,6 @@ QDF_STATUS hif_ipci_enable_bus(struct hif_softc *ol_sc,
 	struct hif_ipci_softc *sc = HIF_GET_IPCI_SOFTC(ol_sc);
 	struct hif_opaque_softc *hif_hdl = GET_HIF_OPAQUE_HDL(ol_sc);
 	uint16_t revision_id = 0;
-	struct pci_dev *pdev = bdev;
 	struct hif_target_info *tgt_info;
 	int device_id = QCA6750_DEVICE_ID;
 
@@ -635,8 +625,6 @@ QDF_STATUS hif_ipci_enable_bus(struct hif_softc *ol_sc,
 	sc->hif_ipci_get_soc_info(sc, dev);
 	HIF_TRACE("%s: hif_enable_pci done", __func__);
 
-	device_disable_async_suspend(&pdev->dev);
-
 	ret = hif_get_device_type(device_id, revision_id,
 				  &hif_type, &target_type);
 	if (ret < 0) {

+ 3 - 3
hif/src/regtable.c

@@ -266,10 +266,10 @@ void hif_register_tbl_attach(struct hif_softc *scn, u32 hif_type)
 #endif /* QCA6490_HEADERS_DEF */
 
 #if defined(QCA6750_HEADERS_DEF)
-	case TARGET_TYPE_QCA6750:
+	case HIF_TYPE_QCA6750:
 		scn->hostdef = QCA6750_HOSTdef;
-		HIF_TRACE("%s: TARGET_TYPE_QCA6750", __func__);
-			break;
+		HIF_TRACE("%s: HIF_TYPE_QCA6750", __func__);
+		break;
 #endif /* QCA6750_HEADERS_DEF */
 	default:
 		break;