mbox series

[v4,0/3] RK3588 USB3 host controller support

Message ID 20231020150022.48725-1-sebastian.reichel@collabora.com
Headers show
Series RK3588 USB3 host controller support | expand

Message

Sebastian Reichel Oct. 20, 2023, 2:11 p.m. UTC
Hi,

This adds RK3588 USB3 host controller support. The same DT binding
will be used for the two dual-role controllers, which are also DWC3
based, but using a different PHY and don't need the extra UTMI/PIPE
clocks.

The series has been tested with Radxa Rock 5B, which uses the controller
for the upper USB3 port. The patch enabling &combphy2_psu and &usbhost3_0
for this board will be send separately once this series has been merged.

Changes since PATCHv3:
 * https://lore.kernel.org/all/20231009172129.43568-1-sebastian.reichel@collabora.com/
 * update binding, simplifying "rockchip,rk3568-dwc3"
 * update binding, no need to specify min/max items for "rockchip,rk3588-dwc3"
 * add driver inline comment, that "utmi" and "pipe" are RK3588 specific

Changes since PATCHv2:
 * https://lore.kernel.org/all/20230720173643.69553-1-sebastian.reichel@collabora.com/
 * update binding, so that "utmi" and "pipe" clocks may only be used on RK3588;
   at the same time do not allow "grf_clk" for RK3568, which does not have a GRF
   clock for USB3.

Changes since PATCHv1:
 * https://lore.kernel.org/all/20230719174015.68153-1-sebastian.reichel@collabora.com/
 * use same compatible for USB3 host and drd controllers (Krzysztof Kozlowski)
 * do not update reset-names (Krzysztof Kozlowski)
   - note: I dropped reset-names property, since there is only one reset line
     anyways. Binding could stay the same, since the reset-names property is
     optional
 * use "ref_clk", "suspend_clk" and "bus_clk" instead of "ref", "suspend" and "bus",
   so that they are the same as in RK3568 (Krzysztof Kozlowski)
 * rename handle name to "usb_host2_xhci" (Michael Riesch)
 * use RK356x style DWC3 binding instead of DWC3399 style
   - required adding an extra patch, so that the DWC3 core supports enabling
     the UTMI/PIPE clocks

-- Sebastian

Sebastian Reichel (3):
  dt-bindings: usb: add rk3588 compatible to rockchip,dwc3
  usb: dwc3: add optional PHY interface clocks
  arm64: dts: rockchip: rk3588s: Add USB3 host controller

 .../bindings/usb/rockchip,dwc3.yaml           | 60 +++++++++++++++++--
 arch/arm64/boot/dts/rockchip/rk3588s.dtsi     | 21 +++++++
 drivers/usb/dwc3/core.c                       | 28 +++++++++
 drivers/usb/dwc3/core.h                       |  4 ++
 4 files changed, 108 insertions(+), 5 deletions(-)

Comments

Rob Herring (Arm) Oct. 22, 2023, 9:42 p.m. UTC | #1
On Fri, Oct 20, 2023 at 06:03:29PM +0200, Sebastian Reichel wrote:
> Hi Conor,
> 
> On Fri, Oct 20, 2023 at 04:36:19PM +0100, Conor Dooley wrote:
> > On Fri, Oct 20, 2023 at 04:11:40PM +0200, Sebastian Reichel wrote:
> > > [...]
> > > +allOf:
> > > +  - $ref: snps,dwc3.yaml#
> > > +  - if:
> > > +      properties:
> > > +        compatible:
> > > +          contains:
> > > +            const: rockchip,rk3328-dwc3
> > > +    then:
> > > +      properties:
> > > +        clocks:
> > > +          minItems: 3
> > > +          maxItems: 4
> > > +        clock-names:
> > > +          minItems: 3
> > > +          items:
> > > +            - const: ref_clk
> > > +            - const: suspend_clk
> > > +            - const: bus_clk
> > > +            - const: grf_clk
> > 
> > minItems for clocks and clock-names is already 3, is it not?
> 
> Yes, but the following 'maxItems: 4' implicitly sets it to 4,
> so I had to set it again. The same is true for clock-names -
> providings new 'items:' effectively drops the "minItems: 3"
> from the generic section.

Are you sure? We don't add anything implicit in the if/then schemas. 
Could be a tool issue though.

Rob
Rob Herring (Arm) Oct. 23, 2023, 10:42 p.m. UTC | #2
On Mon, Oct 23, 2023 at 02:18:03AM +0200, Sebastian Reichel wrote:
> Hi Rob,
> 
> On Sun, Oct 22, 2023 at 04:42:19PM -0500, Rob Herring wrote:
> > On Fri, Oct 20, 2023 at 06:03:29PM +0200, Sebastian Reichel wrote:
> > > On Fri, Oct 20, 2023 at 04:36:19PM +0100, Conor Dooley wrote:
> > > > On Fri, Oct 20, 2023 at 04:11:40PM +0200, Sebastian Reichel wrote:
> > > > > [...]
> > > > > +allOf:
> > > > > +  - $ref: snps,dwc3.yaml#
> > > > > +  - if:
> > > > > +      properties:
> > > > > +        compatible:
> > > > > +          contains:
> > > > > +            const: rockchip,rk3328-dwc3
> > > > > +    then:
> > > > > +      properties:
> > > > > +        clocks:
> > > > > +          minItems: 3
> > > > > +          maxItems: 4
> > > > > +        clock-names:
> > > > > +          minItems: 3
> > > > > +          items:
> > > > > +            - const: ref_clk
> > > > > +            - const: suspend_clk
> > > > > +            - const: bus_clk
> > > > > +            - const: grf_clk
> > > > 
> > > > minItems for clocks and clock-names is already 3, is it not?
> > > 
> > > Yes, but the following 'maxItems: 4' implicitly sets it to 4,
> > > so I had to set it again. The same is true for clock-names -
> > > providings new 'items:' effectively drops the "minItems: 3"
> > > from the generic section.
> > 
> > Are you sure? We don't add anything implicit in the if/then schemas. 
> > Could be a tool issue though.
> 
> I had this issue in the past. But just in case I also did a re-test
> before sending my last mail and I did get a warning. So yes, I'm
> quite sure :)

Well, I'm quite surprised no one else noticed. Anyways, I'm working on a 
fix for it. In the meantime, just leave it as you have it.

Note that there's an existing error in this binding I noticed in the 
example. The clocks and clock-names lengths don't match.

Rob