20#ifndef ATA_CONTROLLER_H
21#define ATA_CONTROLLER_H
23#include "pedigree/kernel/Log.h"
24#include "pedigree/kernel/machine/IrqHandler.h"
25#include "pedigree/kernel/machine/types.h"
26#include "pedigree/kernel/processor/types.h"
27#include "pedigree/kernel/utilities/RequestQueue.h"
28#include "pedigree/kernel/utilities/String.h"
29#include "pedigree/kernel/utilities/Vector.h"
31#include "modules/drivers/common/scsi/ScsiController.h"
57 NOTICE(
"AtaController: irq" <<
Dec << number <<
Hex <<
" ignored");
58 return IrqDisposition::NotHandled;
72 uint64_t bType, uint64_t bDisk, uint64_t bLocation) {
73 return aType == SCSI_REQUEST_READ && bType == SCSI_REQUEST_READ && aDisk == bDisk &&
74 aLocation == bLocation;
77 bool beginShutdown() {
93 virtual size_t getNumUnits() {
98 bool m_bShutdown =
false;
virtual void getName(String &str)=0
virtual IrqDisposition irq(irq_id_t number)
virtual void shutdown()=0
void maskDiskInterrupts()
static bool canCoalesceCanonicalRequests(uint64_t aType, uint64_t aDisk, uint64_t aLocation, uint64_t bType, uint64_t bDisk, uint64_t bLocation)
virtual bool compareRequests(const RequestQueue::Request &a, const RequestQueue::Request &b)
virtual void setSpecificType(String str)
Vector< Device * > m_Children
Abstrace base class for hardware I/O capabilities.
void clear(bool freeMem=false)