bloggerads

2014年5月24日 星期六

SATA Power Management

SATA PHY有四種state, 需要注意回到PHYRDY的時間有沒有follow spec
  1. PHYRDY
  2. Partial:  <10us
  3. Slumber: <10ms
  4. DevSleep: <20ms
發動的時機有兩種: HIPM / DIPM,一個是Host主動發起,一個是device主動發。

想知道這個碟機有support什麼樣的power management能力可以看Identify table

 Word 76, bit 9: Support HIPM
 Word 76, bit 14: Support Device auto slumber
 Word 78, bit 3: Support DIPM
 Word 78, bit 8: Support DEVSLP
 Word 79, bit 3: Enable DIPM
 Word 79, bit 8: Enable DEVSLP

以下是控制AHCI controller來做HIPM/DIPM實驗:

HIPM:

  Partial:
  • PxCMD &= (~CMD_ASP) //mute bit 27
  • PxCMD |= CMD_ALPE //set bit 26
  • PxSCTL.IPM =0 // mute bit 11~8

 Slumber:
  • PxCMD |= CMD_ALPE | CMD_ASP //set bit 26 & bit 27
  • PxSCTL.IPM =0 // mute bit 11~8

發個ATA command來trigger, 然後Check PxSSTS.IPM 就知道有沒有成功


DIPM:

 發ATA command(Set Feature, EFh) 開啟碟機這項功能


沒有留言:

張貼留言