1*ccbbb9faSDave GerlachTI Wakeup M3 Remoteproc Driver 2*ccbbb9faSDave Gerlach============================== 3*ccbbb9faSDave Gerlach 4*ccbbb9faSDave GerlachThe TI AM33xx and AM43xx family of devices use a small Cortex M3 co-processor 5*ccbbb9faSDave Gerlach(commonly referred to as Wakeup M3 or CM3) to help with various low power tasks 6*ccbbb9faSDave Gerlachthat cannot be controlled from the MPU. This CM3 processor requires a firmware 7*ccbbb9faSDave Gerlachbinary to accomplish this. The wkup_m3 remoteproc driver handles the loading of 8*ccbbb9faSDave Gerlachthe firmware and booting of the CM3. 9*ccbbb9faSDave Gerlach 10*ccbbb9faSDave GerlachWkup M3 Device Node: 11*ccbbb9faSDave Gerlach==================== 12*ccbbb9faSDave GerlachA wkup_m3 device node is used to represent the Wakeup M3 processor instance 13*ccbbb9faSDave Gerlachwithin the SoC. It is added as a child node of the parent interconnect bus 14*ccbbb9faSDave Gerlach(l4_wkup) through which it is accessible to the MPU. 15*ccbbb9faSDave Gerlach 16*ccbbb9faSDave GerlachRequired properties: 17*ccbbb9faSDave Gerlach-------------------- 18*ccbbb9faSDave Gerlach- compatible: Should be one of, 19*ccbbb9faSDave Gerlach "ti,am3352-wkup-m3" for AM33xx SoCs 20*ccbbb9faSDave Gerlach "ti,am4372-wkup-m3" for AM43xx SoCs 21*ccbbb9faSDave Gerlach- reg: Should contain the address ranges for the two internal 22*ccbbb9faSDave Gerlach memory regions, UMEM and DMEM. The parent node should 23*ccbbb9faSDave Gerlach provide an appropriate ranges property for properly 24*ccbbb9faSDave Gerlach translating these into bus addresses. 25*ccbbb9faSDave Gerlach- reg-names: Contains the corresponding names for the two memory 26*ccbbb9faSDave Gerlach regions. These should be named "umem" & "dmem". 27*ccbbb9faSDave Gerlach- ti,hwmods: Name of the hwmod associated with the wkupm3 device. 28*ccbbb9faSDave Gerlach- ti,pm-firmware: Name of firmware file to be used for loading and 29*ccbbb9faSDave Gerlach booting the wkup_m3 remote processor. 30*ccbbb9faSDave Gerlach 31*ccbbb9faSDave GerlachExample: 32*ccbbb9faSDave Gerlach-------- 33*ccbbb9faSDave Gerlach/* AM33xx */ 34*ccbbb9faSDave Gerlachocp { 35*ccbbb9faSDave Gerlach l4_wkup: l4_wkup@44c00000 { 36*ccbbb9faSDave Gerlach compatible = "am335-l4-wkup", "simple-bus"; 37*ccbbb9faSDave Gerlach ranges = <0 0x44c00000 0x400000>; 38*ccbbb9faSDave Gerlach #address-cells = <1>; 39*ccbbb9faSDave Gerlach #size-cells = <1>; 40*ccbbb9faSDave Gerlach 41*ccbbb9faSDave Gerlach wkup_m3: wkup_m3@100000 { 42*ccbbb9faSDave Gerlach compatible = "ti,am3352-wkup-m3"; 43*ccbbb9faSDave Gerlach reg = <0x100000 0x4000>, 44*ccbbb9faSDave Gerlach <0x180000 0x2000>; 45*ccbbb9faSDave Gerlach reg-names = "umem", "dmem"; 46*ccbbb9faSDave Gerlach ti,hwmods = "wkup_m3"; 47*ccbbb9faSDave Gerlach ti,pm-firmware = "am335x-pm-firmware.elf"; 48*ccbbb9faSDave Gerlach }; 49*ccbbb9faSDave Gerlach }; 50*ccbbb9faSDave Gerlach 51*ccbbb9faSDave Gerlach ... 52*ccbbb9faSDave Gerlach}; 53