* [PATCH] dt-bindings: misc: add binding for Xilinx AXI-Stream FIFO
@ 2026-06-21 8:52 Aditya Chari
2026-06-21 9:19 ` [PATCH v2] " Aditya Chari
2026-06-21 9:43 ` [PATCH v3] " Aditya Chari
0 siblings, 2 replies; 10+ messages in thread
From: Aditya Chari @ 2026-06-21 8:52 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, gregkh
Cc: jacobsfeder, devicetree, linux-staging, linux-kernel,
Aditya Chari
The axis-fifo driver's compatible strings were undocumented, flagged
by checkpatch.pl as UNDOCUMENTED_DT_STRING. Add a devicetree
binding document describing the required properties
for drivers/staging/axis-fifo, derived from the properties
the driver reads via of_property_read_u32()
in axis_fifo_parse_dt().
Signed-off-by: Aditya Chari <adi25charis@gmail.com>
---
.../bindings/misc/xlnx,axi-fifo-mm-s.yaml | 95 +++++++++++++++++++
1 file changed, 95 insertions(+)
create mode 100644 Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
diff --git a/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml b/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
new file mode 100644
index 000000000..8ef0adde3
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
@@ -0,0 +1,95 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/misc/xlnx,axi-fifo-mm-s.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Xilinx AXI-Stream FIFO (axis-fifo)
+
+maintainers:
+ - Jacob Feder <jacobsfeder@gmail.com>
+
+description:
+ The AXI-Stream FIFO (AXIS-FIFO) IP core provides a memory-mapped AXI4-Lite
+ interface for sending and receiving data over an AXI4-Stream interface
+ using FIFO buffers. See Xilinx PG080 for IP details.
+
+properties:
+ compatible:
+ enum:
+ - xlnx,axi-fifo-mm-s-4.1
+ - xlnx,axi-fifo-mm-s-4.2
+ - xlnx,axi-fifo-mm-s-4.3
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ xlnx,axi-str-rxd-tdata-width:
+ description:
+ Width in bits of the AXI4-Stream receive data interface. Only a
+ width of 32 is currently supported by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 32
+
+ xlnx,axi-str-txd-tdata-width:
+ description:
+ Width in bits of the AXI4-Stream transmit data interface. Only a
+ width of 32 is currently supported by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 32
+
+ xlnx,rx-fifo-depth:
+ description:
+ Depth in bytes of the receive FIFO, as configured in the IP core.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,tx-fifo-depth:
+ description:
+ Depth in bytes of the transmit FIFO, as configured in the IP core.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,use-rx-data:
+ description:
+ Indicates whether the receive data path is present, as configured
+ in the IP core. A value of 1 enables the receive path, 0 disables it.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [ 0, 1 ]
+
+ xlnx,use-tx-data:
+ description:
+ Indicates whether the transmit data path is present, as configured
+ in the IP core. A value of 1 enables the transmit path, 0 disables it.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [ 0, 1 ]
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - xlnx,axi-str-rxd-tdata-width
+ - xlnx,axi-str-txd-tdata-width
+ - xlnx,rx-fifo-depth
+ - xlnx,tx-fifo-depth
+ - xlnx,use-rx-data
+ - xlnx,use-tx-data
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ axi_fifo_mm_s_0: axi-fifo-mm-s@40000000 {
+ compatible = "xlnx,axi-fifo-mm-s-4.1";
+ reg = <0x40000000 0x10000>;
+ interrupts = <0 29 IRQ_TYPE_LEVEL_HIGH>;
+ xlnx,axi-str-rxd-tdata-width = <32>;
+ xlnx,axi-str-txd-tdata-width = <32>;
+ xlnx,rx-fifo-depth = <2048>;
+ xlnx,tx-fifo-depth = <2048>;
+ xlnx,use-rx-data = <1>;
+ xlnx,use-tx-data = <1>;
+ };
--
2.53.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH v2] dt-bindings: misc: add binding for Xilinx AXI-Stream FIFO
2026-06-21 8:52 [PATCH] dt-bindings: misc: add binding for Xilinx AXI-Stream FIFO Aditya Chari
@ 2026-06-21 9:19 ` Aditya Chari
2026-06-21 9:43 ` [PATCH v3] " Aditya Chari
1 sibling, 0 replies; 10+ messages in thread
From: Aditya Chari @ 2026-06-21 9:19 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, gregkh
Cc: jacobsfeder, devicetree, linux-staging, linux-kernel,
Aditya Chari
The axis-fifo driver's compatible strings were undocumented, flagged
by checkpatch.pl as UNDOCUMENTED_DT_STRING. Add a YAML devicetree
binding document for drivers/staging/axis-fifo, converted from and
replacing the existing free-form text binding (axis-fifo.txt), which
this patch removes.
Signed-off-by: Aditya Chari <adi25charis@gmail.com>
---
Changes since v1:
- Fixed xlnx,rx/tx-fifo-depth: depth is in 32-bit words, not bytes,
matching the driver's overflow check in axis_fifo_write() and the
wording of the original text binding.
- Restored the full set of hardware-generated properties (interrupt-
names, AXI-Stream protocol/width properties, has-axis-t* feature
flags, fifo threshold properties, etc.) so that additionalProperties:
false does not reject valid device trees generated for real hardware.
- Removed the now-superseded axis-fifo.txt text binding.
.../bindings/misc/xlnx,axi-fifo-mm-s.yaml | 221 ++++++++++++++++++
drivers/staging/axis-fifo/axis-fifo.txt | 96 --------
2 files changed, 221 insertions(+), 96 deletions(-)
create mode 100644 Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
delete mode 100644 drivers/staging/axis-fifo/axis-fifo.txt
diff --git a/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml b/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
new file mode 100644
index 000000000..f4606b13c
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
@@ -0,0 +1,221 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/misc/xlnx,axi-fifo-mm-s.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Xilinx AXI-Stream FIFO (axis-fifo)
+
+maintainers:
+ - Jacob Feder <jacobsfeder@gmail.com>
+
+description:
+ The AXI-Stream FIFO (AXIS-FIFO) IP core provides a memory-mapped AXI4-Lite
+ interface for sending and receiving data over an AXI4-Stream interface
+ using FIFO buffers. Currently supports only store-forward mode with a
+ 32-bit AXI4-Lite interface; cut-through mode and full AXI4 are not
+ supported. See Xilinx PG080 for IP details.
+
+properties:
+ compatible:
+ enum:
+ - xlnx,axi-fifo-mm-s-4.1
+ - xlnx,axi-fifo-mm-s-4.2
+ - xlnx,axi-fifo-mm-s-4.3
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ interrupt-names:
+ items:
+ - const: interrupt
+
+ xlnx,axi-str-rxd-tdata-width:
+ description:
+ Width in bits of the AXI4-Stream receive data interface. Only a
+ width of 32 is currently supported by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 32
+
+ xlnx,axi-str-txd-tdata-width:
+ description:
+ Width in bits of the AXI4-Stream transmit data interface. Only a
+ width of 32 is currently supported by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 32
+
+ xlnx,axi-str-txc-tdata-width:
+ description:
+ Width in bits of the AXI4-Stream transmit control interface.
+ Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,axi-str-rxd-protocol:
+ description: AXI-Stream receive data protocol. Ignored by the driver.
+ enum: [ XIL_AXI_STREAM_ETH_DATA ]
+
+ xlnx,axi-str-txd-protocol:
+ description: AXI-Stream transmit data protocol. Ignored by the driver.
+ enum: [ XIL_AXI_STREAM_ETH_DATA ]
+
+ xlnx,axi-str-txc-protocol:
+ description: AXI-Stream transmit control protocol. Ignored by the driver.
+ enum: [ XIL_AXI_STREAM_ETH_CTRL ]
+
+ xlnx,axis-tdest-width:
+ description: AXI-Stream TDEST width. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,axis-tid-width:
+ description: AXI-Stream TID width. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,axis-tuser-width:
+ description: AXI-Stream TUSER width. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,data-interface-type:
+ description: Data interface type. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,has-axis-tdest:
+ description:
+ Whether the AXI-Stream interface has TDEST. This feature is not
+ supported by the driver and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,has-axis-tid:
+ description:
+ Whether the AXI-Stream interface has TID. This feature is not
+ supported by the driver and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,has-axis-tkeep:
+ description:
+ Whether the AXI-Stream interface has TKEEP. This feature is not
+ supported by the driver and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,has-axis-tstrb:
+ description:
+ Whether the AXI-Stream interface has TSTRB. This feature is not
+ supported by the driver and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,has-axis-tuser:
+ description:
+ Whether the AXI-Stream interface has TUSER. This feature is not
+ supported by the driver and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,rx-fifo-depth:
+ description:
+ Depth in 32-bit words of the receive FIFO, as configured in the
+ IP core.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,rx-fifo-pe-threshold:
+ description: RX programmable empty interrupt threshold. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,rx-fifo-pf-threshold:
+ description: RX programmable full interrupt threshold. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,s-axi-id-width:
+ description: AXI4-Lite ID width. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,s-axi4-data-width:
+ description: AXI4-Lite data width. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,select-xpm:
+ description: Whether XPM macros are used. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,tx-fifo-depth:
+ description:
+ Depth in 32-bit words of the transmit FIFO, as configured in the
+ IP core.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,tx-fifo-pe-threshold:
+ description: TX programmable empty interrupt threshold. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,tx-fifo-pf-threshold:
+ description: TX programmable full interrupt threshold. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,use-rx-cut-through:
+ description:
+ Whether RX cut-through mode is used. Not supported by the driver
+ and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,use-rx-data:
+ description:
+ Indicates whether the receive data path is present, as configured
+ in the IP core. A value of 1 enables the receive path, 0 disables it.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [ 0, 1 ]
+
+ xlnx,use-tx-ctrl:
+ description:
+ Whether the transmit control interface is used. Not supported by
+ the driver and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,use-tx-cut-through:
+ description:
+ Whether TX cut-through mode is used. Not supported by the driver
+ and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,use-tx-data:
+ description:
+ Indicates whether the transmit data path is present, as configured
+ in the IP core. A value of 1 enables the transmit path, 0 disables it.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [ 0, 1 ]
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - xlnx,axi-str-rxd-tdata-width
+ - xlnx,axi-str-txd-tdata-width
+ - xlnx,rx-fifo-depth
+ - xlnx,tx-fifo-depth
+ - xlnx,use-rx-data
+ - xlnx,use-tx-data
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ axi_fifo_mm_s_0: axi-fifo-mm-s@40000000 {
+ compatible = "xlnx,axi-fifo-mm-s-4.1";
+ reg = <0x40000000 0x10000>;
+ interrupts = <0 29 IRQ_TYPE_LEVEL_HIGH>;
+ xlnx,axi-str-rxd-tdata-width = <32>;
+ xlnx,axi-str-txd-tdata-width = <32>;
+ xlnx,rx-fifo-depth = <512>;
+ xlnx,tx-fifo-depth = <32768>;
+ xlnx,use-rx-data = <1>;
+ xlnx,use-tx-data = <1>;
+ };
diff --git a/drivers/staging/axis-fifo/axis-fifo.txt b/drivers/staging/axis-fifo/axis-fifo.txt
deleted file mode 100644
index 413b81a53..000000000
--- a/drivers/staging/axis-fifo/axis-fifo.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-Xilinx AXI-Stream FIFO v4.1 IP core
-
-This IP core has read and write AXI-Stream FIFOs, the contents of which can
-be accessed from the AXI4 memory-mapped interface. This is useful for
-transferring data from a processor into the FPGA fabric. The driver creates
-a character device that can be read/written to with standard
-open/read/write/close.
-
-See Xilinx PG080 document for IP details.
-
-Currently supports only store-forward mode with a 32-bit
-AXI4-Lite interface. DOES NOT support:
- - cut-through mode
- - AXI4 (non-lite)
-
-Required properties:
-- compatible: Should be one of:
- "xlnx,axi-fifo-mm-s-4.1"
- "xlnx,axi-fifo-mm-s-4.2"
- "xlnx,axi-fifo-mm-s-4.3"
-- interrupt-names: Should be "interrupt"
-- interrupt-parent: Should be <&intc>
-- interrupts: Should contain interrupts lines.
-- reg: Should contain registers location and length.
-- xlnx,axi-str-rxd-protocol: Should be "XIL_AXI_STREAM_ETH_DATA"
-- xlnx,axi-str-rxd-tdata-width: Should be <0x20>
-- xlnx,axi-str-txc-protocol: Should be "XIL_AXI_STREAM_ETH_CTRL"
-- xlnx,axi-str-txc-tdata-width: Should be <0x20>
-- xlnx,axi-str-txd-protocol: Should be "XIL_AXI_STREAM_ETH_DATA"
-- xlnx,axi-str-txd-tdata-width: Should be <0x20>
-- xlnx,axis-tdest-width: AXI-Stream TDEST width (ignored by the driver)
-- xlnx,axis-tid-width: AXI-Stream TID width (ignored by the driver)
-- xlnx,axis-tuser-width: AXI-Stream TUSER width (ignored by the driver)
-- xlnx,data-interface-type: Should be <0x0> (ignored by the driver)
-- xlnx,has-axis-tdest: Should be <0x0> (this feature isn't supported)
-- xlnx,has-axis-tid: Should be <0x0> (this feature isn't supported)
-- xlnx,has-axis-tkeep: Should be <0x0> (this feature isn't supported)
-- xlnx,has-axis-tstrb: Should be <0x0> (this feature isn't supported)
-- xlnx,has-axis-tuser: Should be <0x0> (this feature isn't supported)
-- xlnx,rx-fifo-depth: Depth of RX FIFO in words
-- xlnx,rx-fifo-pe-threshold: RX programmable empty interrupt threshold
- (ignored by the driver)
-- xlnx,rx-fifo-pf-threshold: RX programmable full interrupt threshold
- (ignored by the driver)
-- xlnx,s-axi-id-width: Should be <0x4> (ignored by the driver)
-- xlnx,s-axi4-data-width: Should be <0x20> (ignored by the driver)
-- xlnx,select-xpm: Should be <0x0> (ignored by the driver)
-- xlnx,tx-fifo-depth: Depth of TX FIFO in words
-- xlnx,tx-fifo-pe-threshold: TX programmable empty interrupt threshold
- (ignored by the driver)
-- xlnx,tx-fifo-pf-threshold: TX programmable full interrupt threshold
- (ignored by the driver)
-- xlnx,use-rx-cut-through: Should be <0x0> (this feature isn't supported)
-- xlnx,use-rx-data: <0x1> if RX FIFO is enabled, <0x0> otherwise
-- xlnx,use-tx-ctrl: Should be <0x0> (this feature isn't supported)
-- xlnx,use-tx-cut-through: Should be <0x0> (this feature isn't supported)
-- xlnx,use-tx-data: <0x1> if TX FIFO is enabled, <0x0> otherwise
-
-Example:
-
-axi_fifo_mm_s_0: axi_fifo_mm_s@43c00000 {
- compatible = "xlnx,axi-fifo-mm-s-4.1";
- interrupt-names = "interrupt";
- interrupt-parent = <&intc>;
- interrupts = <0 29 4>;
- reg = <0x43c00000 0x10000>;
- xlnx,axi-str-rxd-protocol = "XIL_AXI_STREAM_ETH_DATA";
- xlnx,axi-str-rxd-tdata-width = <0x20>;
- xlnx,axi-str-txc-protocol = "XIL_AXI_STREAM_ETH_CTRL";
- xlnx,axi-str-txc-tdata-width = <0x20>;
- xlnx,axi-str-txd-protocol = "XIL_AXI_STREAM_ETH_DATA";
- xlnx,axi-str-txd-tdata-width = <0x20>;
- xlnx,axis-tdest-width = <0x4>;
- xlnx,axis-tid-width = <0x4>;
- xlnx,axis-tuser-width = <0x4>;
- xlnx,data-interface-type = <0x0>;
- xlnx,has-axis-tdest = <0x0>;
- xlnx,has-axis-tid = <0x0>;
- xlnx,has-axis-tkeep = <0x0>;
- xlnx,has-axis-tstrb = <0x0>;
- xlnx,has-axis-tuser = <0x0>;
- xlnx,rx-fifo-depth = <0x200>;
- xlnx,rx-fifo-pe-threshold = <0x2>;
- xlnx,rx-fifo-pf-threshold = <0x1fb>;
- xlnx,s-axi-id-width = <0x4>;
- xlnx,s-axi4-data-width = <0x20>;
- xlnx,select-xpm = <0x0>;
- xlnx,tx-fifo-depth = <0x8000>;
- xlnx,tx-fifo-pe-threshold = <0x200>;
- xlnx,tx-fifo-pf-threshold = <0x7ffb>;
- xlnx,use-rx-cut-through = <0x0>;
- xlnx,use-rx-data = <0x0>;
- xlnx,use-tx-ctrl = <0x0>;
- xlnx,use-tx-cut-through = <0x0>;
- xlnx,use-tx-data = <0x1>;
-};
--
2.53.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH v3] dt-bindings: misc: add binding for Xilinx AXI-Stream FIFO
2026-06-21 8:52 [PATCH] dt-bindings: misc: add binding for Xilinx AXI-Stream FIFO Aditya Chari
2026-06-21 9:19 ` [PATCH v2] " Aditya Chari
@ 2026-06-21 9:43 ` Aditya Chari
2026-06-21 18:33 ` Krzysztof Kozlowski
1 sibling, 1 reply; 10+ messages in thread
From: Aditya Chari @ 2026-06-21 9:43 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, gregkh
Cc: jacobsfeder, devicetree, linux-staging, linux-kernel,
Aditya Chari
The axis-fifo driver's compatible strings were undocumented, flagged
by checkpatch.pl as UNDOCUMENTED_DT_STRING. Add a YAML devicetree
binding document for drivers/staging/axis-fifo, converted from and
replacing the existing free-form text binding (axis-fifo.txt), which
this patch removes.
Constrain xlnx,tx-fifo-depth to a minimum of 4, since the driver
subtracts 4 from this value in its transmit bounds check and a
smaller value would underflow that check.
Signed-off-by: Aditya Chari <adi25charis@gmail.com>
---
Changes since v2:
- Added $ref: /schemas/types.yaml#/definitions/string to the three
AXI-Stream protocol enum properties (xlnx,axi-str-rxd-protocol,
xlnx,axi-str-txd-protocol, xlnx,axi-str-txc-protocol) for explicit
type consistency with the rest of the schema.
- Added minimum: 4 to xlnx,tx-fifo-depth, since the driver subtracts
4 from this value in its transmit bounds check
(axis_fifo_write()) and a smaller configured value would underflow
that unsigned check, bypassing the oversized-packet guard.
Changes since v1:
- Fixed xlnx,rx/tx-fifo-depth: depth is in 32-bit words, not bytes,
matching the driver's overflow check in axis_fifo_write() and the
wording of the original text binding.
- Restored the full set of hardware-generated properties (interrupt-
names, AXI-Stream protocol/width properties, has-axis-t* feature
flags, fifo threshold properties, etc.) so that additionalProperties:
false does not reject valid device trees generated for real hardware.
- Removed the now-superseded axis-fifo.txt text binding.
.../bindings/misc/xlnx,axi-fifo-mm-s.yaml | 227 ++++++++++++++++++
drivers/staging/axis-fifo/axis-fifo.txt | 96 --------
2 files changed, 227 insertions(+), 96 deletions(-)
create mode 100644 Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
delete mode 100644 drivers/staging/axis-fifo/axis-fifo.txt
diff --git a/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml b/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
new file mode 100644
index 000000000..53bf52524
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
@@ -0,0 +1,227 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/misc/xlnx,axi-fifo-mm-s.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Xilinx AXI-Stream FIFO (axis-fifo)
+
+maintainers:
+ - Jacob Feder <jacobsfeder@gmail.com>
+
+description:
+ The AXI-Stream FIFO (AXIS-FIFO) IP core provides a memory-mapped AXI4-Lite
+ interface for sending and receiving data over an AXI4-Stream interface
+ using FIFO buffers. Currently supports only store-forward mode with a
+ 32-bit AXI4-Lite interface; cut-through mode and full AXI4 are not
+ supported. See Xilinx PG080 for IP details.
+
+properties:
+ compatible:
+ enum:
+ - xlnx,axi-fifo-mm-s-4.1
+ - xlnx,axi-fifo-mm-s-4.2
+ - xlnx,axi-fifo-mm-s-4.3
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ interrupt-names:
+ items:
+ - const: interrupt
+
+ xlnx,axi-str-rxd-tdata-width:
+ description:
+ Width in bits of the AXI4-Stream receive data interface. Only a
+ width of 32 is currently supported by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 32
+
+ xlnx,axi-str-txd-tdata-width:
+ description:
+ Width in bits of the AXI4-Stream transmit data interface. Only a
+ width of 32 is currently supported by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 32
+
+ xlnx,axi-str-txc-tdata-width:
+ description:
+ Width in bits of the AXI4-Stream transmit control interface.
+ Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,axi-str-rxd-protocol:
+ description: AXI-Stream receive data protocol. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/string
+ enum: [ XIL_AXI_STREAM_ETH_DATA ]
+
+ xlnx,axi-str-txd-protocol:
+ description: AXI-Stream transmit data protocol. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/string
+ enum: [ XIL_AXI_STREAM_ETH_DATA ]
+
+ xlnx,axi-str-txc-protocol:
+ description: AXI-Stream transmit control protocol. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/string
+ enum: [ XIL_AXI_STREAM_ETH_CTRL ]
+
+ xlnx,axis-tdest-width:
+ description: AXI-Stream TDEST width. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,axis-tid-width:
+ description: AXI-Stream TID width. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,axis-tuser-width:
+ description: AXI-Stream TUSER width. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,data-interface-type:
+ description: Data interface type. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,has-axis-tdest:
+ description:
+ Whether the AXI-Stream interface has TDEST. This feature is not
+ supported by the driver and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,has-axis-tid:
+ description:
+ Whether the AXI-Stream interface has TID. This feature is not
+ supported by the driver and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,has-axis-tkeep:
+ description:
+ Whether the AXI-Stream interface has TKEEP. This feature is not
+ supported by the driver and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,has-axis-tstrb:
+ description:
+ Whether the AXI-Stream interface has TSTRB. This feature is not
+ supported by the driver and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,has-axis-tuser:
+ description:
+ Whether the AXI-Stream interface has TUSER. This feature is not
+ supported by the driver and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,rx-fifo-depth:
+ description:
+ Depth in 32-bit words of the receive FIFO, as configured in the
+ IP core.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,rx-fifo-pe-threshold:
+ description: RX programmable empty interrupt threshold. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,rx-fifo-pf-threshold:
+ description: RX programmable full interrupt threshold. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,s-axi-id-width:
+ description: AXI4-Lite ID width. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,s-axi4-data-width:
+ description: AXI4-Lite data width. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,select-xpm:
+ description: Whether XPM macros are used. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,tx-fifo-depth:
+ description:
+ Depth in 32-bit words of the transmit FIFO, as configured in the
+ IP core. Must be at least 4; the driver subtracts 4 from this
+ value when bounds-checking transmit writes, and a smaller value
+ underflows that check.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ minimum: 4
+
+ xlnx,tx-fifo-pe-threshold:
+ description: TX programmable empty interrupt threshold. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,tx-fifo-pf-threshold:
+ description: TX programmable full interrupt threshold. Ignored by the driver.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ xlnx,use-rx-cut-through:
+ description:
+ Whether RX cut-through mode is used. Not supported by the driver
+ and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,use-rx-data:
+ description:
+ Indicates whether the receive data path is present, as configured
+ in the IP core. A value of 1 enables the receive path, 0 disables it.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [ 0, 1 ]
+
+ xlnx,use-tx-ctrl:
+ description:
+ Whether the transmit control interface is used. Not supported by
+ the driver and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,use-tx-cut-through:
+ description:
+ Whether TX cut-through mode is used. Not supported by the driver
+ and must be 0.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ const: 0
+
+ xlnx,use-tx-data:
+ description:
+ Indicates whether the transmit data path is present, as configured
+ in the IP core. A value of 1 enables the transmit path, 0 disables it.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [ 0, 1 ]
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - xlnx,axi-str-rxd-tdata-width
+ - xlnx,axi-str-txd-tdata-width
+ - xlnx,rx-fifo-depth
+ - xlnx,tx-fifo-depth
+ - xlnx,use-rx-data
+ - xlnx,use-tx-data
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ axi_fifo_mm_s_0: axi-fifo-mm-s@40000000 {
+ compatible = "xlnx,axi-fifo-mm-s-4.1";
+ reg = <0x40000000 0x10000>;
+ interrupts = <0 29 IRQ_TYPE_LEVEL_HIGH>;
+ xlnx,axi-str-rxd-tdata-width = <32>;
+ xlnx,axi-str-txd-tdata-width = <32>;
+ xlnx,rx-fifo-depth = <512>;
+ xlnx,tx-fifo-depth = <32768>;
+ xlnx,use-rx-data = <1>;
+ xlnx,use-tx-data = <1>;
+ };
diff --git a/drivers/staging/axis-fifo/axis-fifo.txt b/drivers/staging/axis-fifo/axis-fifo.txt
deleted file mode 100644
index 413b81a53..000000000
--- a/drivers/staging/axis-fifo/axis-fifo.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-Xilinx AXI-Stream FIFO v4.1 IP core
-
-This IP core has read and write AXI-Stream FIFOs, the contents of which can
-be accessed from the AXI4 memory-mapped interface. This is useful for
-transferring data from a processor into the FPGA fabric. The driver creates
-a character device that can be read/written to with standard
-open/read/write/close.
-
-See Xilinx PG080 document for IP details.
-
-Currently supports only store-forward mode with a 32-bit
-AXI4-Lite interface. DOES NOT support:
- - cut-through mode
- - AXI4 (non-lite)
-
-Required properties:
-- compatible: Should be one of:
- "xlnx,axi-fifo-mm-s-4.1"
- "xlnx,axi-fifo-mm-s-4.2"
- "xlnx,axi-fifo-mm-s-4.3"
-- interrupt-names: Should be "interrupt"
-- interrupt-parent: Should be <&intc>
-- interrupts: Should contain interrupts lines.
-- reg: Should contain registers location and length.
-- xlnx,axi-str-rxd-protocol: Should be "XIL_AXI_STREAM_ETH_DATA"
-- xlnx,axi-str-rxd-tdata-width: Should be <0x20>
-- xlnx,axi-str-txc-protocol: Should be "XIL_AXI_STREAM_ETH_CTRL"
-- xlnx,axi-str-txc-tdata-width: Should be <0x20>
-- xlnx,axi-str-txd-protocol: Should be "XIL_AXI_STREAM_ETH_DATA"
-- xlnx,axi-str-txd-tdata-width: Should be <0x20>
-- xlnx,axis-tdest-width: AXI-Stream TDEST width (ignored by the driver)
-- xlnx,axis-tid-width: AXI-Stream TID width (ignored by the driver)
-- xlnx,axis-tuser-width: AXI-Stream TUSER width (ignored by the driver)
-- xlnx,data-interface-type: Should be <0x0> (ignored by the driver)
-- xlnx,has-axis-tdest: Should be <0x0> (this feature isn't supported)
-- xlnx,has-axis-tid: Should be <0x0> (this feature isn't supported)
-- xlnx,has-axis-tkeep: Should be <0x0> (this feature isn't supported)
-- xlnx,has-axis-tstrb: Should be <0x0> (this feature isn't supported)
-- xlnx,has-axis-tuser: Should be <0x0> (this feature isn't supported)
-- xlnx,rx-fifo-depth: Depth of RX FIFO in words
-- xlnx,rx-fifo-pe-threshold: RX programmable empty interrupt threshold
- (ignored by the driver)
-- xlnx,rx-fifo-pf-threshold: RX programmable full interrupt threshold
- (ignored by the driver)
-- xlnx,s-axi-id-width: Should be <0x4> (ignored by the driver)
-- xlnx,s-axi4-data-width: Should be <0x20> (ignored by the driver)
-- xlnx,select-xpm: Should be <0x0> (ignored by the driver)
-- xlnx,tx-fifo-depth: Depth of TX FIFO in words
-- xlnx,tx-fifo-pe-threshold: TX programmable empty interrupt threshold
- (ignored by the driver)
-- xlnx,tx-fifo-pf-threshold: TX programmable full interrupt threshold
- (ignored by the driver)
-- xlnx,use-rx-cut-through: Should be <0x0> (this feature isn't supported)
-- xlnx,use-rx-data: <0x1> if RX FIFO is enabled, <0x0> otherwise
-- xlnx,use-tx-ctrl: Should be <0x0> (this feature isn't supported)
-- xlnx,use-tx-cut-through: Should be <0x0> (this feature isn't supported)
-- xlnx,use-tx-data: <0x1> if TX FIFO is enabled, <0x0> otherwise
-
-Example:
-
-axi_fifo_mm_s_0: axi_fifo_mm_s@43c00000 {
- compatible = "xlnx,axi-fifo-mm-s-4.1";
- interrupt-names = "interrupt";
- interrupt-parent = <&intc>;
- interrupts = <0 29 4>;
- reg = <0x43c00000 0x10000>;
- xlnx,axi-str-rxd-protocol = "XIL_AXI_STREAM_ETH_DATA";
- xlnx,axi-str-rxd-tdata-width = <0x20>;
- xlnx,axi-str-txc-protocol = "XIL_AXI_STREAM_ETH_CTRL";
- xlnx,axi-str-txc-tdata-width = <0x20>;
- xlnx,axi-str-txd-protocol = "XIL_AXI_STREAM_ETH_DATA";
- xlnx,axi-str-txd-tdata-width = <0x20>;
- xlnx,axis-tdest-width = <0x4>;
- xlnx,axis-tid-width = <0x4>;
- xlnx,axis-tuser-width = <0x4>;
- xlnx,data-interface-type = <0x0>;
- xlnx,has-axis-tdest = <0x0>;
- xlnx,has-axis-tid = <0x0>;
- xlnx,has-axis-tkeep = <0x0>;
- xlnx,has-axis-tstrb = <0x0>;
- xlnx,has-axis-tuser = <0x0>;
- xlnx,rx-fifo-depth = <0x200>;
- xlnx,rx-fifo-pe-threshold = <0x2>;
- xlnx,rx-fifo-pf-threshold = <0x1fb>;
- xlnx,s-axi-id-width = <0x4>;
- xlnx,s-axi4-data-width = <0x20>;
- xlnx,select-xpm = <0x0>;
- xlnx,tx-fifo-depth = <0x8000>;
- xlnx,tx-fifo-pe-threshold = <0x200>;
- xlnx,tx-fifo-pf-threshold = <0x7ffb>;
- xlnx,use-rx-cut-through = <0x0>;
- xlnx,use-rx-data = <0x0>;
- xlnx,use-tx-ctrl = <0x0>;
- xlnx,use-tx-cut-through = <0x0>;
- xlnx,use-tx-data = <0x1>;
-};
--
2.53.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH v3] dt-bindings: misc: add binding for Xilinx AXI-Stream FIFO
2026-06-21 9:43 ` [PATCH v3] " Aditya Chari
@ 2026-06-21 18:33 ` Krzysztof Kozlowski
2026-06-22 4:21 ` Aditya Chari S
0 siblings, 1 reply; 10+ messages in thread
From: Krzysztof Kozlowski @ 2026-06-21 18:33 UTC (permalink / raw)
To: Aditya Chari, robh, krzk+dt, conor+dt, gregkh
Cc: jacobsfeder, devicetree, linux-staging, linux-kernel
On 21/06/2026 11:43, Aditya Chari wrote:
> The axis-fifo driver's compatible strings were undocumented, flagged
> by checkpatch.pl as UNDOCUMENTED_DT_STRING. Add a YAML devicetree
> binding document for drivers/staging/axis-fifo, converted from and
> replacing the existing free-form text binding (axis-fifo.txt), which
> this patch removes.
>
> Constrain xlnx,tx-fifo-depth to a minimum of 4, since the driver
> subtracts 4 from this value in its transmit bounds check and a
> smaller value would underflow that check.
>
> Signed-off-by: Aditya Chari <adi25charis@gmail.com>
> ---
>
> Changes since v2:
> - Added $ref: /schemas/types.yaml#/definitions/string to the three
> AXI-Stream protocol enum properties (xlnx,axi-str-rxd-protocol,
> xlnx,axi-str-txd-protocol, xlnx,axi-str-txc-protocol) for explicit
> type consistency with the rest of the schema.
> - Added minimum: 4 to xlnx,tx-fifo-depth, since the driver subtracts
> 4 from this value in its transmit bounds check
> (axis_fifo_write()) and a smaller configured value would underflow
> that unsigned check, bypassing the oversized-packet guard.
>
> Changes since v1:
> - Fixed xlnx,rx/tx-fifo-depth: depth is in 32-bit words, not bytes,
> matching the driver's overflow check in axis_fifo_write() and the
> wording of the original text binding.
> - Restored the full set of hardware-generated properties (interrupt-
> names, AXI-Stream protocol/width properties, has-axis-t* feature
> flags, fifo threshold properties, etc.) so that additionalProperties:
> false does not reject valid device trees generated for real hardware.
> - Removed the now-superseded axis-fifo.txt text binding.
Please slow down. Three versions within 1 hour! Why sending something
and immediately sending fixes to it?
>
> .../bindings/misc/xlnx,axi-fifo-mm-s.yaml | 227 ++++++++++++++++++
> drivers/staging/axis-fifo/axis-fifo.txt | 96 --------
Why are you touching staging binding?
https://lore.kernel.org/all/?q=dfn%3Aaxis-fifo.txt
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3] dt-bindings: misc: add binding for Xilinx AXI-Stream FIFO
2026-06-21 18:33 ` Krzysztof Kozlowski
@ 2026-06-22 4:21 ` Aditya Chari S
2026-06-22 5:18 ` Krzysztof Kozlowski
0 siblings, 1 reply; 10+ messages in thread
From: Aditya Chari S @ 2026-06-22 4:21 UTC (permalink / raw)
To: Krzysztof Kozlowski, robh, krzk+dt, conor+dt, gregkh
Cc: jacobsfeder, devicetree, linux-staging, linux-kernel,
michal.simek, lucas.fariamo08
Sorry about the pace - jumped from automated lint feedback straight to
a new version without waiting for an actual reviewer. Won't happen
again.
On the staging binding question - I found the driver-removal thread
from June 2 and read through it. Michal Simek's reply makes clear this
driver isn't going anywhere (their networking team has plans that
depend on it), and that there's already an in-flight binding
conversion from Lucas Faria Mendes that he's actively tracking. I
wasn't aware of that series when I started this.
Given that, I'll withdraw mine rather than duplicate work that's
already further along and already has the relevant maintainer's eyes
on it.
Thanks for pointing me toward the history.
Regards,
Aditya
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3] dt-bindings: misc: add binding for Xilinx AXI-Stream FIFO
2026-06-22 4:21 ` Aditya Chari S
@ 2026-06-22 5:18 ` Krzysztof Kozlowski
2026-06-22 6:22 ` Aditya Chari S
0 siblings, 1 reply; 10+ messages in thread
From: Krzysztof Kozlowski @ 2026-06-22 5:18 UTC (permalink / raw)
To: Aditya Chari S, robh, krzk+dt, conor+dt, gregkh
Cc: jacobsfeder, devicetree, linux-staging, linux-kernel,
michal.simek, lucas.fariamo08
On 22/06/2026 06:21, Aditya Chari S wrote:
> Sorry about the pace - jumped from automated lint feedback straight to
> a new version without waiting for an actual reviewer. Won't happen
> again.
>
> On the staging binding question - I found the driver-removal thread
> from June 2 and read through it. Michal Simek's reply makes clear this
> driver isn't going anywhere (their networking team has plans that
> depend on it), and that there's already an in-flight binding
> conversion from Lucas Faria Mendes that he's actively tracking. I
> wasn't aware of that series when I started this.
>
> Given that, I'll withdraw mine rather than duplicate work that's
> already further along and already has the relevant maintainer's eyes
> on it.
>
The main point is that driver is in staging, so we don't take bindings
for it.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3] dt-bindings: misc: add binding for Xilinx AXI-Stream FIFO
2026-06-22 5:18 ` Krzysztof Kozlowski
@ 2026-06-22 6:22 ` Aditya Chari S
0 siblings, 0 replies; 10+ messages in thread
From: Aditya Chari S @ 2026-06-22 6:22 UTC (permalink / raw)
To: Krzysztof Kozlowski, robh, krzk+dt, conor+dt, gregkh
Cc: jacobsfeder, devicetree, linux-staging, linux-kernel,
michal.simek, lucas.fariamo08
On Mon, Jun 22, 2026, Krzysztof Kozlowski wrote:
> The main point is that driver is in staging, so we don't take bindings
> for it.
Understood, thanks for clarifying.
Regards,
Aditya
On Mon, Jun 22, 2026 at 10:48 AM Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> On 22/06/2026 06:21, Aditya Chari S wrote:
> > Sorry about the pace - jumped from automated lint feedback straight to
> > a new version without waiting for an actual reviewer. Won't happen
> > again.
> >
> > On the staging binding question - I found the driver-removal thread
> > from June 2 and read through it. Michal Simek's reply makes clear this
> > driver isn't going anywhere (their networking team has plans that
> > depend on it), and that there's already an in-flight binding
> > conversion from Lucas Faria Mendes that he's actively tracking. I
> > wasn't aware of that series when I started this.
> >
> > Given that, I'll withdraw mine rather than duplicate work that's
> > already further along and already has the relevant maintainer's eyes
> > on it.
> >
>
> The main point is that driver is in staging, so we don't take bindings
> for it.
>
> Best regards,
> Krzysztof
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2] dt-bindings: misc: Add binding for Xilinx AXI-Stream FIFO
@ 2026-05-10 8:44 Pramod Maurya
2026-05-10 16:07 ` Greg KH
0 siblings, 1 reply; 10+ messages in thread
From: Pramod Maurya @ 2026-05-10 8:44 UTC (permalink / raw)
To: robh
Cc: krzk+dt, conor+dt, jacobsfeder, gregkh, devicetree, linux-staging,
linux-kernel, pramod.nexgen
Add a YAML schema for the Xilinx AXI-Stream FIFO IP core (PG080).
The binding documents the three supported compatible strings and all
vendor-specific properties that the axis-fifo driver reads from the
device tree.
This resolves the following checkpatch.pl warnings in
drivers/staging/axis-fifo/axis-fifo.c:
WARNING: DT compatible string "xlnx,axi-fifo-mm-s-4.1" appears un-documented
WARNING: DT compatible string "xlnx,axi-fifo-mm-s-4.2" appears un-documented
WARNING: DT compatible string "xlnx,axi-fifo-mm-s-4.3" appears un-documented
Signed-off-by: Pramod Maurya <pramod.nexgen@gmail.com>
---
Changes in v2:
- Delete drivers/staging/axis-fifo/axis-fifo.txt as part of the
conversion (was missing from v1)
- Add all Vivado-generated properties to the schema so that real
hardware DT nodes pass validation with additionalProperties: false
- Update example to match a realistic Vivado-generated DT node
including all properties
.../bindings/misc/xlnx,axi-fifo-mm-s.yaml | 265 ++++++++++++++++++
MAINTAINERS | 6 +
drivers/staging/axis-fifo/axis-fifo.txt | 96 -------
3 files changed, 271 insertions(+), 96 deletions(-)
create mode 100644 Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
delete mode 100644 drivers/staging/axis-fifo/axis-fifo.txt
diff --git a/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml b/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
new file mode 100644
index 000000000000..264abb29dd5a
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
@@ -0,0 +1,265 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/misc/xlnx,axi-fifo-mm-s.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Xilinx AXI-Stream FIFO
+
+maintainers:
+ - Jacob Feder <jacobsfeder@gmail.com>
+
+description:
+ The Xilinx AXI-Stream FIFO (PG080) provides a memory-mapped interface to
+ an AXI-Stream FIFO IP core. It allows a processor to transmit and receive
+ AXI-Stream packets via simple MMIO register reads and writes.
+
+properties:
+ compatible:
+ enum:
+ - xlnx,axi-fifo-mm-s-4.1
+ - xlnx,axi-fifo-mm-s-4.2
+ - xlnx,axi-fifo-mm-s-4.3
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ interrupt-names:
+ maxItems: 1
+
+ xlnx,axi-str-rxd-protocol:
+ $ref: /schemas/types.yaml#/definitions/string
+ description:
+ AXI-Stream receive data protocol type. This property is generated by
+ Vivado and is not used by the driver.
+
+ xlnx,axi-str-rxd-tdata-width:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Width of the receive AXI-Stream data bus in bits. Currently only 32
+ is supported.
+ const: 32
+
+ xlnx,axi-str-txc-protocol:
+ $ref: /schemas/types.yaml#/definitions/string
+ description:
+ AXI-Stream transmit control protocol type. This property is generated
+ by Vivado and is not used by the driver.
+
+ xlnx,axi-str-txc-tdata-width:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Width of the transmit control AXI-Stream data bus in bits. This
+ property is generated by Vivado and is not used by the driver.
+
+ xlnx,axi-str-txd-protocol:
+ $ref: /schemas/types.yaml#/definitions/string
+ description:
+ AXI-Stream transmit data protocol type. This property is generated by
+ Vivado and is not used by the driver.
+
+ xlnx,axi-str-txd-tdata-width:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Width of the transmit AXI-Stream data bus in bits. Currently only 32
+ is supported.
+ const: 32
+
+ xlnx,axis-tdest-width:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ AXI-Stream TDEST signal width in bits. This property is generated by
+ Vivado and is not used by the driver.
+
+ xlnx,axis-tid-width:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ AXI-Stream TID signal width in bits. This property is generated by
+ Vivado and is not used by the driver.
+
+ xlnx,axis-tuser-width:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ AXI-Stream TUSER signal width in bits. This property is generated by
+ Vivado and is not used by the driver.
+
+ xlnx,data-interface-type:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Data interface type. This property is generated by Vivado and is not
+ used by the driver.
+
+ xlnx,has-axis-tdest:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Indicates if the AXI-Stream TDEST signal is present. Cut-through mode
+ is not supported by the driver; this value must be 0.
+ const: 0
+
+ xlnx,has-axis-tid:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Indicates if the AXI-Stream TID signal is present. Cut-through mode
+ is not supported by the driver; this value must be 0.
+ const: 0
+
+ xlnx,has-axis-tkeep:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Indicates if the AXI-Stream TKEEP signal is present. This feature is
+ not supported by the driver; this value must be 0.
+ const: 0
+
+ xlnx,has-axis-tstrb:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Indicates if the AXI-Stream TSTRB signal is present. This feature is
+ not supported by the driver; this value must be 0.
+ const: 0
+
+ xlnx,has-axis-tuser:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Indicates if the AXI-Stream TUSER signal is present. This feature is
+ not supported by the driver; this value must be 0.
+ const: 0
+
+ xlnx,rx-fifo-depth:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Depth of the receive FIFO in words.
+
+ xlnx,rx-fifo-pe-threshold:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Receive FIFO programmable empty interrupt threshold in words. This
+ property is generated by Vivado and is not used by the driver.
+
+ xlnx,rx-fifo-pf-threshold:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Receive FIFO programmable full interrupt threshold in words. This
+ property is generated by Vivado and is not used by the driver.
+
+ xlnx,s-axi-id-width:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ AXI4 ID signal width in bits. This property is generated by Vivado
+ and is not used by the driver.
+
+ xlnx,s-axi4-data-width:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ AXI4 data bus width in bits. This property is generated by Vivado and
+ is not used by the driver.
+
+ xlnx,select-xpm:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Selects Xilinx Parameterized Macro (XPM) memory primitives. This
+ property is generated by Vivado and is not used by the driver.
+
+ xlnx,tx-fifo-depth:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Depth of the transmit FIFO in words.
+
+ xlnx,tx-fifo-pe-threshold:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Transmit FIFO programmable empty interrupt threshold in words. This
+ property is generated by Vivado and is not used by the driver.
+
+ xlnx,tx-fifo-pf-threshold:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Transmit FIFO programmable full interrupt threshold in words. This
+ property is generated by Vivado and is not used by the driver.
+
+ xlnx,use-rx-cut-through:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Enables receive cut-through mode. Cut-through mode is not supported
+ by the driver; this value must be 0.
+ const: 0
+
+ xlnx,use-rx-data:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Set to 1 if the receive data FIFO is enabled, 0 otherwise.
+ enum: [0, 1]
+
+ xlnx,use-tx-ctrl:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Enables the transmit control FIFO. This feature is not supported by
+ the driver; this value must be 0.
+ const: 0
+
+ xlnx,use-tx-cut-through:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Enables transmit cut-through mode. Cut-through mode is not supported
+ by the driver; this value must be 0.
+ const: 0
+
+ xlnx,use-tx-data:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Set to 1 if the transmit data FIFO is enabled, 0 otherwise.
+ enum: [0, 1]
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - xlnx,axi-str-rxd-tdata-width
+ - xlnx,axi-str-txd-tdata-width
+ - xlnx,rx-fifo-depth
+ - xlnx,tx-fifo-depth
+ - xlnx,use-rx-data
+ - xlnx,use-tx-data
+
+additionalProperties: false
+
+examples:
+ - |
+ axi_fifo: fifo@43c00000 {
+ compatible = "xlnx,axi-fifo-mm-s-4.1";
+ reg = <0x43c00000 0x10000>;
+ interrupt-parent = <&intc>;
+ interrupt-names = "interrupt";
+ interrupts = <0 29 4>;
+ xlnx,axi-str-rxd-protocol = "XIL_AXI_STREAM_ETH_DATA";
+ xlnx,axi-str-rxd-tdata-width = <32>;
+ xlnx,axi-str-txc-protocol = "XIL_AXI_STREAM_ETH_CTRL";
+ xlnx,axi-str-txc-tdata-width = <32>;
+ xlnx,axi-str-txd-protocol = "XIL_AXI_STREAM_ETH_DATA";
+ xlnx,axi-str-txd-tdata-width = <32>;
+ xlnx,axis-tdest-width = <4>;
+ xlnx,axis-tid-width = <4>;
+ xlnx,axis-tuser-width = <4>;
+ xlnx,data-interface-type = <0>;
+ xlnx,has-axis-tdest = <0>;
+ xlnx,has-axis-tid = <0>;
+ xlnx,has-axis-tkeep = <0>;
+ xlnx,has-axis-tstrb = <0>;
+ xlnx,has-axis-tuser = <0>;
+ xlnx,rx-fifo-depth = <0x200>;
+ xlnx,rx-fifo-pe-threshold = <2>;
+ xlnx,rx-fifo-pf-threshold = <0x1fb>;
+ xlnx,s-axi-id-width = <4>;
+ xlnx,s-axi4-data-width = <32>;
+ xlnx,select-xpm = <0>;
+ xlnx,tx-fifo-depth = <0x8000>;
+ xlnx,tx-fifo-pe-threshold = <0x200>;
+ xlnx,tx-fifo-pf-threshold = <0x7ffb>;
+ xlnx,use-rx-cut-through = <0>;
+ xlnx,use-rx-data = <0>;
+ xlnx,use-tx-ctrl = <0>;
+ xlnx,use-tx-cut-through = <0>;
+ xlnx,use-tx-data = <1>;
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 9b107057ad8c..84be7c8ae257 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -29130,6 +29130,12 @@ S: Maintained
F: Documentation/devicetree/bindings/net/xlnx,axi-ethernet.yaml
F: drivers/net/ethernet/xilinx/xilinx_axienet*
+XILINX AXI-STREAM FIFO DRIVER
+M: Jacob Feder <jacobsfeder@gmail.com>
+S: Maintained
+F: Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
+F: drivers/staging/axis-fifo/
+
XILINX CAN DRIVER
M: Appana Durga Kedareswara rao <appana.durga.rao@xilinx.com>
L: linux-can@vger.kernel.org
diff --git a/drivers/staging/axis-fifo/axis-fifo.txt b/drivers/staging/axis-fifo/axis-fifo.txt
deleted file mode 100644
index 413b81a53202..000000000000
--- a/drivers/staging/axis-fifo/axis-fifo.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-Xilinx AXI-Stream FIFO v4.1 IP core
-
-This IP core has read and write AXI-Stream FIFOs, the contents of which can
-be accessed from the AXI4 memory-mapped interface. This is useful for
-transferring data from a processor into the FPGA fabric. The driver creates
-a character device that can be read/written to with standard
-open/read/write/close.
-
-See Xilinx PG080 document for IP details.
-
-Currently supports only store-forward mode with a 32-bit
-AXI4-Lite interface. DOES NOT support:
- - cut-through mode
- - AXI4 (non-lite)
-
-Required properties:
-- compatible: Should be one of:
- "xlnx,axi-fifo-mm-s-4.1"
- "xlnx,axi-fifo-mm-s-4.2"
- "xlnx,axi-fifo-mm-s-4.3"
-- interrupt-names: Should be "interrupt"
-- interrupt-parent: Should be <&intc>
-- interrupts: Should contain interrupts lines.
-- reg: Should contain registers location and length.
-- xlnx,axi-str-rxd-protocol: Should be "XIL_AXI_STREAM_ETH_DATA"
-- xlnx,axi-str-rxd-tdata-width: Should be <0x20>
-- xlnx,axi-str-txc-protocol: Should be "XIL_AXI_STREAM_ETH_CTRL"
-- xlnx,axi-str-txc-tdata-width: Should be <0x20>
-- xlnx,axi-str-txd-protocol: Should be "XIL_AXI_STREAM_ETH_DATA"
-- xlnx,axi-str-txd-tdata-width: Should be <0x20>
-- xlnx,axis-tdest-width: AXI-Stream TDEST width (ignored by the driver)
-- xlnx,axis-tid-width: AXI-Stream TID width (ignored by the driver)
-- xlnx,axis-tuser-width: AXI-Stream TUSER width (ignored by the driver)
-- xlnx,data-interface-type: Should be <0x0> (ignored by the driver)
-- xlnx,has-axis-tdest: Should be <0x0> (this feature isn't supported)
-- xlnx,has-axis-tid: Should be <0x0> (this feature isn't supported)
-- xlnx,has-axis-tkeep: Should be <0x0> (this feature isn't supported)
-- xlnx,has-axis-tstrb: Should be <0x0> (this feature isn't supported)
-- xlnx,has-axis-tuser: Should be <0x0> (this feature isn't supported)
-- xlnx,rx-fifo-depth: Depth of RX FIFO in words
-- xlnx,rx-fifo-pe-threshold: RX programmable empty interrupt threshold
- (ignored by the driver)
-- xlnx,rx-fifo-pf-threshold: RX programmable full interrupt threshold
- (ignored by the driver)
-- xlnx,s-axi-id-width: Should be <0x4> (ignored by the driver)
-- xlnx,s-axi4-data-width: Should be <0x20> (ignored by the driver)
-- xlnx,select-xpm: Should be <0x0> (ignored by the driver)
-- xlnx,tx-fifo-depth: Depth of TX FIFO in words
-- xlnx,tx-fifo-pe-threshold: TX programmable empty interrupt threshold
- (ignored by the driver)
-- xlnx,tx-fifo-pf-threshold: TX programmable full interrupt threshold
- (ignored by the driver)
-- xlnx,use-rx-cut-through: Should be <0x0> (this feature isn't supported)
-- xlnx,use-rx-data: <0x1> if RX FIFO is enabled, <0x0> otherwise
-- xlnx,use-tx-ctrl: Should be <0x0> (this feature isn't supported)
-- xlnx,use-tx-cut-through: Should be <0x0> (this feature isn't supported)
-- xlnx,use-tx-data: <0x1> if TX FIFO is enabled, <0x0> otherwise
-
-Example:
-
-axi_fifo_mm_s_0: axi_fifo_mm_s@43c00000 {
- compatible = "xlnx,axi-fifo-mm-s-4.1";
- interrupt-names = "interrupt";
- interrupt-parent = <&intc>;
- interrupts = <0 29 4>;
- reg = <0x43c00000 0x10000>;
- xlnx,axi-str-rxd-protocol = "XIL_AXI_STREAM_ETH_DATA";
- xlnx,axi-str-rxd-tdata-width = <0x20>;
- xlnx,axi-str-txc-protocol = "XIL_AXI_STREAM_ETH_CTRL";
- xlnx,axi-str-txc-tdata-width = <0x20>;
- xlnx,axi-str-txd-protocol = "XIL_AXI_STREAM_ETH_DATA";
- xlnx,axi-str-txd-tdata-width = <0x20>;
- xlnx,axis-tdest-width = <0x4>;
- xlnx,axis-tid-width = <0x4>;
- xlnx,axis-tuser-width = <0x4>;
- xlnx,data-interface-type = <0x0>;
- xlnx,has-axis-tdest = <0x0>;
- xlnx,has-axis-tid = <0x0>;
- xlnx,has-axis-tkeep = <0x0>;
- xlnx,has-axis-tstrb = <0x0>;
- xlnx,has-axis-tuser = <0x0>;
- xlnx,rx-fifo-depth = <0x200>;
- xlnx,rx-fifo-pe-threshold = <0x2>;
- xlnx,rx-fifo-pf-threshold = <0x1fb>;
- xlnx,s-axi-id-width = <0x4>;
- xlnx,s-axi4-data-width = <0x20>;
- xlnx,select-xpm = <0x0>;
- xlnx,tx-fifo-depth = <0x8000>;
- xlnx,tx-fifo-pe-threshold = <0x200>;
- xlnx,tx-fifo-pf-threshold = <0x7ffb>;
- xlnx,use-rx-cut-through = <0x0>;
- xlnx,use-rx-data = <0x0>;
- xlnx,use-tx-ctrl = <0x0>;
- xlnx,use-tx-cut-through = <0x0>;
- xlnx,use-tx-data = <0x1>;
-};
--
2.52.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH v2] dt-bindings: misc: Add binding for Xilinx AXI-Stream FIFO
2026-05-10 8:44 [PATCH v2] dt-bindings: misc: Add " Pramod Maurya
@ 2026-05-10 16:07 ` Greg KH
2026-05-11 16:18 ` Conor Dooley
0 siblings, 1 reply; 10+ messages in thread
From: Greg KH @ 2026-05-10 16:07 UTC (permalink / raw)
To: Pramod Maurya
Cc: robh, krzk+dt, conor+dt, jacobsfeder, devicetree, linux-staging,
linux-kernel
On Sun, May 10, 2026 at 04:44:57AM -0400, Pramod Maurya wrote:
> Add a YAML schema for the Xilinx AXI-Stream FIFO IP core (PG080).
> The binding documents the three supported compatible strings and all
> vendor-specific properties that the axis-fifo driver reads from the
> device tree.
>
> This resolves the following checkpatch.pl warnings in
> drivers/staging/axis-fifo/axis-fifo.c:
> WARNING: DT compatible string "xlnx,axi-fifo-mm-s-4.1" appears un-documented
> WARNING: DT compatible string "xlnx,axi-fifo-mm-s-4.2" appears un-documented
> WARNING: DT compatible string "xlnx,axi-fifo-mm-s-4.3" appears un-documented
>
> Signed-off-by: Pramod Maurya <pramod.nexgen@gmail.com>
> ---
> Changes in v2:
> - Delete drivers/staging/axis-fifo/axis-fifo.txt as part of the
> conversion (was missing from v1)
> - Add all Vivado-generated properties to the schema so that real
> hardware DT nodes pass validation with additionalProperties: false
> - Update example to match a realistic Vivado-generated DT node
> including all properties
>
> .../bindings/misc/xlnx,axi-fifo-mm-s.yaml | 265 ++++++++++++++++++
> MAINTAINERS | 6 +
> drivers/staging/axis-fifo/axis-fifo.txt | 96 -------
> 3 files changed, 271 insertions(+), 96 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
No, staging drivers need to be self-contained. When/if the axis-fifo
driver moves out of drivers/staging/ this can happen, but not until
then.
You can convert this to yaml in-place if you want, AND you can test that
the conversion is correct. Do you have this hardware to test this with?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] dt-bindings: misc: Add binding for Xilinx AXI-Stream FIFO
2026-05-10 16:07 ` Greg KH
@ 2026-05-11 16:18 ` Conor Dooley
0 siblings, 0 replies; 10+ messages in thread
From: Conor Dooley @ 2026-05-11 16:18 UTC (permalink / raw)
To: Greg KH
Cc: Pramod Maurya, robh, krzk+dt, conor+dt, jacobsfeder, devicetree,
linux-staging, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 2244 bytes --]
On Sun, May 10, 2026 at 06:07:01PM +0200, Greg KH wrote:
> On Sun, May 10, 2026 at 04:44:57AM -0400, Pramod Maurya wrote:
> > Add a YAML schema for the Xilinx AXI-Stream FIFO IP core (PG080).
> > The binding documents the three supported compatible strings and all
> > vendor-specific properties that the axis-fifo driver reads from the
> > device tree.
> >
> > This resolves the following checkpatch.pl warnings in
> > drivers/staging/axis-fifo/axis-fifo.c:
> > WARNING: DT compatible string "xlnx,axi-fifo-mm-s-4.1" appears un-documented
> > WARNING: DT compatible string "xlnx,axi-fifo-mm-s-4.2" appears un-documented
> > WARNING: DT compatible string "xlnx,axi-fifo-mm-s-4.3" appears un-documented
> >
> > Signed-off-by: Pramod Maurya <pramod.nexgen@gmail.com>
> > ---
> > Changes in v2:
> > - Delete drivers/staging/axis-fifo/axis-fifo.txt as part of the
> > conversion (was missing from v1)
> > - Add all Vivado-generated properties to the schema so that real
> > hardware DT nodes pass validation with additionalProperties: false
> > - Update example to match a realistic Vivado-generated DT node
> > including all properties
> >
> > .../bindings/misc/xlnx,axi-fifo-mm-s.yaml | 265 ++++++++++++++++++
> > MAINTAINERS | 6 +
> > drivers/staging/axis-fifo/axis-fifo.txt | 96 -------
> > 3 files changed, 271 insertions(+), 96 deletions(-)
> > create mode 100644 Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s.yaml
>
> No, staging drivers need to be self-contained. When/if the axis-fifo
> driver moves out of drivers/staging/ this can happen, but not until
> then.
>
> You can convert this to yaml in-place if you want, AND you can test that
> the conversion is correct. Do you have this hardware to test this with?
Copy-pasting from v1...
| Someone else submitted this conversion (which it is, despite you not
| removing the old file), and the commentary I provided for that patch
| applies here too:
| https://lore.kernel.org/all/20260227-unboxed-customary-7ce6eda1858c@spud/
I suspect that this could be a dma-engine and any patch doing a
conversion needs to justify why it is not.
pw-bot: changes-requested
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-06-22 6:22 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-21 8:52 [PATCH] dt-bindings: misc: add binding for Xilinx AXI-Stream FIFO Aditya Chari
2026-06-21 9:19 ` [PATCH v2] " Aditya Chari
2026-06-21 9:43 ` [PATCH v3] " Aditya Chari
2026-06-21 18:33 ` Krzysztof Kozlowski
2026-06-22 4:21 ` Aditya Chari S
2026-06-22 5:18 ` Krzysztof Kozlowski
2026-06-22 6:22 ` Aditya Chari S
-- strict thread matches above, loose matches on Subject: below --
2026-05-10 8:44 [PATCH v2] dt-bindings: misc: Add " Pramod Maurya
2026-05-10 16:07 ` Greg KH
2026-05-11 16:18 ` Conor Dooley
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox