29 bool initialiseController();
34 bool identify(
size_t port, uint16_t* words,
bool interruptProbe =
false);
35 EXPORTED_PUBLIC
bool readWrite(
size_t port, uint64_t lba, uint16_t sectors,
void* buffer,
36 size_t bytes,
bool write);
39 bool flush(
size_t port,
bool extended);
40 void configureDisk(
size_t port,
size_t sectorBytes,
size_t queueDepth);
41 EXPORTED_PUBLIC
size_t interruptCompletions()
const;
42 EXPORTED_PUBLIC
size_t maximumOutstanding(
size_t port)
const;
43 Device* pciDevice()
const {
51 bool sendCommand(
size_t, uintptr_t, uint8_t, uintptr_t, uint16_t,
bool)
override {
56 size_t getNumUnits()
override {
62 bool readWrite(
size_t port, uint64_t lba, uint16_t sectors,
void* buffer,
size_t bytes,
63 bool write,
bool cacheFill);
64 bool claimOwnership(uint32_t version);
69 mutable Mutex m_IrqLock;
71 uint32_t m_Implemented;
72 uint16_t m_OriginalCommand;