Commit 8fc4deaa authored by Sebastian Reichel's avatar Sebastian Reichel Committed by David S. Miller
Browse files

dt-bindings: net: snps,dwmac: Document queue config subnodes



The queue configuration is referenced by snps,mtl-rx-config and
snps,mtl-tx-config. Some in-tree DTs and the example put the
referenced config nodes directly beneath the root node, but
most in-tree DTs put it as child node of the dwmac node.

This adds proper description for this setup, which has the
advantage of validating the queue configuration node content.

The example is also updated to use the sub-node style, incl.
the axi bus configuration node, which got the same treatment
as the queues config in 5361660a ("dt-bindings: net: snps,dwmac:
Document stmmac-axi-config subnode").

Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f3fb589a
Loading
Loading
Loading
Loading
+264 −81
Original line number Diff line number Diff line
@@ -167,56 +167,238 @@ properties:
  snps,mtl-rx-config:
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      Multiple RX Queues parameters. Phandle to a node that can
      contain the following properties
        * snps,rx-queues-to-use, number of RX queues to be used in the
          driver
        * Choose one of these RX scheduling algorithms
          * snps,rx-sched-sp, Strict priority
          * snps,rx-sched-wsp, Weighted Strict priority
        * For each RX queue
          * Choose one of these modes
            * snps,dcb-algorithm, Queue to be enabled as DCB
            * snps,avb-algorithm, Queue to be enabled as AVB
          * snps,map-to-dma-channel, Channel to map
          * Specifiy specific packet routing
            * snps,route-avcp, AV Untagged Control packets
            * snps,route-ptp, PTP Packets
            * snps,route-dcbcp, DCB Control Packets
            * snps,route-up, Untagged Packets
            * snps,route-multi-broad, Multicast & Broadcast Packets
          * snps,priority, bitmask of the tagged frames priorities assigned to
            the queue
      Multiple RX Queues parameters. Phandle to a node that
      implements the 'rx-queues-config' object described in
      this binding.

  rx-queues-config:
    type: object
    properties:
      snps,rx-queues-to-use:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: number of RX queues to be used in the driver
      snps,rx-sched-sp:
        type: boolean
        description: Strict priority
      snps,rx-sched-wsp:
        type: boolean
        description: Weighted Strict priority
    allOf:
      - if:
          required:
            - snps,rx-sched-sp
        then:
          properties:
            snps,rx-sched-wsp: false
      - if:
          required:
            - snps,rx-sched-wsp
        then:
          properties:
            snps,rx-sched-sp: false
    patternProperties:
      "^queue[0-9]$":
        description: Each subnode represents a queue.
        type: object
        properties:
          snps,dcb-algorithm:
            type: boolean
            description: Queue to be enabled as DCB
          snps,avb-algorithm:
            type: boolean
            description: Queue to be enabled as AVB
          snps,map-to-dma-channel:
            $ref: /schemas/types.yaml#/definitions/uint32
            description: DMA channel id to map
          snps,route-avcp:
            type: boolean
            description: AV Untagged Control packets
          snps,route-ptp:
            type: boolean
            description: PTP Packets
          snps,route-dcbcp:
            type: boolean
            description: DCB Control Packets
          snps,route-up:
            type: boolean
            description: Untagged Packets
          snps,route-multi-broad:
            type: boolean
            description: Multicast & Broadcast Packets
          snps,priority:
            $ref: /schemas/types.yaml#/definitions/uint32
            description: Bitmask of the tagged frames priorities assigned to the queue
        allOf:
          - if:
              required:
                - snps,dcb-algorithm
            then:
              properties:
                snps,avb-algorithm: false
          - if:
              required:
                - snps,avb-algorithm
            then:
              properties:
                snps,dcb-algorithm: false
          - if:
              required:
                - snps,route-avcp
            then:
              properties:
                snps,route-ptp: false
                snps,route-dcbcp: false
                snps,route-up: false
                snps,route-multi-broad: false
          - if:
              required:
                - snps,route-ptp
            then:
              properties:
                snps,route-avcp: false
                snps,route-dcbcp: false
                snps,route-up: false
                snps,route-multi-broad: false
          - if:
              required:
                - snps,route-dcbcp
            then:
              properties:
                snps,route-avcp: false
                snps,route-ptp: false
                snps,route-up: false
                snps,route-multi-broad: false
          - if:
              required:
                - snps,route-up
            then:
              properties:
                snps,route-avcp: false
                snps,route-ptp: false
                snps,route-dcbcp: false
                snps,route-multi-broad: false
          - if:
              required:
                - snps,route-multi-broad
            then:
              properties:
                snps,route-avcp: false
                snps,route-ptp: false
                snps,route-dcbcp: false
                snps,route-up: false
        additionalProperties: false
    additionalProperties: false

  snps,mtl-tx-config:
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      Multiple TX Queues parameters. Phandle to a node that can
      contain the following properties
        * snps,tx-queues-to-use, number of TX queues to be used in the
          driver
        * Choose one of these TX scheduling algorithms
          * snps,tx-sched-wrr, Weighted Round Robin
          * snps,tx-sched-wfq, Weighted Fair Queuing
          * snps,tx-sched-dwrr, Deficit Weighted Round Robin
          * snps,tx-sched-sp, Strict priority
        * For each TX queue
          * snps,weight, TX queue weight (if using a DCB weight
            algorithm)
          * Choose one of these modes
            * snps,dcb-algorithm, TX queue will be working in DCB
            * snps,avb-algorithm, TX queue will be working in AVB
              [Attention] Queue 0 is reserved for legacy traffic
                          and so no AVB is available in this queue.
          * Configure Credit Base Shaper (if AVB Mode selected)
            * snps,send_slope, enable Low Power Interface
            * snps,idle_slope, unlock on WoL
            * snps,high_credit, max write outstanding req. limit
            * snps,low_credit, max read outstanding req. limit
          * snps,priority, bitmask of the priorities assigned to the queue.
      Multiple TX Queues parameters. Phandle to a node that
      implements the 'tx-queues-config' object described in
      this binding.

  tx-queues-config:
    type: object
    properties:
      snps,tx-queues-to-use:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: number of TX queues to be used in the driver
      snps,tx-sched-wrr:
        type: boolean
        description: Weighted Round Robin
      snps,tx-sched-wfq:
        type: boolean
        description: Weighted Fair Queuing
      snps,tx-sched-dwrr:
        type: boolean
        description: Deficit Weighted Round Robin
      snps,tx-sched-sp:
        type: boolean
        description: Strict priority
    allOf:
      - if:
          required:
            - snps,tx-sched-wrr
        then:
          properties:
            snps,tx-sched-wfq: false
            snps,tx-sched-dwrr: false
            snps,tx-sched-sp: false
      - if:
          required:
            - snps,tx-sched-wfq
        then:
          properties:
            snps,tx-sched-wrr: false
            snps,tx-sched-dwrr: false
            snps,tx-sched-sp: false
      - if:
          required:
            - snps,tx-sched-dwrr
        then:
          properties:
            snps,tx-sched-wrr: false
            snps,tx-sched-wfq: false
            snps,tx-sched-sp: false
      - if:
          required:
            - snps,tx-sched-sp
        then:
          properties:
            snps,tx-sched-wrr: false
            snps,tx-sched-wfq: false
            snps,tx-sched-dwrr: false
    patternProperties:
      "^queue[0-9]$":
        description: Each subnode represents a queue.
        type: object
        properties:
          snps,weight:
            $ref: /schemas/types.yaml#/definitions/uint32
            description: TX queue weight (if using a DCB weight algorithm)
          snps,dcb-algorithm:
            type: boolean
            description: TX queue will be working in DCB
          snps,avb-algorithm:
            type: boolean
            description:
              TX queue will be working in AVB.
              Queue 0 is reserved for legacy traffic and so no AVB is
              available in this queue.
          snps,send_slope:
            $ref: /schemas/types.yaml#/definitions/uint32
            description: enable Low Power Interface
          snps,idle_slope:
            $ref: /schemas/types.yaml#/definitions/uint32
            description: unlock on WoL
          snps,high_credit:
            $ref: /schemas/types.yaml#/definitions/uint32
            description: max write outstanding req. limit
          snps,low_credit:
            $ref: /schemas/types.yaml#/definitions/uint32
            description: max read outstanding req. limit
          snps,priority:
            $ref: /schemas/types.yaml#/definitions/uint32
            description:
              Bitmask of the tagged frames priorities assigned to the queue.
              When a PFC frame is received with priorities matching the bitmask,
              the queue is blocked from transmitting for the pause time specified
              in the PFC frame.
        allOf:
          - if:
              required:
                - snps,dcb-algorithm
            then:
              properties:
                snps,avb-algorithm: false
          - if:
              required:
                - snps,avb-algorithm
            then:
              properties:
                snps,dcb-algorithm: false
                snps,weight: false
        additionalProperties: false
    additionalProperties: false

  snps,reset-gpio:
    deprecated: true
@@ -463,6 +645,25 @@ additionalProperties: true

examples:
  - |
    gmac0: ethernet@e0800000 {
        compatible = "snps,dwxgmac-2.10", "snps,dwxgmac";
        reg = <0xe0800000 0x8000>;
        interrupt-parent = <&vic1>;
        interrupts = <24 23 22>;
        interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
        mac-address = [000000000000]; /* Filled in by U-Boot */
        max-frame-size = <3800>;
        phy-mode = "gmii";
        snps,multicast-filter-bins = <256>;
        snps,perfect-filter-entries = <128>;
        rx-fifo-depth = <16384>;
        tx-fifo-depth = <16384>;
        clocks = <&clock>;
        clock-names = "stmmaceth";
        snps,axi-config = <&stmmac_axi_setup>;
        snps,mtl-rx-config = <&mtl_rx_setup>;
        snps,mtl-tx-config = <&mtl_tx_setup>;

        stmmac_axi_setup: stmmac-axi-config {
            snps,wr_osr_lmt = <0xf>;
            snps,rd_osr_lmt = <0xf>;
@@ -498,24 +699,6 @@ examples:
            };
        };

    gmac0: ethernet@e0800000 {
        compatible = "snps,dwxgmac-2.10", "snps,dwxgmac";
        reg = <0xe0800000 0x8000>;
        interrupt-parent = <&vic1>;
        interrupts = <24 23 22>;
        interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
        mac-address = [000000000000]; /* Filled in by U-Boot */
        max-frame-size = <3800>;
        phy-mode = "gmii";
        snps,multicast-filter-bins = <256>;
        snps,perfect-filter-entries = <128>;
        rx-fifo-depth = <16384>;
        tx-fifo-depth = <16384>;
        clocks = <&clock>;
        clock-names = "stmmaceth";
        snps,axi-config = <&stmmac_axi_setup>;
        snps,mtl-rx-config = <&mtl_rx_setup>;
        snps,mtl-tx-config = <&mtl_tx_setup>;
        mdio0 {
            #address-cells = <1>;
            #size-cells = <0>;