当前位置:网站首页>UFS Clk Gate介绍
UFS Clk Gate介绍
2022-07-26 03:45:00 【果汁底线】
一 . UFS Clk Gate 概述
1. 什么是UFS Clk Gate
UFS Clk Gate是UFS Host Controller Driver的一个功能, 指的是UFS System 空闲的时候,将UFS Clock关闭,并且让UFS MPHY Link进入Hibernate状态,减少系统资源的开销。
2. 什么是UFS Clock
Host Memory(DDR内存)和UFS Host Controller数据通信是通过AIX总线传输进行的,其中UFS Clock指的是AXI总线上的时钟,目前Soc通常使用的是300MHz的UFS Clock。

3. UFS Clk Gate的支持
目前Qcom 平台和MTK 平台支持UFS Clk Gate功能,Hisilicon970平台不支持Clk Gate。
根据ARM和内核的节能策略思想,是希望越来越多的平台支持Clk Gate功能,这样也可以证明ARM和内核的低功耗特性。
二 . UFS Clk Gate Detail
1. UFS CLK Gate Init初始化流程

(1). 设置相关的worker用来关闭UFS CLK和开启UFS CLK的函数。
(2). 设置高精度Timer, 在合适的时机调用ufs clk gate work 和ufs clk ungate work的时机。
gate_work: worker to turn off clocks
ungate_work: worker to turn on clocks that will be used in case of interrupt context
(3). 设置省电模式下延迟时间和性能模式下延迟时间,
(4). 注册CLK Gate 相关sysfs接口
#define UFSHCD_CLK_GATING_DELAY_MS_PWR_SAVE 10 #define UFSHCD_CLK_GATING_DELAY_MS_PERF 50
2 . UFS CLK Gate Work流程

Gate Work流程:
(1). UFS 命令处理完成时,UFS Device会返回Response UPIU给UFS Host, UFS Host产生一个中断,CPU进入中断处理函数进行处理。
(2). 中断处理函数主要做的事情:会先检查Doorbell是否清零,Response UPIU有没有错误,检查Doorbell已经清零,Reponse UPIU也没有错误,然后释放相关资源,关闭UFS CLK.
(3). 现在的状态是:检查Doorbell已经清零,Reponse UPIU也没有错误,可以调用__ufshcd_release 关闭UFS CLK.
(4). 关闭CLK之前会先检查UFS Host Controllert是否支持CLK Gate,不支持则直接退出,支持的话则继续往下走。
(5). 减少clk gating active request 计数 。 Note: 只有当clk gating active request 计数为0的时候,才可以关闭UFS CLK.
(6). 检查Block CLK Gating Enter的位置: active_reqs/lrb_in_use/outstanding_tasks/active_uic_cmd/uic_async_done
active_reqs: number of requests that are pending and should be waited for completion before gating clocks
lrb_in_use: lrb in use
outstanding_tasks: Bits representing outstanding task requests
active_uic_cmd: handle of active UIC command
uic_async_done: uic cmd complete flag
(7). (re)start an hrtimer, 启动hrtimer, 然后间隔clk gating delay_ms之后,调用gating->gate_hrtimer.function = ufshcd_clkgate_hrtimer_handler;
(8). handler主要做的是驱动queue clk_gating.gate_work, 进入ufs clk gate work接口处理。
(9). 将UFS 连接层(Unipro/MPHY)放到Hibernate状态,然后关闭UFS CLK 。
3.UFS CLK UnGate Work流程

Gate Work流程:
(1). 在需要访问UFS的时候,需要保证UFS Host Driver是Resume的状态,连接层(UniPro/MPHY)是Active的状态,UFS Clock要开启的状态。
(2).ufshcd_hold 做的事情是Enable UFS Clock 和 exit from hibern8 mode and set the link as active。
(3) . 开启CLK之前会先检查UFS Host Controllert是否支持CLK Gate,不支持则直接退出,支持的话则继续往下走。
(4). 增加clk gating active request 计数 。 Note: 只有当clk gating active request 计数为0的时候,才可以关闭UFS CLK.
(5). 检查clk_gating state: CLKS_ON/REQ_CLKS_OFF/CLKS_OFF/REQ_CLKS_ON CLKS_ON: 如果是此状态,会调用UFS clk ungate work REQ_CLKS_OFF: 如果是此状态,会将CLK Gate状态设置为REQ_CLKS_ON, 然后调用UFS clk ungate work CLKS_OFF: 如果是此状态,会尝试取消UFS CLK gate work REQ_CLKS_ON: 如果此状态,满足Link是Hibernate状态和支持Hibern8 during gating时,会调用UFS clk ungate work.
(6). UFS clk ungate work做的事情是先开启开启UFS CLK.,然后将UFS 连接层(Unipro/MPHY) Hibernate状态退出,使得连接层变为Active状态。
三, 参考资料
1. UFS驱动代码
2. UFS协议
边栏推荐
- Data elements
- FPS game reverse - box Perspective (matrix)
- ELS initialization window class
- ELS message loop
- Booking.com binke Shanghai noodles
- Configuration and use of virtualservice, gateway and destinationrule of istio III
- Dtcloud the next day
- Dat of deep learning
- 2020 AF-RCNN: An anchor-free convolutional neural network for multi-categoriesagricultural pest det
- Bracket nesting problem (recommended Collection)
猜你喜欢

全校软硬件基础设施一站式监控 ,苏州大学以时序数据库替换 PostgreSQL

Use VRRP technology to realize gateway equipment redundancy, with detailed configuration experiments

测试工作不受重视?学长:你应该换位思考

Offline data warehouse from 0 to 1 - phase I resource purchase configuration

Offline data warehouse from 0 to 1-stage II software installation

cpu和gpu已过时,npu和apu的时代开始

开源许可证的传染性问题浅析
![[create interactive dice roller application]](/img/38/7bb0499bb70c4469428e841fa9c725.png)
[create interactive dice roller application]

Bond network mode configuration

某大厂开发和测试干了一架,还用鼠标线勒脖子...
随机推荐
大厂面试都面试些啥,看了不亏(一)
2020 AF-RCNN: An anchor-free convolutional neural network for multi-categoriesagricultural pest det
【Unity3d Shader】角色投影与倒影
Multi merchant mall system function disassembly lecture 15 - platform side member label
ELS initialization window class
赶紧进来!!!用c语言基础知识几十行代码写一个猜数字小游戏
oracle 11g “密码延迟验证”特性
申请SSL证书,并给域名配置SSL证书,并部署服务器;SSL证书的下载和安装
JS Base64 encoding and decoding
How to choose sentinel vs hystrix?
leetcode-202.快乐数
Find My技术|物联网资产跟踪市场规模达66亿美元,Find My助力市场发展
[experience sharing] strong recommendation - screenshot gadget FastStone capture (FSC)
Dat of deep learning
深度学习之DAT
Bond network mode configuration
[unity3d shader] character projection and reflection
Uncaught TypeError: $(...).onmouseenter is not a function js错误,解决办法:
Three ways of redis cluster
涂鸦幻彩产品开发包如何使用