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