[Denali] Add identify device command.
This commit is contained in:
parent
81469496d1
commit
d90c8eb1ef
9 changed files with 109 additions and 44 deletions
39
sys/denali/ahci/ahci_port.h
Normal file
39
sys/denali/ahci/ahci_port.h
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
#pragma once
|
||||
|
||||
#include <glacier/container/array_view.h>
|
||||
#include <glacier/status/error.h>
|
||||
#include <mammoth/util/memory_region.h>
|
||||
#include <ztypes.h>
|
||||
|
||||
#include "ahci/ahci.h"
|
||||
#include "ahci/command.h"
|
||||
|
||||
class AhciPort {
|
||||
public:
|
||||
AhciPort() {}
|
||||
// Caller retains ownership of the pointer.
|
||||
AhciPort(AhciPortHba* port_struct);
|
||||
|
||||
void DumpInfo();
|
||||
|
||||
bool IsSata() { return port_struct_->signature == 0x101; }
|
||||
bool IsInit() { return port_struct_ != nullptr && command_structures_; }
|
||||
|
||||
glcr::ErrorCode IssueCommand(Command* command);
|
||||
|
||||
void HandleIrq();
|
||||
|
||||
AhciPort(const AhciPort&) = delete;
|
||||
AhciPort& operator=(const AhciPort&) = delete;
|
||||
|
||||
private:
|
||||
volatile AhciPortHba* port_struct_ = nullptr;
|
||||
mmth::OwnedMemoryRegion command_structures_;
|
||||
|
||||
volatile CommandList* command_list_ = nullptr;
|
||||
volatile ReceivedFis* received_fis_ = nullptr;
|
||||
glcr::ArrayView<CommandTable> command_tables_;
|
||||
|
||||
Command* commands_[32];
|
||||
uint32_t commands_issued_ = 0;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue