msm: ipa3: add offline charging support
In offline charging mode, modem is not loaded so the proxy IPA clock vote added by IPA driver on behalf of modem is never released and this prolongs the charge time. Move the proxy vote to IPA3_POST_INIT before rmnet_ipa driver init completes. Change-Id: I271c8e6916d0c3068f720ae81b67f0fc5c198b6f Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
This commit is contained in:
parent
9f462e8a2b
commit
00f9f948b0
1 changed files with 5 additions and 4 deletions
|
@ -3962,6 +3962,8 @@ static int ipa3_post_init(const struct ipa3_plat_drv_res *resource_p,
|
|||
/* Prevent consequent calls from trying to load the FW again. */
|
||||
if (ipa3_ctx->ipa_initialization_complete)
|
||||
return 0;
|
||||
/* move proxy vote for modem on ipa3_post_init */
|
||||
IPA_ACTIVE_CLIENTS_INC_SPECIAL("PROXY_CLK_VOTE");
|
||||
|
||||
if (ipa3_ctx->transport_prototype == IPA_TRANSPORT_TYPE_GSI) {
|
||||
memset(&gsi_props, 0, sizeof(gsi_props));
|
||||
|
@ -4275,7 +4277,6 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p,
|
|||
int i;
|
||||
struct ipa3_flt_tbl *flt_tbl;
|
||||
struct ipa3_rt_tbl_set *rset;
|
||||
struct ipa_active_client_logging_info log_info;
|
||||
|
||||
IPADBG("IPA Driver initialization started\n");
|
||||
|
||||
|
@ -4465,8 +4466,7 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p,
|
|||
|
||||
mutex_init(&ipa3_ctx->ipa3_active_clients.mutex);
|
||||
spin_lock_init(&ipa3_ctx->ipa3_active_clients.spinlock);
|
||||
IPA_ACTIVE_CLIENTS_PREP_SPECIAL(log_info, "PROXY_CLK_VOTE");
|
||||
ipa3_active_clients_log_inc(&log_info, false);
|
||||
/* move proxy vote for modem to ipa3_post_init() */
|
||||
ipa3_ctx->ipa3_active_clients.cnt = 1;
|
||||
|
||||
/* Assign resource limitation to each group */
|
||||
|
@ -4702,7 +4702,6 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p,
|
|||
|
||||
init_completion(&ipa3_ctx->init_completion_obj);
|
||||
init_completion(&ipa3_ctx->uc_loaded_completion_obj);
|
||||
|
||||
/*
|
||||
* For GSI, we can't register the GSI driver yet, as it expects
|
||||
* the GSI FW to be up and running before the registration.
|
||||
|
@ -4745,6 +4744,8 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p,
|
|||
IPADBG("ipa cdev added successful. major:%d minor:%d\n",
|
||||
MAJOR(ipa3_ctx->dev_num),
|
||||
MINOR(ipa3_ctx->dev_num));
|
||||
/* proxy vote for motem is added in ipa3_post_init() phase */
|
||||
IPA_ACTIVE_CLIENTS_DEC_SIMPLE();
|
||||
return 0;
|
||||
|
||||
fail_cdev_add:
|
||||
|
|
Loading…
Add table
Reference in a new issue