mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
usb: chipidea: Fix otg event handler
At OTG work running time, it's possible that several events need to be addressed (e.g. ID and VBUS events). The current implementation handles only one event at a time which leads to ignoring the other one. Fix it. Signed-off-by: Loic Poulain <loic.poulain@linaro.org> Signed-off-by: Peter Chen <peter.chen@nxp.com>
This commit is contained in:
parent
8b97d73c4d
commit
59739131e0
1 changed files with 6 additions and 3 deletions
|
@ -203,14 +203,17 @@ static void ci_otg_work(struct work_struct *work)
|
|||
}
|
||||
|
||||
pm_runtime_get_sync(ci->dev);
|
||||
|
||||
if (ci->id_event) {
|
||||
ci->id_event = false;
|
||||
ci_handle_id_switch(ci);
|
||||
} else if (ci->b_sess_valid_event) {
|
||||
}
|
||||
|
||||
if (ci->b_sess_valid_event) {
|
||||
ci->b_sess_valid_event = false;
|
||||
ci_handle_vbus_change(ci);
|
||||
} else
|
||||
dev_err(ci->dev, "unexpected event occurs at %s\n", __func__);
|
||||
}
|
||||
|
||||
pm_runtime_put_sync(ci->dev);
|
||||
|
||||
enable_irq(ci->irq);
|
||||
|
|
Loading…
Reference in a new issue