mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 07:37:31 -04:00
qcacmn: Add api to set intermediate EP vote access
Add api to set intermediate EP vote access state. Make sure reg work handler is complete before setting intermediate vote access. Change-Id: Ib229d9af8b1e58505a9ae5fbf39aa912ca21a3c3 CRs-Fixed: 2994040
This commit is contained in:
parent
1a20c436f1
commit
3712b81534
2 changed files with 26 additions and 2 deletions
|
|
@ -46,7 +46,7 @@ typedef void __iomem *A_target_id_t;
|
|||
typedef void *hif_handle_t;
|
||||
|
||||
#if defined(HIF_IPCI) && defined(FEATURE_HAL_DELAYED_REG_WRITE)
|
||||
#define HIF_WORK_DRAIN_WAIT_CNT 10
|
||||
#define HIF_WORK_DRAIN_WAIT_CNT 50
|
||||
#endif
|
||||
|
||||
#define HIF_TYPE_AR6002 2
|
||||
|
|
@ -1724,6 +1724,7 @@ hif_softc_to_hif_opaque_softc(struct hif_softc *hif_handle)
|
|||
|
||||
#if defined(HIF_IPCI) && defined(FEATURE_HAL_DELAYED_REG_WRITE)
|
||||
QDF_STATUS hif_try_prevent_ep_vote_access(struct hif_opaque_softc *hif_ctx);
|
||||
void hif_set_ep_intermediate_vote_access(struct hif_opaque_softc *hif_ctx);
|
||||
void hif_allow_ep_vote_access(struct hif_opaque_softc *hif_ctx);
|
||||
void hif_set_ep_vote_access(struct hif_opaque_softc *hif_ctx,
|
||||
uint8_t type, uint8_t access);
|
||||
|
|
@ -1736,6 +1737,11 @@ hif_try_prevent_ep_vote_access(struct hif_opaque_softc *hif_ctx)
|
|||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline void
|
||||
hif_set_ep_intermediate_vote_access(struct hif_opaque_softc *hif_ctx)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
hif_allow_ep_vote_access(struct hif_opaque_softc *hif_ctx)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1048,12 +1048,30 @@ QDF_STATUS hif_try_prevent_ep_vote_access(struct hif_opaque_softc *hif_ctx)
|
|||
hif_err("timeout wait for pending work %d ", work);
|
||||
return QDF_STATUS_E_FAULT;
|
||||
}
|
||||
qdf_sleep(5);
|
||||
qdf_sleep(10);
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void hif_set_ep_intermediate_vote_access(struct hif_opaque_softc *hif_ctx)
|
||||
{
|
||||
struct hif_softc *scn = HIF_GET_SOFTC(hif_ctx);
|
||||
uint8_t vote_access;
|
||||
|
||||
vote_access = qdf_atomic_read(&scn->ep_vote_access);
|
||||
|
||||
if (vote_access != HIF_EP_VOTE_ACCESS_DISABLE)
|
||||
hif_info("EP vote changed from:%u to intermediate state",
|
||||
vote_access);
|
||||
|
||||
if (QDF_IS_STATUS_ERROR(hif_try_prevent_ep_vote_access(hif_ctx)))
|
||||
QDF_BUG(0);
|
||||
|
||||
qdf_atomic_set(&scn->ep_vote_access,
|
||||
HIF_EP_VOTE_INTERMEDIATE_ACCESS);
|
||||
}
|
||||
|
||||
void hif_allow_ep_vote_access(struct hif_opaque_softc *hif_ctx)
|
||||
{
|
||||
struct hif_softc *scn = HIF_GET_SOFTC(hif_ctx);
|
||||
|
|
|
|||
Loading…
Reference in a new issue