try to activate link and spin up the device

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22280 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Marcus Overhagen 2007-09-23 09:24:06 +00:00
parent 10508d2e99
commit 8961bec039
2 changed files with 8 additions and 1 deletions

View File

@ -94,6 +94,7 @@ typedef struct {
enum {
PORT_CMD_ICC_ACTIVE = (1 << 28), // Interface Communication control
PORT_CMD_ICC_SLUMBER = (6 << 28), // Interface Communication control
PORT_CMD_ICC_MASK = (0xf<<28), // Interface Communication control
PORT_CMD_CR = (1 << 15), // Command List Running (DMA active)
PORT_CMD_FR = (1 << 14), // FIS Receive Running
PORT_CMD_FER = (1 << 4), // FIS Receive Enable

View File

@ -69,6 +69,12 @@ AHCIPort::Init()
// clear error bits
fRegs->serr = fRegs->serr;
// spin up device
fRegs->cmd |= PORT_CMD_SUD;
// activate link
fRegs->cmd = (fRegs->cmd & ~PORT_CMD_ICC_MASK) | PORT_CMD_ICC_ACTIVE;
// enable FIS receive
fRegs->cmd |= PORT_CMD_FER;
@ -135,7 +141,7 @@ void
AHCIPort::Interrupt()
{
uint32 is = fRegs->is;
TRACE("AHCIPort::Interrupt port %d, status %#08x\n", fIndex, is);
TRACE("AHCIPort::Interrupt port %d, status %#08lx\n", fIndex, is);
// clear interrupts
fRegs->is = is;