18cc087a1SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28cc087a1SEmmanuel Vadot%YAML 1.2
38cc087a1SEmmanuel Vadot---
48cc087a1SEmmanuel Vadot$id: http://devicetree.org/schemas/bus/ti-sysc.yaml#
58cc087a1SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
68cc087a1SEmmanuel Vadot
78bab661aSEmmanuel Vadottitle: Texas Instruments interconnect target module
88cc087a1SEmmanuel Vadot
98cc087a1SEmmanuel Vadotmaintainers:
108cc087a1SEmmanuel Vadot  - Tony Lindgren <tony@atomide.com>
118cc087a1SEmmanuel Vadot
128cc087a1SEmmanuel Vadotdescription:
138cc087a1SEmmanuel Vadot  Texas Instruments SoCs can have a generic interconnect target module
148cc087a1SEmmanuel Vadot  for devices connected to various interconnects such as L3 interconnect
158cc087a1SEmmanuel Vadot  using Arteris NoC, and L4 interconnect using Sonics s3220. This module
168cc087a1SEmmanuel Vadot  is mostly used for interaction between module and Power, Reset and Clock
178cc087a1SEmmanuel Vadot  Manager PRCM. It participates in the OCP Disconnect Protocol, but other
188cc087a1SEmmanuel Vadot  than that it is mostly independent of the interconnect.
198cc087a1SEmmanuel Vadot
208cc087a1SEmmanuel Vadot  Each interconnect target module can have one or more devices connected to
218cc087a1SEmmanuel Vadot  it. There is a set of control registers for managing the interconnect target
228cc087a1SEmmanuel Vadot  module clocks, idle modes and interconnect level resets.
238cc087a1SEmmanuel Vadot
248cc087a1SEmmanuel Vadot  The interconnect target module control registers are sprinkled into the
258cc087a1SEmmanuel Vadot  unused register address space of the first child device IP block managed by
268cc087a1SEmmanuel Vadot  the interconnect target module. Typically the register names are REVISION,
278cc087a1SEmmanuel Vadot  SYSCONFIG and SYSSTATUS.
288cc087a1SEmmanuel Vadot
298cc087a1SEmmanuel Vadotproperties:
308cc087a1SEmmanuel Vadot  $nodename:
318cc087a1SEmmanuel Vadot    pattern: "^target-module(@[0-9a-f]+)?$"
328cc087a1SEmmanuel Vadot
338cc087a1SEmmanuel Vadot  compatible:
348cc087a1SEmmanuel Vadot    oneOf:
358cc087a1SEmmanuel Vadot      - items:
368cc087a1SEmmanuel Vadot          - enum:
378cc087a1SEmmanuel Vadot              - ti,sysc-omap2
388cc087a1SEmmanuel Vadot              - ti,sysc-omap4
398cc087a1SEmmanuel Vadot              - ti,sysc-omap4-simple
408cc087a1SEmmanuel Vadot              - ti,sysc-omap2-timer
418cc087a1SEmmanuel Vadot              - ti,sysc-omap4-timer
428cc087a1SEmmanuel Vadot              - ti,sysc-omap3430-sr
438cc087a1SEmmanuel Vadot              - ti,sysc-omap3630-sr
448cc087a1SEmmanuel Vadot              - ti,sysc-omap4-sr
458cc087a1SEmmanuel Vadot              - ti,sysc-omap3-sham
468cc087a1SEmmanuel Vadot              - ti,sysc-omap-aes
478cc087a1SEmmanuel Vadot              - ti,sysc-mcasp
488cc087a1SEmmanuel Vadot              - ti,sysc-dra7-mcasp
498cc087a1SEmmanuel Vadot              - ti,sysc-usb-host-fs
508cc087a1SEmmanuel Vadot              - ti,sysc-dra7-mcan
518cc087a1SEmmanuel Vadot              - ti,sysc-pruss
528cc087a1SEmmanuel Vadot          - const: ti,sysc
538cc087a1SEmmanuel Vadot      - items:
548cc087a1SEmmanuel Vadot          - const: ti,sysc
558cc087a1SEmmanuel Vadot
568cc087a1SEmmanuel Vadot  reg:
578cc087a1SEmmanuel Vadot    description:
588cc087a1SEmmanuel Vadot      Interconnect target module control registers consisting of
598cc087a1SEmmanuel Vadot      REVISION, SYSCONFIG and SYSSTATUS registers as defined in the
608cc087a1SEmmanuel Vadot      Technical Reference Manual for the SoC.
618cc087a1SEmmanuel Vadot    minItems: 1
628cc087a1SEmmanuel Vadot    maxItems: 3
638cc087a1SEmmanuel Vadot
648cc087a1SEmmanuel Vadot  reg-names:
658cc087a1SEmmanuel Vadot    description:
668cc087a1SEmmanuel Vadot      Interconnect target module control register names consisting
678cc087a1SEmmanuel Vadot      of "rev", "sysc" and "syss".
688cc087a1SEmmanuel Vadot    oneOf:
698cc087a1SEmmanuel Vadot      - minItems: 1
708cc087a1SEmmanuel Vadot        items:
718cc087a1SEmmanuel Vadot          - const: rev
728cc087a1SEmmanuel Vadot          - const: sysc
738cc087a1SEmmanuel Vadot          - const: syss
748cc087a1SEmmanuel Vadot      - items:
758cc087a1SEmmanuel Vadot          - const: rev
768cc087a1SEmmanuel Vadot          - const: syss
778cc087a1SEmmanuel Vadot      - enum: [ sysc, syss ]
788cc087a1SEmmanuel Vadot
798cc087a1SEmmanuel Vadot  power-domains:
808cc087a1SEmmanuel Vadot    description: Target module power domain if available.
818cc087a1SEmmanuel Vadot    maxItems: 1
828cc087a1SEmmanuel Vadot
838cc087a1SEmmanuel Vadot  clocks:
848cc087a1SEmmanuel Vadot    description:
858cc087a1SEmmanuel Vadot      Target module clocks consisting of one functional clock, one
868cc087a1SEmmanuel Vadot      interface clock, and up to 8 module specific optional clocks.
878cc087a1SEmmanuel Vadot      Some modules may have only the functional clock, and some have
888cc087a1SEmmanuel Vadot      no configurable clocks.
898cc087a1SEmmanuel Vadot    minItems: 1
908cc087a1SEmmanuel Vadot    maxItems: 4
918cc087a1SEmmanuel Vadot
928cc087a1SEmmanuel Vadot  clock-names:
938cc087a1SEmmanuel Vadot    description:
948cc087a1SEmmanuel Vadot      Target module clock names like "fck", "ick", "optck1", "optck2"
958cc087a1SEmmanuel Vadot      if the clocks are configurable.
968cc087a1SEmmanuel Vadot    oneOf:
978cc087a1SEmmanuel Vadot      - enum: [ ick, fck, sys_clk ]
988cc087a1SEmmanuel Vadot      - items:
998cc087a1SEmmanuel Vadot          - const: fck
100*f126890aSEmmanuel Vadot          - enum: [ ick, dbclk, osc, sys_clk, dss_clk, ahclkx ]
1018cc087a1SEmmanuel Vadot      - items:
1028cc087a1SEmmanuel Vadot          - const: fck
1038cc087a1SEmmanuel Vadot          - const: phy-clk
1048cc087a1SEmmanuel Vadot          - const: phy-clk-div
1058cc087a1SEmmanuel Vadot      - items:
1068cc087a1SEmmanuel Vadot          - const: fck
1078cc087a1SEmmanuel Vadot          - const: hdmi_clk
1088cc087a1SEmmanuel Vadot          - const: sys_clk
1098cc087a1SEmmanuel Vadot          - const: tv_clk
1108cc087a1SEmmanuel Vadot      - items:
1118cc087a1SEmmanuel Vadot          - const: fck
1128cc087a1SEmmanuel Vadot          - const: ahclkx
1138cc087a1SEmmanuel Vadot          - const: ahclkr
1148cc087a1SEmmanuel Vadot
1158cc087a1SEmmanuel Vadot  resets:
1168cc087a1SEmmanuel Vadot    description:
1178cc087a1SEmmanuel Vadot      Target module reset bit in the RSTCTRL register if wired for the module.
1188cc087a1SEmmanuel Vadot      Note that the other reset bits should be mapped for the child device
1198cc087a1SEmmanuel Vadot      driver to use.
1208cc087a1SEmmanuel Vadot    maxItems: 1
1218cc087a1SEmmanuel Vadot
1228cc087a1SEmmanuel Vadot  reset-names:
1238cc087a1SEmmanuel Vadot    description:
1248cc087a1SEmmanuel Vadot      Target module reset names in the RSTCTRL register, typically named
1258cc087a1SEmmanuel Vadot      "rstctrl" if only one reset bit is wired for the module.
1268cc087a1SEmmanuel Vadot    items:
1278cc087a1SEmmanuel Vadot      - const: rstctrl
1288cc087a1SEmmanuel Vadot
1298cc087a1SEmmanuel Vadot  '#address-cells':
1308cc087a1SEmmanuel Vadot    enum: [ 1, 2 ]
1318cc087a1SEmmanuel Vadot
1328cc087a1SEmmanuel Vadot  '#size-cells':
1338cc087a1SEmmanuel Vadot    enum: [ 1, 2 ]
1348cc087a1SEmmanuel Vadot
1358cc087a1SEmmanuel Vadot  ranges: true
1368cc087a1SEmmanuel Vadot
1378cc087a1SEmmanuel Vadot  dma-ranges: true
1388cc087a1SEmmanuel Vadot
1398cc087a1SEmmanuel Vadot  ti,sysc-mask:
1408cc087a1SEmmanuel Vadot    description: Mask of supported register bits for the SYSCONFIG register
1418cc087a1SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
1428cc087a1SEmmanuel Vadot
1438cc087a1SEmmanuel Vadot  ti,sysc-midle:
1448cc087a1SEmmanuel Vadot    description: List of hardware supported idle modes
1458cc087a1SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
1468cc087a1SEmmanuel Vadot
1478cc087a1SEmmanuel Vadot  ti,sysc-sidle:
1488cc087a1SEmmanuel Vadot    description: List of hardware supported idle modes
1498cc087a1SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
1508cc087a1SEmmanuel Vadot
1518cc087a1SEmmanuel Vadot  ti,syss-mask:
1528cc087a1SEmmanuel Vadot    description: Mask of supported register bits for the SYSSTATUS register
1538cc087a1SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
1548cc087a1SEmmanuel Vadot
1558cc087a1SEmmanuel Vadot  ti,sysc-delay-us:
1568cc087a1SEmmanuel Vadot    description: Delay needed after OCP softreset before accessing SYCONFIG
1578cc087a1SEmmanuel Vadot    default: 0
1588cc087a1SEmmanuel Vadot    minimum: 0
1598cc087a1SEmmanuel Vadot    maximum: 2
1608cc087a1SEmmanuel Vadot
1618cc087a1SEmmanuel Vadot  ti,no-reset-on-init:
1628cc087a1SEmmanuel Vadot    description: Interconnect target module shall not be reset at init
1638cc087a1SEmmanuel Vadot    type: boolean
1648cc087a1SEmmanuel Vadot
1658cc087a1SEmmanuel Vadot  ti,no-idle-on-init:
1668cc087a1SEmmanuel Vadot    description: Interconnect target module shall not be idled at init
1678cc087a1SEmmanuel Vadot    type: boolean
1688cc087a1SEmmanuel Vadot
1698cc087a1SEmmanuel Vadot  ti,no-idle:
1708cc087a1SEmmanuel Vadot    description: Interconnect target module shall not be idled
1718cc087a1SEmmanuel Vadot    type: boolean
1728cc087a1SEmmanuel Vadot
1738cc087a1SEmmanuel Vadot  ti,hwmods:
1748cc087a1SEmmanuel Vadot    description: Interconnect module name to use with legacy hwmod data
1758cc087a1SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/string
1768cc087a1SEmmanuel Vadot    deprecated: true
1778cc087a1SEmmanuel Vadot
1788cc087a1SEmmanuel Vadotrequired:
1798cc087a1SEmmanuel Vadot  - compatible
1808cc087a1SEmmanuel Vadot  - '#address-cells'
1818cc087a1SEmmanuel Vadot  - '#size-cells'
1828cc087a1SEmmanuel Vadot  - ranges
1838cc087a1SEmmanuel Vadot
1848cc087a1SEmmanuel VadotadditionalProperties:
1858cc087a1SEmmanuel Vadot  type: object
1868cc087a1SEmmanuel Vadot
1878cc087a1SEmmanuel Vadotexamples:
1888cc087a1SEmmanuel Vadot  - |
1898cc087a1SEmmanuel Vadot    #include <dt-bindings/bus/ti-sysc.h>
1908cc087a1SEmmanuel Vadot    #include <dt-bindings/clock/omap4.h>
1918cc087a1SEmmanuel Vadot
1928cc087a1SEmmanuel Vadot    target-module@2b000 {
1938cc087a1SEmmanuel Vadot        compatible = "ti,sysc-omap2", "ti,sysc";
1948cc087a1SEmmanuel Vadot        ti,hwmods = "usb_otg_hs";
1958cc087a1SEmmanuel Vadot        reg = <0x2b400 0x4>,
1968cc087a1SEmmanuel Vadot              <0x2b404 0x4>,
1978cc087a1SEmmanuel Vadot              <0x2b408 0x4>;
1988cc087a1SEmmanuel Vadot        reg-names = "rev", "sysc", "syss";
1998cc087a1SEmmanuel Vadot        clocks = <&l3_init_clkctrl OMAP4_USB_OTG_HS_CLKCTRL 0>;
2008cc087a1SEmmanuel Vadot        clock-names = "fck";
2018cc087a1SEmmanuel Vadot        ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
2028cc087a1SEmmanuel Vadot                         SYSC_OMAP2_SOFTRESET |
2038cc087a1SEmmanuel Vadot                         SYSC_OMAP2_AUTOIDLE)>;
2048cc087a1SEmmanuel Vadot        ti,sysc-midle = <SYSC_IDLE_FORCE>,
2058cc087a1SEmmanuel Vadot                        <SYSC_IDLE_NO>,
2068cc087a1SEmmanuel Vadot                        <SYSC_IDLE_SMART>;
2078cc087a1SEmmanuel Vadot        ti,sysc-sidle = <SYSC_IDLE_FORCE>,
2088cc087a1SEmmanuel Vadot                        <SYSC_IDLE_NO>,
2098cc087a1SEmmanuel Vadot                        <SYSC_IDLE_SMART>,
2108cc087a1SEmmanuel Vadot                        <SYSC_IDLE_SMART_WKUP>;
2118cc087a1SEmmanuel Vadot        ti,syss-mask = <1>;
2128cc087a1SEmmanuel Vadot        #address-cells = <1>;
2138cc087a1SEmmanuel Vadot        #size-cells = <1>;
2148cc087a1SEmmanuel Vadot        ranges = <0 0x2b000 0x1000>;
2158cc087a1SEmmanuel Vadot    };
216