Resource Power Manager(RPM) RPM is a dedicated hardware engine for managing shared SoC resources, which includes buses, clocks, power rails, etc. The goal of RPM is to achieve the maximum power savings while satisfying the SoC's operational and performance requirements. RPM accepts resource requests from multiple RPM masters. It arbitrates and aggregates the requests, and configures the shared resources. The RPM masters are the application processor, the modem processor, as well as hardware accelerators. The RPM driver communicates with the hardware engine using SMD. The devicetree representation of the RPM block should be: Required properties - compatible: "qcom,rpm-smd" - rpm-channel-name: The string corresponding to the channel name of the peripheral subsystem. Required for both smd and glink transports. - rpm-channel-type: The interal SMD edge for this subsystem found in - interrupts: The IRQ used by remote processor to inform APSS about reception of response message packet. Optional properties - rpm-standalone: Allow RPM driver to run in standalone mode irrespective of RPM channel presence. - reg: Contains the memory address at which rpm messaging format version is stored. If this field is not present, the target only supports v0 format. Example: qcom,rpm-smd@68150 { compatible = "qcom,rpm-smd"; reg = <0x68150 0x3200>; interrupts = ; qcom,rpm-channel-name = "rpm_requests"; qcom,rpm-channel-type = 15; /* SMD_APPS_RPM */ } }