mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:07:35 +00:00
Kernel: Add an SD card driver for the aarch64 port
Co-authored-by: Ollrogge <nils-ollrogge@outlook.de>
This commit is contained in:
parent
bb8092d6a1
commit
c91db6ec97
13 changed files with 1465 additions and 0 deletions
49
Kernel/Storage/SD/SDMemoryCard.h
Normal file
49
Kernel/Storage/SD/SDMemoryCard.h
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* Copyright (c) 2023, the SerenityOS developers.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AK/Function.h>
|
||||
#include <AK/Result.h>
|
||||
#include <AK/Types.h>
|
||||
#include <Kernel/Locking/Mutex.h>
|
||||
#include <Kernel/Storage/SD/Registers.h>
|
||||
#include <Kernel/Storage/StorageDevice.h>
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
class SDHostController;
|
||||
|
||||
class SDMemoryCard : public StorageDevice {
|
||||
public:
|
||||
SDMemoryCard(SDHostController& sdhc, StorageDevice::LUNAddress, u32 hardware_relative_controller_id, u32 block_len, u64 capacity_in_blocks, u32 relative_card_address, SD::OperatingConditionRegister ocr, SD::CardIdentificationRegister cid, SD::SDConfigurationRegister scr);
|
||||
|
||||
// ^StorageDevice
|
||||
virtual CommandSet command_set() const override { return CommandSet::SD; }
|
||||
|
||||
// ^BlockDevice
|
||||
virtual void start_request(AsyncBlockDeviceRequest&) override;
|
||||
|
||||
private:
|
||||
enum class CardAddressingMode {
|
||||
ByteAddressing,
|
||||
BlockAddressing
|
||||
};
|
||||
CardAddressingMode card_addressing_mode() const
|
||||
{
|
||||
return m_ocr.card_capacity_status ? CardAddressingMode::BlockAddressing : CardAddressingMode::ByteAddressing;
|
||||
}
|
||||
|
||||
Mutex m_lock { "SDMemoryCard"sv };
|
||||
SDHostController& m_sdhc;
|
||||
|
||||
u32 m_relative_card_address;
|
||||
SD::OperatingConditionRegister m_ocr;
|
||||
SD::CardIdentificationRegister m_cid;
|
||||
SD::SDConfigurationRegister m_scr;
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue