Message ID | 20240812120529.3564390-3-christian.bruel@foss.st.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add STM32MP25 USB3/PCIE COMBOPHY driver | expand |
On Mon, 12 Aug 2024 14:05:26 +0200, Christian Bruel wrote: > Document the bindings for STM32 COMBOPHY interface, used to support > the PCIe and USB3 stm32mp25 drivers. > Following entries can be used to tune caracterisation parameters > - st,output-micro-ohms and st,output-vswing-microvolt bindings entries > to tune the impedance and voltage swing using discrete simulation results > - st, phy_rx0_eq register to set the internal rx equalizer filter value. > > Signed-off-by: Christian Bruel <christian.bruel@foss.st.com> > --- > .../bindings/phy/st,stm32-combophy.yaml | 178 ++++++++++++++++++ > 1 file changed, 178 insertions(+) > create mode 100644 Documentation/devicetree/bindings/phy/st,stm32-combophy.yaml > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/phy/st,stm32-combophy.yaml: access-controllers: missing type definition doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20240812120529.3564390-3-christian.bruel@foss.st.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
On Mon, Aug 12, 2024 at 07:34:12AM -0600, Rob Herring (Arm) wrote: > > On Mon, 12 Aug 2024 14:05:26 +0200, Christian Bruel wrote: > > Document the bindings for STM32 COMBOPHY interface, used to support > > the PCIe and USB3 stm32mp25 drivers. > > Following entries can be used to tune caracterisation parameters > > - st,output-micro-ohms and st,output-vswing-microvolt bindings entries > > to tune the impedance and voltage swing using discrete simulation results > > - st, phy_rx0_eq register to set the internal rx equalizer filter value. > > > > Signed-off-by: Christian Bruel <christian.bruel@foss.st.com> > > --- > > .../bindings/phy/st,stm32-combophy.yaml | 178 ++++++++++++++++++ > > 1 file changed, 178 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/phy/st,stm32-combophy.yaml > > > > My bot found errors running 'make dt_binding_check' on your patch: > > yamllint warnings/errors: > > dtschema/dtc warnings/errors: > /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/phy/st,stm32-combophy.yaml: access-controllers: missing type definition Ignore this. It's a problem with the build. Rob
On Mon, Aug 12, 2024 at 02:05:26PM +0200, Christian Bruel wrote: > Document the bindings for STM32 COMBOPHY interface, used to support > the PCIe and USB3 stm32mp25 drivers. > Following entries can be used to tune caracterisation parameters > - st,output-micro-ohms and st,output-vswing-microvolt bindings entries > to tune the impedance and voltage swing using discrete simulation results > - st, phy_rx0_eq register to set the internal rx equalizer filter value. > > Signed-off-by: Christian Bruel <christian.bruel@foss.st.com> > --- > .../bindings/phy/st,stm32-combophy.yaml | 178 ++++++++++++++++++ > 1 file changed, 178 insertions(+) > create mode 100644 Documentation/devicetree/bindings/phy/st,stm32-combophy.yaml > > diff --git a/Documentation/devicetree/bindings/phy/st,stm32-combophy.yaml b/Documentation/devicetree/bindings/phy/st,stm32-combophy.yaml > new file mode 100644 > index 0000000000000..6a53ab834b2a7 > --- /dev/null > +++ b/Documentation/devicetree/bindings/phy/st,stm32-combophy.yaml > @@ -0,0 +1,178 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/phy/st,stm32-combophy.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: STMicroelectronics STM32MP25 USB3/PCIe COMBOPHY > + > +maintainers: > + - Christian Bruel <christian.bruel@foss.st.com> > + > +description: | Don't need '|' if no formatting to preserve. > + Single lane PHY shared (exclusive) between the USB3 and PCIe controllers. > + Supports 5Gbit/s for USB3 and PCIe gen2 or 2.5Gbit/s for PCIe gen1. > + > +properties: > + compatible: > + const: st,stm32mp25-combophy > + > + reg: > + maxItems: 1 > + > + st,syscfg: Order is standard properties first, vendor properties second. > + $ref: /schemas/types.yaml#/definitions/phandle-array > + description: Phandle to the SYSCON entry required for configuring PCIe > + or USB3. You need constraints on the size of the phandle-array or perhaps this should be just 'phandle'. > + > + "#phy-cells": > + const: 1 > + description: | > + The cells contain the following arguments. > + > + - description: The PHY type > + enum: > + - PHY_TYPE_USB3 > + - PHY_TYPE_PCIE > + > + clocks: > + anyOf: Should be 'items' > + - description: apb-clk Bus clock mandatory to access registers. > + - description: ker-clk Internal RCC reference clock for USB3 or PCIe > + - description: pad-clk Optional on board clock input for PCIe only. Typically an > + external 100Mhz oscillator wired on dedicated CLKIN pad. Used as reference > + clock input instead of the ker-clk > + > + clock-names: > + oneOf: > + - items: > + - const: apb-clk > + - const: ker-clk > + > + - items: > + - const: apb-clk > + - const: ker-clk > + - const: pad-clk Don't need oneOf here. Just add 'minItems: 2' on the 2nd entry. '-clk' is also redundant. Drop. > + > + resets: > + maxItems: 1 > + > + reset-names: > + const: phy-rst > + > + power-domains: > + maxItems: 1 > + > + st,ssc-on: > + type: boolean > + description: > + A boolean property whose presence indicates that the SSC for common clock > + needs to be set. > + > + st,rx_equalizer: s/_/-/ > + $ref: /schemas/types.yaml#/definitions/uint32 > + minimum: 0 That's already the minimum. Drop. > + maximum: 7 > + default: 2 > + description: > + A 3 bit value describing internal filter settings for the RX equalizer. How does one decide what value to use? > + > + st,output-micro-ohms: > + minimum: 3999000 > + maximum: 6090000 > + default: 4968000 > + description: > + A value property to tune the Single Ended Output Impedance, simulations results > + at 25C for a VDDP=0.8V. The hardware accepts discrete values in this range. > + > + st,output-vswing-microvolt: > + minimum: 442000 > + maximum: 803000 > + default: 803000 > + description: > + A value property in microvolt to tune the Single Ended Output Voltage Swing to change the > + Vlo, Vhi for a VDDP = 0.8V. The hardware accepts discrete values in this range. > + > + wakeup-source: true > + > + interrupts: > + maxItems: 1 > + description: interrupt used for wakeup > + > + access-controllers: > + minItems: 1 > + maxItems: 2 > + > +required: > + - compatible > + - reg > + - st,syscfg > + - '#phy-cells' > + - resets > + - reset-names > + - clocks > + - clock-names > + > +allOf: > + - if: > + required: > + - wakeup-source > + then: > + anyOf: > + - required: [interrupts] > + - required: [interrupts-extended] > + > +additionalProperties: false > + > +examples: > + - | > + // Example 1: COMBOPHY configured to use internal reference clock > + #include <dt-bindings/clock/st,stm32mp25-rcc.h> > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/reset/st,stm32mp25-rcc.h> > + > + combophy_internal: phy@480c0000 { > + compatible = "st,stm32mp25-combophy"; > + reg = <0x480c0000 0x1000>; > + #phy-cells = <1>; > + clocks = <&rcc CK_BUS_USB3PCIEPHY>, <&rcc CK_KER_USB3PCIEPHY>; > + clock-names = "apb-clk", "ker-clk"; > + resets = <&rcc USB3PCIEPHY_R>; > + reset-names = "phy-rst"; > + st,syscfg = <&syscfg>; > + access-controllers = <&rifsc 67>; > + power-domains = <&CLUSTER_PD>; > + wakeup-source; > + interrupts-extended = <&exti1 45 IRQ_TYPE_EDGE_FALLING>; > + }; > + > + - | > + // Example 2: COMBOPHY configured to use extrenal 100MHz reference clock > + // on CLKIN pad for PCIe > + #include <dt-bindings/clock/st,stm32mp25-rcc.h> > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/reset/st,stm32mp25-rcc.h> > + > + clocks { > + pad_clk: pad-clk { > + #clock-cells = <0>; > + compatible = "fixed-clock"; > + clock-frequency = <100000000>; > + }; > + }; Drop. Providers aren't relevant to this binding. Though just 1 optional clock doesn't justify a whole other example. So drop one of the examples. > + > + combophy_pad: phy@480c0000 { > + compatible = "st,stm32mp25-combophy"; > + reg = <0x480c0000 0x1000>; > + #phy-cells = <1>; > + clocks = <&rcc CK_BUS_USB3PCIEPHY>, <&rcc CK_KER_USB3PCIEPHY>, <&pad_clk>; > + clock-names = "apb-clk", "ker-clk", "pad-clk"; > + resets = <&rcc USB3PCIEPHY_R>; > + reset-names = "phy-rst"; > + st,syscfg = <&syscfg>; > + access-controllers = <&rifsc 67>; > + power-domains = <&CLUSTER_PD>; > + wakeup-source; > + interrupts-extended = <&exti1 45 IRQ_TYPE_EDGE_FALLING>; > + }; > +... > -- > 2.34.1 >
diff --git a/Documentation/devicetree/bindings/phy/st,stm32-combophy.yaml b/Documentation/devicetree/bindings/phy/st,stm32-combophy.yaml new file mode 100644 index 0000000000000..6a53ab834b2a7 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/st,stm32-combophy.yaml @@ -0,0 +1,178 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/phy/st,stm32-combophy.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: STMicroelectronics STM32MP25 USB3/PCIe COMBOPHY + +maintainers: + - Christian Bruel <christian.bruel@foss.st.com> + +description: | + Single lane PHY shared (exclusive) between the USB3 and PCIe controllers. + Supports 5Gbit/s for USB3 and PCIe gen2 or 2.5Gbit/s for PCIe gen1. + +properties: + compatible: + const: st,stm32mp25-combophy + + reg: + maxItems: 1 + + st,syscfg: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: Phandle to the SYSCON entry required for configuring PCIe + or USB3. + + "#phy-cells": + const: 1 + description: | + The cells contain the following arguments. + + - description: The PHY type + enum: + - PHY_TYPE_USB3 + - PHY_TYPE_PCIE + + clocks: + anyOf: + - description: apb-clk Bus clock mandatory to access registers. + - description: ker-clk Internal RCC reference clock for USB3 or PCIe + - description: pad-clk Optional on board clock input for PCIe only. Typically an + external 100Mhz oscillator wired on dedicated CLKIN pad. Used as reference + clock input instead of the ker-clk + + clock-names: + oneOf: + - items: + - const: apb-clk + - const: ker-clk + + - items: + - const: apb-clk + - const: ker-clk + - const: pad-clk + + resets: + maxItems: 1 + + reset-names: + const: phy-rst + + power-domains: + maxItems: 1 + + st,ssc-on: + type: boolean + description: + A boolean property whose presence indicates that the SSC for common clock + needs to be set. + + st,rx_equalizer: + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 7 + default: 2 + description: + A 3 bit value describing internal filter settings for the RX equalizer. + + st,output-micro-ohms: + minimum: 3999000 + maximum: 6090000 + default: 4968000 + description: + A value property to tune the Single Ended Output Impedance, simulations results + at 25C for a VDDP=0.8V. The hardware accepts discrete values in this range. + + st,output-vswing-microvolt: + minimum: 442000 + maximum: 803000 + default: 803000 + description: + A value property in microvolt to tune the Single Ended Output Voltage Swing to change the + Vlo, Vhi for a VDDP = 0.8V. The hardware accepts discrete values in this range. + + wakeup-source: true + + interrupts: + maxItems: 1 + description: interrupt used for wakeup + + access-controllers: + minItems: 1 + maxItems: 2 + +required: + - compatible + - reg + - st,syscfg + - '#phy-cells' + - resets + - reset-names + - clocks + - clock-names + +allOf: + - if: + required: + - wakeup-source + then: + anyOf: + - required: [interrupts] + - required: [interrupts-extended] + +additionalProperties: false + +examples: + - | + // Example 1: COMBOPHY configured to use internal reference clock + #include <dt-bindings/clock/st,stm32mp25-rcc.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/reset/st,stm32mp25-rcc.h> + + combophy_internal: phy@480c0000 { + compatible = "st,stm32mp25-combophy"; + reg = <0x480c0000 0x1000>; + #phy-cells = <1>; + clocks = <&rcc CK_BUS_USB3PCIEPHY>, <&rcc CK_KER_USB3PCIEPHY>; + clock-names = "apb-clk", "ker-clk"; + resets = <&rcc USB3PCIEPHY_R>; + reset-names = "phy-rst"; + st,syscfg = <&syscfg>; + access-controllers = <&rifsc 67>; + power-domains = <&CLUSTER_PD>; + wakeup-source; + interrupts-extended = <&exti1 45 IRQ_TYPE_EDGE_FALLING>; + }; + + - | + // Example 2: COMBOPHY configured to use extrenal 100MHz reference clock + // on CLKIN pad for PCIe + #include <dt-bindings/clock/st,stm32mp25-rcc.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/reset/st,stm32mp25-rcc.h> + + clocks { + pad_clk: pad-clk { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <100000000>; + }; + }; + + combophy_pad: phy@480c0000 { + compatible = "st,stm32mp25-combophy"; + reg = <0x480c0000 0x1000>; + #phy-cells = <1>; + clocks = <&rcc CK_BUS_USB3PCIEPHY>, <&rcc CK_KER_USB3PCIEPHY>, <&pad_clk>; + clock-names = "apb-clk", "ker-clk", "pad-clk"; + resets = <&rcc USB3PCIEPHY_R>; + reset-names = "phy-rst"; + st,syscfg = <&syscfg>; + access-controllers = <&rifsc 67>; + power-domains = <&CLUSTER_PD>; + wakeup-source; + interrupts-extended = <&exti1 45 IRQ_TYPE_EDGE_FALLING>; + }; +...
Document the bindings for STM32 COMBOPHY interface, used to support the PCIe and USB3 stm32mp25 drivers. Following entries can be used to tune caracterisation parameters - st,output-micro-ohms and st,output-vswing-microvolt bindings entries to tune the impedance and voltage swing using discrete simulation results - st, phy_rx0_eq register to set the internal rx equalizer filter value. Signed-off-by: Christian Bruel <christian.bruel@foss.st.com> --- .../bindings/phy/st,stm32-combophy.yaml | 178 ++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 Documentation/devicetree/bindings/phy/st,stm32-combophy.yaml