# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2019 Linaro Ltd.
%YAML 1.2
---
$id: http://devicetree.org/schemas/firmware/intel,ixp4xx-network-processing-engine.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Intel IXP4xx Network Processing Engine

maintainers:
  - Linus Walleij <linus.walleij@linaro.org>

description: |
  On the IXP4xx SoCs, the Network Processing Engine (NPE) is a small
  processor that can load a firmware to perform offloading of networking
  and crypto tasks. It also manages the MDIO bus to the ethernet PHYs
  on the IXP4xx platform. All IXP4xx platforms have three NPEs at
  consecutive memory locations. They are all included in the same
  device node since they are not independent of each other.

properties:
  compatible:
    oneOf:
      - items:
          - const: intel,ixp4xx-network-processing-engine

  reg:
    items:
      - description: NPE0 (NPE-A) register range
      - description: NPE1 (NPE-B) register range
      - description: NPE2 (NPE-C) register range

  crypto:
    $ref: /schemas/crypto/intel,ixp4xx-crypto.yaml#
    type: object
    description: Optional node for the embedded crypto engine, the node
      should be named with the instance number of the NPE engine used for
      the crypto engine.

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

patternProperties:
  hss@[0-9]+$:
    $ref: /schemas/net/intel,ixp4xx-hss.yaml#
    type: object
    description: Optional node for the High Speed Serial link (HSS), the
      node should be named with the instance number of the NPE engine
      used for the HSS.

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>

    npe: npe@c8006000 {
        compatible = "intel,ixp4xx-network-processing-engine";
        reg = <0xc8006000 0x1000>, <0xc8007000 0x1000>, <0xc8008000 0x1000>;
        #address-cells = <1>;
        #size-cells = <0>;

        hss@0 {
            compatible = "intel,ixp4xx-hss";
            reg = <0>;
            intel,npe-handle = <&npe 0>;
            intel,queue-chl-rxtrig = <&qmgr 12>;
            intel,queue-chl-txready = <&qmgr 34>;
            intel,queue-pkt-rx = <&qmgr 13>;
            intel,queue-pkt-tx = <&qmgr 14>, <&qmgr 15>, <&qmgr 16>, <&qmgr 17>;
            intel,queue-pkt-rxfree = <&qmgr 18>, <&qmgr 19>, <&qmgr 20>, <&qmgr 21>;
            intel,queue-pkt-txdone = <&qmgr 22>;
            cts-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
            rts-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
            dcd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
            dtr-gpios = <&gpio_74 2 GPIO_ACTIVE_LOW>;
            clk-internal-gpios = <&gpio_74 0 GPIO_ACTIVE_HIGH>;
        };

        crypto {
            compatible = "intel,ixp4xx-crypto";
            intel,npe-handle = <&npe 2>;
            queue-rx = <&qmgr 30>;
            queue-txready = <&qmgr 29>;
        };
    };
...
