qcacld-3.0: Skip bmi and ramdump at runtime
Need to support SNOC and PCI dynamically. Core BSP code is responsible for SNOC firmware loading and crash dumps. Change-Id: Ia16076809f2b74be6f32ad5015b79b1fe2c13ca3 CRs-Fixed: 986480
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
ab091116bf
commit
9a547dc0bc
2
Kbuild
2
Kbuild
@@ -624,7 +624,6 @@ BMI_DIR := core/bmi
|
|||||||
|
|
||||||
BMI_INC := -I$(WLAN_ROOT)/$(BMI_DIR)/inc
|
BMI_INC := -I$(WLAN_ROOT)/$(BMI_DIR)/inc
|
||||||
|
|
||||||
ifneq ($(CONFIG_ICNSS), y)
|
|
||||||
BMI_OBJS := $(BMI_DIR)/src/bmi.o \
|
BMI_OBJS := $(BMI_DIR)/src/bmi.o \
|
||||||
$(BMI_DIR)/src/ol_fw.o
|
$(BMI_DIR)/src/ol_fw.o
|
||||||
ifeq ($(CONFIG_FEATURE_BMI_2), y)
|
ifeq ($(CONFIG_FEATURE_BMI_2), y)
|
||||||
@@ -632,7 +631,6 @@ BMI_OBJS += $(BMI_DIR)/src/bmi_2.o
|
|||||||
else
|
else
|
||||||
BMI_OBJS += $(BMI_DIR)/src/bmi_1.o
|
BMI_OBJS += $(BMI_DIR)/src/bmi_1.o
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
########### WMI ###########
|
########### WMI ###########
|
||||||
WMI_DIR := core/wmi
|
WMI_DIR := core/wmi
|
||||||
|
|
||||||
|
@@ -62,24 +62,7 @@ struct ol_config_info {
|
|||||||
|
|
||||||
void ol_init_ini_config(struct ol_context *ol_ctx,
|
void ol_init_ini_config(struct ol_context *ol_ctx,
|
||||||
struct ol_config_info *cfg);
|
struct ol_config_info *cfg);
|
||||||
#ifdef HIF_PCI
|
|
||||||
void bmi_cleanup(struct ol_context *scn);
|
void bmi_cleanup(struct ol_context *scn);
|
||||||
QDF_STATUS bmi_done(struct ol_context *ol_ctx);
|
QDF_STATUS bmi_done(struct ol_context *ol_ctx);
|
||||||
QDF_STATUS bmi_download_firmware(struct ol_context *ol_ctx);
|
QDF_STATUS bmi_download_firmware(struct ol_context *ol_ctx);
|
||||||
#else
|
|
||||||
static inline void bmi_cleanup(struct ol_context *scn)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline QDF_STATUS bmi_done(struct ol_context *ol_ctx)
|
|
||||||
{
|
|
||||||
return QDF_STATUS_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline QDF_STATUS bmi_download_firmware(struct ol_context *ol_ctx)
|
|
||||||
{
|
|
||||||
return QDF_STATUS_SUCCESS;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /* _BMI_H_ */
|
#endif /* _BMI_H_ */
|
||||||
|
@@ -47,12 +47,5 @@
|
|||||||
#define AR6320_REV4_VERSION AR6320_REV2_1_VERSION
|
#define AR6320_REV4_VERSION AR6320_REV2_1_VERSION
|
||||||
#define AR6320_DEV_VERSION 0x1000000
|
#define AR6320_DEV_VERSION 0x1000000
|
||||||
|
|
||||||
#ifdef HIF_PCI
|
|
||||||
void ol_target_failure(void *instance, QDF_STATUS status);
|
void ol_target_failure(void *instance, QDF_STATUS status);
|
||||||
#else
|
|
||||||
static inline void ol_target_failure(void *instance, QDF_STATUS status)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /* _OL_FW_H_ */
|
#endif /* _OL_FW_H_ */
|
||||||
|
@@ -105,9 +105,15 @@ end:
|
|||||||
void bmi_cleanup(struct ol_context *ol_ctx)
|
void bmi_cleanup(struct ol_context *ol_ctx)
|
||||||
{
|
{
|
||||||
struct bmi_info *info = GET_BMI_CONTEXT(ol_ctx);
|
struct bmi_info *info = GET_BMI_CONTEXT(ol_ctx);
|
||||||
qdf_device_t qdf_dev = ol_ctx->qdf_dev;
|
qdf_device_t qdf_dev;
|
||||||
|
|
||||||
if (!qdf_dev->dev) {
|
if (!info || !ol_ctx) {
|
||||||
|
BMI_WARN("%s: no bmi to cleanup", __func__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_dev = ol_ctx->qdf_dev;
|
||||||
|
if (!qdf_dev || !qdf_dev->dev) {
|
||||||
BMI_ERR("%s: Invalid Device Pointer", __func__);
|
BMI_ERR("%s: Invalid Device Pointer", __func__);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -129,16 +135,34 @@ void bmi_cleanup(struct ol_context *ol_ctx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* bmi_done() - finish the bmi opperation
|
||||||
|
* @ol_ctx: the bmi context
|
||||||
|
*
|
||||||
|
* does some sanity checking.
|
||||||
|
* exchanges one last message with firmware.
|
||||||
|
* frees some buffers.
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS if bmi isn't needed.
|
||||||
|
* QDF_STATUS_SUCCESS if bmi finishes.
|
||||||
|
* otherwise returns failure.
|
||||||
|
*/
|
||||||
QDF_STATUS bmi_done(struct ol_context *ol_ctx)
|
QDF_STATUS bmi_done(struct ol_context *ol_ctx)
|
||||||
{
|
{
|
||||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
if (NO_BMI)
|
if (NO_BMI)
|
||||||
return status;
|
return QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
|
if (!ol_ctx) {
|
||||||
|
BMI_ERR("%s: null context", __func__);
|
||||||
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hif_needs_bmi(ol_ctx->scn))
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
status = bmi_done_local(ol_ctx);
|
status = bmi_done_local(ol_ctx);
|
||||||
|
|
||||||
if (status != QDF_STATUS_SUCCESS)
|
if (status != QDF_STATUS_SUCCESS)
|
||||||
BMI_ERR("BMI_DONE Failed status:%d", status);
|
BMI_ERR("BMI_DONE Failed status:%d", status);
|
||||||
|
|
||||||
@@ -203,8 +227,8 @@ QDF_STATUS bmi_download_firmware(struct ol_context *ol_ctx)
|
|||||||
int32_t ret;
|
int32_t ret;
|
||||||
struct hif_opaque_softc *scn = ol_ctx->scn;
|
struct hif_opaque_softc *scn = ol_ctx->scn;
|
||||||
|
|
||||||
if (NO_BMI)
|
if (NO_BMI || !hif_needs_bmi(scn))
|
||||||
return QDF_STATUS_SUCCESS; /* no BMI for Q6 bring up */
|
return QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
if (!scn) {
|
if (!scn) {
|
||||||
BMI_ERR("Invalid scn context");
|
BMI_ERR("Invalid scn context");
|
||||||
|
@@ -617,6 +617,11 @@ void ol_target_failure(void *instance, QDF_STATUS status)
|
|||||||
ol_target_status target_status =
|
ol_target_status target_status =
|
||||||
hif_get_target_status(scn);
|
hif_get_target_status(scn);
|
||||||
|
|
||||||
|
if (hif_get_bus_type(scn) == QDF_BUS_TYPE_SNOC) {
|
||||||
|
BMI_ERR("SNOC doesn't suppor this code path!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
qdf_event_set(&wma->recovery_event);
|
qdf_event_set(&wma->recovery_event);
|
||||||
|
|
||||||
if (OL_TRGET_STATUS_RESET == target_status) {
|
if (OL_TRGET_STATUS_RESET == target_status) {
|
||||||
@@ -1422,6 +1427,7 @@ int ol_diag_read(struct hif_opaque_softc *scn, uint8_t *buffer,
|
|||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HIF_PCI
|
||||||
static int ol_ath_get_reg_table(uint32_t target_version,
|
static int ol_ath_get_reg_table(uint32_t target_version,
|
||||||
tgt_reg_table *reg_table)
|
tgt_reg_table *reg_table)
|
||||||
{
|
{
|
||||||
@@ -1522,6 +1528,13 @@ static int ol_diag_read_reg_loc(struct hif_opaque_softc *scn, uint8_t *buffer,
|
|||||||
out:
|
out:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
static int ol_diag_read_reg_loc(struct hif_opaque_softc *scn, uint8_t *buffer,
|
||||||
|
uint32_t buffer_len)
|
||||||
|
{
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void ol_dump_target_memory(struct hif_opaque_softc *scn, void *memory_block)
|
void ol_dump_target_memory(struct hif_opaque_softc *scn, void *memory_block)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user