Newer
Older
minerva / Kernel / Bus / USB / USBController.cpp
@minerva minerva on 13 Jul 777 bytes Initial commit
/*
 * Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#include <Kernel/Bus/USB/USBController.h>
#include <Kernel/Bus/USB/USBRequest.h>
#include <Kernel/Devices/Storage/StorageManagement.h>

namespace Kernel::USB {

USBController::USBController()
    : m_storage_controller_id(StorageManagement::generate_controller_id())
{
}

ErrorOr<void> USBController::reset_pipe(Device& device, Pipe& pipe)
{
    if (pipe.type() == Pipe::Type::Control)
        return {};

    TRY(device.control_transfer(USB_REQUEST_TYPE_STANDARD | USB_REQUEST_RECIPIENT_ENDPOINT | USB_REQUEST_TRANSFER_DIRECTION_HOST_TO_DEVICE,
        USB_REQUEST_CLEAR_FEATURE, USB_FEATURE_ENDPOINT_HALT, pipe.endpoint_address(), 0, nullptr));

    return {};
}

}