mirror of https://gitee.com/openkylin/linux.git
usb: dwc3: gadget: implement gadget state tracking
make use of the previously introduced gadget->state field. Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
49401f4169
commit
14cd592f72
|
@ -512,10 +512,13 @@ static int dwc3_ep0_set_address(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl)
|
||||||
reg |= DWC3_DCFG_DEVADDR(addr);
|
reg |= DWC3_DCFG_DEVADDR(addr);
|
||||||
dwc3_writel(dwc->regs, DWC3_DCFG, reg);
|
dwc3_writel(dwc->regs, DWC3_DCFG, reg);
|
||||||
|
|
||||||
if (addr)
|
if (addr) {
|
||||||
dwc->dev_state = DWC3_ADDRESS_STATE;
|
dwc->dev_state = DWC3_ADDRESS_STATE;
|
||||||
else
|
usb_gadget_set_state(&dwc->gadget, USB_STATE_ADDRESS);
|
||||||
|
} else {
|
||||||
dwc->dev_state = DWC3_DEFAULT_STATE;
|
dwc->dev_state = DWC3_DEFAULT_STATE;
|
||||||
|
usb_gadget_set_state(&dwc->gadget, USB_STATE_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -549,6 +552,9 @@ static int dwc3_ep0_set_config(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl)
|
||||||
/* if the cfg matches and the cfg is non zero */
|
/* if the cfg matches and the cfg is non zero */
|
||||||
if (cfg && (!ret || (ret == USB_GADGET_DELAYED_STATUS))) {
|
if (cfg && (!ret || (ret == USB_GADGET_DELAYED_STATUS))) {
|
||||||
dwc->dev_state = DWC3_CONFIGURED_STATE;
|
dwc->dev_state = DWC3_CONFIGURED_STATE;
|
||||||
|
usb_gadget_set_state(&dwc->gadget,
|
||||||
|
USB_STATE_CONFIGURED);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enable transition to U1/U2 state when
|
* Enable transition to U1/U2 state when
|
||||||
* nothing is pending from application.
|
* nothing is pending from application.
|
||||||
|
@ -564,8 +570,11 @@ static int dwc3_ep0_set_config(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl)
|
||||||
|
|
||||||
case DWC3_CONFIGURED_STATE:
|
case DWC3_CONFIGURED_STATE:
|
||||||
ret = dwc3_ep0_delegate_req(dwc, ctrl);
|
ret = dwc3_ep0_delegate_req(dwc, ctrl);
|
||||||
if (!cfg)
|
if (!cfg) {
|
||||||
dwc->dev_state = DWC3_ADDRESS_STATE;
|
dwc->dev_state = DWC3_ADDRESS_STATE;
|
||||||
|
usb_gadget_set_state(&dwc->gadget,
|
||||||
|
USB_STATE_ADDRESS);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
|
|
|
@ -2137,7 +2137,7 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* after reset -> Default State */
|
/* after reset -> Default State */
|
||||||
dwc->dev_state = DWC3_DEFAULT_STATE;
|
usb_gadget_set_state(&dwc->gadget, USB_STATE_DEFAULT);
|
||||||
|
|
||||||
/* Recent versions support automatic phy suspend and don't need this */
|
/* Recent versions support automatic phy suspend and don't need this */
|
||||||
if (dwc->revision < DWC3_REVISION_194A) {
|
if (dwc->revision < DWC3_REVISION_194A) {
|
||||||
|
|
Loading…
Reference in New Issue