lkml.org 
[lkml]   [2019]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 2/3] usb: chipidea: set mode for usb phy driver
    Date
    From: Li Jun <jun.li@nxp.com>

    After enters one specific role, notify usb phy driver.

    Signed-off-by: Li Jun <jun.li@nxp.com>
    Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
    ---

    v2:
    - restored original commit author
    - fixed build for multi_v7

    drivers/usb/chipidea/ci.h | 21 ++++++++++++++++++---
    1 file changed, 18 insertions(+), 3 deletions(-)

    diff --git a/drivers/usb/chipidea/ci.h b/drivers/usb/chipidea/ci.h
    index 6911aef500e9..cf9cc9402826 100644
    --- a/drivers/usb/chipidea/ci.h
    +++ b/drivers/usb/chipidea/ci.h
    @@ -275,9 +275,21 @@ static inline int ci_role_start(struct ci_hdrc *ci, enum ci_role role)
    return -ENXIO;

    ret = ci->roles[role]->start(ci);
    - if (!ret)
    - ci->role = role;
    - return ret;
    + if (ret)
    + return ret;
    +
    + ci->role = role;
    +
    + if (ci->usb_phy) {
    + if (role == CI_ROLE_HOST)
    + usb_phy_set_mode(ci->usb_phy,
    + USB_CURRENT_MODE_HOST);
    + else
    + usb_phy_set_mode(ci->usb_phy,
    + USB_CURRENT_MODE_DEVICE);
    + }
    +
    + return 0;
    }

    static inline void ci_role_stop(struct ci_hdrc *ci)
    @@ -290,6 +302,9 @@ static inline void ci_role_stop(struct ci_hdrc *ci)
    ci->role = CI_ROLE_END;

    ci->roles[role]->stop(ci);
    +
    + if (ci->usb_phy)
    + usb_phy_set_mode(ci->usb_phy, USB_CURRENT_MODE_NONE);
    }

    static inline enum usb_role ci_role_to_usb_role(struct ci_hdrc *ci)
    --
    2.17.1
    \
     
     \ /
      Last update: 2019-10-10 15:58    [W:5.386 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site