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

title: G-Link Packet Driver (glinkpkt)

maintainers:
  - Lei Han <quic_leihan@quicinc.com>

description: |
  G-link packet drivers are companion adaptation driver which
  use the kernel APIs to expose the Glink core logical channels
  as charecter devices to the user-space clients.

properties:
  compatible:
    const: qcom,glinkpkt

patternProperties:
  '^qcom,glinkpkt-[A-Za-z0-9_]+[A-Za-z0-9-]*$':
    type: object
    description:
      qcom,glinkpkt-channel-names

    properties:
      qcom,glinkpkt-transport:
        $ref: '/schemas/types.yaml#/definitions/string'
        maxItems: 1
        description:
          The glinkpkt transport layer.

      qcom,glinkpkt-edge:
        $ref: '/schemas/types.yaml#/definitions/string'
        maxItems: 1
        description:
          The remote subsystem name.

      qcom,glinkpkt-ch-name:
        $ref: '/schemas/types.yaml#/definitions/string'
        maxItems: 1
        description:
          The glink channel name.

      qcom,glinkpkt-dev-name:
        $ref: '/schemas/types.yaml#/definitions/string'
        maxItems: 1
        description:
          The glink device  name.

    required:
      - qcom,glinkpkt-transport
      - qcom,glinkpkt-edge
      - qcom,glinkpkt-ch-name
      - qcom,glinkpkt-dev-name

    additionalProperties: false

required:
  - compatible

additionalProperties: false

examples:
  - |
    qcom,glink_pkt {
        compatible = "qcom,glinkpkt";

        qcom,glinkpkt-at-mdm0 {
            qcom,glinkpkt-transport = "smd_trans";
            qcom,glinkpkt-edge = "mpss";
            qcom,glinkpkt-ch-name = "DS";
            qcom,glinkpkt-dev-name = "at_mdm0";
        };

        qcom,glinkpkt-loopback-cntl {
            qcom,glinkpkt-transport = "lloop";
            qcom,glinkpkt-edge = "local";
            qcom,glinkpkt-ch-name = "LOCAL_LOOPBACK_CLNT";
            qcom,glinkpkt-dev-name = "glink_pkt_loopback_ctrl";
        };

        qcom,glinkpkt-loopback-data {
            qcom,glinkpkt-transport = "lloop";
            qcom,glinkpkt-edge = "local";
            qcom,glinkpkt-ch-name = "glink_pkt_lloop_CLNT";
            qcom,glinkpkt-dev-name = "glink_pkt_loopback";
        };
    };