/* * Copyright (c) 2021, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Kernel { class IDEController; class IDEChannel; class ATADiskDevice final : public ATADevice { friend class IDEController; friend class DeviceManagement; public: static NonnullRefPtr create(const ATAController&, ATADevice::Address, u16 capabilities, u16 logical_sector_size, u64 max_addressable_block); virtual ~ATADiskDevice() override; // ^StorageDevice virtual CommandSet command_set() const override { return CommandSet::ATA; } private: ATADiskDevice(const ATAController&, Address, unsigned, u16, u16, u64, NonnullOwnPtr); // ^DiskDevice virtual StringView class_name() const override; }; }