mirror of
https://github.com/Thealexbarney/LibHac.git
synced 2024-11-14 10:49:41 +01:00
Skeleton the sdmmc api
This commit is contained in:
parent
56765598a7
commit
e76166d6d0
8 changed files with 352 additions and 34 deletions
1
src/LibHac/Fs/Sdmmc.cs
Normal file
1
src/LibHac/Fs/Sdmmc.cs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
global using SdmmcHandle = System.UInt32;
|
|
@ -10,6 +10,7 @@ using LibHac.Gc;
|
||||||
using LibHac.Sdmmc;
|
using LibHac.Sdmmc;
|
||||||
using LibHac.Sf;
|
using LibHac.Sf;
|
||||||
using LibHac.Util;
|
using LibHac.Util;
|
||||||
|
using MmcPartition = LibHac.Fs.MmcPartition;
|
||||||
|
|
||||||
namespace LibHac.FsSrv.Impl;
|
namespace LibHac.FsSrv.Impl;
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ using LibHac.Sdmmc;
|
||||||
using LibHac.SdmmcSrv;
|
using LibHac.SdmmcSrv;
|
||||||
using LibHac.Sf;
|
using LibHac.Sf;
|
||||||
using IStorageSf = LibHac.FsSrv.Sf.IStorage;
|
using IStorageSf = LibHac.FsSrv.Sf.IStorage;
|
||||||
|
using MmcPartition = LibHac.Fs.MmcPartition;
|
||||||
|
|
||||||
namespace LibHac.FsSrv.Storage;
|
namespace LibHac.FsSrv.Storage;
|
||||||
|
|
||||||
|
|
152
src/LibHac/Sdmmc/Common.cs
Normal file
152
src/LibHac/Sdmmc/Common.cs
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace LibHac.Sdmmc;
|
||||||
|
|
||||||
|
public enum BusPower
|
||||||
|
{
|
||||||
|
// ReSharper disable InconsistentNaming
|
||||||
|
PowerOff = 0,
|
||||||
|
Power1_8V = 1,
|
||||||
|
Power3_3V = 2,
|
||||||
|
// ReSharper restore InconsistentNaming
|
||||||
|
}
|
||||||
|
public enum BusWidth
|
||||||
|
{
|
||||||
|
Width1Bit = 0,
|
||||||
|
Width4Bit = 1,
|
||||||
|
Width8Bit = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum SpeedMode
|
||||||
|
{
|
||||||
|
MmcIdentification = 0,
|
||||||
|
MmcLegacySpeed = 1,
|
||||||
|
MmcHighSpeed = 2,
|
||||||
|
MmcHs200 = 3,
|
||||||
|
MmcHs400 = 4,
|
||||||
|
SdCardIdentification = 5,
|
||||||
|
SdCardDefaultSpeed = 6,
|
||||||
|
SdCardHighSpeed = 7,
|
||||||
|
SdCardSdr12 = 8,
|
||||||
|
SdCardSdr25 = 9,
|
||||||
|
SdCardSdr50 = 10,
|
||||||
|
SdCardSdr104 = 11,
|
||||||
|
SdCardDdr50 = 12,
|
||||||
|
GcAsicFpgaSpeed = 13,
|
||||||
|
GcAsicSpeed = 14
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Port
|
||||||
|
{
|
||||||
|
Mmc0 = 0,
|
||||||
|
SdCard0 = 1,
|
||||||
|
GcAsic0 = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct ErrorInfo
|
||||||
|
{
|
||||||
|
public uint NumActivationFailures;
|
||||||
|
public uint NumActivationErrorCorrections;
|
||||||
|
public uint NumReadWriteFailures;
|
||||||
|
public uint NumReadWriteErrorCorrections;
|
||||||
|
}
|
||||||
|
|
||||||
|
public delegate void DeviceDetectionEventCallback(object args);
|
||||||
|
|
||||||
|
public partial class SdmmcApi
|
||||||
|
{
|
||||||
|
public const int SectorSize = 0x200;
|
||||||
|
|
||||||
|
public const int DeviceCidSize = 0x10;
|
||||||
|
public const int DeviceCsdSize = 0x10;
|
||||||
|
|
||||||
|
public void SwitchToPcvClockResetControl()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialize(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Finalize(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ChangeCheckTransferInterval(Port port, uint ms)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetDefaultCheckTransferInterval(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result Activate(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Deactivate(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result Read(Span<byte> destination, Port port, uint sectorIndex, uint sectorCount)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result Write(Port port, uint sectorIndex, uint sectorCount, ReadOnlySpan<byte> source)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result CheckConnection(out SpeedMode outSpeedMode, out BusWidth outBusWidth, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result GetDeviceSpeedMode(out SpeedMode outSpeedMode, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result GetDeviceMemoryCapacity(out uint outNumSectors, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result GetDeviceStatus(out uint outDeviceStatus, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result GetDeviceCid(Span<byte> outBuffer, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result GetDeviceCsd(Span<byte> outBuffer, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void GetAndClearErrorInfo(out ErrorInfo outErrorInfo, out int outLogSize, Span<byte> outLogBuffer, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RegisterDeviceVirtualAddress(Port port, Memory<byte> buffer, ulong bufferDeviceVirtualAddress)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UnregisterDeviceVirtualAddress(Port port, Memory<byte> buffer, ulong bufferDeviceVirtualAddress)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
53
src/LibHac/Sdmmc/GcAsic.cs
Normal file
53
src/LibHac/Sdmmc/GcAsic.cs
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace LibHac.Sdmmc;
|
||||||
|
|
||||||
|
public partial class SdmmcApi
|
||||||
|
{
|
||||||
|
public const int GcAsicOperationSize = 0x40;
|
||||||
|
|
||||||
|
public void PutGcAsicToSleep(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result AwakenGcAsic(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result WriteGcAsicOperation(Port port, ReadOnlySpan<byte> operationBuffer)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result FinishGcAsicOperation(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result AbortGcAsicOperation(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result SleepGcAsic(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result UpdateGcAsicKey(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SignalGcRemovedEvent(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ClearGcRemovedEvent(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
57
src/LibHac/Sdmmc/Mmc.cs
Normal file
57
src/LibHac/Sdmmc/Mmc.cs
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace LibHac.Sdmmc;
|
||||||
|
|
||||||
|
public enum MmcPartition
|
||||||
|
{
|
||||||
|
UserData = 0,
|
||||||
|
BootPartition1 = 1,
|
||||||
|
BootPartition2 = 2,
|
||||||
|
Unknown = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
public partial class SdmmcApi
|
||||||
|
{
|
||||||
|
public const int MmcExtendedCsdSize = 0x200;
|
||||||
|
public const int MmcWorkBufferSize = MmcExtendedCsdSize;
|
||||||
|
|
||||||
|
public void SetMmcWorkBuffer(Port port, Memory<byte> workBuffer)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PutMmcToSleep(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AwakenMmc(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result SelectMmcPartition(Port port, MmcPartition mmcPartition)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result EraseMmc(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result GetMmcBootPartitionCapacity(out uint outNumSectors, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result GetMmcExtendedCsd(Span<byte> outBuffer, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result CheckMmcConnection(out SpeedMode outSpeedMode, out BusWidth outBusWidth, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
87
src/LibHac/Sdmmc/SdCard.cs
Normal file
87
src/LibHac/Sdmmc/SdCard.cs
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace LibHac.Sdmmc;
|
||||||
|
|
||||||
|
public enum SdCardSwitchFunction
|
||||||
|
{
|
||||||
|
CheckSupportedFunction = 0,
|
||||||
|
CheckDefault = 1,
|
||||||
|
CheckHighSpeed = 2,
|
||||||
|
CheckSdr50 = 3,
|
||||||
|
CheckSdr104 = 4,
|
||||||
|
CheckDdr50 = 5
|
||||||
|
};
|
||||||
|
|
||||||
|
public partial class SdmmcApi
|
||||||
|
{
|
||||||
|
public const int SdCardScrSize = 8;
|
||||||
|
public const int SdCardSwitchFunctionStatusSize = 0x40;
|
||||||
|
public const int SdCardSdStatusSize = 0x40;
|
||||||
|
|
||||||
|
public const int SdCardWorkBufferSize = SdCardSdStatusSize;
|
||||||
|
|
||||||
|
public void SetSdCardWorkBuffer(Port port, Memory<byte> workBuffer)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PutSdCardToSleep(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AwakenSdCard(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result GetSdCardProtectedAreaCapacity(out uint outNumSectors, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result GetSdCardScr(Span<byte> outBuffer, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result GetSdCardSwitchFunctionStatus(Span<byte> outBuffer, Port port, SdCardSwitchFunction switchFunction)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result GetSdCardCurrentConsumption(out ushort outCurrentConsumption, Port port, SpeedMode speedMode)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result GetSdCardSdStatus(Span<byte> outBuffer, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result CheckSdCardConnection(out SpeedMode outSpeedMode, out BusWidth outBusWidth, Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RegisterSdCardDetectionEventCallback(Port port, DeviceDetectionEventCallback callback, object args)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UnregisterSdCardDetectionEventCallback(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsSdCardInserted(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsSdCardRemoved(Port port)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,34 +0,0 @@
|
||||||
namespace LibHac.Sdmmc;
|
|
||||||
|
|
||||||
public enum BusWidth
|
|
||||||
{
|
|
||||||
Width1Bit = 0,
|
|
||||||
Width4Bit = 1,
|
|
||||||
Width8Bit = 2,
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum SpeedMode
|
|
||||||
{
|
|
||||||
MmcIdentification = 0,
|
|
||||||
MmcLegacySpeed = 1,
|
|
||||||
MmcHighSpeed = 2,
|
|
||||||
MmcHs200 = 3,
|
|
||||||
MmcHs400 = 4,
|
|
||||||
SdCardIdentification = 5,
|
|
||||||
SdCardDefaultSpeed = 6,
|
|
||||||
SdCardHighSpeed = 7,
|
|
||||||
SdCardSdr12 = 8,
|
|
||||||
SdCardSdr25 = 9,
|
|
||||||
SdCardSdr50 = 10,
|
|
||||||
SdCardSdr104 = 11,
|
|
||||||
SdCardDdr50 = 12,
|
|
||||||
GcAsicFpgaSpeed = 13,
|
|
||||||
GcAsicSpeed = 14
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum Port
|
|
||||||
{
|
|
||||||
Mmc0 = 0,
|
|
||||||
SdCard0 = 1,
|
|
||||||
GcAsic0 = 2
|
|
||||||
}
|
|
Loading…
Reference in a new issue