[RK3399][Android7.1] DDR动态频率调节驱动小结

本文介绍了在Android 7.1和RK3399平台上,DDR如何利用devfreq框架进行动态频率调节以降低功耗并保持性能。devfreq提供Simple Ondemand、Userspace、Powersave和Performance等策略。文章还详细讨论了dmc、dfi模块的作用,并展示了dts配置、驱动文件结构以及加载流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OS: Android 7.1
Board: Firefly-RK3399
Kernel: v4.4.55

devfreq介绍:

rk3288平台上, gpu和ddr有自己的一套dvfs机制,而在rk3399平台,使用了系统的devfreq框架。

devfreq 是内核开发者定义的一套支持动态调整设备频率和电压的的框架模型。它能有效的降
低该设备的功耗,同时兼顾其性能。
devfreq 通过不同的变频策略,选择一个合适的频率供设备使用,目前的内核版本提供了以下
几种策略:

  • Simple Ondemand :根据负载动态调频调压;
  • Userspace:用户自己设置电压和频率,系统不会自动调整;
  • Powersave:功耗优先,始终将频率设置在最低值;
  • Performance:性能优先,始终将频率设置为最高值。

devfreq和cpufreq的功能类似,只是前者用于控制device的clock,后者用来控制cpu.

这里写图片描述


dts配置:
dmc, dynamic memory controller

    dmc: dmc {
        compatible = "rockchip,rk3399-dmc";
        devfreq-events = <&dfi>;
        interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH 0>;
        clocks = <&cru SCLK_DDRCLK>;
        clock-names = "dmc_clk";
        ddr_timing = <&ddr_timing>;
        status = "disabled";
    };

dfi,全称不晓得,用于监控dmc的loading模块

    dfi: dfi@ff630000 {
        reg = <0x00 0xff630000 0x00 0x4000>;
        compatible = "rockchip,rk3399-dfi";
        rockchip,pmu = <&pmugrf>;
        clocks = <&cru PCLK_DDR_MON>;
        clock-names = "pclk_ddr_mon";
        status = "disabled";
    };

ddr timing:

ddr_timing: ddr_timing {
        compatible = "rockchip,ddr-timing";
        ddr3_s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值