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

title: Freescale on-board FPGA connected on I2C bus

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

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - fsl,bsc9132qds-fpga
          - const: fsl,fpga-qixis-i2c
      - items:
          - enum:
              - fsl,ls1028aqds-fpga
              - fsl,lx2160aqds-fpga
          - const: fsl,fpga-qixis-i2c
          - const: simple-mfd
      - const: fsl,lx2160ardb-fpga

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

  interrupts:
    maxItems: 1

  reg:
    maxItems: 1

  mux-controller:
    $ref: /schemas/mux/reg-mux.yaml

patternProperties:
  "^gpio@[0-9a-f]+$":
    type: object
    additionalProperties: true

    properties:
      compatible:
        contains:
          enum:
            - fsl,lx2160ardb-fpga-gpio-sfp

required:
  - compatible
  - reg

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - fsl,lx2160ardb-fpga
    then:
      required:
        - "#address-cells"
        - "#size-cells"
    else:
      properties:
        "#address-cells": false
        "#size-cells": false

additionalProperties: false

examples:
  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        board-control@66 {
            compatible = "fsl,bsc9132qds-fpga", "fsl,fpga-qixis-i2c";
            reg = <0x66>;
        };
    };

  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        board-control@66 {
            compatible = "fsl,ls1028aqds-fpga", "fsl,fpga-qixis-i2c",
                         "simple-mfd";
            reg = <0x66>;

            mux-controller {
                compatible = "reg-mux";
                #mux-control-cells = <1>;
                mux-reg-masks = <0x54 0xf0>; /* 0: reg 0x54, bits 7:4 */
            };
        };
    };

  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        board-control@66 {
            compatible = "fsl,lx2160ardb-fpga";
            reg = <0x66>;
            #address-cells = <1>;
            #size-cells = <0>;

            gpio@19 {
                compatible = "fsl,lx2160ardb-fpga-gpio-sfp";
                reg = <0x19>;
                gpio-controller;
                #gpio-cells = <2>;
                gpio-line-names =
                    "SFP2_TX_EN", "",
                    "", "",
                    "SFP2_RX_LOS", "SFP2_TX_FAULT",
                    "", "SFP2_MOD_ABS";
            };
        };
    };
