|
@@ -585,6 +585,17 @@ static const struct usb_gadget_ops mtu3_gadget_ops = {
|
|
|
.udc_stop = mtu3_gadget_stop,
|
|
|
};
|
|
|
|
|
|
+static void mtu3_state_reset(struct mtu3 *mtu)
|
|
|
+{
|
|
|
+ mtu->address = 0;
|
|
|
+ mtu->ep0_state = MU3D_EP0_STATE_SETUP;
|
|
|
+ mtu->may_wakeup = 0;
|
|
|
+ mtu->u1_enable = 0;
|
|
|
+ mtu->u2_enable = 0;
|
|
|
+ mtu->delayed_status = false;
|
|
|
+ mtu->test_mode = false;
|
|
|
+}
|
|
|
+
|
|
|
static void init_hw_ep(struct mtu3 *mtu, struct mtu3_ep *mep,
|
|
|
u32 epnum, u32 is_in)
|
|
|
{
|
|
@@ -702,6 +713,7 @@ void mtu3_gadget_disconnect(struct mtu3 *mtu)
|
|
|
spin_lock(&mtu->lock);
|
|
|
}
|
|
|
|
|
|
+ mtu3_state_reset(mtu);
|
|
|
usb_gadget_set_state(&mtu->g, USB_STATE_NOTATTACHED);
|
|
|
}
|
|
|
|
|
@@ -712,12 +724,6 @@ void mtu3_gadget_reset(struct mtu3 *mtu)
|
|
|
/* report disconnect, if we didn't flush EP state */
|
|
|
if (mtu->g.speed != USB_SPEED_UNKNOWN)
|
|
|
mtu3_gadget_disconnect(mtu);
|
|
|
-
|
|
|
- mtu->address = 0;
|
|
|
- mtu->ep0_state = MU3D_EP0_STATE_SETUP;
|
|
|
- mtu->may_wakeup = 0;
|
|
|
- mtu->u1_enable = 0;
|
|
|
- mtu->u2_enable = 0;
|
|
|
- mtu->delayed_status = false;
|
|
|
- mtu->test_mode = false;
|
|
|
+ else
|
|
|
+ mtu3_state_reset(mtu);
|
|
|
}
|