qcacmn: Add USB bus support (HIF Common)

Add module specific changes for USB bus support.

Change-Id: I98ca380567c279d3206aa4afc7a28c2feeb65993
CRs-Fixed: 1023663
This commit is contained in:
Mohit Khanna
2016-05-12 11:05:06 -07:00
committed by Vishwajith Upendra
parent 1957ba9385
commit 440c5295c2
11 changed files with 69 additions and 27 deletions

View File

@@ -40,7 +40,9 @@ extern "C" {
#ifdef HIF_PCI
#include <linux/pci.h>
#endif /* HIF_PCI */
#ifdef HIF_USB
#include <linux/usb.h>
#endif /* HIF_USB */
#define ENABLE_MBOX_DUMMY_SPACE_FEATURE 1
typedef struct htc_callbacks HTC_CALLBACKS;
@@ -363,7 +365,7 @@ typedef void (*fastpath_msg_handler)(void *, qdf_nbuf_t *, uint32_t);
#ifdef WLAN_FEATURE_FASTPATH
void hif_enable_fastpath(struct hif_opaque_softc *hif_ctx);
bool hif_is_fastpath_mode_enabled(struct hif_opaque_softc *hif_ctx);
void *hif_get_ce_handle(struct hif_opaque_softc *hif_ctx, int);
void *hif_get_ce_handle(struct hif_opaque_softc *hif_ctx, int ret);
int hif_ce_fastpath_cb_register(struct hif_opaque_softc *hif_ctx,
fastpath_msg_handler handler, void *context);
#else
@@ -373,6 +375,11 @@ static inline int hif_ce_fastpath_cb_register(struct hif_opaque_softc *hif_ctx,
{
return QDF_STATUS_E_FAILURE;
}
static inline void *hif_get_ce_handle(struct hif_opaque_softc *hif_ctx, int ret)
{
return NULL;
}
#endif
/*
@@ -613,7 +620,11 @@ struct hif_pipe_addl_info *hif_get_addl_pipe_info(struct hif_opaque_softc *osc,
uint32_t hif_set_nss_wifiol_mode(struct hif_opaque_softc *osc,
uint32_t pipe_num);
int32_t hif_get_nss_wifiol_bypass_nw_process(struct hif_opaque_softc *osc);
#endif
#endif /* QCA_NSS_WIFI_OFFLOAD_SUPPORT */
void hif_set_bundle_mode(struct hif_opaque_softc *scn, bool enabled,
int rx_bundle_cnt);
int hif_bus_reset_resume(struct hif_opaque_softc *scn);
#ifdef WLAN_SUSPEND_RESUME_TEST
typedef void (*hdd_fake_resume_callback)(uint32_t val);
@@ -623,4 +634,5 @@ void hif_fake_apps_suspend(hdd_fake_resume_callback callback);
#ifdef __cplusplus
}
#endif
#endif /* _HIF_H_ */

View File

@@ -31,8 +31,14 @@
#ifdef HIF_SDIO
#include "regtable_sdio.h"
#endif
#if defined(HIF_PCI) || defined(HIF_SNOC) || defined(HIF_AHB)
#include "reg_struct.h"
#include "regtable_pcie.h"
#endif
#if defined(HIF_USB)
#include "regtable_usb.h"
#endif
#endif

View File

@@ -460,8 +460,10 @@ struct targetdef_s ar6320_targetdef = {
.d_DRAM_BASE_ADDRESS = AR6320_DRAM_BASE_ADDRESS,
.d_SOC_CORE_BASE_ADDRESS = AR6320_SOC_CORE_BASE_ADDRESS,
.d_CORE_CTRL_ADDRESS = AR6320_CORE_CTRL_ADDRESS,
#if defined(HIF_PCI) || defined(HIF_SNOC) || defined(HIF_AHB)
.d_MSI_NUM_REQUEST = MSI_NUM_REQUEST,
.d_MSI_ASSIGN_FW = MSI_ASSIGN_FW,
#endif
.d_CORE_CTRL_CPU_INTR_MASK = AR6320_CORE_CTRL_CPU_INTR_MASK,
.d_SR_WR_INDEX_ADDRESS = AR6320_SR_WR_INDEX_ADDRESS,
.d_DST_WATERMARK_ADDRESS = AR6320_DST_WATERMARK_ADDRESS,

View File

@@ -464,8 +464,10 @@ struct targetdef_s ar6320v2_targetdef = {
.d_DRAM_BASE_ADDRESS = AR6320V2_DRAM_BASE_ADDRESS,
.d_SOC_CORE_BASE_ADDRESS = AR6320V2_SOC_CORE_BASE_ADDRESS,
.d_CORE_CTRL_ADDRESS = AR6320V2_CORE_CTRL_ADDRESS,
#if defined(HIF_PCI) || defined(HIF_SNOC) || defined(HIF_AHB)
.d_MSI_NUM_REQUEST = MSI_NUM_REQUEST,
.d_MSI_ASSIGN_FW = MSI_ASSIGN_FW,
#endif
.d_CORE_CTRL_CPU_INTR_MASK = AR6320V2_CORE_CTRL_CPU_INTR_MASK,
.d_SR_WR_INDEX_ADDRESS = AR6320V2_SR_WR_INDEX_ADDRESS,
.d_DST_WATERMARK_ADDRESS = AR6320V2_DST_WATERMARK_ADDRESS,

View File

@@ -367,8 +367,10 @@ struct targetdef_s ar9888_targetdef = {
.d_DRAM_BASE_ADDRESS = AR9888_DRAM_BASE_ADDRESS,
.d_SOC_CORE_BASE_ADDRESS = AR9888_SOC_CORE_BASE_ADDRESS,
.d_CORE_CTRL_ADDRESS = AR9888_CORE_CTRL_ADDRESS,
#if defined(HIF_PCI) || defined(HIF_SNOC) || defined(HIF_AHB)
.d_MSI_NUM_REQUEST = MSI_NUM_REQUEST,
.d_MSI_ASSIGN_FW = MSI_ASSIGN_FW,
#endif
.d_CORE_CTRL_CPU_INTR_MASK = AR9888_CORE_CTRL_CPU_INTR_MASK,
.d_SR_WR_INDEX_ADDRESS = AR9888_SR_WR_INDEX_ADDRESS,
.d_DST_WATERMARK_ADDRESS = AR9888_DST_WATERMARK_ADDRESS,

View File

@@ -36,7 +36,7 @@
#define HIF_INFO_LO(args ...) \
QDF_TRACE(QDF_MODULE_ID_HIF, QDF_TRACE_LEVEL_INFO_LOW, ## args)
#define HIF_TRACE(args ...) \
QDF_TRACE(QDF_MODULE_ID_HIF, QDF_TRACE_LEVEL_ERROR, ## args)
QDF_TRACE(QDF_MODULE_ID_HIF, QDF_TRACE_LEVEL_INFO, ## args)
#define HIF_DBG(args ...) \
QDF_TRACE(QDF_MODULE_ID_HIF, QDF_TRACE_LEVEL_DEBUG, ## args)

View File

@@ -39,13 +39,13 @@
#include "hif_main.h"
#include "hif_hw_version.h"
#if defined(HIF_PCI) || defined(HIF_SNOC) || defined(HIF_AHB)
#include "ce_api.h"
#include "ce_tasklet.h"
#endif
#include "qdf_trace.h"
#include "qdf_status.h"
#include "hif_debug.h"
#include "mp_dev.h"
#include "ce_api.h"
void hif_dump(struct hif_opaque_softc *hif_ctx, uint8_t cmd_id, bool start)
{
@@ -324,6 +324,11 @@ void hif_get_hw_info(struct hif_opaque_softc *scn, u32 *version, u32 *revision,
const char **target_name)
{
struct hif_target_info *info = hif_get_target_info_handle(scn);
struct hif_softc *sc = HIF_GET_SOFTC(scn);
if (sc->bus_type == QDF_BUS_TYPE_USB)
hif_usb_get_hw_info(sc);
*version = info->target_version;
*revision = info->target_revision;
*target_name = hif_get_hw_name(info);
@@ -455,7 +460,7 @@ QDF_STATUS hif_enable(struct hif_opaque_softc *hif_ctx, struct device *dev,
scn->hif_init_done = true;
HIF_TRACE("%s: X OK", __func__);
HIF_TRACE("%s: OK", __func__);
return QDF_STATUS_SUCCESS;
}
@@ -888,7 +893,7 @@ bool hif_is_recovery_in_progress(struct hif_softc *scn)
return false;
}
#if defined(HIF_PCI) || defined(SNOC) || defined(HIF_AHB)
/**
* hif_batch_send() - API to access hif specific function
* ce_batch_send.
@@ -958,6 +963,7 @@ int hif_send_fast(struct hif_opaque_softc *osc, qdf_nbuf_t nbuf,
return ce_send_fast((struct CE_handle *)ce_tx_hdl, nbuf,
transfer_id, download_len);
}
#endif
/**
* hif_reg_write() - API to access hif specific function
@@ -990,3 +996,19 @@ uint32_t hif_reg_read(struct hif_opaque_softc *hif_ctx, uint32_t offset)
struct hif_softc *scn = HIF_GET_SOFTC(hif_ctx);
return hif_read32_mb(scn->mem + offset);
}
#if defined(HIF_USB)
/**
* hif_ramdump_handler(): generic ramdump handler
* @scn: struct hif_opaque_softc
*
* Return: None
*/
void hif_ramdump_handler(struct hif_opaque_softc *scn)
{
if (hif_get_bus_type == QDF_BUS_TYPE_USB)
hif_usb_ramdump_handler();
}
#endif

View File

@@ -95,6 +95,8 @@
#define HIF_GET_PCI_SOFTC(scn) ((struct hif_pci_softc *)scn)
#define HIF_GET_CE_STATE(scn) ((struct HIF_CE_state *)scn)
#define HIF_GET_SDIO_SOFTC(scn) ((struct hif_sdio_softc *)scn)
#define HIF_GET_USB_SOFTC(scn) ((struct hif_usb_softc *)scn)
#define HIF_GET_USB_DEVICE(scn) ((HIF_DEVICE_USB *)scn)
#define HIF_GET_SOFTC(scn) ((struct hif_softc *)scn)
#define GET_HIF_OPAQUE_HDL(scn) ((struct hif_opaque_softc *)scn)
@@ -203,4 +205,12 @@ void hif_wlan_disable(struct hif_softc *scn);
int hif_target_sleep_state_adjust(struct hif_softc *scn,
bool sleep_ok,
bool wait_for_it);
#ifdef HIF_USB
void hif_usb_get_hw_info(struct hif_softc *scn);
void hif_ramdump_handler(struct hif_opaque_softc *scn);
#else
static inline void hif_usb_get_hw_info(struct hif_softc *scn) {}
static inline void hif_ramdump_handler(struct hif_opaque_softc *scn) {}
#endif
#endif /* __HIF_MAIN_H__ */

View File

@@ -226,16 +226,3 @@ void hif_send_complete_check(struct hif_opaque_softc *hif_ctx, uint8_t pipe,
}
/**
* hif_set_bundle_mode() - set bundling mode.
* @hif_ctx: HIF context
* @enabled: enable/disable bundling
* @rx_bundle_cnt: bundling count
*
* Return: none
*/
void hif_set_bundle_mode(struct hif_opaque_softc *hif_ctx, bool enabled,
uint64_t rx_bundle_cnt)
{
}

View File

@@ -893,14 +893,14 @@ void hif_suspend_wow(struct hif_opaque_softc *scn)
}
/**
* hif_set_bundle_mode() - enable bundling and set default rx bundle cnt
* hif_usb_set_bundle_mode() - enable bundling and set default rx bundle cnt
* @scn: pointer to hif_opaque_softc structure
* @enabled: flag to enable/disable bundling
* @rx_bundle_cnt: bundle count to be used for RX
*
* Return: none
*/
void hif_set_bundle_mode(struct hif_opaque_softc *scn,
void hif_usb_set_bundle_mode(struct hif_softc *scn,
bool enabled, int rx_bundle_cnt)
{
HIF_DEVICE_USB *device = HIF_GET_USB_DEVICE(scn);

View File

@@ -361,7 +361,7 @@ int hif_usb_bus_resume(struct hif_softc *hif_ctx)
}
/**
* hif_bus_reset_resume() - resume the bus after reset
* hif_usb_bus_reset_resume() - resume the bus after reset
* @scn: struct hif_opaque_softc
*
* This function is called to tell the driver that USB device has been resumed
@@ -370,10 +370,9 @@ int hif_usb_bus_resume(struct hif_softc *hif_ctx)
*
* Return: int 0 for success, non zero for failure
*/
int hif_bus_reset_resume(struct hif_opaque_softc *scn)
int hif_usb_bus_reset_resume(struct hif_softc *hif_ctx)
{
int ret = 0;
struct hif_softc *hif_ctx = HIF_GET_SOFTC(scn);
HIF_ENTER();
if (hif_usb_diag_write_cold_reset(hif_ctx) != QDF_STATUS_SUCCESS)
ret = 1;
@@ -621,7 +620,7 @@ void hif_fw_assert_ramdump_pattern(struct hif_usb_softc *sc)
}
/**
* hif_ramdump_handler(): dump bus debug registers
* hif_usb_ramdump_handler(): dump bus debug registers
* @scn: struct hif_opaque_softc
*
* This function is to receive information of firmware crash dump, and
@@ -641,7 +640,7 @@ void hif_fw_assert_ramdump_pattern(struct hif_usb_softc *sc)
* Return: 0 for success or error code
*/
void hif_ramdump_handler(struct hif_opaque_softc *scn)
void hif_usb_ramdump_handler(struct hif_opaque_softc *scn)
{
uint32_t *reg, pattern, i, start_addr = 0;
uint32_t len;