forked from Minki/linux
usb: dwc2: gadget: Move gadget phy init into core phy init
Most of the phy initialization is shared between host and gadget, this adds the turnaround configuration only used by gadgets to the global phy init. Acked-by: Minas Harutyunyan <hminas@synopsys.com> Signed-off-by: Jules Maselbas <jmaselbas@kalray.eu> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
059d8d5287
commit
1e868545f2
@ -1152,6 +1152,15 @@ static int dwc2_hs_phy_init(struct dwc2_hsotg *hsotg, bool select_phy)
|
||||
usbcfg &= ~(GUSBCFG_ULPI_UTMI_SEL | GUSBCFG_PHYIF16);
|
||||
if (hsotg->params.phy_utmi_width == 16)
|
||||
usbcfg |= GUSBCFG_PHYIF16;
|
||||
|
||||
/* Set turnaround time */
|
||||
if (dwc2_is_device_mode(hsotg)) {
|
||||
usbcfg &= ~GUSBCFG_USBTRDTIM_MASK;
|
||||
if (hsotg->params.phy_utmi_width == 16)
|
||||
usbcfg |= 5 << GUSBCFG_USBTRDTIM_SHIFT;
|
||||
else
|
||||
usbcfg |= 9 << GUSBCFG_USBTRDTIM_SHIFT;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
dev_err(hsotg->dev, "FS PHY selected at HS!\n");
|
||||
|
@ -3314,29 +3314,14 @@ void dwc2_hsotg_core_init_disconnected(struct dwc2_hsotg *hsotg,
|
||||
|
||||
/* keep other bits untouched (so e.g. forced modes are not lost) */
|
||||
usbcfg = dwc2_readl(hsotg, GUSBCFG);
|
||||
/* remove the HNP/SRP */
|
||||
usbcfg &= ~(GUSBCFG_TOUTCAL_MASK | GUSBCFG_PHYIF16 | GUSBCFG_SRPCAP |
|
||||
GUSBCFG_HNPCAP);
|
||||
usbcfg &= ~GUSBCFG_TOUTCAL_MASK;
|
||||
usbcfg |= GUSBCFG_TOUTCAL(7);
|
||||
|
||||
if (hsotg->params.phy_type == DWC2_PHY_TYPE_PARAM_FS &&
|
||||
(hsotg->params.speed == DWC2_SPEED_PARAM_FULL ||
|
||||
hsotg->params.speed == DWC2_SPEED_PARAM_LOW)) {
|
||||
/* FS/LS Dedicated Transceiver Interface */
|
||||
usbcfg |= GUSBCFG_PHYSEL;
|
||||
} else if (hsotg->params.phy_type == DWC2_PHY_TYPE_PARAM_UTMI) {
|
||||
if (hsotg->params.phy_utmi_width == 16)
|
||||
usbcfg |= GUSBCFG_PHYIF16;
|
||||
/* remove the HNP/SRP and set the PHY */
|
||||
usbcfg &= ~(GUSBCFG_SRPCAP | GUSBCFG_HNPCAP);
|
||||
dwc2_writel(hsotg, usbcfg, GUSBCFG);
|
||||
|
||||
/* Set turnaround time */
|
||||
usbcfg &= ~GUSBCFG_USBTRDTIM_MASK;
|
||||
if (hsotg->params.phy_utmi_width == 16)
|
||||
usbcfg |= 5 << GUSBCFG_USBTRDTIM_SHIFT;
|
||||
else
|
||||
usbcfg |= 9 << GUSBCFG_USBTRDTIM_SHIFT;
|
||||
}
|
||||
|
||||
dwc2_writel(hsotg, usbcfg, GUSBCFG);
|
||||
dwc2_phy_init(hsotg, true);
|
||||
|
||||
dwc2_hsotg_init_fifo(hsotg);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user