Re: [PATCH v7 00/18] Enable Qualcomm QCS 404 HS/SS USB

From: Bjorn Andersson
Date: Sun Mar 08 2020 - 00:23:22 EST


On Tue 03 Mar 09:11 PST 2020, Bryan O'Donoghue wrote:

> V1:
> This series enables the Primary and Secondary USB controllers on the
> QCS404, associated PHYs, role-switching and DTS descriptions.
>

Finally took the time to give this a spin on my QCS404 dev board.

Tested-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx>


As this touches three different subsystems, and doesn't have have
compile time dependencies between the parts, I would suggest that as you
fix up the build error I reported yesterday you send v8 as three
different series - one per maintainer/subsystem. That way we avoid any
questions about whom should merge what parts and in what order.

Thanks,
Bjorn

> The series takes in a number of patches worked on by a number of people
> over the past few years from downstream, through to previous upstream
> submissions for both of these interfaces. Additional work has been done to
> enable USB role-switching.
>
> 1. USB SS
> - extcon has been dropped in favour of gpio-usb-conn as discussed and
> agreed previously by Jorge, Bjorn, Stephen Boyd and Jack Pham [1].
>
> - Regulator API has been updated following suggestions from Bjorn.
>
> - Sanitzation of the DT compatible name - dropped "snps" entirely
> from the name - it made almost no sense to me and doesn't appear
> consistent with similar naming conventions for Snopsys based IP.
>
> 2. USB HS
> - Regulator API changes here.
> - Dropped "snps" from the namespace for similar reasons as above.
> - Dropped "28nm" from the namespace, looked superfluous.
> - Changed "High-Speed" to "Hi-Speed".
> - [2]
>
> 3. DWC3 Role switching
> - At the time usb-gpio-conn was discussed it was mentioned that
> role-switching was absent from the DWC3 driver.
> - John Stultz has some patches in-flight for that, that I've included in
> this series for completeness.
> - Adds my SoB to relevant patches.
> - Drops gerrit ChangeId.
>
> 4. DWC3 usb-gpio-conn
> Needs to be a child node of the DWC3 driver so some code and DT binding
> is required for that.
>
> 5. QCOM-DWC3
> Since we are role-switching with an external PMIC supplying VBUS we want
> to skip past toggling VBUS from QCOM-DWC3 controlled registers, so a
> patch is added to the qcom-dwc3 driver to do that.
>
> References:
>
> 1: USB SS PHY for Qualcomm's QCS404
> https://lwn.net/ml/devicetree/20190207111734.24171-1-jorge.ramirez-ortiz@xxxxxxxxxx/
>
> 2: Add Synopsys High-Speed USB PHY driver for Qualcomm SoCs
> https://lore.kernel.org/linux-arm-msm/20181127100722.9993-3-shawn.guo@xxxxxxxxxx/
>
> https://www.spinics.net/lists/linux-usb/msg190003.html
>
> V2:
> - Fixes yaml error - Rob's YAML robot
> - Exclusive control of reset in PHY drivers - Philipp Zabel
>
> V3:
> - Fixes typo generating YAML warning - Rob's YAML robot
>
> V4:
>
> https://lore.kernel.org/linux-arm-msm/20200122185610.131930-1-bryan.odonoghue@xxxxxxxxxx/
>
> - Churn names of PHYs - Rob Herring
> Rob questioned the name of the SuperSpeed PHY in V3.
> Looking at available data
>
> usb-hs-28nm - There are two possible PHYs on 28nm litho node
> so it makes sense to name the PHY relating to its relevant
> litho node.
>
> usb-ss - This is not litho node dependent and is used on multiple SoCs
> and litho nodes.
>
> - Drop default mode for role switching - Felipe Balbi
> Felipe asked if the default mode for role switching was
> required and the answer is no. It makes no difference
> becuase the USB ID pin ultimately dictates the mode of operation.
>
> - Change "gpio_usb_connector" to "connector" - Rob
> This was a minor change in terms of DTS but, means I need to look for the
> DTS compatible string as opposed to a label given in the DTS.
> No matter what the name of the label, this is he right thing to do.
>
> - Used IS_ENABLED() - Felipe
> The logic is the same but IS_ENABLED() is used now.
>
> - Retained example of USB connector in dwc.txt - Rob, Felipe
> Rob pointed out adding the connector was redundant as the documentation
> already implies it.
> Felipe seemed in favour of I think adding the example.
> I've dropped the documentation of the connector and kept the example.
> https://lore.kernel.org/linux-arm-msm/20200122185610.131930-7-bryan.odonoghue@xxxxxxxxxx/
>
> - Added example of usb-role-switch in dwc3.txt - BOD
>
> - Incorporated various inputs from Rob on DTS/YAML
> - Added required:
> - Added additionalProperties:
> - Renamed "phy" clock to "ahb"
> - maxItems dropped as indicated
>
> V5:
> - https://lkml.org/lkml/2020/2/6/913
>
> - Adds a notifier to DWC3 - BOD
> This is done in order to allow propagation of role-switch events from the
> DWC3 core to an associated binding layer.
>
> - Re-use the existent EXTCON VBUS power lane toggle logic - Jack Pham
> Jack flagged this for inclusion and as a result we need to make a
> small change to the qcom binding layer.
>
> - Squash DTS changes - BOD
> I've squashed down some of the DTS changes to stop the patch count in
> this series going up any further.
>
> V6:
> - https://lkml.org/lkml/2020/2/7/632
>
> - Add RB Jack Pham patch # 11
>
> - Fix a stale description in git log patch # 10
>
> V7:
> - https://lkml.org/lkml/2020/2/10/258
>
> - Adds RB Rob Herring as indicated
>
> - Updates the naming of the USB SS PHY for the particular SoC.
> The name of the driver is maintained, as previously mentioned, this
> IP appears to be in use on the 20nm and 28nm nodes. However taking
> Rob's feedback on the naming of the SoC specific bit the code being added
> is specified @ 28nm.
> If/when we come to add in 20nm for this IP we can add a new compatible
> for 20nm.
> Rob Herring
>
> Bjorn Andersson (1):
> arm64: dts: qcom: qcs404: Add USB devices and PHYs
>
> Bryan O'Donoghue (11):
> dt-bindings: usb: dwc3: Add a gpio-usb-connector example
> dt-bindings: usb: dwc3: Add a usb-role-switch to the example
> usb: dwc3: qcom: Add support for usb-conn-gpio connectors
> usb: dwc3: Add support for usb-conn-gpio connectors
> usb: dwc3: Add support for a role-switch notifier
> usb: dwc3: qcom: Enable gpio-usb-conn based role-switching
> arm64: dts: qcom: qcs404-evb: Define VBUS pins
> arm64: dts: qcom: qcs404-evb: Define USB ID pin
> arm64: dts: qcom: qcs404-evb: Describe external VBUS regulator
> arm64: dts: qcom: qcs404-evb: Raise vreg_l12_3p3 minimum voltage
> arm64: dts: qcom: qcs404-evb: Enable USB controllers
>
> Jorge Ramirez-Ortiz (3):
> dt-bindings: phy: remove qcom-dwc3-usb-phy
> dt-bindings: Add Qualcomm USB SuperSpeed PHY bindings
> phy: qualcomm: usb: Add SuperSpeed PHY driver
>
> Shawn Guo (1):
> phy: qualcomm: Add Synopsys 28nm Hi-Speed USB PHY driver
>
> Sriharsha Allenki (1):
> dt-bindings: phy: Add Qualcomm Synopsys Hi-Speed USB PHY binding
>
> Yu Chen (1):
> usb: dwc3: Registering a role switch in the DRD code.
>
> .../bindings/phy/qcom,usb-hs-28nm.yaml | 90 ++++
> .../devicetree/bindings/phy/qcom,usb-ss.yaml | 83 ++++
> .../bindings/phy/qcom-dwc3-usb-phy.txt | 37 --
> .../devicetree/bindings/usb/dwc3.txt | 9 +
> arch/arm64/boot/dts/qcom/qcs404-evb.dtsi | 90 +++-
> arch/arm64/boot/dts/qcom/qcs404.dtsi | 100 +++++
> drivers/phy/qualcomm/Kconfig | 20 +
> drivers/phy/qualcomm/Makefile | 2 +
> drivers/phy/qualcomm/phy-qcom-usb-hs-28nm.c | 415 ++++++++++++++++++
> drivers/phy/qualcomm/phy-qcom-usb-ss.c | 246 +++++++++++
> drivers/usb/dwc3/core.h | 22 +
> drivers/usb/dwc3/drd.c | 119 ++++-
> drivers/usb/dwc3/dwc3-qcom.c | 31 +-
> 13 files changed, 1223 insertions(+), 41 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/phy/qcom,usb-hs-28nm.yaml
> create mode 100644 Documentation/devicetree/bindings/phy/qcom,usb-ss.yaml
> delete mode 100644 Documentation/devicetree/bindings/phy/qcom-dwc3-usb-phy.txt
> create mode 100644 drivers/phy/qualcomm/phy-qcom-usb-hs-28nm.c
> create mode 100644 drivers/phy/qualcomm/phy-qcom-usb-ss.c
>
> --
> 2.25.1
>