mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git
synced 2026-04-18 06:34:27 -04:00
Pull USB / Thunderbolt updates from Greg KH: "Here is the big set of USB and Thunderbolt changes for 6.13-rc1. Overall, a pretty slow development cycle, the majority of the work going into the debugfs interface for the thunderbolt (i.e. USB4) code, to help with debugging the myrad ways that hardware vendors get their interfaces messed up. Other than that, here's the highlights: - thunderbolt changes and additions to debugfs interfaces - lots of device tree updates for new and old hardware - UVC configfs gadget updates and new apis for features - xhci driver updates and fixes - dwc3 driver updates and fixes - typec driver updates and fixes - lots of other small updates and fixes, full details in the shortlog All of these have been in linux-next for a while with no reported problems" * tag 'usb-6.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (148 commits) usb: typec: tcpm: Add support for sink-bc12-completion-time-ms DT property dt-bindings: usb: maxim,max33359: add usage of sink bc12 time property dt-bindings: connector: Add time property for Sink BC12 detection completion usb: dwc3: gadget: Remove dwc3_request->needs_extra_trb usb: dwc3: gadget: Cleanup SG handling usb: dwc3: gadget: Fix looping of queued SG entries usb: dwc3: gadget: Fix checking for number of TRBs left usb: dwc3: ep0: Don't clear ep0 DWC3_EP_TRANSFER_STARTED Revert "usb: gadget: composite: fix OS descriptors w_value logic" usb: ehci-spear: fix call balance of sehci clk handling routines USB: make to_usb_device_driver() use container_of_const() USB: make to_usb_driver() use container_of_const() USB: properly lock dynamic id list when showing an id USB: make single lock for all usb dynamic id lists drivers/usb/storage: refactor min with min_t drivers/usb/serial: refactor min with min_t drivers/usb/musb: refactor min/max with min_t/max_t drivers/usb/mon: refactor min with min_t drivers/usb/misc: refactor min with min_t drivers/usb/host: refactor min/max with min_t/max_t ...
620 lines
16 KiB
YAML
620 lines
16 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/usb/qcom,dwc3.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Qualcomm SuperSpeed DWC3 USB SoC controller
|
|
|
|
maintainers:
|
|
- Wesley Cheng <quic_wcheng@quicinc.com>
|
|
|
|
properties:
|
|
compatible:
|
|
items:
|
|
- enum:
|
|
- qcom,ipq4019-dwc3
|
|
- qcom,ipq5018-dwc3
|
|
- qcom,ipq5332-dwc3
|
|
- qcom,ipq6018-dwc3
|
|
- qcom,ipq8064-dwc3
|
|
- qcom,ipq8074-dwc3
|
|
- qcom,ipq9574-dwc3
|
|
- qcom,msm8953-dwc3
|
|
- qcom,msm8994-dwc3
|
|
- qcom,msm8996-dwc3
|
|
- qcom,msm8998-dwc3
|
|
- qcom,qcm2290-dwc3
|
|
- qcom,qcs404-dwc3
|
|
- qcom,qcs8300-dwc3
|
|
- qcom,qdu1000-dwc3
|
|
- qcom,sa8775p-dwc3
|
|
- qcom,sar2130p-dwc3
|
|
- qcom,sc7180-dwc3
|
|
- qcom,sc7280-dwc3
|
|
- qcom,sc8180x-dwc3
|
|
- qcom,sc8180x-dwc3-mp
|
|
- qcom,sc8280xp-dwc3
|
|
- qcom,sc8280xp-dwc3-mp
|
|
- qcom,sdm660-dwc3
|
|
- qcom,sdm670-dwc3
|
|
- qcom,sdm845-dwc3
|
|
- qcom,sdx55-dwc3
|
|
- qcom,sdx65-dwc3
|
|
- qcom,sdx75-dwc3
|
|
- qcom,sm4250-dwc3
|
|
- qcom,sm6115-dwc3
|
|
- qcom,sm6125-dwc3
|
|
- qcom,sm6350-dwc3
|
|
- qcom,sm6375-dwc3
|
|
- qcom,sm8150-dwc3
|
|
- qcom,sm8250-dwc3
|
|
- qcom,sm8350-dwc3
|
|
- qcom,sm8450-dwc3
|
|
- qcom,sm8550-dwc3
|
|
- qcom,sm8650-dwc3
|
|
- qcom,x1e80100-dwc3
|
|
- qcom,x1e80100-dwc3-mp
|
|
- const: qcom,dwc3
|
|
|
|
reg:
|
|
description: Offset and length of register set for QSCRATCH wrapper
|
|
maxItems: 1
|
|
|
|
"#address-cells":
|
|
enum: [ 1, 2 ]
|
|
|
|
"#size-cells":
|
|
enum: [ 1, 2 ]
|
|
|
|
ranges: true
|
|
|
|
power-domains:
|
|
description: specifies a phandle to PM domain provider node
|
|
maxItems: 1
|
|
|
|
required-opps:
|
|
maxItems: 1
|
|
|
|
clocks:
|
|
description: |
|
|
Several clocks are used, depending on the variant. Typical ones are::
|
|
- cfg_noc:: System Config NOC clock.
|
|
- core:: Master/Core clock, has to be >= 125 MHz for SS operation and >=
|
|
60MHz for HS operation.
|
|
- iface:: System bus AXI clock.
|
|
- sleep:: Sleep clock, used for wakeup when USB3 core goes into low
|
|
power mode (U3).
|
|
- mock_utmi:: Mock utmi clock needed for ITP/SOF generation in host
|
|
mode. Its frequency should be 19.2MHz.
|
|
minItems: 1
|
|
maxItems: 9
|
|
|
|
clock-names:
|
|
minItems: 1
|
|
maxItems: 9
|
|
|
|
resets:
|
|
maxItems: 1
|
|
|
|
interconnects:
|
|
maxItems: 2
|
|
|
|
interconnect-names:
|
|
items:
|
|
- const: usb-ddr
|
|
- const: apps-usb
|
|
|
|
interrupts:
|
|
description: |
|
|
Different types of interrupts are used based on HS PHY used on target:
|
|
- pwr_event: Used for wakeup based on other power events.
|
|
- hs_phy_irq: Apart from DP/DM/QUSB2 PHY interrupts, there is
|
|
hs_phy_irq which is not triggered by default and its
|
|
functionality is mutually exclusive to that of
|
|
{dp/dm}_hs_phy_irq and qusb2_phy_irq.
|
|
- qusb2_phy: SoCs with QUSB2 PHY do not have separate DP/DM IRQs and
|
|
expose only a single IRQ whose behavior can be modified
|
|
by the QUSB2PHY_INTR_CTRL register. The required DPSE/
|
|
DMSE configuration is done in QUSB2PHY_INTR_CTRL register
|
|
of PHY address space.
|
|
- {dp/dm}_hs_phy_irq: These IRQ's directly reflect changes on the DP/
|
|
DM pads of the SoC. These are used for wakeup
|
|
only on SoCs with non-QUSB2 targets with
|
|
exception of SDM670/SDM845/SM6350.
|
|
- ss_phy_irq: Used for remote wakeup in Super Speed mode of operation.
|
|
minItems: 2
|
|
maxItems: 18
|
|
|
|
interrupt-names:
|
|
minItems: 2
|
|
maxItems: 18
|
|
|
|
qcom,select-utmi-as-pipe-clk:
|
|
description:
|
|
If present, disable USB3 pipe_clk requirement.
|
|
Used when dwc3 operates without SSPHY and only
|
|
HS/FS/LS modes are supported.
|
|
type: boolean
|
|
|
|
wakeup-source: true
|
|
|
|
# Required child node:
|
|
|
|
patternProperties:
|
|
"^usb@[0-9a-f]+$":
|
|
$ref: snps,dwc3.yaml#
|
|
unevaluatedProperties: false
|
|
|
|
properties:
|
|
wakeup-source: false
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- "#address-cells"
|
|
- "#size-cells"
|
|
- ranges
|
|
- clocks
|
|
- clock-names
|
|
- interrupts
|
|
- interrupt-names
|
|
|
|
allOf:
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,ipq4019-dwc3
|
|
- qcom,ipq5332-dwc3
|
|
then:
|
|
properties:
|
|
clocks:
|
|
maxItems: 3
|
|
clock-names:
|
|
items:
|
|
- const: core
|
|
- const: sleep
|
|
- const: mock_utmi
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,ipq8064-dwc3
|
|
then:
|
|
properties:
|
|
clocks:
|
|
items:
|
|
- description: Master/Core clock, has to be >= 125 MHz
|
|
for SS operation and >= 60MHz for HS operation.
|
|
clock-names:
|
|
items:
|
|
- const: core
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,ipq9574-dwc3
|
|
- qcom,msm8953-dwc3
|
|
- qcom,msm8996-dwc3
|
|
- qcom,msm8998-dwc3
|
|
- qcom,qcs8300-dwc3
|
|
- qcom,sa8775p-dwc3
|
|
- qcom,sc7180-dwc3
|
|
- qcom,sc7280-dwc3
|
|
- qcom,sdm670-dwc3
|
|
- qcom,sdm845-dwc3
|
|
- qcom,sdx55-dwc3
|
|
- qcom,sdx65-dwc3
|
|
- qcom,sdx75-dwc3
|
|
- qcom,sm6350-dwc3
|
|
then:
|
|
properties:
|
|
clocks:
|
|
maxItems: 5
|
|
clock-names:
|
|
items:
|
|
- const: cfg_noc
|
|
- const: core
|
|
- const: iface
|
|
- const: sleep
|
|
- const: mock_utmi
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,ipq6018-dwc3
|
|
then:
|
|
properties:
|
|
clocks:
|
|
minItems: 3
|
|
maxItems: 4
|
|
clock-names:
|
|
oneOf:
|
|
- items:
|
|
- const: core
|
|
- const: sleep
|
|
- const: mock_utmi
|
|
- items:
|
|
- const: cfg_noc
|
|
- const: core
|
|
- const: sleep
|
|
- const: mock_utmi
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,ipq8074-dwc3
|
|
- qcom,qdu1000-dwc3
|
|
then:
|
|
properties:
|
|
clocks:
|
|
maxItems: 4
|
|
clock-names:
|
|
items:
|
|
- const: cfg_noc
|
|
- const: core
|
|
- const: sleep
|
|
- const: mock_utmi
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,ipq5018-dwc3
|
|
- qcom,msm8994-dwc3
|
|
- qcom,qcs404-dwc3
|
|
then:
|
|
properties:
|
|
clocks:
|
|
maxItems: 4
|
|
clock-names:
|
|
items:
|
|
- const: core
|
|
- const: iface
|
|
- const: sleep
|
|
- const: mock_utmi
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,sc8280xp-dwc3
|
|
- qcom,sc8280xp-dwc3-mp
|
|
- qcom,x1e80100-dwc3
|
|
- qcom,x1e80100-dwc3-mp
|
|
then:
|
|
properties:
|
|
clocks:
|
|
maxItems: 9
|
|
clock-names:
|
|
items:
|
|
- const: cfg_noc
|
|
- const: core
|
|
- const: iface
|
|
- const: sleep
|
|
- const: mock_utmi
|
|
- const: noc_aggr
|
|
- const: noc_aggr_north
|
|
- const: noc_aggr_south
|
|
- const: noc_sys
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,sdm660-dwc3
|
|
then:
|
|
properties:
|
|
clocks:
|
|
minItems: 4
|
|
maxItems: 5
|
|
clock-names:
|
|
oneOf:
|
|
- items:
|
|
- const: cfg_noc
|
|
- const: core
|
|
- const: iface
|
|
- const: sleep
|
|
- const: mock_utmi
|
|
- items:
|
|
- const: cfg_noc
|
|
- const: core
|
|
- const: sleep
|
|
- const: mock_utmi
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,qcm2290-dwc3
|
|
- qcom,sar2130p-dwc3
|
|
- qcom,sc8180x-dwc3
|
|
- qcom,sc8180x-dwc3-mp
|
|
- qcom,sm6115-dwc3
|
|
- qcom,sm6125-dwc3
|
|
- qcom,sm8150-dwc3
|
|
- qcom,sm8250-dwc3
|
|
- qcom,sm8450-dwc3
|
|
- qcom,sm8550-dwc3
|
|
- qcom,sm8650-dwc3
|
|
then:
|
|
properties:
|
|
clocks:
|
|
minItems: 6
|
|
clock-names:
|
|
items:
|
|
- const: cfg_noc
|
|
- const: core
|
|
- const: iface
|
|
- const: sleep
|
|
- const: mock_utmi
|
|
- const: xo
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,sm8350-dwc3
|
|
then:
|
|
properties:
|
|
clocks:
|
|
minItems: 5
|
|
maxItems: 6
|
|
clock-names:
|
|
minItems: 5
|
|
items:
|
|
- const: cfg_noc
|
|
- const: core
|
|
- const: iface
|
|
- const: sleep
|
|
- const: mock_utmi
|
|
- const: xo
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,ipq5018-dwc3
|
|
- qcom,ipq6018-dwc3
|
|
- qcom,ipq8074-dwc3
|
|
- qcom,msm8953-dwc3
|
|
- qcom,msm8998-dwc3
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
minItems: 2
|
|
maxItems: 3
|
|
interrupt-names:
|
|
items:
|
|
- const: pwr_event
|
|
- const: qusb2_phy
|
|
- const: ss_phy_irq
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,msm8996-dwc3
|
|
- qcom,qcs404-dwc3
|
|
- qcom,sdm660-dwc3
|
|
- qcom,sm6115-dwc3
|
|
- qcom,sm6125-dwc3
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
minItems: 3
|
|
maxItems: 4
|
|
interrupt-names:
|
|
items:
|
|
- const: pwr_event
|
|
- const: qusb2_phy
|
|
- const: hs_phy_irq
|
|
- const: ss_phy_irq
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,ipq5332-dwc3
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
maxItems: 3
|
|
interrupt-names:
|
|
items:
|
|
- const: pwr_event
|
|
- const: dp_hs_phy_irq
|
|
- const: dm_hs_phy_irq
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,x1e80100-dwc3
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
maxItems: 4
|
|
interrupt-names:
|
|
items:
|
|
- const: pwr_event
|
|
- const: dp_hs_phy_irq
|
|
- const: dm_hs_phy_irq
|
|
- const: ss_phy_irq
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,ipq4019-dwc3
|
|
- qcom,ipq8064-dwc3
|
|
- qcom,msm8994-dwc3
|
|
- qcom,qcs8300-dwc3
|
|
- qcom,qdu1000-dwc3
|
|
- qcom,sa8775p-dwc3
|
|
- qcom,sc7180-dwc3
|
|
- qcom,sc7280-dwc3
|
|
- qcom,sc8180x-dwc3
|
|
- qcom,sc8280xp-dwc3
|
|
- qcom,sdm670-dwc3
|
|
- qcom,sdm845-dwc3
|
|
- qcom,sdx55-dwc3
|
|
- qcom,sdx65-dwc3
|
|
- qcom,sdx75-dwc3
|
|
- qcom,sm4250-dwc3
|
|
- qcom,sm6350-dwc3
|
|
- qcom,sm8150-dwc3
|
|
- qcom,sm8250-dwc3
|
|
- qcom,sm8350-dwc3
|
|
- qcom,sm8450-dwc3
|
|
- qcom,sm8550-dwc3
|
|
- qcom,sm8650-dwc3
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
minItems: 4
|
|
maxItems: 5
|
|
interrupt-names:
|
|
minItems: 4
|
|
items:
|
|
- const: pwr_event
|
|
- const: hs_phy_irq
|
|
- const: dp_hs_phy_irq
|
|
- const: dm_hs_phy_irq
|
|
- const: ss_phy_irq
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,sc8180x-dwc3-mp
|
|
- qcom,x1e80100-dwc3-mp
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
minItems: 10
|
|
maxItems: 10
|
|
interrupt-names:
|
|
items:
|
|
- const: pwr_event_1
|
|
- const: pwr_event_2
|
|
- const: hs_phy_1
|
|
- const: hs_phy_2
|
|
- const: dp_hs_phy_1
|
|
- const: dm_hs_phy_1
|
|
- const: dp_hs_phy_2
|
|
- const: dm_hs_phy_2
|
|
- const: ss_phy_1
|
|
- const: ss_phy_2
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,sc8280xp-dwc3-mp
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
minItems: 18
|
|
maxItems: 18
|
|
interrupt-names:
|
|
items:
|
|
- const: pwr_event_1
|
|
- const: pwr_event_2
|
|
- const: pwr_event_3
|
|
- const: pwr_event_4
|
|
- const: hs_phy_1
|
|
- const: hs_phy_2
|
|
- const: hs_phy_3
|
|
- const: hs_phy_4
|
|
- const: dp_hs_phy_1
|
|
- const: dm_hs_phy_1
|
|
- const: dp_hs_phy_2
|
|
- const: dm_hs_phy_2
|
|
- const: dp_hs_phy_3
|
|
- const: dm_hs_phy_3
|
|
- const: dp_hs_phy_4
|
|
- const: dm_hs_phy_4
|
|
- const: ss_phy_1
|
|
- const: ss_phy_2
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/clock/qcom,gcc-sdm845.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
soc {
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
|
|
usb@a6f8800 {
|
|
compatible = "qcom,sdm845-dwc3", "qcom,dwc3";
|
|
reg = <0 0x0a6f8800 0 0x400>;
|
|
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
ranges;
|
|
clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
|
|
<&gcc GCC_USB30_PRIM_MASTER_CLK>,
|
|
<&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
|
|
<&gcc GCC_USB30_PRIM_SLEEP_CLK>,
|
|
<&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
|
|
clock-names = "cfg_noc",
|
|
"core",
|
|
"iface",
|
|
"sleep",
|
|
"mock_utmi";
|
|
|
|
assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
|
|
<&gcc GCC_USB30_PRIM_MASTER_CLK>;
|
|
assigned-clock-rates = <19200000>, <150000000>;
|
|
|
|
interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
|
|
<GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
|
|
<GIC_SPI 489 IRQ_TYPE_EDGE_BOTH>,
|
|
<GIC_SPI 488 IRQ_TYPE_EDGE_BOTH>,
|
|
<GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "pwr_event", "hs_phy_irq",
|
|
"dp_hs_phy_irq", "dm_hs_phy_irq", "ss_phy_irq";
|
|
|
|
power-domains = <&gcc USB30_PRIM_GDSC>;
|
|
|
|
resets = <&gcc GCC_USB30_PRIM_BCR>;
|
|
|
|
usb@a600000 {
|
|
compatible = "snps,dwc3";
|
|
reg = <0 0x0a600000 0 0xcd00>;
|
|
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
|
|
iommus = <&apps_smmu 0x740 0>;
|
|
snps,dis_u2_susphy_quirk;
|
|
snps,dis_enblslpm_quirk;
|
|
phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
|
|
phy-names = "usb2-phy", "usb3-phy";
|
|
};
|
|
};
|
|
};
|