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:
Skylar Chang 2017-07-06 14:31:57 -07:00 committed by Gerrit - the friendly Code Review server
parent 9f462e8a2b
commit 00f9f948b0

View file

@ -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: