Intel 82801EB Programmer's Reference Manual page 34

Serial ata controller
Table of Contents

Advertisement

Theory of Operation
// simultaneously if necessary
//
Method( EPRT, 1) {
Store( 1, Local0)
Store( Arg0, Local1)
While( LNotEqual( Local0, 0)){
} // end while
}
Device( PRID) { // Primary channel
Name( _ADR, 0)
// Assumes BIOS populated the SATA timing registers appropriately
34
Or( Arg0, PCS, PCS)
Sleep( 500)
Decrement( Local0)
Store( PCS, Local2)
// Check if we are enabling Port 0
If( LAnd( Arg0, 0x01) {
If( LAnd( Local2, 0x10)) {
Decrement( Local1)
}
Else {
//
// Since a device detect failed, we disable the port. This will
// insure that the port remains disabled - this is not
// required, but is part of a good power conservation policy.
//
And( PCS, 0x02, PCS)
}
}
// Check if we are enabling Port 1
If( LAnd( Arg0, 0x02) {
If( LAnd( Local2, 0x20)) {
Decrement( Local1)
}
Else {
And( PCS, 0x01, PCS)
}
}
If( LEqual( Local1, Zero)) { // all ports enabled?
Store( Zero, Local0)
}
// Logical primary channel (Port 0 or 1, BIOS selectable).
// Set max attempts
// enable Port(s)
// Wait 500ms. Some devices respond
// very quickly, some longer. This loop will
// account for worse case. This is an
// example and could be better optimized
// account for this attempt
// fetch port presence bits
// Port 0 is enabled
// disable Port 0
// Port 1 is enabled
// disable Port 1
// terminate loop
SATA Programmer's Reference Manual
R

Advertisement

Table of Contents
loading

This manual is also suitable for:

82801erIch5Ich5r

Table of Contents