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
This commit is contained in:
Alok Kumar
2020-02-24 18:45:43 +05:30
committed by nshrivas
parent ee4dcfe6d7
commit 32de2fe166
4 changed files with 35 additions and 34 deletions

View File

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

View File

@@ -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 * 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 * 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_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_mpdu_info =
&rx_desc->mpdu_start_tlv.rx_mpdu_start.rx_mpdu_info_details; &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, NULL,
/* rx - msdu end fast path info fields */ /* rx - msdu end fast path info fields */
hal_rx_msdu_packet_metadata_get_generic, hal_rx_msdu_packet_metadata_get_generic,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
}; };
struct hal_hw_srng_config hw_srng_table_6750[] = { struct hal_hw_srng_config hw_srng_table_6750[] = {

View File

@@ -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__, hif_debug("%s: (ce_id %d, msi_data %d, irq %d)", __func__,
ce_id, msi_data, irq); 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; return ret;
@@ -196,7 +196,8 @@ static void hif_ipci_deconfigure_grp_irq(struct hif_softc *scn)
hif_ext_group->irq_requested = false; hif_ext_group->irq_requested = false;
for (j = 0; j < hif_ext_group->numirq; j++) { for (j = 0; j < hif_ext_group->numirq; j++) {
irq = hif_ext_group->os_irq[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; hif_ext_group->numirq = 0;
} }
@@ -216,13 +217,6 @@ void hif_ipci_nointrs(struct hif_softc *scn)
hif_ipci_deconfigure_grp_irq(scn); hif_ipci_deconfigure_grp_irq(scn);
ret = hif_ce_srng_msi_free_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; 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))) if (hif_can_suspend_link(GET_HIF_OPAQUE_HDL(scn)))
qdf_atomic_set(&scn->link_suspended, 1); qdf_atomic_set(&scn->link_suspended, 1);
hif_apps_wake_irq_enable(GET_HIF_OPAQUE_HDL(scn));
return 0; return 0;
} }
int hif_ipci_bus_resume_noirq(struct hif_softc *scn) 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))) if (hif_can_suspend_link(GET_HIF_OPAQUE_HDL(scn)))
qdf_atomic_set(&scn->link_suspended, 0); qdf_atomic_set(&scn->link_suspended, 0);
@@ -428,10 +418,11 @@ static int hif_ce_msi_configure_irq(struct hif_softc *scn)
continue; continue;
ipci_sc->ce_msi_irq_num[ce_id] = irq; ipci_sc->ce_msi_irq_num[ce_id] = irq;
ret = request_irq(irq, hif_ce_interrupt_handler, ret = pfrm_request_irq(scn->qdf_dev->dev,
IRQF_SHARED, irq, hif_ce_interrupt_handler,
ce_name[ce_id], IRQF_SHARED,
&ce_sc->tasklets[ce_id]); ce_name[ce_id],
&ce_sc->tasklets[ce_id]);
if (ret) if (ret)
goto free_irq; goto free_irq;
} }
@@ -446,7 +437,7 @@ free_irq:
ce_id--; ce_id--;
msi_data = (ce_id % msi_data_count) + msi_irq_start; msi_data = (ce_id % msi_data_count) + msi_irq_start;
irq = pld_get_msi_irq(scn->qdf_dev->dev, msi_data); 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; return ret;
@@ -502,11 +493,11 @@ int hif_ipci_configure_grp_irq(struct hif_softc *scn,
hif_info("request_irq = %d for grp %d", hif_info("request_irq = %d for grp %d",
irq, hif_ext_group->grp_id); irq, hif_ext_group->grp_id);
ret = request_irq(irq, ret = pfrm_request_irq(scn->qdf_dev->dev, irq,
hif_ext_group_interrupt_handler, hif_ext_group_interrupt_handler,
IRQF_SHARED | IRQF_NO_SUSPEND, IRQF_SHARED | IRQF_NO_SUSPEND,
"wlan_EXT_GRP", "wlan_EXT_GRP",
hif_ext_group); hif_ext_group);
if (ret) { if (ret) {
HIF_ERROR("%s: request_irq failed ret = %d", HIF_ERROR("%s: request_irq failed ret = %d",
__func__, ret); __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_ipci_softc *sc = HIF_GET_IPCI_SOFTC(ol_sc);
struct hif_opaque_softc *hif_hdl = GET_HIF_OPAQUE_HDL(ol_sc); struct hif_opaque_softc *hif_hdl = GET_HIF_OPAQUE_HDL(ol_sc);
uint16_t revision_id = 0; uint16_t revision_id = 0;
struct pci_dev *pdev = bdev;
struct hif_target_info *tgt_info; struct hif_target_info *tgt_info;
int device_id = QCA6750_DEVICE_ID; 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); sc->hif_ipci_get_soc_info(sc, dev);
HIF_TRACE("%s: hif_enable_pci done", __func__); HIF_TRACE("%s: hif_enable_pci done", __func__);
device_disable_async_suspend(&pdev->dev);
ret = hif_get_device_type(device_id, revision_id, ret = hif_get_device_type(device_id, revision_id,
&hif_type, &target_type); &hif_type, &target_type);
if (ret < 0) { if (ret < 0) {

View File

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