lkml.org 
[lkml]   [2019]   [Oct]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH v4 9/9] usb: dwc3: Add host-mode as default support
    Date

    Hi,

    John Stultz <john.stultz@linaro.org> writes:
    > Support configuring the default role the controller assumes as
    > host mode when the usb role is USB_ROLE_NONE
    >
    > This patch was split out from a larger patch originally by
    > Yu Chen <chenyu56@huawei.com>
    >
    > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    > Cc: Rob Herring <robh+dt@kernel.org>
    > Cc: Mark Rutland <mark.rutland@arm.com>
    > CC: ShuFan Lee <shufan_lee@richtek.com>
    > Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    > Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
    > Cc: Chunfeng Yun <chunfeng.yun@mediatek.com>
    > Cc: Yu Chen <chenyu56@huawei.com>
    > Cc: Felipe Balbi <balbi@kernel.org>
    > Cc: Hans de Goede <hdegoede@redhat.com>
    > Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
    > Cc: Jun Li <lijun.kernel@gmail.com>
    > Cc: Valentin Schneider <valentin.schneider@arm.com>
    > Cc: Jack Pham <jackp@codeaurora.org>
    > Cc: linux-usb@vger.kernel.org
    > Cc: devicetree@vger.kernel.org
    > Signed-off-by: John Stultz <john.stultz@linaro.org>
    > ---
    > v3: Split this patch out from addition of usb-role-switch
    > handling
    > ---
    > drivers/usb/dwc3/core.h | 3 +++
    > drivers/usb/dwc3/drd.c | 20 ++++++++++++++++----
    > 2 files changed, 19 insertions(+), 4 deletions(-)
    >
    > diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
    > index 6f19e9891767..3c879c9ab1aa 100644
    > --- a/drivers/usb/dwc3/core.h
    > +++ b/drivers/usb/dwc3/core.h
    > @@ -953,6 +953,8 @@ struct dwc3_scratchpad_array {
    > * - USBPHY_INTERFACE_MODE_UTMI
    > * - USBPHY_INTERFACE_MODE_UTMIW
    > * @role_sw: usb_role_switch handle
    > + * @role_switch_default_mode: default operation mode of controller while
    > + * usb role is USB_ROLE_NONE.
    > * @usb2_phy: pointer to USB2 PHY
    > * @usb3_phy: pointer to USB3 PHY
    > * @usb2_generic_phy: pointer to USB2 PHY
    > @@ -1087,6 +1089,7 @@ struct dwc3 {
    > struct notifier_block edev_nb;
    > enum usb_phy_interface hsphy_mode;
    > struct usb_role_switch *role_sw;
    > + enum usb_dr_mode role_switch_default_mode;
    >
    > u32 fladj;
    > u32 irq_gadget;
    > diff --git a/drivers/usb/dwc3/drd.c b/drivers/usb/dwc3/drd.c
    > index 61d4fd8aead4..0e3466fe5ac4 100644
    > --- a/drivers/usb/dwc3/drd.c
    > +++ b/drivers/usb/dwc3/drd.c
    > @@ -489,7 +489,10 @@ static int dwc3_usb_role_switch_set(struct device *dev, enum usb_role role)
    > mode = DWC3_GCTL_PRTCAP_DEVICE;
    > break;
    > default:
    > - mode = DWC3_GCTL_PRTCAP_DEVICE;
    > + if (dwc->role_switch_default_mode == USB_DR_MODE_HOST)
    > + mode = DWC3_GCTL_PRTCAP_HOST;
    > + else
    > + mode = DWC3_GCTL_PRTCAP_DEVICE;
    > break;
    > }
    >
    > @@ -515,7 +518,10 @@ static enum usb_role dwc3_usb_role_switch_get(struct device *dev)
    > role = dwc->current_otg_role;
    > break;
    > default:
    > - role = USB_ROLE_DEVICE;
    > + if (dwc->role_switch_default_mode == USB_DR_MODE_HOST)
    > + role = USB_ROLE_HOST;

    look at this, we now have 3 different encodings for role which DWC3
    needs to understand. One is its own PRTCAP_DIR, then there USB_DR_MODE_*
    and now USB_ROLE_*, can we make it so that we only have one private
    encoding and one generic encoding?

    --
    balbi
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2019-10-29 10:27    [W:4.208 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site