msm: ipa3: In deep sleep scenario destroy/ reinitialize uC interrupts

In deep sleep suspend/resume scenario destroy the uC interrupts
in suspend and reinitialize the interrupts in resume

Change-Id: Ib3631cef8e1e78651b6b79aef7f3d65dae0411c2
Signed-off-by: Ashok Vuyyuru <quic_avuyyuru@quicinc.com>
This commit is contained in:
Ashok Vuyyuru 2022-03-17 18:43:30 +05:30
commit 1024d06f3f
3 changed files with 5 additions and 1 deletions

View file

@ -9660,6 +9660,7 @@ static void ipa3_deepsleep_suspend(void)
/*Disabling IPA interrupt*/
ipa3_remove_interrupt_handler(IPA_TX_SUSPEND_IRQ);
ipa3_interrupts_destroy(ipa3_res.ipa_irq, &ipa3_ctx->master_pdev->dev);
ipa3_uc_interface_destroy();
/*Destroy the NAT device*/
ipa3_nat_ipv6ct_destroy_devices();
/*Freeing memory allocated for coalesing and dma task*/

View file

@ -2978,6 +2978,7 @@ int ipa3_uc_send_cmd(u32 cmd, u32 opcode, u32 expected_status,
void ipa3_uc_register_handlers(enum ipa3_hw_features feature,
struct ipa3_uc_hdlrs *hdlrs);
int ipa3_uc_notify_clk_state(bool enabled);
void ipa3_uc_interface_destroy(void);
int ipa3_dma_setup(void);
void ipa3_dma_shutdown(void);
void ipa3_dma_async_memcpy_notify_cb(void *priv,

View file

@ -454,7 +454,9 @@ int ipa3_remove_interrupt_handler(enum ipa_irq_type interrupt)
return -EFAULT;
}
kfree(ipa_interrupt_to_cb[irq_num].private_data);
/*If free ipa3_ctx pointer causing device crash during remove interrupt*/
if(ipa_interrupt_to_cb[irq_num].private_data != ipa3_ctx)
kfree(ipa_interrupt_to_cb[irq_num].private_data);
ipa_interrupt_to_cb[irq_num].deferred_flag = false;
ipa_interrupt_to_cb[irq_num].handler = NULL;
ipa_interrupt_to_cb[irq_num].private_data = NULL;