On Thu, Feb 02, 2023, Linyu Yuan wrote:
hi Thinh,
do you prefer below change ? will it be good for all cases ?
+static void dwc3_gadget_update_link_state(struct dwc3 *dwc, + const struct dwc3_event_devt *event) +{ + switch (event->type) { + case DWC3_DEVICE_EVENT_HIBER_REQ: + case DWC3_DEVICE_EVENT_LINK_STATUS_CHANGE: + case DWC3_DEVICE_EVENT_SUSPEND: + break; + default: + dwc->link_state = event->event_info & DWC3_LINK_STATE_MASK; + break; + } +}
static void dwc3_gadget_interrupt(struct dwc3 *dwc, const struct dwc3_event_devt *event) { + dwc3_gadget_update_link_state(dwc3, event);
switch (event->type)
This would break the check in dwc3_gadget_suspend_interrupt(). However, I'm actually not sure why we had that check in the beginning. I suppose certain setup may trigger suspend event multiple time consecutively?
Thanks, Thinh