Loading drivers/platform/msm/usb_bam.c +4 −9 Original line number Diff line number Diff line Loading @@ -154,7 +154,6 @@ static int ss_usb_cons_release_resource(void); static int hsic_cons_request_resource(void); static int hsic_cons_release_resource(void); static int (*request_resource_cb[MAX_BAMS])(void) = { [CI_CTRL] = usb_cons_request_resource, [HSIC_CTRL] = hsic_cons_request_resource, Loading Loading @@ -199,7 +198,6 @@ struct usb_bam_ipa_handshake_info { struct mutex suspend_resume_mutex; struct work_struct resume_work; struct work_struct suspend_work; struct work_struct finish_suspend_work; }; Loading @@ -223,6 +221,7 @@ static bool qdss_usb_active; static int __usb_bam_register_wake_cb(int idx, int (*callback)(void *user), void *param, bool trigger_cb_per_pipe); static void wait_for_prod_release(enum usb_ctrl cur_bam); static void usb_bam_start_suspend(struct usb_bam_ipa_handshake_info *info_ptr); void msm_bam_set_hsic_host_dev(struct device *dev) { Loading Loading @@ -1802,7 +1801,7 @@ void usb_bam_suspend(struct usb_bam_connect_ipa_params *ipa_params) /* If cable was disconnected, let disconnection seq do everything */ if (info[cur_bam].disconnected) { spin_unlock(&usb_bam_ipa_handshake_info_lock); pr_debug("%s: Cable disconnected\n", __func__); pr_err("%s: Cable disconnected\n", __func__); return; } Loading @@ -1814,19 +1813,16 @@ void usb_bam_suspend(struct usb_bam_connect_ipa_params *ipa_params) spin_unlock(&usb_bam_ipa_handshake_info_lock); queue_work(ctx.usb_bam_wq, &info[cur_bam].suspend_work); usb_bam_start_suspend(&info[cur_bam]); } static void usb_bam_start_suspend(struct work_struct *w) static void usb_bam_start_suspend(struct usb_bam_ipa_handshake_info *info_ptr) { struct usb_bam_pipe_connect *pipe_connect; struct usb_bam_ipa_handshake_info *info_ptr; enum usb_ctrl cur_bam; u8 src_idx, dst_idx; int pipes_to_suspend; info_ptr = container_of(w, struct usb_bam_ipa_handshake_info, suspend_work); cur_bam = info_ptr->bam_type; pr_debug("%s: Starting suspend sequence(BAM=%s)\n", __func__, bam_enable_strings[cur_bam]); Loading Loading @@ -3445,7 +3441,6 @@ static int usb_bam_probe(struct platform_device *pdev) info[i].pipes_resumed = 0; info[i].bam_type = i; INIT_WORK(&info[i].resume_work, usb_bam_finish_resume); INIT_WORK(&info[i].suspend_work, usb_bam_start_suspend); INIT_WORK(&info[i].finish_suspend_work, usb_bam_finish_suspend_); mutex_init(&info[i].suspend_resume_mutex); Loading drivers/usb/gadget/u_bam.c +8 −0 Original line number Diff line number Diff line Loading @@ -1597,7 +1597,15 @@ static void gbam2bam_suspend_work(struct work_struct *w) if (d->trans == USB_GADGET_XPORT_BAM2BAM_IPA) { usb_bam_register_start_stop_cbs(d->dst_connection_idx, gbam_start, gbam_stop, port); /* * release lock here because gbam_start() or * gbam_stop() called from usb_bam_suspend() * re-acquires port lock. */ spin_unlock_irqrestore(&port->port_lock, flags); usb_bam_suspend(&d->ipa_params); spin_lock_irqsave(&port->port_lock, flags); } exit: Loading drivers/usb/gadget/u_bam_data.c +8 −0 Original line number Diff line number Diff line Loading @@ -1969,7 +1969,15 @@ static void bam2bam_data_suspend_work(struct work_struct *w) usb_bam_register_start_stop_cbs(d->dst_connection_idx, bam_data_start, bam_data_stop, port); /* * release lock here because bam_data_start() or * bam_data_stop() called from usb_bam_suspend() * re-acquires port lock. */ spin_unlock_irqrestore(&port->port_lock, flags); usb_bam_suspend(&d->ipa_params); spin_lock_irqsave(&port->port_lock, flags); } exit: Loading Loading
drivers/platform/msm/usb_bam.c +4 −9 Original line number Diff line number Diff line Loading @@ -154,7 +154,6 @@ static int ss_usb_cons_release_resource(void); static int hsic_cons_request_resource(void); static int hsic_cons_release_resource(void); static int (*request_resource_cb[MAX_BAMS])(void) = { [CI_CTRL] = usb_cons_request_resource, [HSIC_CTRL] = hsic_cons_request_resource, Loading Loading @@ -199,7 +198,6 @@ struct usb_bam_ipa_handshake_info { struct mutex suspend_resume_mutex; struct work_struct resume_work; struct work_struct suspend_work; struct work_struct finish_suspend_work; }; Loading @@ -223,6 +221,7 @@ static bool qdss_usb_active; static int __usb_bam_register_wake_cb(int idx, int (*callback)(void *user), void *param, bool trigger_cb_per_pipe); static void wait_for_prod_release(enum usb_ctrl cur_bam); static void usb_bam_start_suspend(struct usb_bam_ipa_handshake_info *info_ptr); void msm_bam_set_hsic_host_dev(struct device *dev) { Loading Loading @@ -1802,7 +1801,7 @@ void usb_bam_suspend(struct usb_bam_connect_ipa_params *ipa_params) /* If cable was disconnected, let disconnection seq do everything */ if (info[cur_bam].disconnected) { spin_unlock(&usb_bam_ipa_handshake_info_lock); pr_debug("%s: Cable disconnected\n", __func__); pr_err("%s: Cable disconnected\n", __func__); return; } Loading @@ -1814,19 +1813,16 @@ void usb_bam_suspend(struct usb_bam_connect_ipa_params *ipa_params) spin_unlock(&usb_bam_ipa_handshake_info_lock); queue_work(ctx.usb_bam_wq, &info[cur_bam].suspend_work); usb_bam_start_suspend(&info[cur_bam]); } static void usb_bam_start_suspend(struct work_struct *w) static void usb_bam_start_suspend(struct usb_bam_ipa_handshake_info *info_ptr) { struct usb_bam_pipe_connect *pipe_connect; struct usb_bam_ipa_handshake_info *info_ptr; enum usb_ctrl cur_bam; u8 src_idx, dst_idx; int pipes_to_suspend; info_ptr = container_of(w, struct usb_bam_ipa_handshake_info, suspend_work); cur_bam = info_ptr->bam_type; pr_debug("%s: Starting suspend sequence(BAM=%s)\n", __func__, bam_enable_strings[cur_bam]); Loading Loading @@ -3445,7 +3441,6 @@ static int usb_bam_probe(struct platform_device *pdev) info[i].pipes_resumed = 0; info[i].bam_type = i; INIT_WORK(&info[i].resume_work, usb_bam_finish_resume); INIT_WORK(&info[i].suspend_work, usb_bam_start_suspend); INIT_WORK(&info[i].finish_suspend_work, usb_bam_finish_suspend_); mutex_init(&info[i].suspend_resume_mutex); Loading
drivers/usb/gadget/u_bam.c +8 −0 Original line number Diff line number Diff line Loading @@ -1597,7 +1597,15 @@ static void gbam2bam_suspend_work(struct work_struct *w) if (d->trans == USB_GADGET_XPORT_BAM2BAM_IPA) { usb_bam_register_start_stop_cbs(d->dst_connection_idx, gbam_start, gbam_stop, port); /* * release lock here because gbam_start() or * gbam_stop() called from usb_bam_suspend() * re-acquires port lock. */ spin_unlock_irqrestore(&port->port_lock, flags); usb_bam_suspend(&d->ipa_params); spin_lock_irqsave(&port->port_lock, flags); } exit: Loading
drivers/usb/gadget/u_bam_data.c +8 −0 Original line number Diff line number Diff line Loading @@ -1969,7 +1969,15 @@ static void bam2bam_data_suspend_work(struct work_struct *w) usb_bam_register_start_stop_cbs(d->dst_connection_idx, bam_data_start, bam_data_stop, port); /* * release lock here because bam_data_start() or * bam_data_stop() called from usb_bam_suspend() * re-acquires port lock. */ spin_unlock_irqrestore(&port->port_lock, flags); usb_bam_suspend(&d->ipa_params); spin_lock_irqsave(&port->port_lock, flags); } exit: Loading