[RFC PATCH 1/8] dt-bindings: net: Add TSN Endpoint Ethernet MAC support
Andrew Lunn
andrew at lunn.ch
Thu Feb 19 08:53:50 PST 2026
> +examples:
> + - |
> + tsn_ip: tsn at 80040000 {
> + compatible = "xlnx,tsn-endpoint-ethernet-mac-3.0";
> + reg = <0x80040000 0x40000>;
> + clocks = <&misc_clk_2>, <&misc_clk_2>, <&misc_clk_1>, <&misc_clk_1>, <&misc_clk_3>, <&misc_clk_0>;
> + clock-names = "gtx", "gtx90", "host_rxfifo", "host_txfifo", "ref", "s_axi";
> + dmas = <&axi_mcdma_0 0>, <&axi_mcdma_0 1>, <&axi_mcdma_0 2>, <&axi_mcdma_0 3>,
> + <&axi_mcdma_0 4>, <&axi_mcdma_0 5>, <&axi_mcdma_0 6>, <&axi_mcdma_0 7>,
> + <&axi_mcdma_0 16>, <&axi_mcdma_0 17>, <&axi_mcdma_0 18>, <&axi_mcdma_0 19>,
> + <&axi_mcdma_0 20>, <&axi_mcdma_0 21>, <&axi_mcdma_0 22>, <&axi_mcdma_0 23>;
> + dma-names = "tx_chan0","tx_chan1","tx_chan2","tx_chan3","tx_chan4","tx_chan5","tx_chan6",
> + "tx_chan7","rx_chan0","rx_chan1","rx_chan2","rx_chan3","rx_chan4","rx_chan5",
> + "rx_chan6","rx_chan7";
> + xlnx,num-priorities = <8>;
> + #address-cells = <1>;
> + #size-cells = <1>;
> + ranges = <0x0 0x80040000 0x40000>;
> + xlnx,tsn-tx-config = <&tsn_tx_config>;
> + tsn_tx_config: tx-queues-config {
> + queue0 {
> + xlnx,dma-channel-num = <0x5>;
> + };
> + queue1 {
> + xlnx,dma-channel-num = <0x4>;
> + };
> + queue2 {
> + xlnx,dma-channel-num = <0x3>;
> + };
> + queue3 {
> + xlnx,dma-channel-num = <0x2>;
> + };
> + queue4 {
> + xlnx,dma-channel-num = <0x1>;
> + };
> + queue5 {
> + xlnx,dma-channel-num = <0x0>;
> + };
> + };
> + // MAC 1 Node
> + mac1: ethernet-mac at 0 {
> + reg = <0x0 0x14000>;
> + phy-mode = "rgmii-id";
> + phy-handle = <&phy0>;
> + mdio {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + phy0: ethernet-phy at 0 {
> + device_type = "ethernet-phy";
> + reg = <0>;
> + };
> + };
Two } at the same level means your indentation is broken.
So each MAC has an MDIO node?
> + };
> +
> + // MAC 2 Node
> + mac2: ethernet-mac at 20000 {
> + reg = <0x20000 0x14000>;
> + phy-mode = "rgmii-id";
> + phy-handle = <&phy1>;
> + mdio {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + phy1: ethernet-phy at 1 {
> + device_type = "ethernet-phy";
> + reg = <1>;
> + };
> + };
> + };
> +
> + // Endpoint Node
> + ep_mac: ep-mac at 16000 {
> + reg = <0x16000 0xa000>;
> + };
Except the Endpoint MAC does not have MDIO? Or does it have an MDIO
bus, and you have simply not listed it?
> +
> + // Switch Node
> + tsn_switch: switch at 38000 {
> + reg = <0x38000 0x8000>;
> +
> + ethernet-ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port at 0 {
> + reg = <0>;
> + ethernet = <&ep_mac>;
> + };
So this looks like a DSA switch.
> +
> + port at 1 {
> + reg = <1>;
> + ethernet = <&mac1>;
If you look at Documentation/devicetree/bindings/net/dsa/dsa-port.yaml
you see this node is derives from ethernet-switch-port.yaml, and that
derives from ethernet-controller.yaml. All the MAC properties you have
above actually belong here.
Andrew
More information about the linux-arm-kernel
mailing list