lkml.org 
[lkml]   [2019]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.20 115/352] usb: mtu3: fix the issue about SetFeature(U1/U2_Enable)
    Date
    4.20-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    [ Upstream commit a0678e2eed41e81004308693ac84ea95614b0920 ]

    Fix the issue: device doesn't accept LGO_U1/U2:
    1. set SW_U1/U2_ACCEPT_ENABLE to eanble controller to accept LGO_U1/U2
    by default;
    2. enable/disable controller to initiate requests for transition into
    U1/U2 by SW_U1/U2_REQUEST_ENABLE instead of SW_U1/U2_ACCEPT_ENABLE;

    Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/usb/mtu3/mtu3_core.c | 4 +++-
    drivers/usb/mtu3/mtu3_gadget_ep0.c | 8 ++++----
    2 files changed, 7 insertions(+), 5 deletions(-)

    diff --git a/drivers/usb/mtu3/mtu3_core.c b/drivers/usb/mtu3/mtu3_core.c
    index ae70b9bfd797..860693520132 100644
    --- a/drivers/usb/mtu3/mtu3_core.c
    +++ b/drivers/usb/mtu3/mtu3_core.c
    @@ -578,8 +578,10 @@ static void mtu3_regs_init(struct mtu3 *mtu)
    if (mtu->is_u3_ip) {
    /* disable LGO_U1/U2 by default */
    mtu3_clrbits(mbase, U3D_LINK_POWER_CONTROL,
    - SW_U1_ACCEPT_ENABLE | SW_U2_ACCEPT_ENABLE |
    SW_U1_REQUEST_ENABLE | SW_U2_REQUEST_ENABLE);
    + /* enable accept LGO_U1/U2 link command from host */
    + mtu3_setbits(mbase, U3D_LINK_POWER_CONTROL,
    + SW_U1_ACCEPT_ENABLE | SW_U2_ACCEPT_ENABLE);
    /* device responses to u3_exit from host automatically */
    mtu3_clrbits(mbase, U3D_LTSSM_CTRL, SOFT_U3_EXIT_EN);
    /* automatically build U2 link when U3 detect fail */
    diff --git a/drivers/usb/mtu3/mtu3_gadget_ep0.c b/drivers/usb/mtu3/mtu3_gadget_ep0.c
    index 25216e79cd6e..3c464d8ae023 100644
    --- a/drivers/usb/mtu3/mtu3_gadget_ep0.c
    +++ b/drivers/usb/mtu3/mtu3_gadget_ep0.c
    @@ -336,9 +336,9 @@ static int ep0_handle_feature_dev(struct mtu3 *mtu,

    lpc = mtu3_readl(mbase, U3D_LINK_POWER_CONTROL);
    if (set)
    - lpc |= SW_U1_ACCEPT_ENABLE;
    + lpc |= SW_U1_REQUEST_ENABLE;
    else
    - lpc &= ~SW_U1_ACCEPT_ENABLE;
    + lpc &= ~SW_U1_REQUEST_ENABLE;
    mtu3_writel(mbase, U3D_LINK_POWER_CONTROL, lpc);

    mtu->u1_enable = !!set;
    @@ -351,9 +351,9 @@ static int ep0_handle_feature_dev(struct mtu3 *mtu,

    lpc = mtu3_readl(mbase, U3D_LINK_POWER_CONTROL);
    if (set)
    - lpc |= SW_U2_ACCEPT_ENABLE;
    + lpc |= SW_U2_REQUEST_ENABLE;
    else
    - lpc &= ~SW_U2_ACCEPT_ENABLE;
    + lpc &= ~SW_U2_REQUEST_ENABLE;
    mtu3_writel(mbase, U3D_LINK_POWER_CONTROL, lpc);

    mtu->u2_enable = !!set;
    --
    2.19.1


    \
     
     \ /
      Last update: 2019-02-11 17:07    [W:3.272 / U:0.276 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site