162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/bus/ti-sysc.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Texas Instruments interconnect target module
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Tony Lindgren <tony@atomide.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription:
1362306a36Sopenharmony_ci  Texas Instruments SoCs can have a generic interconnect target module
1462306a36Sopenharmony_ci  for devices connected to various interconnects such as L3 interconnect
1562306a36Sopenharmony_ci  using Arteris NoC, and L4 interconnect using Sonics s3220. This module
1662306a36Sopenharmony_ci  is mostly used for interaction between module and Power, Reset and Clock
1762306a36Sopenharmony_ci  Manager PRCM. It participates in the OCP Disconnect Protocol, but other
1862306a36Sopenharmony_ci  than that it is mostly independent of the interconnect.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci  Each interconnect target module can have one or more devices connected to
2162306a36Sopenharmony_ci  it. There is a set of control registers for managing the interconnect target
2262306a36Sopenharmony_ci  module clocks, idle modes and interconnect level resets.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci  The interconnect target module control registers are sprinkled into the
2562306a36Sopenharmony_ci  unused register address space of the first child device IP block managed by
2662306a36Sopenharmony_ci  the interconnect target module. Typically the register names are REVISION,
2762306a36Sopenharmony_ci  SYSCONFIG and SYSSTATUS.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ciproperties:
3062306a36Sopenharmony_ci  $nodename:
3162306a36Sopenharmony_ci    pattern: "^target-module(@[0-9a-f]+)?$"
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  compatible:
3462306a36Sopenharmony_ci    oneOf:
3562306a36Sopenharmony_ci      - items:
3662306a36Sopenharmony_ci          - enum:
3762306a36Sopenharmony_ci              - ti,sysc-omap2
3862306a36Sopenharmony_ci              - ti,sysc-omap4
3962306a36Sopenharmony_ci              - ti,sysc-omap4-simple
4062306a36Sopenharmony_ci              - ti,sysc-omap2-timer
4162306a36Sopenharmony_ci              - ti,sysc-omap4-timer
4262306a36Sopenharmony_ci              - ti,sysc-omap3430-sr
4362306a36Sopenharmony_ci              - ti,sysc-omap3630-sr
4462306a36Sopenharmony_ci              - ti,sysc-omap4-sr
4562306a36Sopenharmony_ci              - ti,sysc-omap3-sham
4662306a36Sopenharmony_ci              - ti,sysc-omap-aes
4762306a36Sopenharmony_ci              - ti,sysc-mcasp
4862306a36Sopenharmony_ci              - ti,sysc-dra7-mcasp
4962306a36Sopenharmony_ci              - ti,sysc-usb-host-fs
5062306a36Sopenharmony_ci              - ti,sysc-dra7-mcan
5162306a36Sopenharmony_ci              - ti,sysc-pruss
5262306a36Sopenharmony_ci          - const: ti,sysc
5362306a36Sopenharmony_ci      - items:
5462306a36Sopenharmony_ci          - const: ti,sysc
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  reg:
5762306a36Sopenharmony_ci    description:
5862306a36Sopenharmony_ci      Interconnect target module control registers consisting of
5962306a36Sopenharmony_ci      REVISION, SYSCONFIG and SYSSTATUS registers as defined in the
6062306a36Sopenharmony_ci      Technical Reference Manual for the SoC.
6162306a36Sopenharmony_ci    minItems: 1
6262306a36Sopenharmony_ci    maxItems: 3
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci  reg-names:
6562306a36Sopenharmony_ci    description:
6662306a36Sopenharmony_ci      Interconnect target module control register names consisting
6762306a36Sopenharmony_ci      of "rev", "sysc" and "syss".
6862306a36Sopenharmony_ci    oneOf:
6962306a36Sopenharmony_ci      - minItems: 1
7062306a36Sopenharmony_ci        items:
7162306a36Sopenharmony_ci          - const: rev
7262306a36Sopenharmony_ci          - const: sysc
7362306a36Sopenharmony_ci          - const: syss
7462306a36Sopenharmony_ci      - items:
7562306a36Sopenharmony_ci          - const: rev
7662306a36Sopenharmony_ci          - const: syss
7762306a36Sopenharmony_ci      - enum: [ sysc, syss ]
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci  power-domains:
8062306a36Sopenharmony_ci    description: Target module power domain if available.
8162306a36Sopenharmony_ci    maxItems: 1
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci  clocks:
8462306a36Sopenharmony_ci    description:
8562306a36Sopenharmony_ci      Target module clocks consisting of one functional clock, one
8662306a36Sopenharmony_ci      interface clock, and up to 8 module specific optional clocks.
8762306a36Sopenharmony_ci      Some modules may have only the functional clock, and some have
8862306a36Sopenharmony_ci      no configurable clocks.
8962306a36Sopenharmony_ci    minItems: 1
9062306a36Sopenharmony_ci    maxItems: 4
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci  clock-names:
9362306a36Sopenharmony_ci    description:
9462306a36Sopenharmony_ci      Target module clock names like "fck", "ick", "optck1", "optck2"
9562306a36Sopenharmony_ci      if the clocks are configurable.
9662306a36Sopenharmony_ci    oneOf:
9762306a36Sopenharmony_ci      - enum: [ ick, fck, sys_clk ]
9862306a36Sopenharmony_ci      - items:
9962306a36Sopenharmony_ci          - const: fck
10062306a36Sopenharmony_ci          - enum: [ ick, dbclk, osc, sys_clk, dss_clk, ahclkx ]
10162306a36Sopenharmony_ci      - items:
10262306a36Sopenharmony_ci          - const: fck
10362306a36Sopenharmony_ci          - const: phy-clk
10462306a36Sopenharmony_ci          - const: phy-clk-div
10562306a36Sopenharmony_ci      - items:
10662306a36Sopenharmony_ci          - const: fck
10762306a36Sopenharmony_ci          - const: hdmi_clk
10862306a36Sopenharmony_ci          - const: sys_clk
10962306a36Sopenharmony_ci          - const: tv_clk
11062306a36Sopenharmony_ci      - items:
11162306a36Sopenharmony_ci          - const: fck
11262306a36Sopenharmony_ci          - const: ahclkx
11362306a36Sopenharmony_ci          - const: ahclkr
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci  resets:
11662306a36Sopenharmony_ci    description:
11762306a36Sopenharmony_ci      Target module reset bit in the RSTCTRL register if wired for the module.
11862306a36Sopenharmony_ci      Note that the other reset bits should be mapped for the child device
11962306a36Sopenharmony_ci      driver to use.
12062306a36Sopenharmony_ci    maxItems: 1
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci  reset-names:
12362306a36Sopenharmony_ci    description:
12462306a36Sopenharmony_ci      Target module reset names in the RSTCTRL register, typically named
12562306a36Sopenharmony_ci      "rstctrl" if only one reset bit is wired for the module.
12662306a36Sopenharmony_ci    items:
12762306a36Sopenharmony_ci      - const: rstctrl
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci  '#address-cells':
13062306a36Sopenharmony_ci    enum: [ 1, 2 ]
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci  '#size-cells':
13362306a36Sopenharmony_ci    enum: [ 1, 2 ]
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci  ranges: true
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci  dma-ranges: true
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci  ti,sysc-mask:
14062306a36Sopenharmony_ci    description: Mask of supported register bits for the SYSCONFIG register
14162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci  ti,sysc-midle:
14462306a36Sopenharmony_ci    description: List of hardware supported idle modes
14562306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci  ti,sysc-sidle:
14862306a36Sopenharmony_ci    description: List of hardware supported idle modes
14962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci  ti,syss-mask:
15262306a36Sopenharmony_ci    description: Mask of supported register bits for the SYSSTATUS register
15362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci  ti,sysc-delay-us:
15662306a36Sopenharmony_ci    description: Delay needed after OCP softreset before accessing SYCONFIG
15762306a36Sopenharmony_ci    default: 0
15862306a36Sopenharmony_ci    minimum: 0
15962306a36Sopenharmony_ci    maximum: 2
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci  ti,no-reset-on-init:
16262306a36Sopenharmony_ci    description: Interconnect target module shall not be reset at init
16362306a36Sopenharmony_ci    type: boolean
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci  ti,no-idle-on-init:
16662306a36Sopenharmony_ci    description: Interconnect target module shall not be idled at init
16762306a36Sopenharmony_ci    type: boolean
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci  ti,no-idle:
17062306a36Sopenharmony_ci    description: Interconnect target module shall not be idled
17162306a36Sopenharmony_ci    type: boolean
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci  ti,hwmods:
17462306a36Sopenharmony_ci    description: Interconnect module name to use with legacy hwmod data
17562306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/string
17662306a36Sopenharmony_ci    deprecated: true
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_cirequired:
17962306a36Sopenharmony_ci  - compatible
18062306a36Sopenharmony_ci  - '#address-cells'
18162306a36Sopenharmony_ci  - '#size-cells'
18262306a36Sopenharmony_ci  - ranges
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ciadditionalProperties:
18562306a36Sopenharmony_ci  type: object
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ciexamples:
18862306a36Sopenharmony_ci  - |
18962306a36Sopenharmony_ci    #include <dt-bindings/bus/ti-sysc.h>
19062306a36Sopenharmony_ci    #include <dt-bindings/clock/omap4.h>
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci    target-module@2b000 {
19362306a36Sopenharmony_ci        compatible = "ti,sysc-omap2", "ti,sysc";
19462306a36Sopenharmony_ci        ti,hwmods = "usb_otg_hs";
19562306a36Sopenharmony_ci        reg = <0x2b400 0x4>,
19662306a36Sopenharmony_ci              <0x2b404 0x4>,
19762306a36Sopenharmony_ci              <0x2b408 0x4>;
19862306a36Sopenharmony_ci        reg-names = "rev", "sysc", "syss";
19962306a36Sopenharmony_ci        clocks = <&l3_init_clkctrl OMAP4_USB_OTG_HS_CLKCTRL 0>;
20062306a36Sopenharmony_ci        clock-names = "fck";
20162306a36Sopenharmony_ci        ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
20262306a36Sopenharmony_ci                         SYSC_OMAP2_SOFTRESET |
20362306a36Sopenharmony_ci                         SYSC_OMAP2_AUTOIDLE)>;
20462306a36Sopenharmony_ci        ti,sysc-midle = <SYSC_IDLE_FORCE>,
20562306a36Sopenharmony_ci                        <SYSC_IDLE_NO>,
20662306a36Sopenharmony_ci                        <SYSC_IDLE_SMART>;
20762306a36Sopenharmony_ci        ti,sysc-sidle = <SYSC_IDLE_FORCE>,
20862306a36Sopenharmony_ci                        <SYSC_IDLE_NO>,
20962306a36Sopenharmony_ci                        <SYSC_IDLE_SMART>,
21062306a36Sopenharmony_ci                        <SYSC_IDLE_SMART_WKUP>;
21162306a36Sopenharmony_ci        ti,syss-mask = <1>;
21262306a36Sopenharmony_ci        #address-cells = <1>;
21362306a36Sopenharmony_ci        #size-cells = <1>;
21462306a36Sopenharmony_ci        ranges = <0 0x2b000 0x1000>;
21562306a36Sopenharmony_ci    };
216