xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/bus/ti-sysc.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunTexas Instruments sysc interconnect target module wrapper binding
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunTexas Instruments SoCs can have a generic interconnect target module
4*4882a593Smuzhiyunhardware for devices connected to various interconnects such as L3
5*4882a593Smuzhiyuninterconnect (Arteris NoC) and L4 interconnect (Sonics s3220). The sysc
6*4882a593Smuzhiyunis mostly used for interaction between module and PRCM. It participates
7*4882a593Smuzhiyunin the OCP Disconnect Protocol but other than that is mostly independent
8*4882a593Smuzhiyunof the interconnect.
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunEach interconnect target module can have one or more devices connected to
11*4882a593Smuzhiyunit. There is a set of control registers for managing interconnect target
12*4882a593Smuzhiyunmodule clocks, idle modes and interconnect level resets for the module.
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunThese control registers are sprinkled into the unused register address
15*4882a593Smuzhiyunspace of the first child device IP block managed by the interconnect
16*4882a593Smuzhiyuntarget module and typically are named REVISION, SYSCONFIG and SYSSTATUS.
17*4882a593Smuzhiyun
18*4882a593SmuzhiyunRequired standard properties:
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun- compatible	shall be one of the following generic types:
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun		"ti,sysc"
23*4882a593Smuzhiyun		"ti,sysc-omap2"
24*4882a593Smuzhiyun		"ti,sysc-omap4"
25*4882a593Smuzhiyun		"ti,sysc-omap4-simple"
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun		or one of the following derivative types for hardware
28*4882a593Smuzhiyun		needing special workarounds:
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun		"ti,sysc-omap2-timer"
31*4882a593Smuzhiyun		"ti,sysc-omap4-timer"
32*4882a593Smuzhiyun		"ti,sysc-omap3430-sr"
33*4882a593Smuzhiyun		"ti,sysc-omap3630-sr"
34*4882a593Smuzhiyun		"ti,sysc-omap4-sr"
35*4882a593Smuzhiyun		"ti,sysc-omap3-sham"
36*4882a593Smuzhiyun		"ti,sysc-omap-aes"
37*4882a593Smuzhiyun		"ti,sysc-mcasp"
38*4882a593Smuzhiyun		"ti,sysc-dra7-mcasp"
39*4882a593Smuzhiyun		"ti,sysc-usb-host-fs"
40*4882a593Smuzhiyun		"ti,sysc-dra7-mcan"
41*4882a593Smuzhiyun		"ti,sysc-pruss"
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun- reg		shall have register areas implemented for the interconnect
44*4882a593Smuzhiyun		target module in question such as revision, sysc and syss
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun- reg-names	shall contain the register names implemented for the
47*4882a593Smuzhiyun		interconnect target module in question such as
48*4882a593Smuzhiyun		"rev, "sysc", and "syss"
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun- ranges	shall contain the interconnect target module IO range
51*4882a593Smuzhiyun		available for one or more child device IP blocks managed
52*4882a593Smuzhiyun		by the interconnect target module, the ranges may include
53*4882a593Smuzhiyun		multiple ranges such as device L4 range for control and
54*4882a593Smuzhiyun		parent L3 range for DMA access
55*4882a593Smuzhiyun
56*4882a593SmuzhiyunOptional properties:
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun- ti,sysc-mask	shall contain mask of supported register bits for the
59*4882a593Smuzhiyun		SYSCONFIG register as documented in the Technical Reference
60*4882a593Smuzhiyun		Manual (TRM) for the interconnect target module
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun- ti,sysc-midle	list of master idle modes supported by the interconnect
63*4882a593Smuzhiyun		target module as documented in the TRM for SYSCONFIG
64*4882a593Smuzhiyun		register MIDLEMODE bits
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun- ti,sysc-sidle	list of slave idle modes supported by the interconnect
67*4882a593Smuzhiyun		target module as documented in the TRM for SYSCONFIG
68*4882a593Smuzhiyun		register SIDLEMODE bits
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun- ti,sysc-delay-us	delay needed after OCP softreset before accssing
71*4882a593Smuzhiyun			SYSCONFIG register again
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun- ti,syss-mask	optional mask of reset done status bits as described in the
74*4882a593Smuzhiyun		TRM for SYSSTATUS registers, typically 1 with some devices
75*4882a593Smuzhiyun		having separate reset done bits for children like OHCI and
76*4882a593Smuzhiyun		EHCI
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun- clocks	clock specifier for each name in the clock-names as
79*4882a593Smuzhiyun		specified in the binding documentation for ti-clkctrl,
80*4882a593Smuzhiyun		typically available for all interconnect targets on TI SoCs
81*4882a593Smuzhiyun		based on omap4 except if it's read-only register in hwauto
82*4882a593Smuzhiyun		mode as for example omap4 L4_CFG_CLKCTRL
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun- clock-names	should contain at least "fck", and optionally also "ick"
85*4882a593Smuzhiyun		depending on the SoC and the interconnect target module,
86*4882a593Smuzhiyun		some interconnect target modules also need additional
87*4882a593Smuzhiyun		optional clocks that can be specified as listed in TRM
88*4882a593Smuzhiyun		for the related CLKCTRL register bits 8 to 15 such as
89*4882a593Smuzhiyun		"dbclk" or "clk32k" depending on their role
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun- ti,hwmods	optional TI interconnect module name to use legacy
92*4882a593Smuzhiyun		hwmod platform data
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun- ti,no-reset-on-init	interconnect target module should not be reset at init
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun- ti,no-idle-on-init	interconnect target module should not be idled at init
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun- ti,no-idle		interconnect target module should not be idled
99*4882a593Smuzhiyun
100*4882a593SmuzhiyunExample: Single instance of MUSB controller on omap4 using interconnect ranges
101*4882a593Smuzhiyunusing offsets from l4_cfg second segment (0x4a000000 + 0x80000 = 0x4a0ab000):
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun	target-module@2b000 {		/* 0x4a0ab000, ap 84 12.0 */
104*4882a593Smuzhiyun		compatible = "ti,sysc-omap2";
105*4882a593Smuzhiyun		ti,hwmods = "usb_otg_hs";
106*4882a593Smuzhiyun		reg = <0x2b400 0x4>,
107*4882a593Smuzhiyun		      <0x2b404 0x4>,
108*4882a593Smuzhiyun		      <0x2b408 0x4>;
109*4882a593Smuzhiyun		reg-names = "rev", "sysc", "syss";
110*4882a593Smuzhiyun		clocks = <&l3_init_clkctrl OMAP4_USB_OTG_HS_CLKCTRL 0>;
111*4882a593Smuzhiyun		clock-names = "fck";
112*4882a593Smuzhiyun		ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
113*4882a593Smuzhiyun				 SYSC_OMAP2_SOFTRESET |
114*4882a593Smuzhiyun				 SYSC_OMAP2_AUTOIDLE)>;
115*4882a593Smuzhiyun		ti,sysc-midle = <SYSC_IDLE_FORCE>,
116*4882a593Smuzhiyun				<SYSC_IDLE_NO>,
117*4882a593Smuzhiyun				<SYSC_IDLE_SMART>;
118*4882a593Smuzhiyun		ti,sysc-sidle = <SYSC_IDLE_FORCE>,
119*4882a593Smuzhiyun				<SYSC_IDLE_NO>,
120*4882a593Smuzhiyun				<SYSC_IDLE_SMART>,
121*4882a593Smuzhiyun				<SYSC_IDLE_SMART_WKUP>;
122*4882a593Smuzhiyun		ti,syss-mask = <1>;
123*4882a593Smuzhiyun		#address-cells = <1>;
124*4882a593Smuzhiyun		#size-cells = <1>;
125*4882a593Smuzhiyun		ranges = <0 0x2b000 0x1000>;
126*4882a593Smuzhiyun
127*4882a593Smuzhiyun		usb_otg_hs: otg@0 {
128*4882a593Smuzhiyun			compatible = "ti,omap4-musb";
129*4882a593Smuzhiyun			reg = <0x0 0x7ff>;
130*4882a593Smuzhiyun			interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
131*4882a593Smuzhiyun				     <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
132*4882a593Smuzhiyun			usb-phy = <&usb2_phy>;
133*4882a593Smuzhiyun			...
134*4882a593Smuzhiyun		};
135*4882a593Smuzhiyun	};
136*4882a593Smuzhiyun
137*4882a593SmuzhiyunNote that other SoCs, such as am335x can have multiple child devices. On am335x
138*4882a593Smuzhiyunthere are two MUSB instances, two USB PHY instances, and a single CPPI41 DMA
139*4882a593Smuzhiyuninstance as children of a single interconnect target module.
140