Message ID | 20230315104411.73614-6-minda.chen@starfivetech.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp2254094wrd; Wed, 15 Mar 2023 03:48:58 -0700 (PDT) X-Google-Smtp-Source: AK7set/SwazU0mhYWSshNaLt/I/zFUrhoYIckn8E+4ARgdCgbUVkm1Y0mIADxYqyrDlt7vuOcaOR X-Received: by 2002:a62:2581:0:b0:5a9:cb6b:7843 with SMTP id l123-20020a622581000000b005a9cb6b7843mr32683459pfl.27.1678877338375; Wed, 15 Mar 2023 03:48:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1678877338; cv=none; d=google.com; s=arc-20160816; b=P3zBPExo7OOLW+Mp0mZO9z+8U59GeErxQVLaBxb1PxzbluMDHd4ugDDRn0Euq1McYN qFetF5hPQ3TppNtetGbE4Bmdnlf0zKAAV4TljsuIeuQxIhTAtfyLkSMUer6BQRvZOGoQ Ml/JOEkS8ZzF+1FcKP1aPQwW4Ru5Eex33FSD8Qr53tHRnF2RzLOEmA26kAWL28fCkR2f bvubMUhP6twz3sWjmFKwLERP2WovbEujPtUdFOL/a9T1M8mpNZR9sKHacv5sOueM8rVB GChzcfBrG5i8vgXwiYdKso6WMG/q9WNYH0qGkvEEKO7L4triR2G3PuCqVQCUGKT/fzL5 QBdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from; bh=AsPcEX7I0a+6rAf3FzNdykQiP7gnWcmoVAq2dpO0FwE=; b=BpGUF0YTVwID+OfNvnrp0AqimHtoe8EKs/Mh9I16a1cBqXHTaAo9kWnvtomXtQ8Y73 HcrJlkKT6mf3l2nV6M+iiRFTn+RX6TuH695pAP8uw4HoHv6JhwNjW1BvO61P65xvQPh8 4621J495s1+9bbD/OUHiesyz13fSc6yuJPaZD+9Ns5dQ8N9USPuMI/vsFbG2Gu8F4frW Uxa5DWROjpdQQSyxXWqU8Y2TLl1tuQzFptholRWfFg74TM9TUy90P7Q+MD/iUl5Sfem1 eUA/9ezaSf+/1MhC+0woq5eJMAE5mKMIDf/KJHL/XvUMNW42d3XJmdFRKSDfWpOvYozD KRxw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b17-20020aa78ed1000000b005e2c94ead4csi4490516pfr.121.2023.03.15.03.48.43; Wed, 15 Mar 2023 03:48:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231680AbjCOKoe (ORCPT <rfc822;realc9580@gmail.com> + 99 others); Wed, 15 Mar 2023 06:44:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42140 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232262AbjCOKoW (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Wed, 15 Mar 2023 06:44:22 -0400 Received: from fd01.gateway.ufhost.com (fd01.gateway.ufhost.com [61.152.239.71]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9A5C27C974; Wed, 15 Mar 2023 03:44:20 -0700 (PDT) Received: from EXMBX165.cuchost.com (unknown [175.102.18.54]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "EXMBX165", Issuer "EXMBX165" (not verified)) by fd01.gateway.ufhost.com (Postfix) with ESMTP id 3CD1624E391; Wed, 15 Mar 2023 18:44:19 +0800 (CST) Received: from EXMBX071.cuchost.com (172.16.6.81) by EXMBX165.cuchost.com (172.16.6.75) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Wed, 15 Mar 2023 18:44:19 +0800 Received: from ubuntu.localdomain (113.72.145.194) by EXMBX071.cuchost.com (172.16.6.81) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Wed, 15 Mar 2023 18:44:18 +0800 From: Minda Chen <minda.chen@starfivetech.com> To: Emil Renner Berthing <emil.renner.berthing@canonical.com>, Conor Dooley <conor@kernel.org>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Pawel Laszczak <pawell@cadence.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Peter Chen <peter.chen@kernel.org>, Roger Quadros <rogerq@kernel.org>, Philipp Zabel <p.zabel@pengutronix.de> CC: <devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <linux-phy@lists.infradead.org>, <linux-usb@vger.kernel.org>, <linux-riscv@lists.infradead.org>, Paul Walmsley <paul.walmsley@sifive.com>, Palmer Dabbelt <palmer@dabbelt.com>, Albert Ou <aou@eecs.berkeley.edu>, "Minda Chen" <minda.chen@starfivetech.com> Subject: [PATCH v3 5/5] dts: usb: add StarFive JH7110 USB dts configuration. Date: Wed, 15 Mar 2023 18:44:11 +0800 Message-ID: <20230315104411.73614-6-minda.chen@starfivetech.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230315104411.73614-1-minda.chen@starfivetech.com> References: <20230315104411.73614-1-minda.chen@starfivetech.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [113.72.145.194] X-ClientProxiedBy: EXCAS066.cuchost.com (172.16.6.26) To EXMBX071.cuchost.com (172.16.6.81) X-YovoleRuleAgent: yovoleflag X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H2, SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760430483738120136?= X-GMAIL-MSGID: =?utf-8?q?1760430483738120136?= |
Series |
Add JH7110 USB and USB PHY driver support
|
|
Commit Message
Minda Chen
March 15, 2023, 10:44 a.m. UTC
USB Glue layer and Cadence USB subnode configuration,
also includes USB and PCIe phy dts configuration.
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
---
.../jh7110-starfive-visionfive-2.dtsi | 7 +++
arch/riscv/boot/dts/starfive/jh7110.dtsi | 54 +++++++++++++++++++
2 files changed, 61 insertions(+)
Comments
On 23-03-15 18:44:11, Minda Chen wrote: > USB Glue layer and Cadence USB subnode configuration, > also includes USB and PCIe phy dts configuration. > > Signed-off-by: Minda Chen <minda.chen@starfivetech.com> > --- > .../jh7110-starfive-visionfive-2.dtsi | 7 +++ > arch/riscv/boot/dts/starfive/jh7110.dtsi | 54 +++++++++++++++++++ > 2 files changed, 61 insertions(+) > > diff --git a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi > index a132debb9b53..c64476aebc1a 100644 > --- a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi > +++ b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi > @@ -236,3 +236,10 @@ > pinctrl-0 = <&uart0_pins>; > status = "okay"; > }; > + > +&usb0 { > + status = "okay"; > + usbdrd_cdns3: usb@0 { > + dr_mode = "peripheral"; > + }; > +}; > diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi > index f70a4ed47eb4..17722fd1be62 100644 > --- a/arch/riscv/boot/dts/starfive/jh7110.dtsi > +++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi > @@ -362,6 +362,60 @@ > status = "disabled"; > }; > > + usb0: usb@10100000 { > + compatible = "starfive,jh7110-usb"; > + clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>, > + <&stgcrg JH7110_STGCLK_USB0_STB>, > + <&stgcrg JH7110_STGCLK_USB0_APB>, > + <&stgcrg JH7110_STGCLK_USB0_AXI>, > + <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>; > + clock-names = "lpm", "stb", "apb", "axi", "utmi_apb"; > + resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>, > + <&stgcrg JH7110_STGRST_USB0_APB>, > + <&stgcrg JH7110_STGRST_USB0_AXI>, > + <&stgcrg JH7110_STGRST_USB0_UTMI_APB>; > + starfive,stg-syscon = <&stg_syscon 0x4 0xc4 0x148 0x1f4>; > + starfive,sys-syscon = <&sys_syscon 0x18>; > + status = "disabled"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x0 0x0 0x10100000 0x100000>; Why it is four entry at ranges? Your address-cells and size-cells are both 1, and your binding-doc is also three? Peter > + > + usbdrd_cdns3: usb@0 { > + compatible = "cdns,usb3"; > + reg = <0x0 0x10000>, > + <0x10000 0x10000>, > + <0x20000 0x10000>; > + reg-names = "otg", "xhci", "dev"; > + interrupts = <100>, <108>, <110>; > + interrupt-names = "host", "peripheral", "otg"; > + phys = <&usbphy0>; > + phy-names = "cdns3,usb2-phy"; > + maximum-speed = "super-speed"; > + }; > + }; > + > + usbphy0: phy@10200000 { > + compatible = "starfive,jh7110-usb-phy"; > + reg = <0x0 0x10200000 0x0 0x10000>; > + clocks = <&syscrg JH7110_SYSCLK_USB_125M>, > + <&stgcrg JH7110_STGCLK_USB0_APP_125>; > + clock-names = "125m", "app_125"; > + #phy-cells = <0>; > + }; > + > + pciephy0: phy@10210000 { > + compatible = "starfive,jh7110-pcie-phy"; > + reg = <0x0 0x10210000 0x0 0x10000>; > + #phy-cells = <0>; > + }; > + > + pciephy1: phy@10220000 { > + compatible = "starfive,jh7110-pcie-phy"; > + reg = <0x0 0x10220000 0x0 0x10000>; > + #phy-cells = <0>; > + }; > + > stgcrg: clock-controller@10230000 { > compatible = "starfive,jh7110-stgcrg"; > reg = <0x0 0x10230000 0x0 0x10000>; > -- > 2.17.1 >
On 2023/3/16 10:43, Peter Chen wrote: > On 23-03-15 18:44:11, Minda Chen wrote: >> USB Glue layer and Cadence USB subnode configuration, >> also includes USB and PCIe phy dts configuration. >> >> Signed-off-by: Minda Chen <minda.chen@starfivetech.com> >> --- >> .../jh7110-starfive-visionfive-2.dtsi | 7 +++ >> arch/riscv/boot/dts/starfive/jh7110.dtsi | 54 +++++++++++++++++++ >> 2 files changed, 61 insertions(+) >> >> diff --git a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >> index a132debb9b53..c64476aebc1a 100644 >> --- a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >> +++ b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >> @@ -236,3 +236,10 @@ >> pinctrl-0 = <&uart0_pins>; >> status = "okay"; >> }; >> + >> +&usb0 { >> + status = "okay"; >> + usbdrd_cdns3: usb@0 { >> + dr_mode = "peripheral"; >> + }; >> +}; >> diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi >> index f70a4ed47eb4..17722fd1be62 100644 >> --- a/arch/riscv/boot/dts/starfive/jh7110.dtsi >> +++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi >> @@ -362,6 +362,60 @@ >> status = "disabled"; >> }; >> >> + usb0: usb@10100000 { >> + compatible = "starfive,jh7110-usb"; >> + clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>, >> + <&stgcrg JH7110_STGCLK_USB0_STB>, >> + <&stgcrg JH7110_STGCLK_USB0_APB>, >> + <&stgcrg JH7110_STGCLK_USB0_AXI>, >> + <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>; >> + clock-names = "lpm", "stb", "apb", "axi", "utmi_apb"; >> + resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>, >> + <&stgcrg JH7110_STGRST_USB0_APB>, >> + <&stgcrg JH7110_STGRST_USB0_AXI>, >> + <&stgcrg JH7110_STGRST_USB0_UTMI_APB>; >> + starfive,stg-syscon = <&stg_syscon 0x4 0xc4 0x148 0x1f4>; >> + starfive,sys-syscon = <&sys_syscon 0x18>; >> + status = "disabled"; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + ranges = <0x0 0x0 0x10100000 0x100000>; > > Why it is four entry at ranges? Your address-cells and size-cells are > both 1, and your binding-doc is also three? > > Peter Because the parent soc node address-cells is 2. So the local address is 2 entry. soc { compatible = "simple-bus"; interrupt-parent = <&plic>; #address-cells = <2>; #size-cells = <2>; ranges; ... So should I change the binding-doc ? >> + >> + usbdrd_cdns3: usb@0 { >> + compatible = "cdns,usb3"; >> + reg = <0x0 0x10000>, >> + <0x10000 0x10000>, >> + <0x20000 0x10000>; >> + reg-names = "otg", "xhci", "dev"; >> + interrupts = <100>, <108>, <110>; >> + interrupt-names = "host", "peripheral", "otg"; >> + phys = <&usbphy0>; >> + phy-names = "cdns3,usb2-phy"; >> + maximum-speed = "super-speed"; >> + }; >> + }; >> + >> + usbphy0: phy@10200000 { >> + compatible = "starfive,jh7110-usb-phy"; >> + reg = <0x0 0x10200000 0x0 0x10000>; >> + clocks = <&syscrg JH7110_SYSCLK_USB_125M>, >> + <&stgcrg JH7110_STGCLK_USB0_APP_125>; >> + clock-names = "125m", "app_125"; >> + #phy-cells = <0>; >> + }; >> + >> + pciephy0: phy@10210000 { >> + compatible = "starfive,jh7110-pcie-phy"; >> + reg = <0x0 0x10210000 0x0 0x10000>; >> + #phy-cells = <0>; >> + }; >> + >> + pciephy1: phy@10220000 { >> + compatible = "starfive,jh7110-pcie-phy"; >> + reg = <0x0 0x10220000 0x0 0x10000>; >> + #phy-cells = <0>; >> + }; >> + >> stgcrg: clock-controller@10230000 { >> compatible = "starfive,jh7110-stgcrg"; >> reg = <0x0 0x10230000 0x0 0x10000>; >> -- >> 2.17.1 >> >
On 15/03/2023 11:44, Minda Chen wrote: > USB Glue layer and Cadence USB subnode configuration, > also includes USB and PCIe phy dts configuration. > > Signed-off-by: Minda Chen <minda.chen@starfivetech.com> Use subject prefixes matching the subsystem (which you can get for example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory your patch is touching). > --- > .../jh7110-starfive-visionfive-2.dtsi | 7 +++ > arch/riscv/boot/dts/starfive/jh7110.dtsi | 54 +++++++++++++++++++ > 2 files changed, 61 insertions(+) > > diff --git a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi > index a132debb9b53..c64476aebc1a 100644 > --- a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi > +++ b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi > @@ -236,3 +236,10 @@ > pinctrl-0 = <&uart0_pins>; > status = "okay"; > }; > + > +&usb0 { > + status = "okay"; > + usbdrd_cdns3: usb@0 { You should rather override by phandle this as well. > + dr_mode = "peripheral"; > + }; > +}; > diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi > index f70a4ed47eb4..17722fd1be62 100644 > --- a/arch/riscv/boot/dts/starfive/jh7110.dtsi > +++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi > @@ -362,6 +362,60 @@ > status = "disabled"; > }; > > + usb0: usb@10100000 { > + compatible = "starfive,jh7110-usb"; > + clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>, > + <&stgcrg JH7110_STGCLK_USB0_STB>, > + <&stgcrg JH7110_STGCLK_USB0_APB>, > + <&stgcrg JH7110_STGCLK_USB0_AXI>, > + <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>; > + clock-names = "lpm", "stb", "apb", "axi", "utmi_apb"; > + resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>, > + <&stgcrg JH7110_STGRST_USB0_APB>, > + <&stgcrg JH7110_STGRST_USB0_AXI>, > + <&stgcrg JH7110_STGRST_USB0_UTMI_APB>; > + starfive,stg-syscon = <&stg_syscon 0x4 0xc4 0x148 0x1f4>; > + starfive,sys-syscon = <&sys_syscon 0x18>; > + status = "disabled"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x0 0x0 0x10100000 0x100000>; reg and ranges should be second property. This also applies to your binding example. Best regards, Krzysztof
On 2023/3/17 16:44, Krzysztof Kozlowski wrote: > On 15/03/2023 11:44, Minda Chen wrote: >> USB Glue layer and Cadence USB subnode configuration, >> also includes USB and PCIe phy dts configuration. >> >> Signed-off-by: Minda Chen <minda.chen@starfivetech.com> > > Use subject prefixes matching the subsystem (which you can get for > example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory > your patch is touching). >ok >> --- >> .../jh7110-starfive-visionfive-2.dtsi | 7 +++ >> arch/riscv/boot/dts/starfive/jh7110.dtsi | 54 +++++++++++++++++++ >> 2 files changed, 61 insertions(+) >> >> diff --git a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >> index a132debb9b53..c64476aebc1a 100644 >> --- a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >> +++ b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >> @@ -236,3 +236,10 @@ >> pinctrl-0 = <&uart0_pins>; >> status = "okay"; >> }; >> + >> +&usb0 { >> + status = "okay"; >> + usbdrd_cdns3: usb@0 { > > You should rather override by phandle this as well. > I will remove the wrapper node 'usb0'. Just like this : +&usbdrd_cdns3 { + dr_mode = "peripheral"; +}; (similar configuration in arch/arm64/boot/dts/ti/k3-j721e-sk.dts, usb1 node) &usb1 { dr_mode = "host"; .... >> + dr_mode = "peripheral"; >> + }; >> +}; >> diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi >> index f70a4ed47eb4..17722fd1be62 100644 >> --- a/arch/riscv/boot/dts/starfive/jh7110.dtsi >> +++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi >> @@ -362,6 +362,60 @@ >> status = "disabled"; >> }; >> >> + usb0: usb@10100000 { >> + compatible = "starfive,jh7110-usb"; >> + clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>, >> + <&stgcrg JH7110_STGCLK_USB0_STB>, >> + <&stgcrg JH7110_STGCLK_USB0_APB>, >> + <&stgcrg JH7110_STGCLK_USB0_AXI>, >> + <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>; >> + clock-names = "lpm", "stb", "apb", "axi", "utmi_apb"; >> + resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>, >> + <&stgcrg JH7110_STGRST_USB0_APB>, >> + <&stgcrg JH7110_STGRST_USB0_AXI>, >> + <&stgcrg JH7110_STGRST_USB0_UTMI_APB>; >> + starfive,stg-syscon = <&stg_syscon 0x4 0xc4 0x148 0x1f4>; >> + starfive,sys-syscon = <&sys_syscon 0x18>; >> + status = "disabled"; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + ranges = <0x0 0x0 0x10100000 0x100000>; > > reg and ranges should be second property. This also applies to your > binding example. > > ok, thanks > Best regards, > Krzysztof >
On Wed, Mar 15, 2023 at 06:44:11PM +0800, Minda Chen wrote: > USB Glue layer and Cadence USB subnode configuration, > also includes USB and PCIe phy dts configuration. > > Signed-off-by: Minda Chen <minda.chen@starfivetech.com> > --- > .../jh7110-starfive-visionfive-2.dtsi | 7 +++ > arch/riscv/boot/dts/starfive/jh7110.dtsi | 54 +++++++++++++++++++ > 2 files changed, 61 insertions(+) > > diff --git a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi > index a132debb9b53..c64476aebc1a 100644 > --- a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi > +++ b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi > @@ -236,3 +236,10 @@ > pinctrl-0 = <&uart0_pins>; > status = "okay"; > }; > + > +&usb0 { > + status = "okay"; > + usbdrd_cdns3: usb@0 { > + dr_mode = "peripheral"; > + }; > +}; > diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi > index f70a4ed47eb4..17722fd1be62 100644 > --- a/arch/riscv/boot/dts/starfive/jh7110.dtsi > +++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi > @@ -362,6 +362,60 @@ > status = "disabled"; > }; > > + usb0: usb@10100000 { > + compatible = "starfive,jh7110-usb"; > + clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>, > + <&stgcrg JH7110_STGCLK_USB0_STB>, > + <&stgcrg JH7110_STGCLK_USB0_APB>, > + <&stgcrg JH7110_STGCLK_USB0_AXI>, > + <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>; > + clock-names = "lpm", "stb", "apb", "axi", "utmi_apb"; > + resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>, > + <&stgcrg JH7110_STGRST_USB0_APB>, > + <&stgcrg JH7110_STGRST_USB0_AXI>, > + <&stgcrg JH7110_STGRST_USB0_UTMI_APB>; > + starfive,stg-syscon = <&stg_syscon 0x4 0xc4 0x148 0x1f4>; > + starfive,sys-syscon = <&sys_syscon 0x18>; > + status = "disabled"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x0 0x0 0x10100000 0x100000>; > + > + usbdrd_cdns3: usb@0 { > + compatible = "cdns,usb3"; This pattern of USB wrapper and then a "generic" IP node is discouraged if it is just clocks, resets, power-domains, etc. IOW, unless there's an actual wrapper h/w block with its own registers, then don't do this split. Merge it all into a single node. > + reg = <0x0 0x10000>, > + <0x10000 0x10000>, > + <0x20000 0x10000>; > + reg-names = "otg", "xhci", "dev"; > + interrupts = <100>, <108>, <110>; > + interrupt-names = "host", "peripheral", "otg"; > + phys = <&usbphy0>; > + phy-names = "cdns3,usb2-phy"; No need for *-names when there is only 1 entry. Names are local to the device and only to distinguish entries, so 'usb2' would be sufficient here. > + maximum-speed = "super-speed"; > + }; > + }; > + > + usbphy0: phy@10200000 { > + compatible = "starfive,jh7110-usb-phy"; > + reg = <0x0 0x10200000 0x0 0x10000>; > + clocks = <&syscrg JH7110_SYSCLK_USB_125M>, > + <&stgcrg JH7110_STGCLK_USB0_APP_125>; > + clock-names = "125m", "app_125"; > + #phy-cells = <0>; > + }; > + > + pciephy0: phy@10210000 { > + compatible = "starfive,jh7110-pcie-phy"; > + reg = <0x0 0x10210000 0x0 0x10000>; > + #phy-cells = <0>; > + }; > + > + pciephy1: phy@10220000 { > + compatible = "starfive,jh7110-pcie-phy"; > + reg = <0x0 0x10220000 0x0 0x10000>; > + #phy-cells = <0>; > + }; > + > stgcrg: clock-controller@10230000 { > compatible = "starfive,jh7110-stgcrg"; > reg = <0x0 0x10230000 0x0 0x10000>; > -- > 2.17.1 >
On 2023/3/20 23:34, Rob Herring wrote: > On Wed, Mar 15, 2023 at 06:44:11PM +0800, Minda Chen wrote: >> USB Glue layer and Cadence USB subnode configuration, >> also includes USB and PCIe phy dts configuration. >> >> Signed-off-by: Minda Chen <minda.chen@starfivetech.com> >> --- >> .../jh7110-starfive-visionfive-2.dtsi | 7 +++ >> arch/riscv/boot/dts/starfive/jh7110.dtsi | 54 +++++++++++++++++++ >> 2 files changed, 61 insertions(+) >> >> diff --git a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >> index a132debb9b53..c64476aebc1a 100644 >> --- a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >> +++ b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >> @@ -236,3 +236,10 @@ >> pinctrl-0 = <&uart0_pins>; >> status = "okay"; >> }; >> + >> +&usb0 { >> + status = "okay"; >> + usbdrd_cdns3: usb@0 { >> + dr_mode = "peripheral"; >> + }; >> +}; >> diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi >> index f70a4ed47eb4..17722fd1be62 100644 >> --- a/arch/riscv/boot/dts/starfive/jh7110.dtsi >> +++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi >> @@ -362,6 +362,60 @@ >> status = "disabled"; >> }; >> >> + usb0: usb@10100000 { >> + compatible = "starfive,jh7110-usb"; >> + clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>, >> + <&stgcrg JH7110_STGCLK_USB0_STB>, >> + <&stgcrg JH7110_STGCLK_USB0_APB>, >> + <&stgcrg JH7110_STGCLK_USB0_AXI>, >> + <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>; >> + clock-names = "lpm", "stb", "apb", "axi", "utmi_apb"; >> + resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>, >> + <&stgcrg JH7110_STGRST_USB0_APB>, >> + <&stgcrg JH7110_STGRST_USB0_AXI>, >> + <&stgcrg JH7110_STGRST_USB0_UTMI_APB>; >> + starfive,stg-syscon = <&stg_syscon 0x4 0xc4 0x148 0x1f4>; >> + starfive,sys-syscon = <&sys_syscon 0x18>; >> + status = "disabled"; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + ranges = <0x0 0x0 0x10100000 0x100000>; >> + >> + usbdrd_cdns3: usb@0 { >> + compatible = "cdns,usb3"; > > This pattern of USB wrapper and then a "generic" IP node is discouraged > if it is just clocks, resets, power-domains, etc. IOW, unless there's an > actual wrapper h/w block with its own registers, then don't do this > split. Merge it all into a single node. > I am afraid it is difficult to merge in one single node. 1.If cadence3 usb device is still the sub device. All the dts setting are in StarFive node. This can not work. StarFive driver code Using platform_device_add generate cadenc3 usb platform device. Even IO memory space setting can be passed to cadence3 USB, PHY setting can not be passed. For the PHY driver using dts now. But in this case, Cadence3 USB no dts configure. 2. Just one USB Cadence platform device. Maybe this can work. But Cadence USB driver code cdns3-plat.c required to changed. Hi Peter Pawel and Roger There is a "platform_suspend" function pointer in "struct cdns3_platform_data", Add "platform_init" and "platform_exit" for our JH7110 platform. Maybe it can work. Is it OK? >> + reg = <0x0 0x10000>, >> + <0x10000 0x10000>, >> + <0x20000 0x10000>; >> + reg-names = "otg", "xhci", "dev"; >> + interrupts = <100>, <108>, <110>; >> + interrupt-names = "host", "peripheral", "otg"; >> + phys = <&usbphy0>; >> + phy-names = "cdns3,usb2-phy"; > > No need for *-names when there is only 1 entry. Names are local to the > device and only to distinguish entries, so 'usb2' would be sufficient > here. > The PHY name 'cdns3,usb2-phy' is defined in cadence3 usb driver code. Cadence USB3 driver code using this name to get PHY instance. And all the PHY ops used in Cadence3 USB sub device. >> + maximum-speed = "super-speed"; >> + }; >> + }; >> + >> + usbphy0: phy@10200000 { >> + compatible = "starfive,jh7110-usb-phy"; >> + reg = <0x0 0x10200000 0x0 0x10000>; >> + clocks = <&syscrg JH7110_SYSCLK_USB_125M>, >> + <&stgcrg JH7110_STGCLK_USB0_APP_125>; >> + clock-names = "125m", "app_125"; >> + #phy-cells = <0>; >> + }; >> + >> + pciephy0: phy@10210000 { >> + compatible = "starfive,jh7110-pcie-phy"; >> + reg = <0x0 0x10210000 0x0 0x10000>; >> + #phy-cells = <0>; >> + }; >> + >> + pciephy1: phy@10220000 { >> + compatible = "starfive,jh7110-pcie-phy"; >> + reg = <0x0 0x10220000 0x0 0x10000>; >> + #phy-cells = <0>; >> + }; >> + >> stgcrg: clock-controller@10230000 { >> compatible = "starfive,jh7110-stgcrg"; >> reg = <0x0 0x10230000 0x0 0x10000>; >> -- >> 2.17.1 >>
Hi Minda, On 21/03/2023 14:35, Minda Chen wrote: > > > On 2023/3/20 23:34, Rob Herring wrote: >> On Wed, Mar 15, 2023 at 06:44:11PM +0800, Minda Chen wrote: >>> USB Glue layer and Cadence USB subnode configuration, >>> also includes USB and PCIe phy dts configuration. >>> >>> Signed-off-by: Minda Chen <minda.chen@starfivetech.com> >>> --- >>> .../jh7110-starfive-visionfive-2.dtsi | 7 +++ >>> arch/riscv/boot/dts/starfive/jh7110.dtsi | 54 +++++++++++++++++++ >>> 2 files changed, 61 insertions(+) >>> >>> diff --git a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >>> index a132debb9b53..c64476aebc1a 100644 >>> --- a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >>> +++ b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >>> @@ -236,3 +236,10 @@ >>> pinctrl-0 = <&uart0_pins>; >>> status = "okay"; >>> }; >>> + >>> +&usb0 { >>> + status = "okay"; >>> + usbdrd_cdns3: usb@0 { >>> + dr_mode = "peripheral"; >>> + }; >>> +}; >>> diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi >>> index f70a4ed47eb4..17722fd1be62 100644 >>> --- a/arch/riscv/boot/dts/starfive/jh7110.dtsi >>> +++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi >>> @@ -362,6 +362,60 @@ >>> status = "disabled"; >>> }; >>> >>> + usb0: usb@10100000 { >>> + compatible = "starfive,jh7110-usb"; >>> + clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>, >>> + <&stgcrg JH7110_STGCLK_USB0_STB>, >>> + <&stgcrg JH7110_STGCLK_USB0_APB>, >>> + <&stgcrg JH7110_STGCLK_USB0_AXI>, >>> + <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>; >>> + clock-names = "lpm", "stb", "apb", "axi", "utmi_apb"; >>> + resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>, >>> + <&stgcrg JH7110_STGRST_USB0_APB>, >>> + <&stgcrg JH7110_STGRST_USB0_AXI>, >>> + <&stgcrg JH7110_STGRST_USB0_UTMI_APB>; >>> + starfive,stg-syscon = <&stg_syscon 0x4 0xc4 0x148 0x1f4>; >>> + starfive,sys-syscon = <&sys_syscon 0x18>; >>> + status = "disabled"; >>> + #address-cells = <1>; >>> + #size-cells = <1>; >>> + ranges = <0x0 0x0 0x10100000 0x100000>; >>> + >>> + usbdrd_cdns3: usb@0 { >>> + compatible = "cdns,usb3"; >> >> This pattern of USB wrapper and then a "generic" IP node is discouraged >> if it is just clocks, resets, power-domains, etc. IOW, unless there's an >> actual wrapper h/w block with its own registers, then don't do this >> split. Merge it all into a single node. >> > I am afraid it is difficult to merge in one single node. > > 1.If cadence3 usb device is still the sub device. All the dts setting are in > StarFive node. This can not work. > StarFive driver code Using platform_device_add generate cadenc3 usb platform device. > Even IO memory space setting can be passed to cadence3 USB, PHY setting can not be passed. > For the PHY driver using dts now. But in this case, Cadence3 USB no dts configure. > > 2. Just one USB Cadence platform device. > Maybe this can work. But Cadence USB driver code cdns3-plat.c required to changed. > > Hi Peter Pawel and Roger > There is a "platform_suspend" function pointer in "struct cdns3_platform_data", > Add "platform_init" and "platform_exit" for our JH7110 platform. Maybe it can work. > Is it OK? Once you move all the syscon register modifications from your wrapper driver to your PHY driver, only clock and reset control are left in your wrapper driver. This is generic enough to be done in the cdns3,usb driver itself so you don't need a wrapper node. Pawel, do you agree? >>> + reg = <0x0 0x10000>, >>> + <0x10000 0x10000>, >>> + <0x20000 0x10000>; >>> + reg-names = "otg", "xhci", "dev"; >>> + interrupts = <100>, <108>, <110>; >>> + interrupt-names = "host", "peripheral", "otg"; >>> + phys = <&usbphy0>; >>> + phy-names = "cdns3,usb2-phy"; >> >> No need for *-names when there is only 1 entry. Names are local to the >> device and only to distinguish entries, so 'usb2' would be sufficient >> here. >> > The PHY name 'cdns3,usb2-phy' is defined in cadence3 usb driver code. > Cadence USB3 driver code using this name to get PHY instance. > And all the PHY ops used in Cadence3 USB sub device. >>> + maximum-speed = "super-speed"; >>> + }; >>> + }; >>> + >>> + usbphy0: phy@10200000 { >>> + compatible = "starfive,jh7110-usb-phy"; >>> + reg = <0x0 0x10200000 0x0 0x10000>; >>> + clocks = <&syscrg JH7110_SYSCLK_USB_125M>, >>> + <&stgcrg JH7110_STGCLK_USB0_APP_125>; >>> + clock-names = "125m", "app_125"; >>> + #phy-cells = <0>; >>> + }; >>> + >>> + pciephy0: phy@10210000 { >>> + compatible = "starfive,jh7110-pcie-phy"; >>> + reg = <0x0 0x10210000 0x0 0x10000>; >>> + #phy-cells = <0>; >>> + }; >>> + >>> + pciephy1: phy@10220000 { >>> + compatible = "starfive,jh7110-pcie-phy"; >>> + reg = <0x0 0x10220000 0x0 0x10000>; >>> + #phy-cells = <0>; >>> + }; >>> + >>> stgcrg: clock-controller@10230000 { >>> compatible = "starfive,jh7110-stgcrg"; >>> reg = <0x0 0x10230000 0x0 0x10000>; >>> -- >>> 2.17.1 >>> cheers, -roger
On 2023/3/22 16:00, Roger Quadros wrote: > Hi Minda, > > On 21/03/2023 14:35, Minda Chen wrote: >> >> >> On 2023/3/20 23:34, Rob Herring wrote: >>> On Wed, Mar 15, 2023 at 06:44:11PM +0800, Minda Chen wrote: >>>> USB Glue layer and Cadence USB subnode configuration, >>>> also includes USB and PCIe phy dts configuration. >>>> >>>> Signed-off-by: Minda Chen <minda.chen@starfivetech.com> >>>> --- >>>> .../jh7110-starfive-visionfive-2.dtsi | 7 +++ >>>> arch/riscv/boot/dts/starfive/jh7110.dtsi | 54 +++++++++++++++++++ >>>> 2 files changed, 61 insertions(+) >>>> >>>> diff --git a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >>>> index a132debb9b53..c64476aebc1a 100644 >>>> --- a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >>>> +++ b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi >>>> @@ -236,3 +236,10 @@ >>>> pinctrl-0 = <&uart0_pins>; >>>> status = "okay"; >>>> }; >>>> + >>>> +&usb0 { >>>> + status = "okay"; >>>> + usbdrd_cdns3: usb@0 { >>>> + dr_mode = "peripheral"; >>>> + }; >>>> +}; >>>> diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi >>>> index f70a4ed47eb4..17722fd1be62 100644 >>>> --- a/arch/riscv/boot/dts/starfive/jh7110.dtsi >>>> +++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi >>>> @@ -362,6 +362,60 @@ >>>> status = "disabled"; >>>> }; >>>> >>>> + usb0: usb@10100000 { >>>> + compatible = "starfive,jh7110-usb"; >>>> + clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>, >>>> + <&stgcrg JH7110_STGCLK_USB0_STB>, >>>> + <&stgcrg JH7110_STGCLK_USB0_APB>, >>>> + <&stgcrg JH7110_STGCLK_USB0_AXI>, >>>> + <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>; >>>> + clock-names = "lpm", "stb", "apb", "axi", "utmi_apb"; >>>> + resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>, >>>> + <&stgcrg JH7110_STGRST_USB0_APB>, >>>> + <&stgcrg JH7110_STGRST_USB0_AXI>, >>>> + <&stgcrg JH7110_STGRST_USB0_UTMI_APB>; >>>> + starfive,stg-syscon = <&stg_syscon 0x4 0xc4 0x148 0x1f4>; >>>> + starfive,sys-syscon = <&sys_syscon 0x18>; >>>> + status = "disabled"; >>>> + #address-cells = <1>; >>>> + #size-cells = <1>; >>>> + ranges = <0x0 0x0 0x10100000 0x100000>; >>>> + >>>> + usbdrd_cdns3: usb@0 { >>>> + compatible = "cdns,usb3"; >>> >>> This pattern of USB wrapper and then a "generic" IP node is discouraged >>> if it is just clocks, resets, power-domains, etc. IOW, unless there's an >>> actual wrapper h/w block with its own registers, then don't do this >>> split. Merge it all into a single node. >>> >> I am afraid it is difficult to merge in one single node. >> >> 1.If cadence3 usb device is still the sub device. All the dts setting are in >> StarFive node. This can not work. >> StarFive driver code Using platform_device_add generate cadenc3 usb platform device. >> Even IO memory space setting can be passed to cadence3 USB, PHY setting can not be passed. >> For the PHY driver using dts now. But in this case, Cadence3 USB no dts configure. >> >> 2. Just one USB Cadence platform device. >> Maybe this can work. But Cadence USB driver code cdns3-plat.c required to changed. >> >> Hi Peter Pawel and Roger >> There is a "platform_suspend" function pointer in "struct cdns3_platform_data", >> Add "platform_init" and "platform_exit" for our JH7110 platform. Maybe it can work. >> Is it OK? > > Once you move all the syscon register modifications from your wrapper driver > to your PHY driver, only clock and reset control are left in your wrapper driver. > This is generic enough to be done in the cdns3,usb driver itself so you don't need a > wrapper node. > > Pawel, do you agree? > move all the syscon codes to PHY driver is ok. I found dwc3/dwc3-of-simple.c is public codes and contain just clock and reset control codes. I can change the residual codes to public codes. But I found rockchip 3399 usb dts which is one of dwc3 simple platform still contain two nodes. See Documentation/devicetree/bindings/usb/rockchip,rk3399-dwc3.yaml >>>> + reg = <0x0 0x10000>, >>>> + <0x10000 0x10000>, >>>> + <0x20000 0x10000>; >>>> + reg-names = "otg", "xhci", "dev"; >>>> + interrupts = <100>, <108>, <110>; >>>> + interrupt-names = "host", "peripheral", "otg"; >>>> + phys = <&usbphy0>; >>>> + phy-names = "cdns3,usb2-phy"; >>> >>> No need for *-names when there is only 1 entry. Names are local to the >>> device and only to distinguish entries, so 'usb2' would be sufficient >>> here. >>> >> The PHY name 'cdns3,usb2-phy' is defined in cadence3 usb driver code. >> Cadence USB3 driver code using this name to get PHY instance. >> And all the PHY ops used in Cadence3 USB sub device. >>>> + maximum-speed = "super-speed"; >>>> + }; >>>> + }; >>>> + >>>> + usbphy0: phy@10200000 { >>>> + compatible = "starfive,jh7110-usb-phy"; >>>> + reg = <0x0 0x10200000 0x0 0x10000>; >>>> + clocks = <&syscrg JH7110_SYSCLK_USB_125M>, >>>> + <&stgcrg JH7110_STGCLK_USB0_APP_125>; >>>> + clock-names = "125m", "app_125"; >>>> + #phy-cells = <0>; >>>> + }; >>>> + >>>> + pciephy0: phy@10210000 { >>>> + compatible = "starfive,jh7110-pcie-phy"; >>>> + reg = <0x0 0x10210000 0x0 0x10000>; >>>> + #phy-cells = <0>; >>>> + }; >>>> + >>>> + pciephy1: phy@10220000 { >>>> + compatible = "starfive,jh7110-pcie-phy"; >>>> + reg = <0x0 0x10220000 0x0 0x10000>; >>>> + #phy-cells = <0>; >>>> + }; >>>> + >>>> stgcrg: clock-controller@10230000 { >>>> compatible = "starfive,jh7110-stgcrg"; >>>> reg = <0x0 0x10230000 0x0 0x10000>; >>>> -- >>>> 2.17.1 >>>> > > cheers, > -roger
diff --git a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi index a132debb9b53..c64476aebc1a 100644 --- a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi +++ b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi @@ -236,3 +236,10 @@ pinctrl-0 = <&uart0_pins>; status = "okay"; }; + +&usb0 { + status = "okay"; + usbdrd_cdns3: usb@0 { + dr_mode = "peripheral"; + }; +}; diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi index f70a4ed47eb4..17722fd1be62 100644 --- a/arch/riscv/boot/dts/starfive/jh7110.dtsi +++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi @@ -362,6 +362,60 @@ status = "disabled"; }; + usb0: usb@10100000 { + compatible = "starfive,jh7110-usb"; + clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>, + <&stgcrg JH7110_STGCLK_USB0_STB>, + <&stgcrg JH7110_STGCLK_USB0_APB>, + <&stgcrg JH7110_STGCLK_USB0_AXI>, + <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>; + clock-names = "lpm", "stb", "apb", "axi", "utmi_apb"; + resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>, + <&stgcrg JH7110_STGRST_USB0_APB>, + <&stgcrg JH7110_STGRST_USB0_AXI>, + <&stgcrg JH7110_STGRST_USB0_UTMI_APB>; + starfive,stg-syscon = <&stg_syscon 0x4 0xc4 0x148 0x1f4>; + starfive,sys-syscon = <&sys_syscon 0x18>; + status = "disabled"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x0 0x10100000 0x100000>; + + usbdrd_cdns3: usb@0 { + compatible = "cdns,usb3"; + reg = <0x0 0x10000>, + <0x10000 0x10000>, + <0x20000 0x10000>; + reg-names = "otg", "xhci", "dev"; + interrupts = <100>, <108>, <110>; + interrupt-names = "host", "peripheral", "otg"; + phys = <&usbphy0>; + phy-names = "cdns3,usb2-phy"; + maximum-speed = "super-speed"; + }; + }; + + usbphy0: phy@10200000 { + compatible = "starfive,jh7110-usb-phy"; + reg = <0x0 0x10200000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_USB_125M>, + <&stgcrg JH7110_STGCLK_USB0_APP_125>; + clock-names = "125m", "app_125"; + #phy-cells = <0>; + }; + + pciephy0: phy@10210000 { + compatible = "starfive,jh7110-pcie-phy"; + reg = <0x0 0x10210000 0x0 0x10000>; + #phy-cells = <0>; + }; + + pciephy1: phy@10220000 { + compatible = "starfive,jh7110-pcie-phy"; + reg = <0x0 0x10220000 0x0 0x10000>; + #phy-cells = <0>; + }; + stgcrg: clock-controller@10230000 { compatible = "starfive,jh7110-stgcrg"; reg = <0x0 0x10230000 0x0 0x10000>;