From b857c6b92f3302b083f7ee92029d92ed523011ae Mon Sep 17 00:00:00 2001 From: Hendiadyoin1 Date: Fri, 15 Sep 2023 21:12:58 +0200 Subject: [PATCH] Kernel/USB: Make USBControllers pseudo StorageControllers This will be needed in the next commit to generate valid LUNs --- Kernel/Bus/USB/USBController.cpp | 6 ++++++ Kernel/Bus/USB/USBController.h | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/Kernel/Bus/USB/USBController.cpp b/Kernel/Bus/USB/USBController.cpp index 2733767c5a..90f2909aaa 100644 --- a/Kernel/Bus/USB/USBController.cpp +++ b/Kernel/Bus/USB/USBController.cpp @@ -5,9 +5,15 @@ */ #include +#include namespace Kernel::USB { +USBController::USBController() + : m_storage_controller_id(StorageManagement::generate_controller_id()) +{ +} + u8 USBController::allocate_address() { // FIXME: This can be smarter. diff --git a/Kernel/Bus/USB/USBController.h b/Kernel/Bus/USB/USBController.h index 73bb01d9c3..448cae2b58 100644 --- a/Kernel/Bus/USB/USBController.h +++ b/Kernel/Bus/USB/USBController.h @@ -28,9 +28,18 @@ public: virtual ErrorOr submit_bulk_transfer(Transfer& transfer) = 0; virtual ErrorOr submit_async_interrupt_transfer(NonnullLockRefPtr transfer, u16 ms_interval) = 0; + u32 storage_controller_id() const { return m_storage_controller_id; } u8 allocate_address(); +protected: + USBController(); + private: + // Note: We are pseudo storage controller for the sake of generating LUNs + // And do not follow a hardware_relative_controller_id for the controller class "USB", + // as we also have to follow the device id and its internal LUN, leaving no room for that + u32 m_storage_controller_id { 0 }; + u8 m_next_device_index { 1 }; IntrusiveListNode> m_controller_list_node;