ufs2.2 协议扫盲(七)

7.1.10、Power Mode State Machine(电源状态机):
不同功率模式之间的关系如下图,图中共有上篇文章提到的4种基本电源状态以及3种过渡状态,SSU指的是START STOP UNIT命令,PC指的是START STOP UNIT命令帧结构中的Power Conditions字段,文字解释在下面:

ufs2.2 协议扫盲(七)_第1张图片
图中的1)只有导致 Pre-Sleep 转换的 SSU 命令将 IMMED 设置为 1 时,才会发生这种转换(Pre-Sleep -> Pre-Active)。
图中的2)只有导致 Pre-PowerDown 转换的 SSU 命令将 IMMED 设置为 1 时,才会发生这种转换(Pre-ProwerDown -> Pre-Active)。
图中的3)如果 bInitPowerMode = 00h,则该自动转换应在设备初始化结束时发生(具体参见上篇)。

ufs2.2 协议扫盲(七)_第2张图片下表两个表是PC(POWER CONDITIONS)的值和IMMED的值含义(之后还会再具体说明):
ufs2.2 协议扫盲(七)_第3张图片
ufs2.2 协议扫盲(七)_第4张图片
一、Transitions from Powered On Power Mode(Power On Mode):
在以下情况下,设备应进入 Powered On:供电、硬件复位、EndPointReset 或 Host UniPro 热复位后。
一.1、Transition from Powered_On to Active
当设备准备好开始上电初始化时,将发生这种转变。

二、Transitions from PreActive Power Mode
.1、Transition from Pre-Active to Active
当设备满足处于Active power mode的要求时,将发生这种转换。

三、Transitions from Active Power Mode
.1、Transition from Active to Idle

当设备完成任何正在进行的操作时,可能会发生这种转变。
.2、Transition from Active to Pre-Sleep
This transition shall occur
在设备初始化结束时,并且 bInitPowerMode 参数设置为“00h”,或者设备服务器处理 POWER CONDITION 字段设置为 2h 的 START STOP UNIT 命令(上面已经解释)。
.3、Transition from Active to Pre-PowerDown
如果设备服务器处理 POWER CONDITION 字段设置为 3h 的 START STOP UNIT 命令,则此转换将发生。
四、 Transitions from Idle Power Mode
.1、Transition from Idle to Active

如果设备处理需要处于Active power mode的请求,则将发生此转换。
五、 Transitions from Pre Sleep Power Mode
.1、Transition from Pre-Sleep to Pre-Active
如果导致 Pre-Sleep 转换的 SSU 命令将 IMMED 设置为 1 时,并且当设备服务器处理 POWER CONDITION 字段设置为 1h 的 START STOP UNIT 命令时,将发生此转换(上面有解释)。
.2、Transition from Pre-Sleep to Sleep
当设备满足处于Sleep power mode的要求时,将发生此转换。
六、 Transitions from UFS‐ Sleep Power Mode
.1、Transition from UFS-Sleep to Pre-Active
如果设备服务器处理 POWER CONDITION 字段设置为 1h 的 START STOP UNIT 命令,则此转换将发生。
六.2、 Transition from UFS-Sleep to Pre-PowerDown
如果设备服务器处理 POWER CONDITION 字段设置为 3h 的 START STOP UNIT 命令,则此转换将发生。
七、 Transitions from Pre PowerDown Power Mode
七.1、 Transition from Pre-PowerDown to Pre-Active

如果导致 Pre-PowerDown 转换的 SSU 命令将 IMMED 设置为 1 时,并且当设备服务器处理 POWER CONDITION 字段设置为 1h 的 START STOP UNIT 命令时,将发生此转换。
七.2、Transition from Pre-PowerDown to PowerDown
当设备满足处于 UFS-PowerDown 电源模式的要求时,将发生这种转换。

八、Transitions from UFSPowerDown Power Mode
八.1、Transition from UFS-PowerDown to Pre-Active
如果设备服务器处理 POWER CONDITION 字段设置为 1h 的 START STOP UNIT 命令,则此转换将发生。

7.1.11、SCSI command and UPIU transactions
可以通过读取 bCurrentPowerMode 属性检索当前功率模式。bCurrentPowerMode 是设备在任何电源模式下都需要返回的唯一属性。 如果设备未处于活动电源模式或空闲电源模式,则访问除 bCurrentPowerMode 以外的描述符、标志或属性的 QUERY REQUEST UPIU 可能会失败。
ufs2.2 协议扫盲(七)_第5张图片
通过在 START STOP UNIT 命令将其 IMMED 位设置为 1,一旦接收到命令,设备就必须在进入过渡模式时做出响应。
IMMED 位设置为 1 的 START STOP UNIT 命令请求的并发电源模式更改的影响是供应商特定的。意思估计就是IMMED 位设置为 1的START STOP UNIT 命令的多种状态机更改,由供应商决定。
 IMMED 位设置为零的 START STOP UNIT 命令导致转换到Active, Sleep,  or PowerDown power modes,在设备达到命令指定的电源模式之前,不应以 GOOD 状态完成。
下表总结了每种电源模式允许的 SCSI 命令和 UPIU 事务。
ufs2.2 协议扫盲(七)_第6张图片

7.1.12、Responses to SCSI commands
下表定义了Device well known logical unit对给定power mode的 START STOP UNIT 命令的响应。 假设 START STOP UNIT 命令中的 IMMED 位设置为零。
ufs2.2 协议扫盲(七)_第7张图片
对于非 CDB (scsi命令规定字节数的一个数据结构)内容的情况,START STOP UNIT 命令可能不会以 GOOD 状态终止。

下表总结了Device well known logical unit可以针对各种设备电源模式对除 START STOP UNIT 之外的命令提供的响应。
ufs2.2 协议扫盲(七)_第8张图片 Note1:用“其他”标识的行定义Device well known logical unit对除START STOP UNIT 命令和REQUEST SENSE 命令之外的命令的响应。


下表定义了各种device power modes的可轮询检测数据:
ufs2.2 协议扫盲(七)_第9张图片

 7.1.13、Power Management Command: START STOP UNIT:
当 START STOP UNIT 命令被发送到一个逻辑单元时,它可用于启用或禁用该逻辑单元,将所有缓存的逻辑块刷新到介质(对于包含缓存的逻辑单元),或者加载或弹出介质。
当START STOP UNIT 命令发送到UFS Device well known logical unit(W-LUN = 50h)时,它可以用来选择设备电源模式。
ufs2.2 协议扫盲(七)_第10张图片

POWER CONDITION 字段选择所需的模式。 如果命令被发送到设备众所周知的逻辑单元之外的逻辑单元,则电源条件字段可以被忽略。  
ufs2.2 协议扫盲(七)_第11张图片
IMMED的值的含义在之前提到过了,1和0的区别,No Flush也已叙述,PC值为0则会直接停止指定的LU,N 的值由几何描述符(后边会提到Geometry Descriptor )中的 bMaxNumberLU 参数指示。PC为其他值会改变电源模式。

7.1.14、Power Mode Control
下表定义了一系列用于控制active current levels and power modes.
ufs2.2 协议扫盲(七)_第12张图片

下表显示了指定电源模式和上电或复位后 Active ICC 级别的 Device Descriptor 参数。 这些参数之前的文章都已经用到。
ufs2.2 协议扫盲(七)_第13张图片
下表定义了Power Parameters Descriptor.的参数。 每个参数由16个元素组成,每个元素的大小为两个字节,其结构如表7-13所示,这些的含义之前的文章有所提及,主要描述了在某一个level下的电源功率。比如,对于VCC 的Active ICC level。VCC 当前消耗的最大峰值电流,是为活动模式定义的 16 个电流消耗水平中的一个​​​​​​。
ufs2.2 协议扫盲(七)_第14张图片
ufs2.2 协议扫盲(七)_第15张图片
 

7.1.15、 Logical Unit Power Condition

、每个逻辑单元可能处于活动电源状态和停止电源状态。 关于these two logical unit power conditions.的定义,请参见 [SPC] 和 [SBC]。
、在上电或任何类型的复位事件后,所有逻辑单元都应处于活动电源状态。
、如果设备服务器处理 START STOP UNIT 命令且 START 位设置为 0 且 POWER CONDITION 字段设置为 0h,则将从活动功率状态转换到停止功率状态。
丶如果设备服务器处理 START STOP UNIT 命令且 START 位设置为 1 且 POWER CONDITION 字段设置为 0h,则将从停止电源状态转换为活动电源状态
、仅当设备处于活动电源模式或空闲电源模式时,才应发出用于更改逻辑单元电源条件(也就是PC的值)的 START STOP UNIT 命令,其他应当是自动完成的。
、只有当逻辑单元命令队列为空时,才应请求移动到停止电源状态。
A transition in the device power mode state shall not change the logical unit power condition(设备电源模式状态的转换不应改变logical unit power condition“condition”强调“身体状态”,而“state”则更重于表示“心理上的、精神上的状态” ).
、下表定义了逻辑单元对各种设备电源模式的 SCSI 命令的响应,假设逻辑单元处于活动电源状态。 
ufs2.2 协议扫盲(七)_第16张图片
如果逻辑单元处于停电状态,则设备服务器应:
、提供可轮询的检测数据,检测键设置为 NOT READY,附加检测代码设置为 LOGICAL UNIT NOT READY, INITIALIZING COMMAND REQUIRED;
、终止每个媒体访问命令或 TEST UNIT READY 命令,并在 CHECK CONDITION 状态下将检测键设置为 NOT READY,并将附加检测代码设置为 LOGICAL UNIT NOT READY,INITIALIZING COMMAND REQUIRED。

你可能感兴趣的:(UFS,linux,c语言,架构,驱动开发,C)