void usbc_core_notify_state_suspending() { kal_uint8 func_list; usbcore_usbidle_l4_power_saving_req_struct *rsp_msg_p; // notify USBCLASS of USB suspended usbc_core_indicate_state(USBC_USB_STATE_SUSPENDING); usbc_core_indicate_state(USBC_USB_STATE_SUSPENDED); if( USBC_IS_IN_EXCEPTION_MODE() ) { return; } // Updatea function pointer for setting GPDs in DRAM buffer usbc_trace_info(USBCORE_UPDATE_API_BUFF_GPD, 1); usbc_suspended_hif_factory(); // Notify USBIDLE task to gate USB clock usbc_trace_info(USBCORE_DEV_SUSPEND_CLOCK, 1, 1); usb_idle_set_clockGating(KAL_TRUE); // notify USBIDLE that it has to gate the clock of USB IP msg_send4(MOD_USBCORE, // src module MOD_USBIDLE, // dst module 0, // sap id MSG_ID_USBCORE_SUSPEND_TO_IDLE); //msg id // Ask USBIDLE to notify L4 to turn RF power off or go to fast dormancy func_list = usbc_core_get_function_remote_wk_list(); rsp_msg_p = (usbcore_usbidle_l4_power_saving_req_struct*)construct_local_para(sizeof(usbcore_usbidle_l4_power_saving_req_struct), TD_RESET); ASSERT(rsp_msg_p); rsp_msg_p->notify_suspend = KAL_TRUE; rsp_msg_p->notify_suspend_with_remote_wk = (func_list==0)? KAL_FALSE:KAL_TRUE; usbc_trace_info(USBCORE_DEV_SUSPEND_L4, 1, 1, 1, (rsp_msg_p->notify_suspend_with_remote_wk? 1:0)); usb_idle_set_l4_power_saving(KAL_TRUE); msg_send6(MOD_USBCORE, // src module MOD_USBIDLE, // dst module 0, // sap id MSG_ID_USBCORE_IDLE_NOTIFY_TO_L4, (local_para_struct*)rsp_msg_p, 0); //msg id // Set USBCORE task to wait for indication events only usbc_trace_info(USBCORE_SUSPEND_STOP_POLL); usbc_core_get_instance()->hmu_indication = HIF_DRV_EG_USBC_IND_EVENT; // Set USBCORE task to wait for indication events only }
/* send message to AUDL task*/ static void spStrmCallback(kal_uint32 event, void *param) { msg_send4(MOD_L1SP, MOD_MED, AUDIO_SAP, event); }