Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b5d308ab authored by John Youn's avatar John Youn Committed by Felipe Balbi
Browse files

usb: dwc2: Add dwc2_core_reset()



dwc2_core_reset() was previously renamed to
dwc2_core_reset_and_dr_force_mode(). Now add back dwc2_core_reset() which
performs only a basic core reset without forcing the mode.

Signed-off-by: default avatarJohn Youn <johnyoun@synopsys.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 6d58f346
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -481,11 +481,10 @@ static void dwc2_init_fs_ls_pclk_sel(struct dwc2_hsotg *hsotg)
 * Do core a soft reset of the core.  Be careful with this because it
 * resets all the internal state machines of the core.
 */
int dwc2_core_reset_and_force_dr_mode(struct dwc2_hsotg *hsotg)
int dwc2_core_reset(struct dwc2_hsotg *hsotg)
{
	u32 greset;
	int count = 0;
	u32 gusbcfg;

	dev_vdbg(hsotg->dev, "%s()\n", __func__);

@@ -517,6 +516,25 @@ int dwc2_core_reset_and_force_dr_mode(struct dwc2_hsotg *hsotg)
		}
	} while (!(greset & GRSTCTL_AHBIDLE));

	return 0;
}

/*
 * Do core a soft reset of the core.  Be careful with this because it
 * resets all the internal state machines of the core.
 *
 * Additionally this will apply force mode as per the hsotg->dr_mode
 * parameter.
 */
int dwc2_core_reset_and_force_dr_mode(struct dwc2_hsotg *hsotg)
{
	int retval;
	u32 gusbcfg;

	retval = dwc2_core_reset(hsotg);
	if (retval)
		return retval;

	if (hsotg->dr_mode == USB_DR_MODE_HOST) {
		gusbcfg = dwc2_readl(hsotg->regs + GUSBCFG);
		gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
+1 −0
Original line number Diff line number Diff line
@@ -880,6 +880,7 @@ enum dwc2_halt_status {
 * The following functions support initialization of the core driver component
 * and the DWC_otg controller
 */
extern int dwc2_core_reset(struct dwc2_hsotg *hsotg);
extern int dwc2_core_reset_and_force_dr_mode(struct dwc2_hsotg *hsotg);
extern void dwc2_core_host_init(struct dwc2_hsotg *hsotg);
extern int dwc2_enter_hibernation(struct dwc2_hsotg *hsotg);