libqos/ahci: Add ahci_port_clear helper

Add a helper that assists in clearing out potentially old error and FIS
information from an AHCI port's data structures. This ensures we always
start with a blank slate for interrupt and FIS receipt information.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 1423158090-25580-3-git-send-email-jsnow@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
John Snow 2015-02-05 12:41:13 -05:00 committed by Stefan Hajnoczi
parent e77448a385
commit e83fd96bfa
3 changed files with 19 additions and 7 deletions

View file

@ -294,3 +294,19 @@ unsigned ahci_port_select(AHCIQState *ahci)
g_assert(i < 32);
return i;
}
/**
* Clear a port's interrupts and status information prior to a test.
*/
void ahci_port_clear(AHCIQState *ahci, uint8_t port)
{
uint32_t reg;
/* Clear out this port's interrupts (ignore the init register d2h fis) */
reg = ahci_px_rreg(ahci, port, AHCI_PX_IS);
ahci_px_wreg(ahci, port, AHCI_PX_IS, reg);
g_assert_cmphex(ahci_px_rreg(ahci, port, AHCI_PX_IS), ==, 0);
/* Wipe the FIS-Recieve Buffer */
qmemset(ahci->port[port].fb, 0x00, 0x100);
}