UFS之Power Mode

gcrisis發表於2018-10-29

UFS支援7種Power Mode,其中4種基本模式和3種過渡模式。通過START STOP UNIT命令和其他一些屬性控制。電源模式獨立於上下行鏈路的狀態。

1、模式

下表列出了7種模式的一些基本資訊:

Mode

Describe

M-PHY status

Mode transition

Active

執行命令或者後臺操作

STALL/HS-BURST,SLEEP/PWM_BURST

From:Poweron、pre-actvie

To:idle、pre-sleep、pre-powerdown

Idle

裝置沒有任何操作

STALL/SLEEP/ HIBERN8

From:active

To:active

Pre-active

進入active前的過度態

 

From:Pre-Sleep, Sleep, Pre-PowerDown, or PowerDown.

To:active

Sleep

顯著降低裝置的功耗

HIBERN8

From:pre-sleep

To:pre-active、pre-powerdown

Pre-sleep

進入sleep模式的過渡態

 

From:Active

To:sleep、pre_active

Powerdown

最節省功耗的模式

 

From:pre-powerdown

To:pre-active

Pre-powerdown

進入powerdown模式前的過渡態

 

From:sleep/active

To:PowerDown or Pre-Active.

各個模式的狀態轉換如下圖所示: 

狀態轉換

條件

Powered_On to Active

裝置準備開始上電初始化時

Pre-Active to Active

裝置滿足active模式下的條件時自動進入

Active to Idle

裝置完成所有正在執行的操作時

Active to Pre-Sleep

1、裝置初始化結束且bInitPowerMode=0;

2、裝置接到START STOP UNIT 命令且POWER CONDITION=2H;

Active to Pre-PowerDown

裝置接到START STOP UNIT 命令且POWER CONDITION=3H;

Idle to Active

裝置收到處理請求時

Pre-Sleep to Pre-Active

START STOP UNIT命令IMMED=1時進入pre-sleep,之後START STOP UNIT命令的POWER CONDITION=1H;

Pre-Sleep to Sleep

滿足進入sleep模式的條件後自動進入

Sleep to Pre-Active

裝置接到START STOP UNIT 命令且POWER CONDITION=1H;

Sleep to Pre-PowerDown

裝置接到START STOP UNIT 命令且POWER CONDITION=3H;

Pre-PowerDown to Pre-Active

START STOP UNIT命令IMMED=1時進入pre-powerdown,之後START STOP UNIT命令的POWER CONDITION=1H;

Pre-PowerDown to PowerDown

滿足進入powerdown模式的條件後自動進入

PowerDown to Pre-Active

裝置接到START STOP UNIT 命令且POWER CONDITION=1H;

各個模式下的命令響應:

不同的模式能夠響應的命令不同,下表列出了不同模式下能夠響應的SCSI命令和UPIU

裝置對SCSI命令的響應:

SSU命令

其他非SSU命令

2、SSU命令

SSU命令用來使能失能一個LU、將快取flush到裝置或者載入彈出裝置;電源管理命令START STOP UNIT傳送到UFS Device well-known logical unit可以控制裝置的power mode。

POWER CONDITION域用來選擇期望的模式。傳送到普通LU的命令POWER CONDITION會被忽略。

SSU  fields

3、屬性

電源模式和電流等級

通過bCurrentPowerMode可以獲得當前裝置的power mode。bCurrentPowerMode是唯一一個可以在任何模式下響應主機命令的引數。

bActiveICCLevel屬性用來指定active模式下的電流等級。在active模式下,有16種電流配置,決定了裝置的最大功耗。在active mode下,選定了bActiveICCLevel後,在VCC、VCCQ和VCCQ2上的最大電流就決定了。假設bActiveICCLevel=N,那麼VCC、VCCQ和VCCQ2上的最大電流分別是wActiveICCLevelsVCC[N]、wActiveICCLevelsVCCQ[N]、wActiveICCLevelsVCCQ2[N].等級0功耗最低效能最差,等級15功耗最高效能最好。

引數格式:

bInitActiveICCLevel引數用來確定裝置上電後的電流等級。

彙總一下:

屬性

描述

bActiveICCLevel

決定最大功耗等級

bInitActiveICCLevel

決定上電後或者復位後的功耗等級

bInitPowerMode

決定初始化後進入哪種電源模式

bCurrentPowerMode

獲取當前功耗模式

相關文章