123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- From dacdae142ffd909ed6718adb05af74ff800da668 Mon Sep 17 00:00:00 2001
- From: Chunfeng Yun <[email protected]>
- Date: Thu, 7 Dec 2017 19:53:34 +0800
- Subject: [PATCH 177/224] phy: phy-mtk-tphy: use auto instead of force to
- bypass utmi signals
- When system is running, if usb2 phy is forced to bypass utmi signals,
- all PLL will be turned off, and it can't detect device connection
- anymore, so replace force mode with auto mode which can bypass utmi
- signals automatically if no device attached for normal flow.
- But keep the force mode to fix RX sensitivity degradation issue.
- Signed-off-by: Chunfeng Yun <[email protected]>
- Signed-off-by: Kishon Vijay Abraham I <[email protected]>
- ---
- drivers/phy/mediatek/phy-mtk-tphy.c | 19 +++++++------------
- 1 file changed, 7 insertions(+), 12 deletions(-)
- --- a/drivers/phy/mediatek/phy-mtk-tphy.c
- +++ b/drivers/phy/mediatek/phy-mtk-tphy.c
- @@ -440,9 +440,9 @@ static void u2_phy_instance_init(struct
- u32 index = instance->index;
- u32 tmp;
-
- - /* switch to USB function. (system register, force ip into usb mode) */
- + /* switch to USB function, and enable usb pll */
- tmp = readl(com + U3P_U2PHYDTM0);
- - tmp &= ~P2C_FORCE_UART_EN;
- + tmp &= ~(P2C_FORCE_UART_EN | P2C_FORCE_SUSPENDM);
- tmp |= P2C_RG_XCVRSEL_VAL(1) | P2C_RG_DATAIN_VAL(0);
- writel(tmp, com + U3P_U2PHYDTM0);
-
- @@ -502,10 +502,8 @@ static void u2_phy_instance_power_on(str
- u32 index = instance->index;
- u32 tmp;
-
- - /* (force_suspendm=0) (let suspendm=1, enable usb 480MHz pll) */
- tmp = readl(com + U3P_U2PHYDTM0);
- - tmp &= ~(P2C_FORCE_SUSPENDM | P2C_RG_XCVRSEL);
- - tmp &= ~(P2C_RG_DATAIN | P2C_DTM0_PART_MASK);
- + tmp &= ~(P2C_RG_XCVRSEL | P2C_RG_DATAIN | P2C_DTM0_PART_MASK);
- writel(tmp, com + U3P_U2PHYDTM0);
-
- /* OTG Enable */
- @@ -540,7 +538,6 @@ static void u2_phy_instance_power_off(st
-
- tmp = readl(com + U3P_U2PHYDTM0);
- tmp &= ~(P2C_RG_XCVRSEL | P2C_RG_DATAIN);
- - tmp |= P2C_FORCE_SUSPENDM;
- writel(tmp, com + U3P_U2PHYDTM0);
-
- /* OTG Disable */
- @@ -548,18 +545,16 @@ static void u2_phy_instance_power_off(st
- tmp &= ~PA6_RG_U2_OTG_VBUSCMP_EN;
- writel(tmp, com + U3P_USBPHYACR6);
-
- - /* let suspendm=0, set utmi into analog power down */
- - tmp = readl(com + U3P_U2PHYDTM0);
- - tmp &= ~P2C_RG_SUSPENDM;
- - writel(tmp, com + U3P_U2PHYDTM0);
- - udelay(1);
- -
- tmp = readl(com + U3P_U2PHYDTM1);
- tmp &= ~(P2C_RG_VBUSVALID | P2C_RG_AVALID);
- tmp |= P2C_RG_SESSEND;
- writel(tmp, com + U3P_U2PHYDTM1);
-
- if (tphy->pdata->avoid_rx_sen_degradation && index) {
- + tmp = readl(com + U3P_U2PHYDTM0);
- + tmp &= ~(P2C_RG_SUSPENDM | P2C_FORCE_SUSPENDM);
- + writel(tmp, com + U3P_U2PHYDTM0);
- +
- tmp = readl(com + U3D_U2PHYDCR0);
- tmp &= ~P2C_RG_SIF_U2PLL_FORCE_ON;
- writel(tmp, com + U3D_U2PHYDCR0);
|