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 Original line Diff line number Diff line
@@ -167,56 +167,238 @@ properties:
  snps,mtl-rx-config:
  snps,mtl-rx-config:
    $ref: /schemas/types.yaml#/definitions/phandle
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
    description:
      Multiple RX Queues parameters. Phandle to a node that can
      Multiple RX Queues parameters. Phandle to a node that
      contain the following properties
      implements the 'rx-queues-config' object described in
        * snps,rx-queues-to-use, number of RX queues to be used in the
      this binding.
          driver

        * Choose one of these RX scheduling algorithms
  rx-queues-config:
          * snps,rx-sched-sp, Strict priority
    type: object
          * snps,rx-sched-wsp, Weighted Strict priority
    properties:
        * For each RX queue
      snps,rx-queues-to-use:
          * Choose one of these modes
        $ref: /schemas/types.yaml#/definitions/uint32
            * snps,dcb-algorithm, Queue to be enabled as DCB
        description: number of RX queues to be used in the driver
            * snps,avb-algorithm, Queue to be enabled as AVB
      snps,rx-sched-sp:
          * snps,map-to-dma-channel, Channel to map
        type: boolean
          * Specifiy specific packet routing
        description: Strict priority
            * snps,route-avcp, AV Untagged Control packets
      snps,rx-sched-wsp:
            * snps,route-ptp, PTP Packets
        type: boolean
            * snps,route-dcbcp, DCB Control Packets
        description: Weighted Strict priority
            * snps,route-up, Untagged Packets
    allOf:
            * snps,route-multi-broad, Multicast & Broadcast Packets
      - if:
          * snps,priority, bitmask of the tagged frames priorities assigned to
          required:
            the queue
            - 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:
  snps,mtl-tx-config:
    $ref: /schemas/types.yaml#/definitions/phandle
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
    description:
      Multiple TX Queues parameters. Phandle to a node that can
      Multiple TX Queues parameters. Phandle to a node that
      contain the following properties
      implements the 'tx-queues-config' object described in
        * snps,tx-queues-to-use, number of TX queues to be used in the
      this binding.
          driver

        * Choose one of these TX scheduling algorithms
  tx-queues-config:
          * snps,tx-sched-wrr, Weighted Round Robin
    type: object
          * snps,tx-sched-wfq, Weighted Fair Queuing
    properties:
          * snps,tx-sched-dwrr, Deficit Weighted Round Robin
      snps,tx-queues-to-use:
          * snps,tx-sched-sp, Strict priority
        $ref: /schemas/types.yaml#/definitions/uint32
        * For each TX queue
        description: number of TX queues to be used in the driver
          * snps,weight, TX queue weight (if using a DCB weight
      snps,tx-sched-wrr:
            algorithm)
        type: boolean
          * Choose one of these modes
        description: Weighted Round Robin
            * snps,dcb-algorithm, TX queue will be working in DCB
      snps,tx-sched-wfq:
            * snps,avb-algorithm, TX queue will be working in AVB
        type: boolean
              [Attention] Queue 0 is reserved for legacy traffic
        description: Weighted Fair Queuing
                          and so no AVB is available in this queue.
      snps,tx-sched-dwrr:
          * Configure Credit Base Shaper (if AVB Mode selected)
        type: boolean
            * snps,send_slope, enable Low Power Interface
        description: Deficit Weighted Round Robin
            * snps,idle_slope, unlock on WoL
      snps,tx-sched-sp:
            * snps,high_credit, max write outstanding req. limit
        type: boolean
            * snps,low_credit, max read outstanding req. limit
        description: Strict priority
          * snps,priority, bitmask of the priorities assigned to the queue.
    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,
              When a PFC frame is received with priorities matching the bitmask,
              the queue is blocked from transmitting for the pause time specified
              the queue is blocked from transmitting for the pause time specified
              in the PFC frame.
              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:
  snps,reset-gpio:
    deprecated: true
    deprecated: true
@@ -463,6 +645,25 @@ additionalProperties: true


examples:
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 {
        stmmac_axi_setup: stmmac-axi-config {
            snps,wr_osr_lmt = <0xf>;
            snps,wr_osr_lmt = <0xf>;
            snps,rd_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 {
        mdio0 {
            #address-cells = <1>;
            #address-cells = <1>;
            #size-cells = <0>;
            #size-cells = <0>;