# 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

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-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>;
    };
