DT bindings for Hikey960/970 USB/PCI
Subsystems (4)
PATCH RESEND 6/7 arm64: dts: hisilicon: Add usb mux hub for hikey970
In reply to Mauro Carvalho ChehabAdd dt bindings for Kirin 970 USB HUB. Such board comes with an integrated USB HUB provided via a TI TUSB8041 4-port USB 3.0 hub.
---
To avoid mailbombing on a large number of people, only mailing lists were C/C on the cover. See [PATCH RESEND 0/7] at: https://lore.kernel.org/all/[email protected]/
.../boot/dts/hisilicon/hi3670-hikey970.dts | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+)
arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts +23 -0
@@ -53,6 +53,29 @@ wlan_en: wlan-en-1-8v { startup-delay-us = <70000>; enable-active-high; }; + + usb-hub { + compatible = "hisilicon,usbhub"; + typec-vbus-gpios = <&gpio26 1 0>; + otg-switch-gpios = <&gpio4 2 0>; + hub-reset-en-gpios = <&gpio0 3 0>; + hub-vdd-supply = <&ldo17>; + usb-role-switch; + + port { + #address-cells = <1>; + #size-cells = <0>; + + hikey_usb_ep0: endpoint@0 { + reg = <0>; + remote-endpoint = <&dwc3_role_switch>; + }; + hikey_usb_ep1: endpoint@1 { + reg = <1>; + remote-endpoint = <&rt1711h_ep>; + }; + }; + }; }; /*
Signature · 1 line
2.33.1
PATCH RESEND 2/7 dt-bindings: clock: hi3670-clock.txt: add pmctrl compatible
In reply to Mauro Carvalho ChehabAdd a compatible for the Power Management domain controller, which is needed in order to control power for the PCI devices on HiKey 970.
---
To avoid mailbombing on a large number of people, only mailing lists were C/C on the cover. See [PATCH RESEND 0/7] at: https://lore.kernel.org/all/[email protected]/
Documentation/devicetree/bindings/clock/hi3670-clock.txt | 1 + 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/clock/hi3670-clock.txt +1 -0
@@ -15,6 +15,7 @@ Required Properties: - "hisilicon,hi3670-iomcu" - "hisilicon,hi3670-media1-crg" - "hisilicon,hi3670-media2-crg" + - "hisilicon,hi3670-pmctrl" - reg: physical base address of the controller and length of memory mapped region.
Signature · 1 line
2.33.1
PATCH RESEND 7/7 arm64: dts: hisilicon: Add usb mux hub for hikey960
In reply to Mauro Carvalho ChehabFrom: John Stultz <[email protected]>
Add dt bindings for Kirin 960 USB HUB. Such board comes with an integrated USB HUB provided via a Microchip USB5734 4-port high-speed hub controller.
---
To avoid mailbombing on a large number of people, only mailing lists were C/C on the cover. See [PATCH RESEND 0/7] at: https://lore.kernel.org/all/[email protected]/
.../boot/dts/hisilicon/hi3660-hikey960.dts | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dts +33 -2
@@ -197,6 +197,37 @@ optee { method = "smc"; }; }; + + usb_hub_vdd: usb_hub_vdd { + compatible = "regulator-fixed"; + regulator-name = "hub-vdd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio5 6 0>; + enable-active-high; + }; + + usb-hub { + compatible = "hisilicon,usbhub"; + typec-vbus-gpios = <&gpio25 2 GPIO_ACTIVE_HIGH>; + otg-switch-gpios = <&gpio25 6 GPIO_ACTIVE_HIGH>; + hub-vdd-supply = <&usb_hub_vdd>; + usb-role-switch; + + port { + #address-cells = <1>; + #size-cells = <0>; + + hikey_usb_ep0: endpoint@0 { + reg = <0>; + remote-endpoint = <&dwc3_role_switch>; + }; + hikey_usb_ep1: endpoint@1 { + reg = <1>; + remote-endpoint = <&rt1711h_ep>; + }; + }; + }; }; /*
@@ -564,7 +595,7 @@ port { rt1711h_ep: endpoint@0 { reg = <0>; - remote-endpoint = <&dwc3_role_switch>; + remote-endpoint = <&hikey_usb_ep1>; }; }; };
@@ -686,7 +717,7 @@ port { #size-cells = <0>; dwc3_role_switch: endpoint@0 { reg = <0>; - remote-endpoint = <&rt1711h_ep>; + remote-endpoint = <&hikey_usb_ep0>; }; dwc3_ss: endpoint@1 {
Signature · 1 line
2.33.1
PATCH RESEND 1/7 dt-bindings: misc: add schema for USB hub on Kirin devices
In reply to Mauro Carvalho ChehabFrom: Yu Chen <[email protected]>
This patch adds binding documentation to support USB HUB and USB data role switch of HiSilicon HiKey960 and HiKey970 boards.
---
To avoid mailbombing on a large number of people, only mailing lists were C/C on the cover. See [PATCH RESEND 0/7] at: https://lore.kernel.org/all/[email protected]/
.../bindings/misc/hisilicon,hikey-usb.yaml | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml
Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml new file +87 -0
@@ -0,0 +1,87 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +# Copyright 2019 Linaro Ltd. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/misc/hisilicon,hikey-usb.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: HiKey960/970 onboard USB GPIO Hub + +maintainers: + - John Stultz <[email protected]> + +description: | + Supports the onboard USB GPIO hubs found on HiKey960/970. + Such hubs require a power supply for the USB I/O. Depending on the + exact hub model, after USB I/O is powered up, a reset should be needed. + + It also acts as a role-switch intermediary to detect the state of + the USB-C port, to switch the hub into dual-role USB-C or host mode, + which enables and powers up the onboard USB-A host ports. + + Schematics about such hubs can be found here: + https://github.com/96boards/documentation/raw/master/consumer/hikey/hikey960/hardware-docs/HiKey960_Schematics.pdf + https://www.96boards.org/documentation/consumer/hikey/hikey970/hardware-docs/files/hikey970-schematics.pdf + +properties: + compatible: + enum: + - hisilicon,usbhub + + typec-vbus-gpios: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: phandle to the typec-vbus gpio + + otg-switch-gpios: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: phandle to the otg-switch gpio + + hub-reset-en-gpios: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: phandle to the hub reset gpio + + usb-role-switch: + $ref: /schemas/types.yaml#/definitions/flag + description: Support role switch. + + hub-vdd-supply: + description: regulator for hub power + + port: + description: | + describe hadware connections between USB endpoints. + Two ports are supported: the first being the endpoint that will + be notified by this driver, and the second being the endpoint + that notifies this driver of a role switch. + +required: + - compatible + - hub-vdd-supply + - port + +additionalProperties: false + +examples: + - | + #include <dt-bindings/gpio/gpio.h> + + usb-hub { + compatible = "hisilicon,usbhub"; + typec-vbus-gpios = <&gpio25 2 GPIO_ACTIVE_HIGH>; + otg-switch-gpios = <&gpio25 6 GPIO_ACTIVE_HIGH>; + hub-reset-en-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>; + hub-vdd-supply = <&usb_hub_vdd>; + usb-role-switch; + port { + #address-cells = <1>; + #size-cells = <0>; + usb_ep0: endpoint@0 { + reg = <0>; + remote-endpoint = <&dwc3_role_switch>; + }; + usb_ep1: endpoint@1 { + reg = <1>; + remote-endpoint = <&rt1711h_ep>; + }; + }; + };
Signature · 1 line
2.33.1
cover DT bindings for Hikey960/970 USB/PCI
Thosre are the only missing parts for PCI to work on HiKey970 and for USB on HiKey960 and HiKey 970 boards.
John Stultz (1):
arm64: dts: hisilicon: Add usb mux hub for hikey960
Manivannan Sadhasivam (1):
arm64: dts: HiSilicon: Add support for HiKey 970 PCIe controller
hardware
Mauro Carvalho Chehab (4):
dt-bindings: clock: hi3670-clock.txt: add pmctrl compatible
dt-bindings: usb: hisilicon,hi3670-dwc3: add binding for Kirin970
arm64: dts: hisilicon: Add support for Hikey 970 USB3 PHY
arm64: dts: hisilicon: Add usb mux hub for hikey970
Yu Chen (1):
dt-bindings: misc: add schema for USB hub on Kirin devices
.../bindings/clock/hi3670-clock.txt | 1 + .../bindings/misc/hisilicon,hikey-usb.yaml | 87 ++++++++++ .../bindings/usb/hisilicon,hi3670-dwc3.yaml | 105 +++++++++++ .../boot/dts/hisilicon/hi3660-hikey960.dts | 35 +++- .../boot/dts/hisilicon/hi3670-hikey970.dts | 106 ++++++++++++ arch/arm64/boot/dts/hisilicon/hi3670.dtsi | 163 ++++++++++++++++++ 6 files changed, 495 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml create mode 100644 Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml
Signature · 1 line
2.33.1
PATCH RESEND 5/7 arm64: dts: HiSilicon: Add support for HiKey 970 PCIe controller hardware
From: Manivannan Sadhasivam <[email protected]>
Add DTS bindings for the HiKey 970 board's PCIe hardware.
---
To avoid mailbombing on a large number of people, only mailing lists were C/C on the cover. See [PATCH RESEND 0/7] at: https://lore.kernel.org/all/[email protected]/
arch/arm64/boot/dts/hisilicon/hi3670.dtsi | 107 ++++++++++++++++++++++ 1 file changed, 107 insertions(+)
arch/arm64/boot/dts/hisilicon/hi3670.dtsi +107 -0
@@ -177,6 +177,12 @@ sctrl: sctrl@fff0a000 { #clock-cells = <1>; }; + pmctrl: pmctrl@fff31000 { + compatible = "hisilicon,hi3670-pmctrl", "syscon"; + reg = <0x0 0xfff31000 0x0 0x1000>; + #clock-cells = <1>; + }; + iomcu: iomcu@ffd7e000 { compatible = "hisilicon,hi3670-iomcu", "syscon"; reg = <0x0 0xffd7e000 0x0 0x1000>;
@@ -660,6 +666,107 @@ gpio28: gpio@fff1d000 { clock-names = "apb_pclk"; }; + pcie_phy: pcie-phy@fc000000 { + compatible = "hisilicon,hi970-pcie-phy"; + reg = <0x0 0xfc000000 0x0 0x80000>; + + phy-supply = <&ldo33>; + + clocks = <&crg_ctrl HI3670_CLK_GATE_PCIEPHY_REF>, + <&crg_ctrl HI3670_CLK_GATE_PCIEAUX>, + <&crg_ctrl HI3670_PCLK_GATE_PCIE_PHY>, + <&crg_ctrl HI3670_PCLK_GATE_PCIE_SYS>, + <&crg_ctrl HI3670_ACLK_GATE_PCIE>; + clock-names = "phy_ref", "aux", + "apb_phy", "apb_sys", + "aclk"; + + /* vboost iboost pre post main */ + hisilicon,eye-diagram-param = <0xffffffff 0xffffffff + 0xffffffff 0xffffffff + 0xffffffff>; + + #phy-cells = <0>; + }; + + pcie@f4000000 { + compatible = "hisilicon,kirin970-pcie"; + reg = <0x0 0xf4000000 0x0 0x1000000>, + <0x0 0xfc180000 0x0 0x1000>, + <0x0 0xf5000000 0x0 0x2000>; + reg-names = "dbi", "apb", "config"; + #address-cells = <3>; + #size-cells = <2>; + device_type = "pci"; + phys = <&pcie_phy>; + ranges = <0x02000000 0x0 0x00000000 + 0x0 0xf6000000 + 0x0 0x02000000>; + num-lanes = <1>; + #interrupt-cells = <1>; + interrupts = <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "msi"; + interrupt-map-mask = <0 0 0 7>; + interrupt-map = <0x0 0 0 1 + &gic GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>, + <0x0 0 0 2 + &gic GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>, + <0x0 0 0 3 + &gic GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>, + <0x0 0 0 4 + &gic GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>; + reset-gpios = <&gpio7 0 0>; + hisilicon,clken-gpios = <&gpio27 3 0>, <&gpio17 0 0>, + <&gpio20 6 0>; + pcie@0,0 { // Lane 0: PCIe switch: Bus 1, Device 0 + reg = <0 0 0 0 0>; + compatible = "pciclass,0604"; + device_type = "pci"; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + pcie@0,0 { // Lane 0: upstream + reg = <0 0 0 0 0>; + compatible = "pciclass,0604"; + device_type = "pci"; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + pcie@1,0 { // Lane 4: M.2 + reg = <0x0800 0 0 0 0>; + compatible = "pciclass,0604"; + device_type = "pci"; + reset-gpios = <&gpio3 1 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + }; + + pcie@5,0 { // Lane 5: Mini PCIe + reg = <0x2800 0 0 0 0>; + compatible = "pciclass,0604"; + device_type = "pci"; + reset-gpios = <&gpio27 4 0 >; + #address-cells = <3>; + #size-cells = <2>; + ranges; + }; + + pcie@7,0 { // Lane 6: Ethernet + reg = <0x3800 0 0 0 0>; + compatible = "pciclass,0604"; + device_type = "pci"; + reset-gpios = <&gpio25 2 0 >; + #address-cells = <3>; + #size-cells = <2>; + ranges; + }; + }; + }; + }; + /* UFS */ ufs: ufs@ff3c0000 { compatible = "hisilicon,hi3670-ufs", "jedec,ufs-2.1";
Signature · 1 line
2.33.1
PATCH RESEND 3/7 dt-bindings: usb: hisilicon,hi3670-dwc3: add binding for Kirin970
In reply to Mauro Carvalho ChehabAdd documentation for the DWC3 USB3 controller found on Kirin970 CPUs.
---
To avoid mailbombing on a large number of people, only mailing lists were C/C on the cover. See [PATCH RESEND 0/7] at: https://lore.kernel.org/all/[email protected]/
.../bindings/usb/hisilicon,hi3670-dwc3.yaml | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml
Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml new file +105 -0
@@ -0,0 +1,105 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/usb/hisilicon,hi3670-dwc3.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: HiSilicon Kirin970 USB3 Controller + +maintainers: + - Mauro Carvalho Chehab <[email protected]> + +description: + Bindings for the USB3 DWC3 controller present on Kirin970. + +properties: + compatible: + const: hisilicon,hi3670-dwc3 + + clocks: + maxItems: 4 + + clock-names: + items: + - const: clk_gate_abb_usb + - const: hclk_gate_usb3otg + - const: clk_gate_usb3otg_ref + - const: aclk_gate_usb3dvfs + + ranges: true + + assigned-clocks: + maxItems: 1 + + assigned-clock-rates: + maxItems: 1 + + resets: + maxItems: 4 + + '#address-cells': + const: 2 + + '#size-cells': + const: 2 + +# Required child node: + +patternProperties: + "^usb@[0-9a-f]+$": + $ref: snps,dwc3.yaml# + +required: + - compatible + - ranges + - clocks + - clock-names + - assigned-clocks + - assigned-clock-rates + - resets + +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/hi3670-clock.h> + #include <dt-bindings/interrupt-controller/irq.h> + + bus { + #address-cells = <2>; + #size-cells = <2>; + + usb3: hisi_dwc3 { + compatible = "hisilicon,hi3670-dwc3"; + #address-cells = <2>; + #size-cells = <2>; + ranges; + + clocks = <&crg_ctrl HI3670_CLK_GATE_ABB_USB>, + <&crg_ctrl HI3670_HCLK_GATE_USB3OTG>, + <&crg_ctrl HI3670_CLK_GATE_USB3OTG_REF>, + <&crg_ctrl HI3670_ACLK_GATE_USB3DVFS>; + clock-names = "clk_gate_abb_usb", + "hclk_gate_usb3otg", + "clk_gate_usb3otg_ref", + "aclk_gate_usb3dvfs"; + + assigned-clocks = <&crg_ctrl HI3670_ACLK_GATE_USB3DVFS>; + assigned-clock-rates = <238000000>; + resets = <&crg_rst 0x90 6>, + <&crg_rst 0x90 7>, + <&usb31_misc_rst 0xA0 8>, + <&usb31_misc_rst 0xA0 9>; + + dwc3: usb@ff100000 { + compatible = "snps,dwc3"; + reg = <0x0 0xff100000 0x0 0x100000>; + + interrupts = <0 159 IRQ_TYPE_LEVEL_HIGH>, + <0 161 IRQ_TYPE_LEVEL_HIGH>; + + phys = <&usb_phy>; + phy-names = "usb3-phy"; + }; + }; + };
Signature · 1 line
2.33.1
PATCH RESEND 4/7 arm64: dts: hisilicon: Add support for Hikey 970 USB3 PHY
In reply to Mauro Carvalho ChehabAdd the USB3 bindings for Kirin 970 phy and Hikey 970 board.
---
To avoid mailbombing on a large number of people, only mailing lists were C/C on the cover. See [PATCH RESEND 0/7] at: https://lore.kernel.org/all/[email protected]/
.../boot/dts/hisilicon/hi3670-hikey970.dts | 83 +++++++++++++++++++ arch/arm64/boot/dts/hisilicon/hi3670.dtsi | 56 +++++++++++++ 2 files changed, 139 insertions(+)
arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts +83 -0
@@ -430,3 +430,86 @@ &uart6 { label = "LS-UART1"; status = "okay"; }; + +&usb_phy { + phy-supply = <&ldo17>; +}; + +&i2c1 { + status = "okay"; + + rt1711h: rt1711h@4e { + compatible = "richtek,rt1711h"; + reg = <0x4e>; + status = "okay"; + interrupt-parent = <&gpio27>; + interrupts = <5 IRQ_TYPE_LEVEL_LOW>; + pinctrl-names = "default"; + pinctrl-0 = <&usb_cfg_func>; + + usb_con: connector { + compatible = "usb-c-connector"; + label = "USB-C"; + data-role = "dual"; + power-role = "dual"; + try-power-role = "sink"; + source-pdos = <PDO_FIXED(5000, 500, PDO_FIXED_USB_COMM)>; + sink-pdos = <PDO_FIXED(5000, 500, PDO_FIXED_USB_COMM) + PDO_VAR(5000, 5000, 1000)>; + op-sink-microwatt = <10000000>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + port@1 { + reg = <1>; + usb_con_ss: endpoint { + remote-endpoint = <&dwc3_ss>; + }; + }; + }; + }; + port { + #address-cells = <1>; + #size-cells = <0>; + + rt1711h_ep: endpoint@0 { + reg = <0>; + remote-endpoint = <&hikey_usb_ep1>; + }; + }; + }; +}; + +&i2c2 { + /* USB HUB is on this bus at address 0x44 */ + status = "okay"; +}; + +&dwc3 { /* USB */ + dr_mode = "otg"; + maximum-speed = "super-speed"; + phy_type = "utmi"; + snps,dis-del-phy-power-chg-quirk; + snps,dis_u2_susphy_quirk; + snps,dis_u3_susphy_quirk; + snps,tx_de_emphasis_quirk; + snps,tx_de_emphasis = <1>; + snps,dis-split-quirk; + snps,gctl-reset-quirk; + usb-role-switch; + role-switch-default-mode = "host"; + port { + #address-cells = <1>; + #size-cells = <0>; + dwc3_role_switch: endpoint@0 { + reg = <0>; + remote-endpoint = <&hikey_usb_ep0>; + }; + + dwc3_ss: endpoint@1 { + reg = <1>; + remote-endpoint = <&usb_con_ss>; + }; + }; +};
arch/arm64/boot/dts/hisilicon/hi3670.dtsi +56 -0
67 lines not on this page · raw message
Signature · 1 line
2.33.1
Re: [PATCH RESEND 1/7] dt-bindings: misc: add schema for USB hub on Kirin devices
In reply to Mauro Carvalho ChehabQuoted 5 lines · Mauro Carvalho Chehab
From: Yu Chen <[email protected]>
This patch adds binding documentation to support USB HUB and USB data role switch of HiSilicon HiKey960 and HiKey970 boards.
I don't see the point in reviewing this given a driver was already merged anyways, I can't imagine that plugging in one USB port causing others to disconnect is a USB compliant design, and there are few boards and fewer users that care.
Quoted 61 lines
[mchehab: updated OF schema and added HiKey970 example]Signed-off-by Yu Chen <[email protected]>Signed-off-by John Stultz <[email protected]>Signed-off-by Mauro Carvalho Chehab <[email protected]>---
To avoid mailbombing on a large number of people, only mailing lists were C/C on the cover. See [PATCH RESEND 0/7] at: https://lore.kernel.org/all/[email protected]/
.../bindings/misc/hisilicon,hikey-usb.yaml | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yamlDocumentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml new file +42
-0@@ -0,0 +1,87 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +# Copyright 2019 Linaro Ltd. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/misc/hisilicon,hikey-usb.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: HiKey960/970 onboard USB GPIO Hub + +maintainers: + - John Stultz <[email protected]> + +description: | + Supports the onboard USB GPIO hubs found on HiKey960/970. + Such hubs require a power supply for the USB I/O. Depending on the + exact hub model, after USB I/O is powered up, a reset should be needed. + + It also acts as a role-switch intermediary to detect the state of + the USB-C port, to switch the hub into dual-role USB-C or host mode, + which enables and powers up the onboard USB-A host ports. + + Schematics about such hubs can be found here: + https://github.com/96boards/documentation/raw/master/consumer/hikey/hikey960/hardware-docs/HiKey960_Schematics.pdf + https://www.96boards.org/documentation/consumer/hikey/hikey970/hardware-docs/files/hikey970-schematics.pdf + +properties: + compatible: + enum: + - hisilicon,usbhub + + typec-vbus-gpios: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: phandle to the typec-vbus gpio + + otg-switch-gpios: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: phandle to the otg-switch gpio + + hub-reset-en-gpios: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: phandle to the hub reset gpio +
Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml line 52
Quoted 10 lines
Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml new file +10
-0+ usb-role-switch: + $ref: /schemas/types.yaml#/definitions/flag + description: Support role switch. + + hub-vdd-supply: + description: regulator for hub power + + port: + description: | + describe hadware connections between USB endpoints.
USB endpoints? That's a s/w construct.
Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml line 53
Quoted 1 line
Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml new file +1
-0+ Two ports are supported: the first being the endpoint that will
'port' means exactly 1 port.
Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml line 55
Quoted 2 lines
Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml new file +2
-0+ be notified by this driver, and the second being the endpoint + that notifies this driver of a role switch.
IMO, this node should represent the HS switch. I would expect an input port connected to the USB host and an output port with 2 endpoints connected to USB-C connector and the hub.
host(HS port) -> (port@0)Switch(port@1)+--endpoint@0 -> USB-C connector
|--endpoint@1 -> 2.0 hub
Then there's what does the hub look like which has been discussed separately and is still not upstream I think.
But again, given this is devboard with limited use, I would just make using USB-C vs. USB host connectors a fixed boot time configuration with some one time setup and move on...
Rob
Re: [PATCH RESEND 2/7] dt-bindings: clock: hi3670-clock.txt: add pmctrl compatible
In reply to Mauro Carvalho ChehabQuoted 4 lines · Mauro Carvalho Chehab
Add a compatible for the Power Management domain controller, which is needed in order to control power for the PCI devices on HiKey 970.
Quoted 9 lines
Signed-off-by Mauro Carvalho Chehab <[email protected]>---
To avoid mailbombing on a large number of people, only mailing lists were C/C on the cover. See [PATCH RESEND 0/7] at: https://lore.kernel.org/all/[email protected]/
Documentation/devicetree/bindings/clock/hi3670-clock.txt | 1 + 1 file changed, 1 insertion(+)
Rob Herring
maintainerRe: [PATCH RESEND 3/7] dt-bindings: usb: hisilicon,hi3670-dwc3: add binding for Kirin970
In reply to Mauro Carvalho ChehabQuoted 19 lines · Mauro Carvalho Chehab
Add documentation for the DWC3 USB3 controller found on Kirin970 CPUs.
Signed-off-by Mauro Carvalho Chehab <[email protected]>---
To avoid mailbombing on a large number of people, only mailing lists were C/C on the cover. See [PATCH RESEND 0/7] at: https://lore.kernel.org/all/[email protected]/
.../bindings/usb/hisilicon,hi3670-dwc3.yaml | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yamlDocumentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml new file +0
-0
Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml line 1
Quoted 1 line
Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml new file +1
-0@@ -0,0 +1,105 @@ +# SPDX-License-Identifier: GPL-2.0
dual license
Quoted 16 lines
Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml new file +16
-0+%YAML 1.2 +--- +$id: http://devicetree.org/schemas/usb/hisilicon,hi3670-dwc3.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: HiSilicon Kirin970 USB3 Controller + +maintainers: + - Mauro Carvalho Chehab <[email protected]> + +description: + Bindings for the USB3 DWC3 controller present on Kirin970. + +properties: + compatible: + const: hisilicon,hi3670-dwc3
Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml line 27
Quoted 10 lines
Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml new file +10
-0+ + clocks: + maxItems: 4 + + clock-names: + items: + - const: clk_gate_abb_usb + - const: hclk_gate_usb3otg + - const: clk_gate_usb3otg_ref + - const: aclk_gate_usb3dvfs
Seems like abb, hclk, ref, and aclk would be sufficient. The names are local to the device.
Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml line 38
Quoted 11 lines
Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml new file +11
-0+ + ranges: true + + assigned-clocks: + maxItems: 1 + + assigned-clock-rates: + maxItems: 1 + + resets: + maxItems: 4
Need to define what they are.
Quoted 24 lines
Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml new file +24
-0+ + '#address-cells': + const: 2 + + '#size-cells': + const: 2 + +# Required child node: + +patternProperties: + "^usb@[0-9a-f]+$": + $ref: snps,dwc3.yaml# + +required: + - compatible + - ranges + - clocks + - clock-names + - assigned-clocks + - assigned-clock-rates + - resets + +additionalProperties: false +
Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml line 72
Quoted 10 lines
Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml new file +10
-0+examples: + - | + #include <dt-bindings/clock/hi3670-clock.h> + #include <dt-bindings/interrupt-controller/irq.h> + + bus { + #address-cells = <2>; + #size-cells = <2>; + + usb3: hisi_dwc3 {
dwc3 {
Quoted 37 lines
Documentation/devicetree/bindings/usb/hisilicon,hi3670-dwc3.yaml new file +33
-0+ compatible = "hisilicon,hi3670-dwc3"; + #address-cells = <2>; + #size-cells = <2>; + ranges; + + clocks = <&crg_ctrl HI3670_CLK_GATE_ABB_USB>, + <&crg_ctrl HI3670_HCLK_GATE_USB3OTG>, + <&crg_ctrl HI3670_CLK_GATE_USB3OTG_REF>, + <&crg_ctrl HI3670_ACLK_GATE_USB3DVFS>; + clock-names = "clk_gate_abb_usb", + "hclk_gate_usb3otg", + "clk_gate_usb3otg_ref", + "aclk_gate_usb3dvfs"; + + assigned-clocks = <&crg_ctrl HI3670_ACLK_GATE_USB3DVFS>; + assigned-clock-rates = <238000000>; + resets = <&crg_rst 0x90 6>, + <&crg_rst 0x90 7>, + <&usb31_misc_rst 0xA0 8>, + <&usb31_misc_rst 0xA0 9>; + + dwc3: usb@ff100000 { + compatible = "snps,dwc3"; + reg = <0x0 0xff100000 0x0 0x100000>; + + interrupts = <0 159 IRQ_TYPE_LEVEL_HIGH>, + <0 161 IRQ_TYPE_LEVEL_HIGH>; + + phys = <&usb_phy>; + phy-names = "usb3-phy"; + }; + }; + };Signature · 1 line
2.33.1
Re: [PATCH RESEND 1/7] dt-bindings: misc: add schema for USB hub on Kirin devices
In reply to Rob HerringEm Thu, 16 Dec 2021 13:52:01 -0600
Rob Herring <[email protected]> escreveu:
Quoted 10 lines
Quoted 5 lines · Mauro Carvalho Chehab
From: Yu Chen <[email protected]>
This patch adds binding documentation to support USB HUB and USB data role switch of HiSilicon HiKey960 and HiKey970 boards.
I don't see the point in reviewing this given a driver was already merged anyways,
Makes sense. On the other hand, it also makes sense to apply the DTS patches from this series, as those are the only things pending for PCI/USB to work on those devices.
Quoted 3 lines
I can't imagine that plugging in one USB port causing others to disconnect is a USB compliant design, and there are few boards and fewer users that care.
Afaikt, Kirin SoCs are designed for cell phones, with has just one USB port. That's maybe the reason for such design.
Btw, this DT binding is used by both HiKey 960 and HiKey 970. The HiKey960 board comes with just one port, which can either be host or gadget. So, it seems to be an USB-compliant design on such hardware.
Quoted 81 lines
Quoted 61 lines
[mchehab: updated OF schema and added HiKey970 example]Signed-off-by Yu Chen <[email protected]>Signed-off-by John Stultz <[email protected]>Signed-off-by Mauro Carvalho Chehab <[email protected]>---
To avoid mailbombing on a large number of people, only mailing lists were C/C on the cover. See [PATCH RESEND 0/7] at: https://lore.kernel.org/all/[email protected]/
.../bindings/misc/hisilicon,hikey-usb.yaml | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yamlDocumentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml new file +42
-0@@ -0,0 +1,87 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +# Copyright 2019 Linaro Ltd. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/misc/hisilicon,hikey-usb.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: HiKey960/970 onboard USB GPIO Hub + +maintainers: + - John Stultz <[email protected]> + +description: | + Supports the onboard USB GPIO hubs found on HiKey960/970. + Such hubs require a power supply for the USB I/O. Depending on the + exact hub model, after USB I/O is powered up, a reset should be needed. + + It also acts as a role-switch intermediary to detect the state of + the USB-C port, to switch the hub into dual-role USB-C or host mode, + which enables and powers up the onboard USB-A host ports. + + Schematics about such hubs can be found here: + https://github.com/96boards/documentation/raw/master/consumer/hikey/hikey960/hardware-docs/HiKey960_Schematics.pdf + https://www.96boards.org/documentation/consumer/hikey/hikey970/hardware-docs/files/hikey970-schematics.pdf + +properties: + compatible: + enum: + - hisilicon,usbhub + + typec-vbus-gpios: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: phandle to the typec-vbus gpio + + otg-switch-gpios: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: phandle to the otg-switch gpio + + hub-reset-en-gpios: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: phandle to the hub reset gpio +Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml line 52
Quoted 10 lines
Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml new file +10
-0+ usb-role-switch: + $ref: /schemas/types.yaml#/definitions/flag + description: Support role switch. + + hub-vdd-supply: + description: regulator for hub power + + port: + description: | + describe hadware connections between USB endpoints.USB endpoints? That's a s/w construct.
Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml line 53
Quoted 1 line
Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml new file +1
-0+ Two ports are supported: the first being the endpoint that will'port' means exactly 1 port.
Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml line 55
Quoted 2 lines
Documentation/devicetree/bindings/misc/hisilicon,hikey-usb.yaml new file +2
-0+ be notified by this driver, and the second being the endpoint + that notifies this driver of a role switch.
Quoted 6 lines
IMO, this node should represent the HS switch. I would expect an input port connected to the USB host and an output port with 2 endpoints connected to USB-C connector and the hub.
host(HS port) -> (port@0)Switch(port@1)+--endpoint@0 -> USB-C connector
|--endpoint@1 -> 2.0 hub
Yeah, that's what I meant to say. One port with two endpoints. I'll fix the description.
See, this is the properties used by the USB hub to work for HiKey 960:
usb-hub {
compatible = "hisilicon,usbhub";
typec-vbus-gpios = <&gpio25 2 GPIO_ACTIVE_HIGH>;
otg-switch-gpios = <&gpio25 6 GPIO_ACTIVE_HIGH>;
hub-vdd-supply = <&usb_hub_vdd>;
usb-role-switch;
port {
#address-cells = <1>;
#size-cells = <0>;
hikey_usb_ep0: endpoint@0 {
reg = <0>;
remote-endpoint = <&dwc3_role_switch>;
};
hikey_usb_ep1: endpoint@1 {
reg = <1>;
remote-endpoint = <&rt1711h_ep>;
};
};
};Quoted 2 lines
Then there's what does the hub look like which has been discussed separately and is still not upstream I think.
No, the hub driver was already merged.
Quoted 3 lines
But again, given this is devboard with limited use, I would just make using USB-C vs. USB host connectors a fixed boot time configuration with some one time setup and move on...
Provided that everything was merged already, including the hub driver, IMO the best would be to address the points you took on this patch and apply them with your ack, via Wei's tree.
Mauro