diff --git a/hal/wifi3.0/hal_api.h b/hal/wifi3.0/hal_api.h index 1ff537d5bf..849ee4d600 100644 --- a/hal/wifi3.0/hal_api.h +++ b/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 */ diff --git a/hal/wifi3.0/qca6750/hal_6750.c b/hal/wifi3.0/qca6750/hal_6750.c index 162f362082..16371c30ff 100644 --- a/hal/wifi3.0/qca6750/hal_6750.c +++ b/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[] = { diff --git a/hif/src/ipcie/if_ipci.c b/hif/src/ipcie/if_ipci.c index 0206bc7a3e..bd254e48ea 100644 --- a/hif/src/ipcie/if_ipci.c +++ b/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) { diff --git a/hif/src/regtable.c b/hif/src/regtable.c index a6496b1cab..3a0b7948c5 100644 --- a/hif/src/regtable.c +++ b/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;