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:
andrewfish 2011-02-02 22:54:50 +00:00
parent 58b5d037b4
commit 5d23922674
1 changed files with 239 additions and 120 deletions

View File

@ -745,7 +745,7 @@ DmaBlocks (
UINTN CmdInterruptEnable; UINTN CmdInterruptEnable;
UINTN CmdArgument; UINTN CmdArgument;
VOID *BufferMap; VOID *BufferMap;
EFI_PHYSICAL_ADDRESS BufferAddress; EFI_PHYSICAL_ADDRESS BufferAddress;
OMAP_DMA4 Dma4; OMAP_DMA4 Dma4;
DMA_MAP_OPERATION DmaOperation; DMA_MAP_OPERATION DmaOperation;
EFI_STATUS MmcStatus; EFI_STATUS MmcStatus;
@ -760,16 +760,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.SourceEndiansim = 0; // DMA4_CSDPi[21] Dma4.DataType = 2; // DMA4_CSDPi[1:0] 32-bit elements from MMCHS_DATA
Dma4.DestinationEndianism = 0; // DMA4_CSDPi[19]
Dma4.SourcePacked = 0; // DMA4_CSDPi[6] Dma4.SourceEndiansim = 0; // DMA4_CSDPi[21]
Dma4.DestinationPacked = 0; // DMA4_CSDPi[13]
Dma4.NumberOfElementPerFrame = This->Media->BlockSize/4; // DMA4_CENi (TRM 4K is optimum value) Dma4.DestinationEndianism = 0; // DMA4_CSDPi[19]
Dma4.NumberOfFramePerTransferBlock = BlockCount; // DMA4_CFNi
Dma4.ReadPriority = 0; // DMA4_CCRi[6] Low priority read Dma4.SourcePacked = 0; // DMA4_CSDPi[6]
Dma4.WritePriority = 0; // DMA4_CCRi[23] Prefetech disabled
Dma4.DestinationPacked = 0; // DMA4_CSDPi[13]
Dma4.NumberOfElementPerFrame = This->Media->BlockSize/4; // DMA4_CENi (TRM 4K is optimum value)
Dma4.NumberOfFramePerTransferBlock = BlockCount; // DMA4_CFNi
Dma4.ReadPriority = 0; // DMA4_CCRi[6] Low priority read
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) {
@ -777,20 +787,34 @@ CpuDeadLoop ();
CmdInterruptEnable = CMD18_INT_EN; CmdInterruptEnable = CMD18_INT_EN;
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.WriteMode = 1; // DMA4_CSDPi[17:16] Write posted Dma4.WritePortAccessType = 3; // DMA4_CSDPi[15:14] Memory burst 16x32
Dma4.SourceStartAddress = MMCHS_DATA; // DMA4_CSSAi Dma4.WriteMode = 1; // DMA4_CSDPi[17:16] Write posted
Dma4.DestinationStartAddress = (UINT32)BufferAddress; // DMA4_CDSAi
Dma4.SourceElementIndex = 1; // DMA4_CSEi
Dma4.SourceFrameIndex = 0x200; // DMA4_CSFi
Dma4.DestinationElementIndex = 1; // DMA4_CDEi Dma4.SourceStartAddress = MMCHS_DATA; // DMA4_CSSAi
Dma4.DestinationFrameIndex = 0; // DMA4_CDFi
Dma4.DestinationStartAddress = (UINT32)BufferAddress; // DMA4_CDSAi
Dma4.ReadPortAccessMode = 0; // DMA4_CCRi[13:12] Always read MMCHS_DATA
Dma4.WritePortAccessMode = 1; // DMA4_CCRi[15:14] Post increment memory address Dma4.SourceElementIndex = 1; // DMA4_CSEi
Dma4.ReadRequestNumber = 0x1e; // DMA4_CCRi[4:0] Syncro with MMCA_DMA_RX (61)
Dma4.SourceFrameIndex = 0x200; // DMA4_CSFi
Dma4.DestinationElementIndex = 1; // DMA4_CDEi
Dma4.DestinationFrameIndex = 0; // DMA4_CDFi
Dma4.ReadPortAccessMode = 0; // DMA4_CCRi[13:12] Always read MMCHS_DATA
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.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) {
@ -798,20 +822,34 @@ CpuDeadLoop ();
CmdInterruptEnable = CMD25_INT_EN; CmdInterruptEnable = CMD25_INT_EN;
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.WriteMode = 1; // DMA4_CSDPi[17:16] Write posted ??? Dma4.WritePortAccessType = 0; // DMA4_CSDPi[15:14] Can not burst MMCHS_DATA reg
Dma4.SourceStartAddress = (UINT32)BufferAddress; // DMA4_CSSAi Dma4.WriteMode = 1; // DMA4_CSDPi[17:16] Write posted ???
Dma4.DestinationStartAddress = MMCHS_DATA; // DMA4_CDSAi
Dma4.SourceElementIndex = 1; // DMA4_CSEi
Dma4.SourceFrameIndex = 0x200; // DMA4_CSFi
Dma4.DestinationElementIndex = 1; // DMA4_CDEi Dma4.SourceStartAddress = (UINT32)BufferAddress; // DMA4_CSSAi
Dma4.DestinationFrameIndex = 0; // DMA4_CDFi
Dma4.DestinationStartAddress = MMCHS_DATA; // DMA4_CDSAi
Dma4.ReadPortAccessMode = 1; // DMA4_CCRi[13:12] Post increment memory address
Dma4.WritePortAccessMode = 0; // DMA4_CCRi[15:14] Always write MMCHS_DATA Dma4.SourceElementIndex = 1; // DMA4_CSEi
Dma4.ReadRequestNumber = 0x1d; // DMA4_CCRi[4:0] Syncro with MMCA_DMA_TX (60)
Dma4.SourceFrameIndex = 0x200; // DMA4_CSFi
Dma4.DestinationElementIndex = 1; // DMA4_CDEi
Dma4.DestinationFrameIndex = 0; // DMA4_CDFi
Dma4.ReadPortAccessMode = 1; // DMA4_CCRi[13:12] Post increment memory address
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.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 {
@ -1087,8 +1125,10 @@ SdReadWrite (
UINTN BlockCount; UINTN BlockCount;
UINTN BytesToBeTranferedThisPass = 0; UINTN BytesToBeTranferedThisPass = 0;
UINTN BytesRemainingToBeTransfered; UINTN BytesRemainingToBeTransfered;
EFI_TPL OldTpl; EFI_TPL OldTpl;
BOOLEAN Update;
BOOLEAN Update;
Update = FALSE; Update = FALSE;
@ -1111,12 +1151,18 @@ 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,
&gEfiBlockIoProtocolGuid, gImageHandle,
&gBlockIo,
&gBlockIo &gEfiBlockIoProtocolGuid,
);
&gBlockIo,
&gBlockIo
);
} }
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
@ -1179,23 +1225,37 @@ SdReadWrite (
Buffer = (UINT8 *)Buffer + This->Media->BlockSize; Buffer = (UINT8 *)Buffer + This->Media->BlockSize;
} }
DoneRestoreTPL: DoneRestoreTPL:
gBS->RestoreTPL (OldTpl);
Done: gBS->RestoreTPL (OldTpl);
return Status;
Done:
return Status;
} }
/** /**
Reset the Block Device.
Reset the Block Device.
@param This Indicates a pointer to the calling context.
@param ExtendedVerification Driver may perform diagnostics on reset.
@retval EFI_SUCCESS The device was reset. @param This Indicates a pointer to the calling context.
@retval EFI_DEVICE_ERROR The device is not functioning properly and could
not be reset. @param ExtendedVerification Driver may perform diagnostics on reset.
@retval EFI_SUCCESS The device was reset.
@retval EFI_DEVICE_ERROR The device is not functioning properly and could
not be reset.
**/ **/
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
@ -1208,23 +1268,40 @@ 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 MediaId Id of the media, changes every time the media is replaced.
@param Lba The starting Logical Block Address to read from
@param BufferSize Size of Buffer, must be a multiple of device block size. @param This Indicates a pointer to the calling context.
@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. @param MediaId Id of the media, changes every time the media is replaced.
@retval EFI_SUCCESS The data was read correctly from the device. @param Lba The starting Logical Block Address to read from
@retval EFI_DEVICE_ERROR The device reported an error while performing the read.
@retval EFI_NO_MEDIA There is no media in the device. @param BufferSize Size of Buffer, must be a multiple of device block size.
@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. @param Buffer A pointer to the destination buffer for the data. The caller is
@retval EFI_INVALID_PARAMETER The read request contains LBAs that are not valid,
or the buffer is not on proper alignment. responsible for either having implicit or explicit ownership of the buffer.
@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_NO_MEDIA There is no media in the 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_INVALID_PARAMETER The read request contains LBAs that are not valid,
or the buffer is not on proper alignment.
EFI_STATUS EFI_STATUS
**/ **/
@ -1243,29 +1320,49 @@ MMCHSReadBlocks (
//Perform Read operation. //Perform Read operation.
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 MediaId The media ID that the write request is for.
@param Lba The starting logical block address to be written. The caller is
responsible for writing to only legitimate locations. @param This Indicates a pointer to the calling context.
@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 MediaId The media ID that the write request is for.
@retval EFI_SUCCESS The data was written correctly to the device. @param Lba The starting logical block address to be written. The caller is
@retval EFI_WRITE_PROTECTED The device can not be written to.
@retval EFI_DEVICE_ERROR The device reported an error while performing the write. responsible for writing to only legitimate locations.
@retval EFI_NO_MEDIA There is no media in the device.
@retval EFI_MEDIA_CHNAGED The MediaId does not matched the current device. @param BufferSize Size of Buffer, must be a multiple of device block size.
@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, @param Buffer A pointer to the source buffer for the data.
or the buffer is not on proper alignment.
@retval EFI_SUCCESS The data was written correctly to the device.
@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_NO_MEDIA There is no media in the 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_INVALID_PARAMETER The write request contains LBAs that are not valid,
or the buffer is not on proper alignment.
**/ **/
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
@ -1281,20 +1378,31 @@ 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.
@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 @param This Indicates a pointer to the calling context.
@retval EFI_NO_MEDIA There is no media in 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_NO_MEDIA There is no media in the device.
**/ **/
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
@ -1316,17 +1424,28 @@ EFI_BLOCK_IO_PROTOCOL gBlockIo = {
}; };
/** /**
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 Timer callback to convert card present hardware into a boolean that indicates
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 a media change event has happened. If you just check the GPIO you could see
the toggle event.
card 1 and then check again after card 1 was removed and card 2 was inserted
@param Event Event whose notification function is being invoked.
@param Context The pointer to the notification function's context, and you would still see media present. Thus you need the timer tick to catch
which is implementation-dependent. Not used.
the toggle event.
@param Event Event whose notification function is being invoked.
@param Context The pointer to the notification function's context,
which is implementation-dependent. Not used.
**/ **/
VOID VOID
EFIAPI EFIAPI