RPM(Resource Power Manager)

2019-07-14 03:29发布



资源电源管理RPM(Resource Power Manager)


RPM是高通专用的硬件引擎,用于管理共享的SoC(系统级芯片)相关资源,其中包括总线,时钟,电源轨等。RPM的目标是满足SoC的操作和性能要求的同时实现最大的功率节省。RPM接受多个RPM主控的资源请求。仲裁和聚合请求,并配置共享资源。RPM的主控方有应用处理器,调制解调处理器,以及一些硬件加速器。
RPM驱动提供了一个同RPM交互的API。内核代码调用RPM驱动来请求RPM管理和共享资源。内核代码也可以为RPM通知注册驱动,RPM通知在共享资源状态发生变化时发送。


RPM给每个RPM的主控方提供了一个单独的寄存器区域。一般情况下,每个寄存器代表了一些共享资源。通常情况下,主控方通过写寄存器来请求资源,然后产生一个中断给RPM。RPM处理请求,向寄存器中写确认信息,然后产生中断给主控方。
除了主控方特定区域,RPM也提供了一个共享区域,其中包含了共享资源的状态。只有RPM可以写状态区域,主控方只能够读取状态。
RPM包含内部逻辑,用来聚合和仲裁不同RPM主控方的请求。它同PMIC,总线仲裁模块,以及始终控制模块都有接口,以便配置共享资源。


RPM驱动封装了低级RPM交互,就是依赖于读/写寄存器和产生/处理中断的交互;同时也提供了高级同步的set/clear/get接口。
大部分功能使用一个“ID值匹配队列”,ID表明了对应于某些RPM资源的RPM寄存器,这些值表明了新的资源值。
RPM驱动同步访问RPM,主要是为了保护多个任务,SMP内核,任务上下文和原子上下文同时访问。