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

title: Texas Instruments interconnect target module binding

maintainers:
  - Tony Lindgren <tony@atomide.com>

description:
  Texas Instruments SoCs can have a generic interconnect target module
  for devices connected to various interconnects such as L3 interconnect
  using Arteris NoC, and L4 interconnect using Sonics s3220. This module
  is mostly used for interaction between module and Power, Reset and Clock
  Manager PRCM. It participates in the OCP Disconnect Protocol, but other
  than that it is mostly independent of the interconnect.

  Each interconnect target module can have one or more devices connected to
  it. There is a set of control registers for managing the interconnect target
  module clocks, idle modes and interconnect level resets.

  The interconnect target module control registers are sprinkled into the
  unused register address space of the first child device IP block managed by
  the interconnect target module. Typically the register names are REVISION,
  SYSCONFIG and SYSSTATUS.

properties:
  $nodename:
    pattern: "^target-module(@[0-9a-f]+)?$"

  compatible:
    oneOf:
      - items:
          - enum:
              - ti,sysc-omap2
              - ti,sysc-omap2
              - ti,sysc-omap4
              - ti,sysc-omap4-simple
              - ti,sysc-omap2-timer
              - ti,sysc-omap4-timer
              - ti,sysc-omap3430-sr
              - ti,sysc-omap3630-sr
              - ti,sysc-omap4-sr
              - ti,sysc-omap3-sham
              - ti,sysc-omap-aes
              - ti,sysc-mcasp
              - ti,sysc-dra7-mcasp
              - ti,sysc-usb-host-fs
              - ti,sysc-dra7-mcan
              - ti,sysc-pruss
          - const: ti,sysc
      - items:
          - const: ti,sysc

  reg:
    description:
      Interconnect target module control registers consisting of
      REVISION, SYSCONFIG and SYSSTATUS registers as defined in the
      Technical Reference Manual for the SoC.
    minItems: 1
    maxItems: 3

  reg-names:
    description:
      Interconnect target module control register names consisting
      of "rev", "sysc" and "syss".
    oneOf:
      - minItems: 1
        items:
          - const: rev
          - const: sysc
          - const: syss
      - items:
          - const: rev
          - const: syss
      - enum: [ sysc, syss ]

  power-domains:
    description: Target module power domain if available.
    maxItems: 1

  clocks:
    description:
      Target module clocks consisting of one functional clock, one
      interface clock, and up to 8 module specific optional clocks.
      Some modules may have only the functional clock, and some have
      no configurable clocks.
    minItems: 1
    maxItems: 4

  clock-names:
    description:
      Target module clock names like "fck", "ick", "optck1", "optck2"
      if the clocks are configurable.
    oneOf:
      - enum: [ ick, fck, sys_clk ]
      - items:
          - const: fck
          - enum: [ ick. dbclk, osc, sys_clk, dss_clk, ahclkx ]
      - items:
          - const: fck
          - const: phy-clk
          - const: phy-clk-div
      - items:
          - const: fck
          - const: hdmi_clk
          - const: sys_clk
          - const: tv_clk
      - items:
          - const: fck
          - const: ahclkx
          - const: ahclkr

  resets:
    description:
      Target module reset bit in the RSTCTRL register if wired for the module.
      Note that the other reset bits should be mapped for the child device
      driver to use.
    maxItems: 1

  reset-names:
    description:
      Target module reset names in the RSTCTRL register, typically named
      "rstctrl" if only one reset bit is wired for the module.
    items:
      - const: rstctrl

  '#address-cells':
    enum: [ 1, 2 ]

  '#size-cells':
    enum: [ 1, 2 ]

  ranges: true

  dma-ranges: true

  ti,sysc-mask:
    description: Mask of supported register bits for the SYSCONFIG register
    $ref: /schemas/types.yaml#/definitions/uint32

  ti,sysc-midle:
    description: List of hardware supported idle modes
    $ref: /schemas/types.yaml#/definitions/uint32-array

  ti,sysc-sidle:
    description: List of hardware supported idle modes
    $ref: /schemas/types.yaml#/definitions/uint32-array

  ti,syss-mask:
    description: Mask of supported register bits for the SYSSTATUS register
    $ref: /schemas/types.yaml#/definitions/uint32

  ti,sysc-delay-us:
    description: Delay needed after OCP softreset before accessing SYCONFIG
    default: 0
    minimum: 0
    maximum: 2

  ti,no-reset-on-init:
    description: Interconnect target module shall not be reset at init
    type: boolean

  ti,no-idle-on-init:
    description: Interconnect target module shall not be idled at init
    type: boolean

  ti,no-idle:
    description: Interconnect target module shall not be idled
    type: boolean

  ti,hwmods:
    description: Interconnect module name to use with legacy hwmod data
    $ref: /schemas/types.yaml#/definitions/string
    deprecated: true

required:
  - compatible
  - '#address-cells'
  - '#size-cells'
  - ranges

additionalProperties:
  type: object

examples:
  - |
    #include <dt-bindings/bus/ti-sysc.h>
    #include <dt-bindings/clock/omap4.h>

    target-module@2b000 {
        compatible = "ti,sysc-omap2", "ti,sysc";
        ti,hwmods = "usb_otg_hs";
        reg = <0x2b400 0x4>,
              <0x2b404 0x4>,
              <0x2b408 0x4>;
        reg-names = "rev", "sysc", "syss";
        clocks = <&l3_init_clkctrl OMAP4_USB_OTG_HS_CLKCTRL 0>;
        clock-names = "fck";
        ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
                         SYSC_OMAP2_SOFTRESET |
                         SYSC_OMAP2_AUTOIDLE)>;
        ti,sysc-midle = <SYSC_IDLE_FORCE>,
                        <SYSC_IDLE_NO>,
                        <SYSC_IDLE_SMART>;
        ti,sysc-sidle = <SYSC_IDLE_FORCE>,
                        <SYSC_IDLE_NO>,
                        <SYSC_IDLE_SMART>,
                        <SYSC_IDLE_SMART_WKUP>;
        ti,syss-mask = <1>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges = <0 0x2b000 0x1000>;
    };
