# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/soc/fsl/fsl,bman.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: QorIQ DPAA Buffer Manager

maintainers:
  - Frank Li <Frank.Li@nxp.com>

description:
  The Buffer Manager is part of the Data-Path Acceleration Architecture (DPAA).
  BMan supports hardware allocation and deallocation of buffers belonging to
  pools originally created by software with configurable depletion thresholds.
  This binding covers the CCSR space programming model

properties:
  compatible:
    oneOf:
      - const: fsl,bman
      - items:
          - enum:
              - fsl,ls1043a-bman
              - fsl,ls1046a-bman
          - const: fsl,bman

  reg:
    items:
      - description: |
          Registers region within the CCSR address space

          The BMan revision information is located in the BMAN_IP_REV_1/2
          registers which are located at offsets 0xbf8 and 0xbfc

  interrupts:
    items:
      - description: The error interrupt

  memory-region:
    minItems: 1
    maxItems: 2
    description:
      List of phandles referencing the BMan private memory
      nodes (described below). The bman-fqd node must be
      first followed by bman-pfdr node. Only used on ARM

      Devices connected to a BMan instance via Direct Connect Portals (DCP) must link
      to the respective BMan instance

  fsl,bman-portals:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: ref fsl,bman-port.yaml

  fsl,liodn:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    description:
      See pamu.txt, PAMU property used for static LIODN assignment

  fsl,iommu-parent:
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      See pamu.txt, PAMU property used for dynamic LIODN assignment

required:
  - compatible
  - reg
  - interrupts

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>

    bman@31a000 {
        compatible = "fsl,bman";
        reg = <0x31a000 0x1000>;
        interrupts = <16 IRQ_TYPE_EDGE_FALLING 1 2>;
        fsl,liodn = <0x17>;
        fsl,bman-portals = <&bportals>;
        memory-region = <&bman_fbpr>;
    };
