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