| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/net/dsa/qca8k.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: Qualcomm Atheros QCA83xx switch family
- maintainers:
- - John Crispin <john@phrozen.org>
- description:
- If the QCA8K switch is connect to an SoC's external mdio-bus, each subnode
- describing a port needs to have a valid phandle referencing the internal PHY
- it is connected to. This is because there is no N:N mapping of port and PHY
- ID. To declare the internal mdio-bus configuration, declare an MDIO node in
- the switch node and declare the phandle for the port, referencing the internal
- PHY it is connected to. In this config, an internal mdio-bus is registered and
- the MDIO master is used for communication. Mixed external and internal
- mdio-bus configurations are not supported by the hardware.
- Each phy has at most 3 LEDs connected and can be declared
- using the standard LEDs structure.
- properties:
- compatible:
- oneOf:
- - enum:
- - qca,qca8327
- - qca,qca8328
- - qca,qca8334
- - qca,qca8337
- description: |
- qca,qca8328: referenced as AR8328(N)-AK1(A/B) QFN 176 pin package
- qca,qca8327: referenced as AR8327(N)-AL1A DR-QFN 148 pin package
- qca,qca8334: referenced as QCA8334-AL3C QFN 88 pin package
- qca,qca8337: referenced as QCA8337N-AL3(B/C) DR-QFN 148 pin package
- reg:
- maxItems: 1
- reset-gpios:
- description:
- GPIO to be used to reset the whole device
- maxItems: 1
- qca,ignore-power-on-sel:
- $ref: /schemas/types.yaml#/definitions/flag
- description:
- Ignore power-on pin strapping to configure LED open-drain or EEPROM
- presence. This is needed for devices with incorrect configuration or when
- the OEM has decided not to use pin strapping and falls back to SW regs.
- qca,led-open-drain:
- $ref: /schemas/types.yaml#/definitions/flag
- description:
- Set LEDs to open-drain mode. This requires the qca,ignore-power-on-sel to
- be set, otherwise the driver will fail at probe. This is required if the
- OEM does not use pin strapping to set this mode and prefers to set it
- using SW regs. The pin strappings related to LED open-drain mode are
- B68 on the QCA832x and B49 on the QCA833x.
- mdio:
- $ref: /schemas/net/mdio.yaml#
- unevaluatedProperties: false
- description: Qca8k switch have an internal mdio to access switch port.
- If this is not present, the legacy mapping is used and the
- internal mdio access is used.
- With the legacy mapping the reg corresponding to the internal
- mdio is the switch reg with an offset of -1.
- $ref: dsa.yaml#
- patternProperties:
- "^(ethernet-)?ports$":
- type: object
- additionalProperties: true
- patternProperties:
- "^(ethernet-)?port@[0-6]$":
- type: object
- description: Ethernet switch ports
- $ref: dsa-port.yaml#
- properties:
- qca,sgmii-rxclk-falling-edge:
- $ref: /schemas/types.yaml#/definitions/flag
- description:
- Set the receive clock phase to falling edge. Mostly commonly used on
- the QCA8327 with CPU port 0 set to SGMII.
- qca,sgmii-txclk-falling-edge:
- $ref: /schemas/types.yaml#/definitions/flag
- description:
- Set the transmit clock phase to falling edge.
- qca,sgmii-enable-pll:
- $ref: /schemas/types.yaml#/definitions/flag
- description:
- For SGMII CPU port, explicitly enable PLL, TX and RX chain along with
- Signal Detection. On the QCA8327 this should not be enabled, otherwise
- the SGMII port will not initialize. When used on the QCA8337, revision 3
- or greater, a warning will be displayed. When the CPU port is set to
- SGMII on the QCA8337, it is advised to set this unless a communication
- issue is observed.
- unevaluatedProperties: false
- oneOf:
- - required:
- - ports
- - required:
- - ethernet-ports
- required:
- - compatible
- - reg
- unevaluatedProperties: false
- examples:
- - |
- #include <dt-bindings/gpio/gpio.h>
- #include <dt-bindings/leds/common.h>
- mdio {
- #address-cells = <1>;
- #size-cells = <0>;
- external_phy_port1: ethernet-phy@0 {
- reg = <0>;
- };
- external_phy_port2: ethernet-phy@1 {
- reg = <1>;
- };
- external_phy_port3: ethernet-phy@2 {
- reg = <2>;
- };
- external_phy_port4: ethernet-phy@3 {
- reg = <3>;
- };
- external_phy_port5: ethernet-phy@4 {
- reg = <4>;
- };
- switch@10 {
- compatible = "qca,qca8337";
- reset-gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
- reg = <0x10>;
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
- port@0 {
- reg = <0>;
- ethernet = <&gmac1>;
- phy-mode = "rgmii";
- fixed-link {
- speed = <1000>;
- full-duplex;
- };
- };
- port@1 {
- reg = <1>;
- label = "lan1";
- phy-handle = <&external_phy_port1>;
- };
- port@2 {
- reg = <2>;
- label = "lan2";
- phy-handle = <&external_phy_port2>;
- };
- port@3 {
- reg = <3>;
- label = "lan3";
- phy-handle = <&external_phy_port3>;
- };
- port@4 {
- reg = <4>;
- label = "lan4";
- phy-handle = <&external_phy_port4>;
- };
- port@5 {
- reg = <5>;
- label = "wan";
- phy-handle = <&external_phy_port5>;
- };
- };
- };
- };
- - |
- #include <dt-bindings/gpio/gpio.h>
- mdio {
- #address-cells = <1>;
- #size-cells = <0>;
- switch@10 {
- compatible = "qca,qca8337";
- reset-gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
- reg = <0x10>;
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
- port@0 {
- reg = <0>;
- ethernet = <&gmac1>;
- phy-mode = "rgmii";
- fixed-link {
- speed = <1000>;
- full-duplex;
- };
- };
- port@1 {
- reg = <1>;
- label = "lan1";
- phy-mode = "internal";
- phy-handle = <&internal_phy_port1>;
- leds {
- #address-cells = <1>;
- #size-cells = <0>;
- led@0 {
- reg = <0>;
- color = <LED_COLOR_ID_WHITE>;
- function = LED_FUNCTION_LAN;
- default-state = "keep";
- };
- led@1 {
- reg = <1>;
- color = <LED_COLOR_ID_AMBER>;
- function = LED_FUNCTION_LAN;
- default-state = "keep";
- };
- };
- };
- port@2 {
- reg = <2>;
- label = "lan2";
- phy-mode = "internal";
- phy-handle = <&internal_phy_port2>;
- };
- port@3 {
- reg = <3>;
- label = "lan3";
- phy-mode = "internal";
- phy-handle = <&internal_phy_port3>;
- };
- port@4 {
- reg = <4>;
- label = "lan4";
- phy-mode = "internal";
- phy-handle = <&internal_phy_port4>;
- };
- port@5 {
- reg = <5>;
- label = "wan";
- phy-mode = "internal";
- phy-handle = <&internal_phy_port5>;
- };
- port@6 {
- reg = <0>;
- ethernet = <&gmac1>;
- phy-mode = "sgmii";
- qca,sgmii-rxclk-falling-edge;
- fixed-link {
- speed = <1000>;
- full-duplex;
- };
- };
- };
- mdio {
- #address-cells = <1>;
- #size-cells = <0>;
- internal_phy_port1: ethernet-phy@0 {
- reg = <0>;
- };
- internal_phy_port2: ethernet-phy@1 {
- reg = <1>;
- };
- internal_phy_port3: ethernet-phy@2 {
- reg = <2>;
- };
- internal_phy_port4: ethernet-phy@3 {
- reg = <3>;
- };
- internal_phy_port5: ethernet-phy@4 {
- reg = <4>;
- };
- };
- };
- };
|