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

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
...@@ -167,56 +167,238 @@ properties: ...@@ -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 ...@@ -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: ...@@ -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>;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment