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