mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge tag 'usb-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB/PHY updates from Greg KH: "Here is the big set of USB and PHY driver patches for 5.2-rc1 There is the usual set of: - USB gadget updates - PHY driver updates and additions - USB serial driver updates and fixes - typec updates and new chips supported - mtu3 driver updates - xhci driver updates - other tiny driver updates Nothing really interesting, just constant forward progress. All of these have been in linux-next for a while with no reported issues. The usb-gadget and usb-serial trees were merged a bit "late", but both of them had been in linux-next before they got merged here last Friday" * tag 'usb-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (206 commits) USB: serial: f81232: implement break control USB: serial: f81232: add high baud rate support USB: serial: f81232: clear overrun flag USB: serial: f81232: fix interrupt worker not stop usb: dwc3: Rename DWC3_DCTL_LPM_ERRATA usb: dwc3: Fix default lpm_nyet_threshold value usb: dwc3: debug: Print GET_STATUS(device) tracepoint usb: dwc3: Do core validation early on probe usb: dwc3: gadget: Set lpm_capable usb: gadget: atmel: tie wake lock to running clock usb: gadget: atmel: support USB suspend usb: gadget: atmel_usba_udc: simplify setting of interrupt-enabled mask dwc2: gadget: Fix completed transfer size calculation in DDMA usb: dwc2: Set lpm mode parameters depend on HW configuration usb: dwc2: Fix channel disable flow usb: dwc2: Set actual frame number for completed ISOC transfer usb: gadget: do not use __constant_cpu_to_le16 usb: dwc2: gadget: Increase descriptors count for ISOC's usb: introduce usb_ep_type_string() function usb: dwc3: move synchronize_irq() out of the spinlock protected block ...
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
What: /sys/bus/i2c/drivers/ucsi_ccg/.../do_flash
|
||||
Date: May 2019
|
||||
Contact: Ajay Gupta <ajayg@nvidia.com>
|
||||
Description:
|
||||
Tell the driver for Cypress CCGx Type-C controller to attempt
|
||||
firmware upgrade by writing [Yy1] to the file.
|
||||
@@ -0,0 +1,27 @@
|
||||
What: Raise a uevent when a USB Host Controller has died
|
||||
Date: 2019-04-17
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description: When the USB Host Controller has entered a state where it is no
|
||||
longer functional a uevent will be raised. The uevent will
|
||||
contain ACTION=offline and ERROR=DEAD.
|
||||
|
||||
Here is an example taken using udevadm monitor -p:
|
||||
|
||||
KERNEL[130.428945] offline /devices/pci0000:00/0000:00:10.0/usb2 (usb)
|
||||
ACTION=offline
|
||||
BUSNUM=002
|
||||
DEVNAME=/dev/bus/usb/002/001
|
||||
DEVNUM=001
|
||||
DEVPATH=/devices/pci0000:00/0000:00:10.0/usb2
|
||||
DEVTYPE=usb_device
|
||||
DRIVER=usb
|
||||
ERROR=DEAD
|
||||
MAJOR=189
|
||||
MINOR=128
|
||||
PRODUCT=1d6b/2/414
|
||||
SEQNUM=2168
|
||||
SUBSYSTEM=usb
|
||||
TYPE=9/0/1
|
||||
|
||||
Users: chromium-os-dev@chromium.org
|
||||
@@ -0,0 +1,32 @@
|
||||
Broadcom Stingray USB PHY
|
||||
|
||||
Required properties:
|
||||
- compatible : should be one of the listed compatibles
|
||||
- "brcm,sr-usb-combo-phy" is combo PHY has two PHYs, one SS and one HS.
|
||||
- "brcm,sr-usb-hs-phy" is a single HS PHY.
|
||||
- reg: offset and length of the PHY blocks registers
|
||||
- #phy-cells:
|
||||
- Must be 1 for brcm,sr-usb-combo-phy as it expects one argument to indicate
|
||||
the PHY number of two PHYs. 0 for HS PHY and 1 for SS PHY.
|
||||
- Must be 0 for brcm,sr-usb-hs-phy.
|
||||
|
||||
Refer to phy/phy-bindings.txt for the generic PHY binding properties
|
||||
|
||||
Example:
|
||||
usbphy0: usb-phy@0 {
|
||||
compatible = "brcm,sr-usb-combo-phy";
|
||||
reg = <0x00000000 0x100>;
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
|
||||
usbphy1: usb-phy@10000 {
|
||||
compatible = "brcm,sr-usb-combo-phy";
|
||||
reg = <0x00010000 0x100>,
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
|
||||
usbphy2: usb-phy@20000 {
|
||||
compatible = "brcm,sr-usb-hs-phy";
|
||||
reg = <0x00020000 0x100>,
|
||||
#phy-cells = <0>;
|
||||
};
|
||||
@@ -7,6 +7,9 @@ Required properties:
|
||||
- clocks: phandles to the clocks for each clock listed in clock-names
|
||||
- clock-names: must contain "phy"
|
||||
|
||||
Optional properties:
|
||||
- vbus-supply: A phandle to the regulator for USB VBUS.
|
||||
|
||||
Example:
|
||||
usb3_phy0: phy@381f0040 {
|
||||
compatible = "fsl,imx8mq-usb-phy";
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
* Amlogic G12A USB2 PHY binding
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be "amlogic,meson-g12a-usb2-phy"
|
||||
- reg: The base address and length of the registers
|
||||
- #phys-cells: must be 0 (see phy-bindings.txt in this directory)
|
||||
- clocks: a phandle to the clock of this PHY
|
||||
- clock-names: must be "xtal"
|
||||
- resets: a phandle to the reset line of this PHY
|
||||
- reset-names: must be "phy"
|
||||
- phy-supply: see phy-bindings.txt in this directory
|
||||
|
||||
Example:
|
||||
usb2_phy0: phy@36000 {
|
||||
compatible = "amlogic,g12a-usb2-phy";
|
||||
reg = <0x0 0x36000 0x0 0x2000>;
|
||||
clocks = <&xtal>;
|
||||
clock-names = "xtal";
|
||||
resets = <&reset RESET_USB_PHY21>;
|
||||
reset-names = "phy";
|
||||
#phy-cells = <0>;
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
* Amlogic G12A USB3 + PCIE Combo PHY binding
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be "amlogic,meson-g12a-usb3-pcie-phy"
|
||||
- #phys-cells: must be 1. The cell number is used to select the phy mode
|
||||
as defined in <dt-bindings/phy/phy.h> between PHY_TYPE_USB3 and PHY_TYPE_PCIE
|
||||
- reg: The base address and length of the registers
|
||||
- clocks: a phandle to the 100MHz reference clock of this PHY
|
||||
- clock-names: must be "ref_clk"
|
||||
- resets: phandle to the reset lines for the PHY control
|
||||
- reset-names: must be "phy"
|
||||
|
||||
Example:
|
||||
usb3_pcie_phy: phy@46000 {
|
||||
compatible = "amlogic,g12a-usb3-pcie-phy";
|
||||
reg = <0x0 0x46000 0x0 0x2000>;
|
||||
clocks = <&clkc CLKID_PCIE_PLL>;
|
||||
clock-names = "ref_clk";
|
||||
resets = <&reset RESET_PCIE_PHY>;
|
||||
reset-names = "phy";
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
@@ -36,11 +36,20 @@ Required properties:
|
||||
- Tegra124: "nvidia,tegra124-xusb-padctl"
|
||||
- Tegra132: "nvidia,tegra132-xusb-padctl", "nvidia,tegra124-xusb-padctl"
|
||||
- Tegra210: "nvidia,tegra210-xusb-padctl"
|
||||
- Tegra186: "nvidia,tegra186-xusb-padctl"
|
||||
- reg: Physical base address and length of the controller's registers.
|
||||
- resets: Must contain an entry for each entry in reset-names.
|
||||
- reset-names: Must include the following entries:
|
||||
- "padctl"
|
||||
|
||||
For Tegra186:
|
||||
- avdd-pll-erefeut-supply: UPHY brick and reference clock as well as UTMI PHY
|
||||
power supply. Must supply 1.8 V.
|
||||
- avdd-usb-supply: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must supply
|
||||
3.3 V.
|
||||
- vclamp-usb-supply: Bias rail for USB pad. Must supply 1.8 V.
|
||||
- vddio-hsic-supply: HSIC PHY power supply. Must supply 1.2 V.
|
||||
|
||||
|
||||
Pad nodes:
|
||||
==========
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
Hisilicon hi3660 USB PHY
|
||||
-----------------------
|
||||
|
||||
Required properties:
|
||||
- compatible: should be "hisilicon,hi3660-usb-phy"
|
||||
- #phy-cells: must be 0
|
||||
- hisilicon,pericrg-syscon: phandle of syscon used to control phy.
|
||||
- hisilicon,pctrl-syscon: phandle of syscon used to control phy.
|
||||
- hisilicon,eye-diagram-param: parameter set for phy
|
||||
Refer to phy/phy-bindings.txt for the generic PHY binding properties
|
||||
|
||||
This is a subnode of usb3_otg_bc register node.
|
||||
|
||||
Example:
|
||||
usb3_otg_bc: usb3_otg_bc@ff200000 {
|
||||
compatible = "syscon", "simple-mfd";
|
||||
reg = <0x0 0xff200000 0x0 0x1000>;
|
||||
|
||||
usb-phy {
|
||||
compatible = "hisilicon,hi3660-usb-phy";
|
||||
#phy-cells = <0>;
|
||||
hisilicon,pericrg-syscon = <&crg_ctrl>;
|
||||
hisilicon,pctrl-syscon = <&pctrl>;
|
||||
hisilicon,eye-diagram-param = <0x22466e4>;
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,38 @@
|
||||
MediaTek Universal Flash Storage (UFS) M-PHY binding
|
||||
--------------------------------------------------------
|
||||
|
||||
UFS M-PHY nodes are defined to describe on-chip UFS M-PHY hardware macro.
|
||||
Each UFS M-PHY node should have its own node.
|
||||
|
||||
To bind UFS M-PHY with UFS host controller, the controller node should
|
||||
contain a phandle reference to UFS M-PHY node.
|
||||
|
||||
Required properties for UFS M-PHY nodes:
|
||||
- compatible : Compatible list, contains the following controller:
|
||||
"mediatek,mt8183-ufsphy" for ufs phy
|
||||
persent on MT81xx chipsets.
|
||||
- reg : Address and length of the UFS M-PHY register set.
|
||||
- #phy-cells : This property shall be set to 0.
|
||||
- clocks : List of phandle and clock specifier pairs.
|
||||
- clock-names : List of clock input name strings sorted in the same
|
||||
order as the clocks property. Following clocks are
|
||||
mandatory.
|
||||
"unipro": Unipro core control clock.
|
||||
"mp": M-PHY core control clock.
|
||||
|
||||
Example:
|
||||
|
||||
ufsphy: phy@11fa0000 {
|
||||
compatible = "mediatek,mt8183-ufsphy";
|
||||
reg = <0 0x11fa0000 0 0xc000>;
|
||||
#phy-cells = <0>;
|
||||
|
||||
clocks = <&infracfg_ao INFRACFG_AO_UNIPRO_SCK_CG>,
|
||||
<&infracfg_ao INFRACFG_AO_UFS_MP_SAP_BCLK_CG>;
|
||||
clock-names = "unipro", "mp";
|
||||
};
|
||||
|
||||
ufshci@11270000 {
|
||||
...
|
||||
phys = <&ufsphy>;
|
||||
};
|
||||
@@ -11,6 +11,7 @@ Required properties:
|
||||
"qcom,msm8996-qmp-usb3-phy" for 14nm USB3 phy on msm8996,
|
||||
"qcom,msm8998-qmp-usb3-phy" for USB3 QMP V3 phy on msm8998,
|
||||
"qcom,msm8998-qmp-ufs-phy" for UFS QMP phy on msm8998,
|
||||
"qcom,msm8998-qmp-pcie-phy" for PCIe QMP phy on msm8998,
|
||||
"qcom,sdm845-qmp-usb3-phy" for USB3 QMP V3 phy on sdm845,
|
||||
"qcom,sdm845-qmp-usb3-uni-phy" for USB3 QMP V3 UNI phy on sdm845,
|
||||
"qcom,sdm845-qmp-ufs-phy" for UFS QMP phy on sdm845.
|
||||
@@ -48,6 +49,8 @@ Required properties:
|
||||
"aux", "cfg_ahb", "ref".
|
||||
For "qcom,msm8998-qmp-ufs-phy" must contain:
|
||||
"ref", "ref_aux".
|
||||
For "qcom,msm8998-qmp-pcie-phy" must contain:
|
||||
"aux", "cfg_ahb", "ref".
|
||||
For "qcom,sdm845-qmp-usb3-phy" must contain:
|
||||
"aux", "cfg_ahb", "ref", "com_aux".
|
||||
For "qcom,sdm845-qmp-usb3-uni-phy" must contain:
|
||||
@@ -59,7 +62,8 @@ Required properties:
|
||||
one for each entry in reset-names.
|
||||
- reset-names: "phy" for reset of phy block,
|
||||
"common" for phy common block reset,
|
||||
"cfg" for phy's ahb cfg block reset.
|
||||
"cfg" for phy's ahb cfg block reset,
|
||||
"ufsphy" for the PHY reset in the UFS controller.
|
||||
|
||||
For "qcom,ipq8074-qmp-pcie-phy" must contain:
|
||||
"phy", "common".
|
||||
@@ -69,12 +73,16 @@ Required properties:
|
||||
"phy", "common".
|
||||
For "qcom,msm8998-qmp-usb3-phy" must contain
|
||||
"phy", "common".
|
||||
For "qcom,msm8998-qmp-ufs-phy": no resets are listed.
|
||||
For "qcom,msm8998-qmp-ufs-phy": must contain:
|
||||
"ufsphy".
|
||||
For "qcom,msm8998-qmp-pcie-phy" must contain:
|
||||
"phy", "common".
|
||||
For "qcom,sdm845-qmp-usb3-phy" must contain:
|
||||
"phy", "common".
|
||||
For "qcom,sdm845-qmp-usb3-uni-phy" must contain:
|
||||
"phy", "common".
|
||||
For "qcom,sdm845-qmp-ufs-phy": no resets are listed.
|
||||
For "qcom,sdm845-qmp-ufs-phy": must contain:
|
||||
"ufsphy".
|
||||
|
||||
- vdda-phy-supply: Phandle to a regulator supply to PHY core block.
|
||||
- vdda-pll-supply: Phandle to 1.8V regulator supply to PHY refclk pll block.
|
||||
|
||||
@@ -7,6 +7,7 @@ Required properties:
|
||||
- compatible: "renesas,usb-phy-r8a7743" if the device is a part of R8A7743 SoC.
|
||||
"renesas,usb-phy-r8a7744" if the device is a part of R8A7744 SoC.
|
||||
"renesas,usb-phy-r8a7745" if the device is a part of R8A7745 SoC.
|
||||
"renesas,usb-phy-r8a77470" if the device is a part of R8A77470 SoC.
|
||||
"renesas,usb-phy-r8a7790" if the device is a part of R8A7790 SoC.
|
||||
"renesas,usb-phy-r8a7791" if the device is a part of R8A7791 SoC.
|
||||
"renesas,usb-phy-r8a7794" if the device is a part of R8A7794 SoC.
|
||||
@@ -30,7 +31,7 @@ channels. These subnodes must contain the following properties:
|
||||
- #phy-cells: see phy-bindings.txt in the same directory, must be <1>.
|
||||
|
||||
The phandle's argument in the PHY specifier is the USB controller selector for
|
||||
the USB channel; see the selector meanings below:
|
||||
the USB channel other than r8a77470 SoC; see the selector meanings below:
|
||||
|
||||
+-----------+---------------+---------------+
|
||||
|\ Selector | | |
|
||||
@@ -41,6 +42,16 @@ the USB channel; see the selector meanings below:
|
||||
| 2 | PCI EHCI/OHCI | xHCI |
|
||||
+-----------+---------------+---------------+
|
||||
|
||||
For r8a77470 SoC;see the selector meaning below:
|
||||
|
||||
+-----------+---------------+---------------+
|
||||
|\ Selector | | |
|
||||
+ --------- + 0 | 1 |
|
||||
| Channel \| | |
|
||||
+-----------+---------------+---------------+
|
||||
| 0 | EHCI/OHCI | HS-USB |
|
||||
+-----------+---------------+---------------+
|
||||
|
||||
Example (Lager board):
|
||||
|
||||
usb-phy@e6590100 {
|
||||
@@ -48,15 +59,53 @@ Example (Lager board):
|
||||
reg = <0 0xe6590100 0 0x100>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&mstp7_clks R8A7790_CLK_HSUSB>;
|
||||
clocks = <&cpg CPG_MOD 704>;
|
||||
clock-names = "usbhs";
|
||||
power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
|
||||
resets = <&cpg 704>;
|
||||
|
||||
usb-channel@0 {
|
||||
usb0: usb-channel@0 {
|
||||
reg = <0>;
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
usb-channel@2 {
|
||||
usb2: usb-channel@2 {
|
||||
reg = <2>;
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
Example (iWave RZ/G1C sbc):
|
||||
|
||||
usbphy0: usb-phy0@e6590100 {
|
||||
compatible = "renesas,usb-phy-r8a77470",
|
||||
"renesas,rcar-gen2-usb-phy";
|
||||
reg = <0 0xe6590100 0 0x100>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&cpg CPG_MOD 704>;
|
||||
clock-names = "usbhs";
|
||||
power-domains = <&sysc R8A77470_PD_ALWAYS_ON>;
|
||||
resets = <&cpg 704>;
|
||||
|
||||
usb0: usb-channel@0 {
|
||||
reg = <0>;
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
usbphy1: usb-phy@e6598100 {
|
||||
compatible = "renesas,usb-phy-r8a77470",
|
||||
"renesas,rcar-gen2-usb-phy";
|
||||
reg = <0 0xe6598100 0 0x100>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&cpg CPG_MOD 706>;
|
||||
clock-names = "usbhs";
|
||||
power-domains = <&sysc R8A77470_PD_ALWAYS_ON>;
|
||||
resets = <&cpg 706>;
|
||||
|
||||
usb1: usb-channel@0 {
|
||||
reg = <0>;
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
* Renesas R-Car generation 3 USB 2.0 PHY
|
||||
|
||||
This file provides information on what the device node for the R-Car generation
|
||||
3 and RZ/G2 USB 2.0 PHY contain.
|
||||
3, RZ/G1C and RZ/G2 USB 2.0 PHY contain.
|
||||
|
||||
Required properties:
|
||||
- compatible: "renesas,usb2-phy-r8a774a1" if the device is a part of an R8A774A1
|
||||
- compatible: "renesas,usb2-phy-r8a77470" if the device is a part of an R8A77470
|
||||
SoC.
|
||||
"renesas,usb2-phy-r8a774a1" if the device is a part of an R8A774A1
|
||||
SoC.
|
||||
"renesas,usb2-phy-r8a774c0" if the device is a part of an R8A774C0
|
||||
SoC.
|
||||
@@ -27,7 +29,13 @@ Required properties:
|
||||
|
||||
- reg: offset and length of the partial USB 2.0 Host register block.
|
||||
- clocks: clock phandle and specifier pair(s).
|
||||
- #phy-cells: see phy-bindings.txt in the same directory, must be <0>.
|
||||
- #phy-cells: see phy-bindings.txt in the same directory, must be <1> (and
|
||||
using <0> is deprecated).
|
||||
|
||||
The phandle's argument in the PHY specifier is the INT_STATUS bit of controller:
|
||||
- 1 = USBH_INTA (OHCI)
|
||||
- 2 = USBH_INTB (EHCI)
|
||||
- 3 = UCOM_INT (OTG and BC)
|
||||
|
||||
Optional properties:
|
||||
To use a USB channel where USB 2.0 Host and HSUSB (USB 2.0 Peripheral) are
|
||||
|
||||
@@ -7,12 +7,15 @@ Required properties:
|
||||
- reg: PHY register address offset and length in "general
|
||||
register files"
|
||||
|
||||
Optional clocks using the clock bindings (see ../clock/clock-bindings.txt),
|
||||
specified by name:
|
||||
Optional properties:
|
||||
- clock-names: Should contain "emmcclk". Although this is listed as optional
|
||||
(because most boards can get basic functionality without having
|
||||
access to it), it is strongly suggested.
|
||||
See ../clock/clock-bindings.txt for details.
|
||||
- clocks: Should have a phandle to the card clock exported by the SDHCI driver.
|
||||
- drive-impedance-ohm: Specifies the drive impedance in Ohm.
|
||||
Possible values are 33, 40, 50, 66 and 100.
|
||||
If not set, the default value of 50 will be applied.
|
||||
|
||||
Example:
|
||||
|
||||
@@ -29,6 +32,7 @@ grf: syscon@ff770000 {
|
||||
reg = <0xf780 0x20>;
|
||||
clocks = <&sdhci>;
|
||||
clock-names = "emmcclk";
|
||||
drive-impedance-ohm = <50>;
|
||||
#phy-cells = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
TI AM654 SERDES
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be "ti,phy-am654-serdes"
|
||||
- reg : Address and length of the register set for the device.
|
||||
- #phy-cells: determine the number of cells that should be given in the
|
||||
phandle while referencing this phy. Should be "2". The 1st cell
|
||||
corresponds to the phy type (should be one of the types specified in
|
||||
include/dt-bindings/phy/phy.h) and the 2nd cell should be the serdes
|
||||
lane function.
|
||||
If SERDES0 is referenced 2nd cell should be:
|
||||
0 - USB3
|
||||
1 - PCIe0 Lane0
|
||||
2 - ICSS2 SGMII Lane0
|
||||
If SERDES1 is referenced 2nd cell should be:
|
||||
0 - PCIe1 Lane0
|
||||
1 - PCIe0 Lane1
|
||||
2 - ICSS2 SGMII Lane1
|
||||
- power-domains: As documented by the generic PM domain bindings in
|
||||
Documentation/devicetree/bindings/power/power_domain.txt.
|
||||
- clocks: List of clock-specifiers representing the input to the SERDES.
|
||||
Should have 3 items representing the left input clock, external
|
||||
reference clock and right input clock in that order.
|
||||
- clock-output-names: List of clock names for each of the clock outputs of
|
||||
SERDES. Should have 3 items for CMU reference clock,
|
||||
left output clock and right output clock in that order.
|
||||
- assigned-clocks: As defined in
|
||||
Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||
- assigned-clock-parents: As defined in
|
||||
Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||
- #clock-cells: Should be <1> to choose between the 3 output clocks.
|
||||
Defined in Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||
|
||||
The following macros are defined in dt-bindings/phy/phy-am654-serdes.h
|
||||
for selecting the correct reference clock. This can be used while
|
||||
specifying the clocks created by SERDES.
|
||||
=> AM654_SERDES_CMU_REFCLK
|
||||
=> AM654_SERDES_LO_REFCLK
|
||||
=> AM654_SERDES_RO_REFCLK
|
||||
|
||||
- mux-controls: Phandle to the multiplexer that is used to select the lane
|
||||
function. See #phy-cells above to see the multiplex values.
|
||||
|
||||
Example:
|
||||
|
||||
Example for SERDES0 is given below. It has 3 clock inputs;
|
||||
left input reference clock as indicated by <&k3_clks 153 4>, external
|
||||
reference clock as indicated by <&k3_clks 153 1> and right input
|
||||
reference clock as indicated by <&serdes1 AM654_SERDES_LO_REFCLK>. (The
|
||||
right input of SERDES0 is connected to the left output of SERDES1).
|
||||
|
||||
SERDES0 registers 3 clock outputs as indicated in clock-output-names. The
|
||||
first refers to the CMU reference clock, second refers to the left output
|
||||
reference clock and the third refers to the right output reference clock.
|
||||
|
||||
The assigned-clocks and assigned-clock-parents is used here to set the
|
||||
parent of left input reference clock to MAINHSDIV_CLKOUT4 and parent of
|
||||
CMU reference clock to left input reference clock.
|
||||
|
||||
serdes0: serdes@900000 {
|
||||
compatible = "ti,phy-am654-serdes";
|
||||
reg = <0x0 0x900000 0x0 0x2000>;
|
||||
reg-names = "serdes";
|
||||
#phy-cells = <2>;
|
||||
power-domains = <&k3_pds 153>;
|
||||
clocks = <&k3_clks 153 4>, <&k3_clks 153 1>,
|
||||
<&serdes1 AM654_SERDES_LO_REFCLK>;
|
||||
clock-output-names = "serdes0_cmu_refclk", "serdes0_lo_refclk",
|
||||
"serdes0_ro_refclk";
|
||||
assigned-clocks = <&k3_clks 153 4>, <&serdes0 AM654_SERDES_CMU_REFCLK>;
|
||||
assigned-clock-parents = <&k3_clks 153 8>, <&k3_clks 153 4>;
|
||||
ti,serdes-clk = <&serdes0_clk>;
|
||||
mux-controls = <&serdes_mux 0>;
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
|
||||
Example for PCIe consumer node using the SERDES PHY specifier is given below.
|
||||
&pcie0_rc {
|
||||
num-lanes = <2>;
|
||||
phys = <&serdes0 PHY_TYPE_PCIE 1>, <&serdes1 PHY_TYPE_PCIE 1>;
|
||||
phy-names = "pcie-phy0", "pcie-phy1";
|
||||
};
|
||||
@@ -29,6 +29,7 @@ Optional properties:
|
||||
- vdda-pll-max-microamp : specifies max. load that can be drawn from pll supply
|
||||
- vddp-ref-clk-supply : phandle to UFS device ref_clk pad power supply
|
||||
- vddp-ref-clk-max-microamp : specifies max. load that can be drawn from this supply
|
||||
- resets : specifies the PHY reset in the UFS controller
|
||||
|
||||
Example:
|
||||
|
||||
@@ -51,9 +52,11 @@ Example:
|
||||
<&clock_gcc clk_ufs_phy_ldo>,
|
||||
<&clock_gcc clk_gcc_ufs_tx_cfg_clk>,
|
||||
<&clock_gcc clk_gcc_ufs_rx_cfg_clk>;
|
||||
resets = <&ufshc 0>;
|
||||
};
|
||||
|
||||
ufshc@fc598000 {
|
||||
ufshc: ufshc@fc598000 {
|
||||
#reset-cells = <1>;
|
||||
...
|
||||
phys = <&ufsphy1>;
|
||||
phy-names = "ufsphy";
|
||||
|
||||
@@ -50,6 +50,8 @@ Optional properties:
|
||||
-lanes-per-direction : number of lanes available per direction - either 1 or 2.
|
||||
Note that it is assume same number of lanes is used both
|
||||
directions at once. If not specified, default is 2 lanes per direction.
|
||||
- #reset-cells : Must be <1> for Qualcomm UFS controllers that expose
|
||||
PHY reset from the UFS controller.
|
||||
- resets : reset node register
|
||||
- reset-names : describe reset node register, the "rst" corresponds to reset the whole UFS IP.
|
||||
|
||||
@@ -79,4 +81,5 @@ Example:
|
||||
reset-names = "rst";
|
||||
phys = <&ufsphy1>;
|
||||
phy-names = "ufsphy";
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
@@ -40,3 +40,91 @@ Example device nodes:
|
||||
phy-names = "usb2-phy", "usb3-phy";
|
||||
};
|
||||
};
|
||||
|
||||
Amlogic Meson G12A DWC3 USB SoC Controller Glue
|
||||
|
||||
The Amlogic G12A embeds a DWC3 USB IP Core configured for USB2 and USB3
|
||||
in host-only mode, and a DWC2 IP Core configured for USB2 peripheral mode
|
||||
only.
|
||||
|
||||
A glue connects the DWC3 core to USB2 PHYs and optionnaly to an USB3 PHY.
|
||||
|
||||
One of the USB2 PHY can be re-routed in peripheral mode to a DWC2 USB IP.
|
||||
|
||||
The DWC3 Glue controls the PHY routing and power, an interrupt line is
|
||||
connected to the Glue to serve as OTG ID change detection.
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be "amlogic,meson-g12a-usb-ctrl"
|
||||
- clocks: a handle for the "USB" clock
|
||||
- resets: a handle for the shared "USB" reset line
|
||||
- reg: The base address and length of the registers
|
||||
- interrupts: the interrupt specifier for the OTG detection
|
||||
- phys: handle to used PHYs on the system
|
||||
- a <0> phandle can be used if a PHY is not used
|
||||
- phy-names: names of the used PHYs on the system :
|
||||
- "usb2-phy0" for USB2 PHY0 if USBHOST_A port is used
|
||||
- "usb2-phy1" for USB2 PHY1 if USBOTG_B port is used
|
||||
- "usb3-phy0" for USB3 PHY if USB3_0 is used
|
||||
- dr_mode: should be "host", "peripheral", or "otg" depending on
|
||||
the usage and configuration of the OTG Capable port.
|
||||
- "host" and "peripheral" means a fixed Host or Device only connection
|
||||
- "otg" means the port can be used as both Host or Device and
|
||||
be switched automatically using the OTG ID pin.
|
||||
|
||||
Optional properties:
|
||||
- vbus-supply: should be a phandle to the regulator controlling the VBUS
|
||||
power supply when used in OTG switchable mode
|
||||
|
||||
Required child nodes:
|
||||
|
||||
A child node must exist to represent the core DWC3 IP block. The name of
|
||||
the node is not important. The content of the node is defined in dwc3.txt.
|
||||
|
||||
A child node must exist to represent the core DWC2 IP block. The name of
|
||||
the node is not important. The content of the node is defined in dwc2.txt.
|
||||
|
||||
PHY documentation is provided in the following places:
|
||||
- Documentation/devicetree/bindings/phy/meson-g12a-usb2-phy.txt
|
||||
- Documentation/devicetree/bindings/phy/meson-g12a-usb3-pcie-phy.txt
|
||||
|
||||
Example device nodes:
|
||||
usb: usb@ffe09000 {
|
||||
compatible = "amlogic,meson-g12a-usb-ctrl";
|
||||
reg = <0x0 0xffe09000 0x0 0xa0>;
|
||||
interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
clocks = <&clkc CLKID_USB>;
|
||||
resets = <&reset RESET_USB>;
|
||||
|
||||
dr_mode = "otg";
|
||||
|
||||
phys = <&usb2_phy0>, <&usb2_phy1>,
|
||||
<&usb3_pcie_phy PHY_TYPE_USB3>;
|
||||
phy-names = "usb2-phy0", "usb2-phy1", "usb3-phy0";
|
||||
|
||||
dwc2: usb@ff400000 {
|
||||
compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
|
||||
reg = <0x0 0xff400000 0x0 0x40000>;
|
||||
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
|
||||
clock-names = "ddr";
|
||||
phys = <&usb2_phy1>;
|
||||
dr_mode = "peripheral";
|
||||
g-rx-fifo-size = <192>;
|
||||
g-np-tx-fifo-size = <128>;
|
||||
g-tx-fifo-size = <128 128 16 16 16>;
|
||||
};
|
||||
|
||||
dwc3: usb@ff500000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x0 0xff500000 0x0 0x100000>;
|
||||
interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dr_mode = "host";
|
||||
snps,dis_u2_susphy_quirk;
|
||||
snps,quirk-frame-length-adjustment;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -14,6 +14,7 @@ Required properties:
|
||||
- "amlogic,meson8-usb": The DWC2 USB controller instance in Amlogic Meson8 SoCs;
|
||||
- "amlogic,meson8b-usb": The DWC2 USB controller instance in Amlogic Meson8b SoCs;
|
||||
- "amlogic,meson-gxbb-usb": The DWC2 USB controller instance in Amlogic S905 SoCs;
|
||||
- "amlogic,meson-g12a-usb": The DWC2 USB controller instance in Amlogic G12A SoCs;
|
||||
- "amcc,dwc-otg": The DWC2 USB controller instance in AMCC Canyonlands 460EX SoCs;
|
||||
- snps,dwc2: A generic DWC2 USB controller with default parameters.
|
||||
- "st,stm32f4x9-fsotg": The DWC2 USB FS/HS controller instance in STM32F4x9 SoCs
|
||||
@@ -31,12 +32,18 @@ Refer to clk/clock-bindings.txt for generic clock consumer properties
|
||||
Optional properties:
|
||||
- phys: phy provider specifier
|
||||
- phy-names: shall be "usb2-phy"
|
||||
- vbus-supply: reference to the VBUS regulator. Depending on the current mode
|
||||
this is enabled (in "host" mode") or disabled (in "peripheral" mode). The
|
||||
regulator is updated if the controller is configured in "otg" mode and the
|
||||
status changes between "host" and "peripheral".
|
||||
Refer to phy/phy-bindings.txt for generic phy consumer properties
|
||||
- dr_mode: shall be one of "host", "peripheral" and "otg"
|
||||
Refer to usb/generic.txt
|
||||
- g-rx-fifo-size: size of rx fifo size in gadget mode.
|
||||
- g-np-tx-fifo-size: size of non-periodic tx fifo size in gadget mode.
|
||||
- g-tx-fifo-size: size of periodic tx fifo per endpoint (except ep0) in gadget mode.
|
||||
- snps,reset-phy-on-wake: If present indicates that we need to reset the PHY when
|
||||
we detect a wakeup. This is due to a hardware errata.
|
||||
|
||||
Deprecated properties:
|
||||
- g-use-dma: gadget DMA mode is automatically detected
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/usb/generic-ehci.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: USB EHCI Controller Device Tree Bindings
|
||||
|
||||
allOf:
|
||||
- $ref: "usb-hcd.yaml"
|
||||
|
||||
maintainers:
|
||||
- Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: generic-ehci
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
minItems: 1
|
||||
maxItems: 4
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 4
|
||||
description: |
|
||||
In case the Renesas R-Car Gen3 SoCs:
|
||||
- if a host only channel: first clock should be host.
|
||||
- if a USB DRD channel: first clock should be host and second
|
||||
one should be peripheral
|
||||
|
||||
big-endian:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
Set this flag for HCDs with big endian descriptors and big
|
||||
endian registers.
|
||||
|
||||
big-endian-desc:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
Set this flag for HCDs with big endian descriptors.
|
||||
|
||||
big-endian-regs:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
Set this flag for HCDs with big endian registers.
|
||||
|
||||
has-transaction-translator:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
Set this flag if EHCI has a Transaction Translator built into
|
||||
the root hub.
|
||||
|
||||
needs-reset-on-resume:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
Set this flag to force EHCI reset after resume.
|
||||
|
||||
phys: true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
ehci@e0000300 {
|
||||
compatible = "ibm,usb-ehci-440epx", "generic-ehci";
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <0x1a 4>;
|
||||
reg = <0 0xe0000300 90 0 0xe0000390 70>;
|
||||
big-endian;
|
||||
};
|
||||
|
||||
- |
|
||||
ehci0: usb@1c14000 {
|
||||
compatible = "allwinner,sun4i-a10-ehci", "generic-ehci";
|
||||
reg = <0x01c14000 0x100>;
|
||||
interrupts = <39>;
|
||||
clocks = <&ahb_gates 1>;
|
||||
phys = <&usbphy 1>;
|
||||
phy-names = "usb";
|
||||
};
|
||||
|
||||
...
|
||||
@@ -0,0 +1,89 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/usb/generic-ohci.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: USB OHCI Controller Device Tree Bindings
|
||||
|
||||
allOf:
|
||||
- $ref: "usb-hcd.yaml"
|
||||
|
||||
maintainers:
|
||||
- Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: generic-ohci
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
description: |
|
||||
In case the Renesas R-Car Gen3 SoCs:
|
||||
- if a host only channel: first clock should be host.
|
||||
- if a USB DRD channel: first clock should be host and second
|
||||
one should be peripheral
|
||||
|
||||
big-endian:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
Set this flag for HCDs with big endian descriptors and big
|
||||
endian registers.
|
||||
|
||||
big-endian-desc:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
Set this flag for HCDs with big endian descriptors.
|
||||
|
||||
big-endian-regs:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
Set this flag for HCDs with big endian registers.
|
||||
|
||||
remote-wakeup-connected:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
Remote wakeup is wired on the platform.
|
||||
|
||||
no-big-frame-no:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
Set if frame_no lives in bits [15:0] of HCCA
|
||||
|
||||
num-ports:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description:
|
||||
Overrides the detected port count
|
||||
|
||||
phys: true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
ohci0: usb@1c14400 {
|
||||
compatible = "allwinner,sun4i-a10-ohci", "generic-ohci";
|
||||
reg = <0x01c14400 0x100>;
|
||||
interrupts = <64>;
|
||||
clocks = <&usb_clk 6>, <&ahb_gates 2>;
|
||||
phys = <&usbphy 1>;
|
||||
};
|
||||
|
||||
...
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user