mirror of https://github.com/acidanthera/audk.git
Remove tabs.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11296 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
58b5d037b4
commit
5d23922674
|
@ -761,16 +761,26 @@ CpuDeadLoop ();
|
||||||
|
|
||||||
ZeroMem (&DmaOperation, sizeof (DMA_MAP_OPERATION));
|
ZeroMem (&DmaOperation, sizeof (DMA_MAP_OPERATION));
|
||||||
|
|
||||||
|
|
||||||
Dma4.DataType = 2; // DMA4_CSDPi[1:0] 32-bit elements from MMCHS_DATA
|
Dma4.DataType = 2; // DMA4_CSDPi[1:0] 32-bit elements from MMCHS_DATA
|
||||||
|
|
||||||
Dma4.SourceEndiansim = 0; // DMA4_CSDPi[21]
|
Dma4.SourceEndiansim = 0; // DMA4_CSDPi[21]
|
||||||
|
|
||||||
Dma4.DestinationEndianism = 0; // DMA4_CSDPi[19]
|
Dma4.DestinationEndianism = 0; // DMA4_CSDPi[19]
|
||||||
|
|
||||||
Dma4.SourcePacked = 0; // DMA4_CSDPi[6]
|
Dma4.SourcePacked = 0; // DMA4_CSDPi[6]
|
||||||
|
|
||||||
Dma4.DestinationPacked = 0; // DMA4_CSDPi[13]
|
Dma4.DestinationPacked = 0; // DMA4_CSDPi[13]
|
||||||
|
|
||||||
Dma4.NumberOfElementPerFrame = This->Media->BlockSize/4; // DMA4_CENi (TRM 4K is optimum value)
|
Dma4.NumberOfElementPerFrame = This->Media->BlockSize/4; // DMA4_CENi (TRM 4K is optimum value)
|
||||||
|
|
||||||
Dma4.NumberOfFramePerTransferBlock = BlockCount; // DMA4_CFNi
|
Dma4.NumberOfFramePerTransferBlock = BlockCount; // DMA4_CFNi
|
||||||
|
|
||||||
Dma4.ReadPriority = 0; // DMA4_CCRi[6] Low priority read
|
Dma4.ReadPriority = 0; // DMA4_CCRi[6] Low priority read
|
||||||
|
|
||||||
Dma4.WritePriority = 0; // DMA4_CCRi[23] Prefetech disabled
|
Dma4.WritePriority = 0; // DMA4_CCRi[23] Prefetech disabled
|
||||||
|
|
||||||
|
|
||||||
//Populate the command information based on the operation type.
|
//Populate the command information based on the operation type.
|
||||||
if (OperationType == READ) {
|
if (OperationType == READ) {
|
||||||
Cmd = CMD18; //Multiple block read
|
Cmd = CMD18; //Multiple block read
|
||||||
|
@ -778,19 +788,33 @@ CpuDeadLoop ();
|
||||||
DmaOperation = MapOperationBusMasterCommonBuffer;
|
DmaOperation = MapOperationBusMasterCommonBuffer;
|
||||||
|
|
||||||
Dma4.ReadPortAccessType =0 ; // DMA4_CSDPi[8:7] Can not burst MMCHS_DATA reg
|
Dma4.ReadPortAccessType =0 ; // DMA4_CSDPi[8:7] Can not burst MMCHS_DATA reg
|
||||||
|
|
||||||
Dma4.WritePortAccessType = 3; // DMA4_CSDPi[15:14] Memory burst 16x32
|
Dma4.WritePortAccessType = 3; // DMA4_CSDPi[15:14] Memory burst 16x32
|
||||||
|
|
||||||
Dma4.WriteMode = 1; // DMA4_CSDPi[17:16] Write posted
|
Dma4.WriteMode = 1; // DMA4_CSDPi[17:16] Write posted
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dma4.SourceStartAddress = MMCHS_DATA; // DMA4_CSSAi
|
Dma4.SourceStartAddress = MMCHS_DATA; // DMA4_CSSAi
|
||||||
|
|
||||||
Dma4.DestinationStartAddress = (UINT32)BufferAddress; // DMA4_CDSAi
|
Dma4.DestinationStartAddress = (UINT32)BufferAddress; // DMA4_CDSAi
|
||||||
|
|
||||||
Dma4.SourceElementIndex = 1; // DMA4_CSEi
|
Dma4.SourceElementIndex = 1; // DMA4_CSEi
|
||||||
|
|
||||||
Dma4.SourceFrameIndex = 0x200; // DMA4_CSFi
|
Dma4.SourceFrameIndex = 0x200; // DMA4_CSFi
|
||||||
|
|
||||||
Dma4.DestinationElementIndex = 1; // DMA4_CDEi
|
Dma4.DestinationElementIndex = 1; // DMA4_CDEi
|
||||||
|
|
||||||
Dma4.DestinationFrameIndex = 0; // DMA4_CDFi
|
Dma4.DestinationFrameIndex = 0; // DMA4_CDFi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dma4.ReadPortAccessMode = 0; // DMA4_CCRi[13:12] Always read MMCHS_DATA
|
Dma4.ReadPortAccessMode = 0; // DMA4_CCRi[13:12] Always read MMCHS_DATA
|
||||||
|
|
||||||
Dma4.WritePortAccessMode = 1; // DMA4_CCRi[15:14] Post increment memory address
|
Dma4.WritePortAccessMode = 1; // DMA4_CCRi[15:14] Post increment memory address
|
||||||
|
|
||||||
Dma4.ReadRequestNumber = 0x1e; // DMA4_CCRi[4:0] Syncro with MMCA_DMA_RX (61)
|
Dma4.ReadRequestNumber = 0x1e; // DMA4_CCRi[4:0] Syncro with MMCA_DMA_RX (61)
|
||||||
|
|
||||||
Dma4.WriteRequestNumber = 1; // DMA4_CCRi[20:19] Syncro upper 0x3e == 62 (one based)
|
Dma4.WriteRequestNumber = 1; // DMA4_CCRi[20:19] Syncro upper 0x3e == 62 (one based)
|
||||||
|
|
||||||
} else if (OperationType == WRITE) {
|
} else if (OperationType == WRITE) {
|
||||||
|
@ -799,19 +823,33 @@ CpuDeadLoop ();
|
||||||
DmaOperation = MapOperationBusMasterRead;
|
DmaOperation = MapOperationBusMasterRead;
|
||||||
|
|
||||||
Dma4.ReadPortAccessType = 3; // DMA4_CSDPi[8:7] Memory burst 16x32
|
Dma4.ReadPortAccessType = 3; // DMA4_CSDPi[8:7] Memory burst 16x32
|
||||||
|
|
||||||
Dma4.WritePortAccessType = 0; // DMA4_CSDPi[15:14] Can not burst MMCHS_DATA reg
|
Dma4.WritePortAccessType = 0; // DMA4_CSDPi[15:14] Can not burst MMCHS_DATA reg
|
||||||
|
|
||||||
Dma4.WriteMode = 1; // DMA4_CSDPi[17:16] Write posted ???
|
Dma4.WriteMode = 1; // DMA4_CSDPi[17:16] Write posted ???
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dma4.SourceStartAddress = (UINT32)BufferAddress; // DMA4_CSSAi
|
Dma4.SourceStartAddress = (UINT32)BufferAddress; // DMA4_CSSAi
|
||||||
|
|
||||||
Dma4.DestinationStartAddress = MMCHS_DATA; // DMA4_CDSAi
|
Dma4.DestinationStartAddress = MMCHS_DATA; // DMA4_CDSAi
|
||||||
|
|
||||||
Dma4.SourceElementIndex = 1; // DMA4_CSEi
|
Dma4.SourceElementIndex = 1; // DMA4_CSEi
|
||||||
|
|
||||||
Dma4.SourceFrameIndex = 0x200; // DMA4_CSFi
|
Dma4.SourceFrameIndex = 0x200; // DMA4_CSFi
|
||||||
|
|
||||||
Dma4.DestinationElementIndex = 1; // DMA4_CDEi
|
Dma4.DestinationElementIndex = 1; // DMA4_CDEi
|
||||||
|
|
||||||
Dma4.DestinationFrameIndex = 0; // DMA4_CDFi
|
Dma4.DestinationFrameIndex = 0; // DMA4_CDFi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dma4.ReadPortAccessMode = 1; // DMA4_CCRi[13:12] Post increment memory address
|
Dma4.ReadPortAccessMode = 1; // DMA4_CCRi[13:12] Post increment memory address
|
||||||
|
|
||||||
Dma4.WritePortAccessMode = 0; // DMA4_CCRi[15:14] Always write MMCHS_DATA
|
Dma4.WritePortAccessMode = 0; // DMA4_CCRi[15:14] Always write MMCHS_DATA
|
||||||
|
|
||||||
Dma4.ReadRequestNumber = 0x1d; // DMA4_CCRi[4:0] Syncro with MMCA_DMA_TX (60)
|
Dma4.ReadRequestNumber = 0x1d; // DMA4_CCRi[4:0] Syncro with MMCA_DMA_TX (60)
|
||||||
|
|
||||||
Dma4.WriteRequestNumber = 1; // DMA4_CCRi[20:19] Syncro upper 0x3d == 61 (one based)
|
Dma4.WriteRequestNumber = 1; // DMA4_CCRi[20:19] Syncro upper 0x3d == 61 (one based)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -1088,9 +1126,11 @@ SdReadWrite (
|
||||||
UINTN BytesToBeTranferedThisPass = 0;
|
UINTN BytesToBeTranferedThisPass = 0;
|
||||||
UINTN BytesRemainingToBeTransfered;
|
UINTN BytesRemainingToBeTransfered;
|
||||||
EFI_TPL OldTpl;
|
EFI_TPL OldTpl;
|
||||||
|
|
||||||
BOOLEAN Update;
|
BOOLEAN Update;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Update = FALSE;
|
Update = FALSE;
|
||||||
|
|
||||||
if (gMediaChange) {
|
if (gMediaChange) {
|
||||||
|
@ -1112,11 +1152,17 @@ SdReadWrite (
|
||||||
if (Update) {
|
if (Update) {
|
||||||
DEBUG ((EFI_D_INFO, "SD Card ReinstallProtocolInterface ()\n"));
|
DEBUG ((EFI_D_INFO, "SD Card ReinstallProtocolInterface ()\n"));
|
||||||
gBS->ReinstallProtocolInterface (
|
gBS->ReinstallProtocolInterface (
|
||||||
|
|
||||||
gImageHandle,
|
gImageHandle,
|
||||||
|
|
||||||
&gEfiBlockIoProtocolGuid,
|
&gEfiBlockIoProtocolGuid,
|
||||||
|
|
||||||
&gBlockIo,
|
&gBlockIo,
|
||||||
|
|
||||||
&gBlockIo
|
&gBlockIo
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
|
@ -1180,22 +1226,36 @@ SdReadWrite (
|
||||||
}
|
}
|
||||||
|
|
||||||
DoneRestoreTPL:
|
DoneRestoreTPL:
|
||||||
|
|
||||||
gBS->RestoreTPL (OldTpl);
|
gBS->RestoreTPL (OldTpl);
|
||||||
|
|
||||||
Done:
|
Done:
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
Reset the Block Device.
|
Reset the Block Device.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@param This Indicates a pointer to the calling context.
|
@param This Indicates a pointer to the calling context.
|
||||||
|
|
||||||
@param ExtendedVerification Driver may perform diagnostics on reset.
|
@param ExtendedVerification Driver may perform diagnostics on reset.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS The device was reset.
|
@retval EFI_SUCCESS The device was reset.
|
||||||
|
|
||||||
@retval EFI_DEVICE_ERROR The device is not functioning properly and could
|
@retval EFI_DEVICE_ERROR The device is not functioning properly and could
|
||||||
|
|
||||||
not be reset.
|
not be reset.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
|
@ -1209,22 +1269,39 @@ MMCHSReset (
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
Read BufferSize bytes from Lba into Buffer.
|
Read BufferSize bytes from Lba into Buffer.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@param This Indicates a pointer to the calling context.
|
@param This Indicates a pointer to the calling context.
|
||||||
|
|
||||||
@param MediaId Id of the media, changes every time the media is replaced.
|
@param MediaId Id of the media, changes every time the media is replaced.
|
||||||
|
|
||||||
@param Lba The starting Logical Block Address to read from
|
@param Lba The starting Logical Block Address to read from
|
||||||
|
|
||||||
@param BufferSize Size of Buffer, must be a multiple of device block size.
|
@param BufferSize Size of Buffer, must be a multiple of device block size.
|
||||||
|
|
||||||
@param Buffer A pointer to the destination buffer for the data. The caller is
|
@param Buffer A pointer to the destination buffer for the data. The caller is
|
||||||
|
|
||||||
responsible for either having implicit or explicit ownership of the buffer.
|
responsible for either having implicit or explicit ownership of the buffer.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS The data was read correctly from the device.
|
@retval EFI_SUCCESS The data was read correctly from the device.
|
||||||
|
|
||||||
@retval EFI_DEVICE_ERROR The device reported an error while performing the read.
|
@retval EFI_DEVICE_ERROR The device reported an error while performing the read.
|
||||||
|
|
||||||
@retval EFI_NO_MEDIA There is no media in the device.
|
@retval EFI_NO_MEDIA There is no media in the device.
|
||||||
|
|
||||||
@retval EFI_MEDIA_CHANGED The MediaId does not matched the current device.
|
@retval EFI_MEDIA_CHANGED The MediaId does not matched the current device.
|
||||||
|
|
||||||
@retval EFI_BAD_BUFFER_SIZE The Buffer was not a multiple of the block size of the device.
|
@retval EFI_BAD_BUFFER_SIZE The Buffer was not a multiple of the block size of the device.
|
||||||
|
|
||||||
@retval EFI_INVALID_PARAMETER The read request contains LBAs that are not valid,
|
@retval EFI_INVALID_PARAMETER The read request contains LBAs that are not valid,
|
||||||
|
|
||||||
or the buffer is not on proper alignment.
|
or the buffer is not on proper alignment.
|
||||||
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
@ -1244,28 +1321,48 @@ MMCHSReadBlocks (
|
||||||
Status = SdReadWrite (This, (UINTN)Lba, Buffer, BufferSize, READ);
|
Status = SdReadWrite (This, (UINTN)Lba, Buffer, BufferSize, READ);
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
Write BufferSize bytes from Lba into Buffer.
|
Write BufferSize bytes from Lba into Buffer.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@param This Indicates a pointer to the calling context.
|
@param This Indicates a pointer to the calling context.
|
||||||
|
|
||||||
@param MediaId The media ID that the write request is for.
|
@param MediaId The media ID that the write request is for.
|
||||||
|
|
||||||
@param Lba The starting logical block address to be written. The caller is
|
@param Lba The starting logical block address to be written. The caller is
|
||||||
|
|
||||||
responsible for writing to only legitimate locations.
|
responsible for writing to only legitimate locations.
|
||||||
|
|
||||||
@param BufferSize Size of Buffer, must be a multiple of device block size.
|
@param BufferSize Size of Buffer, must be a multiple of device block size.
|
||||||
|
|
||||||
@param Buffer A pointer to the source buffer for the data.
|
@param Buffer A pointer to the source buffer for the data.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS The data was written correctly to the device.
|
@retval EFI_SUCCESS The data was written correctly to the device.
|
||||||
|
|
||||||
@retval EFI_WRITE_PROTECTED The device can not be written to.
|
@retval EFI_WRITE_PROTECTED The device can not be written to.
|
||||||
|
|
||||||
@retval EFI_DEVICE_ERROR The device reported an error while performing the write.
|
@retval EFI_DEVICE_ERROR The device reported an error while performing the write.
|
||||||
|
|
||||||
@retval EFI_NO_MEDIA There is no media in the device.
|
@retval EFI_NO_MEDIA There is no media in the device.
|
||||||
|
|
||||||
@retval EFI_MEDIA_CHNAGED The MediaId does not matched the current device.
|
@retval EFI_MEDIA_CHNAGED The MediaId does not matched the current device.
|
||||||
|
|
||||||
@retval EFI_BAD_BUFFER_SIZE The Buffer was not a multiple of the block size of the device.
|
@retval EFI_BAD_BUFFER_SIZE The Buffer was not a multiple of the block size of the device.
|
||||||
|
|
||||||
@retval EFI_INVALID_PARAMETER The write request contains LBAs that are not valid,
|
@retval EFI_INVALID_PARAMETER The write request contains LBAs that are not valid,
|
||||||
|
|
||||||
or the buffer is not on proper alignment.
|
or the buffer is not on proper alignment.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
|
@ -1282,19 +1379,30 @@ MMCHSWriteBlocks (
|
||||||
//Perform write operation.
|
//Perform write operation.
|
||||||
Status = SdReadWrite (This, (UINTN)Lba, Buffer, BufferSize, WRITE);
|
Status = SdReadWrite (This, (UINTN)Lba, Buffer, BufferSize, WRITE);
|
||||||
|
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
Flush the Block Device.
|
Flush the Block Device.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@param This Indicates a pointer to the calling context.
|
@param This Indicates a pointer to the calling context.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS All outstanding data was written to the device
|
@retval EFI_SUCCESS All outstanding data was written to the device
|
||||||
|
|
||||||
@retval EFI_DEVICE_ERROR The device reported an error while writting back the data
|
@retval EFI_DEVICE_ERROR The device reported an error while writting back the data
|
||||||
|
|
||||||
@retval EFI_NO_MEDIA There is no media in the device.
|
@retval EFI_NO_MEDIA There is no media in the device.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
|
@ -1317,16 +1425,27 @@ EFI_BLOCK_IO_PROTOCOL gBlockIo = {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
Timer callback to convert card present hardware into a boolean that indicates
|
Timer callback to convert card present hardware into a boolean that indicates
|
||||||
|
|
||||||
a media change event has happened. If you just check the GPIO you could see
|
a media change event has happened. If you just check the GPIO you could see
|
||||||
|
|
||||||
card 1 and then check again after card 1 was removed and card 2 was inserted
|
card 1 and then check again after card 1 was removed and card 2 was inserted
|
||||||
|
|
||||||
and you would still see media present. Thus you need the timer tick to catch
|
and you would still see media present. Thus you need the timer tick to catch
|
||||||
|
|
||||||
the toggle event.
|
the toggle event.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@param Event Event whose notification function is being invoked.
|
@param Event Event whose notification function is being invoked.
|
||||||
|
|
||||||
@param Context The pointer to the notification function's context,
|
@param Context The pointer to the notification function's context,
|
||||||
|
|
||||||
which is implementation-dependent. Not used.
|
which is implementation-dependent. Not used.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
VOID
|
||||||
EFIAPI
|
EFIAPI
|
||||||
|
|
Loading…
Reference in New Issue