18c2ecf20Sopenharmony_ciTexas Instruments sysc interconnect target module wrapper binding
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciTexas Instruments SoCs can have a generic interconnect target module
48c2ecf20Sopenharmony_cihardware for devices connected to various interconnects such as L3
58c2ecf20Sopenharmony_ciinterconnect (Arteris NoC) and L4 interconnect (Sonics s3220). The sysc
68c2ecf20Sopenharmony_ciis mostly used for interaction between module and PRCM. It participates
78c2ecf20Sopenharmony_ciin the OCP Disconnect Protocol but other than that is mostly independent
88c2ecf20Sopenharmony_ciof the interconnect.
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ciEach interconnect target module can have one or more devices connected to
118c2ecf20Sopenharmony_ciit. There is a set of control registers for managing interconnect target
128c2ecf20Sopenharmony_cimodule clocks, idle modes and interconnect level resets for the module.
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ciThese control registers are sprinkled into the unused register address
158c2ecf20Sopenharmony_cispace of the first child device IP block managed by the interconnect
168c2ecf20Sopenharmony_citarget module and typically are named REVISION, SYSCONFIG and SYSSTATUS.
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ciRequired standard properties:
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci- compatible	shall be one of the following generic types:
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci		"ti,sysc"
238c2ecf20Sopenharmony_ci		"ti,sysc-omap2"
248c2ecf20Sopenharmony_ci		"ti,sysc-omap4"
258c2ecf20Sopenharmony_ci		"ti,sysc-omap4-simple"
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci		or one of the following derivative types for hardware
288c2ecf20Sopenharmony_ci		needing special workarounds:
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci		"ti,sysc-omap2-timer"
318c2ecf20Sopenharmony_ci		"ti,sysc-omap4-timer"
328c2ecf20Sopenharmony_ci		"ti,sysc-omap3430-sr"
338c2ecf20Sopenharmony_ci		"ti,sysc-omap3630-sr"
348c2ecf20Sopenharmony_ci		"ti,sysc-omap4-sr"
358c2ecf20Sopenharmony_ci		"ti,sysc-omap3-sham"
368c2ecf20Sopenharmony_ci		"ti,sysc-omap-aes"
378c2ecf20Sopenharmony_ci		"ti,sysc-mcasp"
388c2ecf20Sopenharmony_ci		"ti,sysc-dra7-mcasp"
398c2ecf20Sopenharmony_ci		"ti,sysc-usb-host-fs"
408c2ecf20Sopenharmony_ci		"ti,sysc-dra7-mcan"
418c2ecf20Sopenharmony_ci		"ti,sysc-pruss"
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci- reg		shall have register areas implemented for the interconnect
448c2ecf20Sopenharmony_ci		target module in question such as revision, sysc and syss
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci- reg-names	shall contain the register names implemented for the
478c2ecf20Sopenharmony_ci		interconnect target module in question such as
488c2ecf20Sopenharmony_ci		"rev, "sysc", and "syss"
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci- ranges	shall contain the interconnect target module IO range
518c2ecf20Sopenharmony_ci		available for one or more child device IP blocks managed
528c2ecf20Sopenharmony_ci		by the interconnect target module, the ranges may include
538c2ecf20Sopenharmony_ci		multiple ranges such as device L4 range for control and
548c2ecf20Sopenharmony_ci		parent L3 range for DMA access
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ciOptional properties:
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci- ti,sysc-mask	shall contain mask of supported register bits for the
598c2ecf20Sopenharmony_ci		SYSCONFIG register as documented in the Technical Reference
608c2ecf20Sopenharmony_ci		Manual (TRM) for the interconnect target module
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci- ti,sysc-midle	list of master idle modes supported by the interconnect
638c2ecf20Sopenharmony_ci		target module as documented in the TRM for SYSCONFIG
648c2ecf20Sopenharmony_ci		register MIDLEMODE bits
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ci- ti,sysc-sidle	list of slave idle modes supported by the interconnect
678c2ecf20Sopenharmony_ci		target module as documented in the TRM for SYSCONFIG
688c2ecf20Sopenharmony_ci		register SIDLEMODE bits
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ci- ti,sysc-delay-us	delay needed after OCP softreset before accssing
718c2ecf20Sopenharmony_ci			SYSCONFIG register again
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ci- ti,syss-mask	optional mask of reset done status bits as described in the
748c2ecf20Sopenharmony_ci		TRM for SYSSTATUS registers, typically 1 with some devices
758c2ecf20Sopenharmony_ci		having separate reset done bits for children like OHCI and
768c2ecf20Sopenharmony_ci		EHCI
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci- clocks	clock specifier for each name in the clock-names as
798c2ecf20Sopenharmony_ci		specified in the binding documentation for ti-clkctrl,
808c2ecf20Sopenharmony_ci		typically available for all interconnect targets on TI SoCs
818c2ecf20Sopenharmony_ci		based on omap4 except if it's read-only register in hwauto
828c2ecf20Sopenharmony_ci		mode as for example omap4 L4_CFG_CLKCTRL
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_ci- clock-names	should contain at least "fck", and optionally also "ick"
858c2ecf20Sopenharmony_ci		depending on the SoC and the interconnect target module,
868c2ecf20Sopenharmony_ci		some interconnect target modules also need additional
878c2ecf20Sopenharmony_ci		optional clocks that can be specified as listed in TRM
888c2ecf20Sopenharmony_ci		for the related CLKCTRL register bits 8 to 15 such as
898c2ecf20Sopenharmony_ci		"dbclk" or "clk32k" depending on their role
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci- ti,hwmods	optional TI interconnect module name to use legacy
928c2ecf20Sopenharmony_ci		hwmod platform data
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci- ti,no-reset-on-init	interconnect target module should not be reset at init
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci- ti,no-idle-on-init	interconnect target module should not be idled at init
978c2ecf20Sopenharmony_ci
988c2ecf20Sopenharmony_ci- ti,no-idle		interconnect target module should not be idled
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ciExample: Single instance of MUSB controller on omap4 using interconnect ranges
1018c2ecf20Sopenharmony_ciusing offsets from l4_cfg second segment (0x4a000000 + 0x80000 = 0x4a0ab000):
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_ci	target-module@2b000 {		/* 0x4a0ab000, ap 84 12.0 */
1048c2ecf20Sopenharmony_ci		compatible = "ti,sysc-omap2";
1058c2ecf20Sopenharmony_ci		ti,hwmods = "usb_otg_hs";
1068c2ecf20Sopenharmony_ci		reg = <0x2b400 0x4>,
1078c2ecf20Sopenharmony_ci		      <0x2b404 0x4>,
1088c2ecf20Sopenharmony_ci		      <0x2b408 0x4>;
1098c2ecf20Sopenharmony_ci		reg-names = "rev", "sysc", "syss";
1108c2ecf20Sopenharmony_ci		clocks = <&l3_init_clkctrl OMAP4_USB_OTG_HS_CLKCTRL 0>;
1118c2ecf20Sopenharmony_ci		clock-names = "fck";
1128c2ecf20Sopenharmony_ci		ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
1138c2ecf20Sopenharmony_ci				 SYSC_OMAP2_SOFTRESET |
1148c2ecf20Sopenharmony_ci				 SYSC_OMAP2_AUTOIDLE)>;
1158c2ecf20Sopenharmony_ci		ti,sysc-midle = <SYSC_IDLE_FORCE>,
1168c2ecf20Sopenharmony_ci				<SYSC_IDLE_NO>,
1178c2ecf20Sopenharmony_ci				<SYSC_IDLE_SMART>;
1188c2ecf20Sopenharmony_ci		ti,sysc-sidle = <SYSC_IDLE_FORCE>,
1198c2ecf20Sopenharmony_ci				<SYSC_IDLE_NO>,
1208c2ecf20Sopenharmony_ci				<SYSC_IDLE_SMART>,
1218c2ecf20Sopenharmony_ci				<SYSC_IDLE_SMART_WKUP>;
1228c2ecf20Sopenharmony_ci		ti,syss-mask = <1>;
1238c2ecf20Sopenharmony_ci		#address-cells = <1>;
1248c2ecf20Sopenharmony_ci		#size-cells = <1>;
1258c2ecf20Sopenharmony_ci		ranges = <0 0x2b000 0x1000>;
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ci		usb_otg_hs: otg@0 {
1288c2ecf20Sopenharmony_ci			compatible = "ti,omap4-musb";
1298c2ecf20Sopenharmony_ci			reg = <0x0 0x7ff>;
1308c2ecf20Sopenharmony_ci			interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
1318c2ecf20Sopenharmony_ci				     <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
1328c2ecf20Sopenharmony_ci			usb-phy = <&usb2_phy>;
1338c2ecf20Sopenharmony_ci			...
1348c2ecf20Sopenharmony_ci		};
1358c2ecf20Sopenharmony_ci	};
1368c2ecf20Sopenharmony_ci
1378c2ecf20Sopenharmony_ciNote that other SoCs, such as am335x can have multiple child devices. On am335x
1388c2ecf20Sopenharmony_cithere are two MUSB instances, two USB PHY instances, and a single CPPI41 DMA
1398c2ecf20Sopenharmony_ciinstance as children of a single interconnect target module.
140