# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (c) 2023 Ideas on Board
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/thine,thp7312.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: THine THP7312

maintainers:
  - Paul Elder <paul.elder@@ideasonboard.com>

description:
  The THP7312 is a standalone ISP controlled over i2c, and is capable of
  various image processing and correction functions, including 3A control. It
  can be connected to CMOS image sensors from various vendors, supporting both
  MIPI CSI-2 and parallel interfaces. It can also output on either MIPI CSI-2
  or parallel. The hardware is capable of transmitting and receiving MIPI
  interlaved data strams with data types or multiple virtual channel
  identifiers.

allOf:
  - $ref: /schemas/media/video-interface-devices.yaml#

properties:
  compatible:
    const: thine,thp7312

  reg:
    maxItems: 1

  clocks:
    maxItems: 1
    description: CLKI clock input

  thine,boot-mode:
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 0
    maximum: 1
    default: 1
    description:
      Boot mode of the THP7312, reflecting the value of the BOOT[0] pin strap.
      0 is for the SPI/2-wire slave boot, 1 is for the SPI master boot (from
      external flash ROM).

  reset-gpios:
    maxItems: 1
    description:
      Reference to the GPIO connected to the RESET_N pin, if any.
      Must be released (set high) after all supplies are applied.

  vddcore-supply:
    description:
      1.2V supply for core, PLL, MIPI rx and MIPI tx.

  vhtermrx-supply:
    description:
      Supply for input (RX). 1.8V for MIPI, or 1.8/2.8/3.3V for parallel.

  vddtx-supply:
    description:
      Supply for output (TX). 1.8V for MIPI, or 1.8/2.8/3.3V for parallel.

  vddhost-supply:
    description:
      Supply for host interface. 1.8V, 2.8V, or 3.3V.

  vddcmos-supply:
    description:
      Supply for sensor interface. 1.8V, 2.8V, or 3.3V.

  vddgpio-0-supply:
    description:
      Supply for GPIO_0. 1.8V, 2.8V, or 3.3V.

  vddgpio-1-supply:
    description:
      Supply for GPIO_1. 1.8V, 2.8V, or 3.3V.

  orientation: true
  rotation: true

  port:
    $ref: /schemas/graph.yaml#/$defs/port-base
    additionalProperties: false

    properties:
      endpoint:
        $ref: /schemas/media/video-interfaces.yaml#
        unevaluatedProperties: false

        properties:
          bus-type:
            const: 4 # CSI-2 D-PHY

          data-lanes:
            description:
              This property is for lane reordering between the THP7312 and the
              SoC. The sensor supports either two-lane, or four-lane operation.
              If this property is omitted four-lane operation is assumed. For
              two-lane operation the property must be set to <1 2>.
            minItems: 2
            maxItems: 4
            items:
              maximum: 4

  sensors:
    type: object
    description: List of connected sensors

    properties:
      "#address-cells":
        const: 1

      "#size-cells":
        const: 0

    patternProperties:
      "^sensor@[01]$":
        type: object
        description:
          Sensors connected to the first and second input, with one node per
          sensor.

        properties:
          thine,model:
            $ref: /schemas/types.yaml#/definitions/string
            description:
              Model of the connected sensors. Must be a valid compatible string.

          reg:
            description: THP7312 input port number
            items:
              - maximum: 1

          data-lanes:
            $ref: /schemas/media/video-interfaces.yaml#/properties/data-lanes
            items:
              maxItems: 4
            description:
              This property is for lane reordering between the THP7312 and the imaging
              sensor that it is connected to.

        required:
          - reg
          - data-lanes

        additionalProperties: false

    required:
      - "#address-cells"
      - "#size-cells"

    additionalProperties: false

required:
  - compatible
  - reg
  - reset-gpios
  - clocks
  - vddcore-supply
  - vhtermrx-supply
  - vddtx-supply
  - vddhost-supply
  - vddcmos-supply
  - vddgpio-0-supply
  - vddgpio-1-supply
  - sensors
  - port

additionalProperties: false

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

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

        camera@61 {
            compatible = "thine,thp7312";
            reg = <0x61>;

            pinctrl-names = "default";
            pinctrl-0 = <&cam1_pins_default>;

            reset-gpios = <&pio 119 GPIO_ACTIVE_LOW>;
            clocks = <&camera61_clk>;

            vddcore-supply = <&vsys_v4p2>;
            vhtermrx-supply = <&vsys_v4p2>;
            vddtx-supply = <&vsys_v4p2>;
            vddhost-supply = <&vsys_v4p2>;
            vddcmos-supply = <&vsys_v4p2>;
            vddgpio-0-supply = <&vsys_v4p2>;
            vddgpio-1-supply = <&vsys_v4p2>;

            orientation = <0>;
            rotation = <0>;

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

                sensor@0 {
                    thine,model = "sony,imx258";
                    reg = <0>;

                    data-lanes = <4 1 3 2>;
                };
            };

            port {
                thp7312_2_endpoint: endpoint {
                    remote-endpoint = <&mipi_thp7312_2>;
                    bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
                    data-lanes = <4 2 1 3>;
                };
            };
        };
    };
...
