[edk2-devel] [PATCH v2 1/7] EmbeddedPkg: Add SD command support for DwEmmc

2019-05-27 Thread Loh, Tien Hock
From: "TIen Hock, Loh" 

Added ACMD6 for SD support. For SD, after CMD55 is sent, the next
command should be an application command, which should not expect
data

Signed-off-by: "Tien Hock, Loh" 
Cc: Leif Lindholm 
Cc: Ard Biesheuvel 

--
v2:
- Move IsACmd as a local static variable in function
- Fix some coding standard issue with spacing
---
 EmbeddedPkg/Drivers/DwEmmcDxe/DwEmmcDxe.c | 20 
 1 file changed, 20 insertions(+)

diff --git a/EmbeddedPkg/Drivers/DwEmmcDxe/DwEmmcDxe.c 
b/EmbeddedPkg/Drivers/DwEmmcDxe/DwEmmcDxe.c
index 68c523a99f..420487757d 100644
--- a/EmbeddedPkg/Drivers/DwEmmcDxe/DwEmmcDxe.c
+++ b/EmbeddedPkg/Drivers/DwEmmcDxe/DwEmmcDxe.c
@@ -307,6 +307,7 @@ DwEmmcSendCommand (
 {
   UINT32   Cmd = 0;
   EFI_STATUS   Status = EFI_SUCCESS;
+  STATIC BOOLEAN IsACmd = FALSE;
 
   switch (MMC_GET_INDX(MmcCmd)) {
   case MMC_INDX(0):
@@ -323,6 +324,15 @@ DwEmmcSendCommand (
 Cmd = BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC |
BIT_CMD_SEND_INIT;
 break;
+  case MMC_INDX (6):
+if(IsACmd) {
+  Cmd = BIT_CMD_RESPONSE_EXPECT;
+}
+else {
+  Cmd = BIT_CMD_RESPONSE_EXPECT | BIT_CMD_DATA_EXPECTED |
+BIT_CMD_READ;
+}
+break;
   case MMC_INDX(7):
 if (Argument)
 Cmd = BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC;
@@ -367,12 +377,22 @@ DwEmmcSendCommand (
 Cmd = BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC |
BIT_CMD_DATA_EXPECTED;
 break;
+  case MMC_INDX (51):
+Cmd = BIT_CMD_RESPONSE_EXPECT | BIT_CMD_DATA_EXPECTED |
+   BIT_CMD_READ | BIT_CMD_WAIT_PRVDATA_COMPLETE;
+break;
   default:
 Cmd = BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC;
 break;
   }
 
   Cmd |= MMC_GET_INDX(MmcCmd) | BIT_CMD_USE_HOLD_REG | BIT_CMD_START;
+
+  if(MMC_INDX (55) == MMC_GET_INDX (MmcCmd))
+IsACmd = TRUE;
+  else
+IsACmd = FALSE;
+
   if (IsPendingReadCommand (Cmd) || IsPendingWriteCommand (Cmd)) {
 mDwEmmcCommand = Cmd;
 mDwEmmcArgument = Argument;
-- 
2.19.0


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#41409): https://edk2.groups.io/g/devel/message/41409
Mute This Topic: https://groups.io/mt/31807960/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [edk2-devel] [PATCH v2 1/7] EmbeddedPkg: Add SD command support for DwEmmc

2019-05-28 Thread Leif Lindholm
Hi Tien Hock,

Thanks for resubmitting this.

On Mon, May 27, 2019 at 05:30:22PM +0800, tien.hock@intel.com wrote:
> From: "TIen Hock, Loh" 
> 
> Added ACMD6 for SD support. For SD, after CMD55 is sent, the next
> command should be an application command, which should not expect
> data
> 
> Signed-off-by: "Tien Hock, Loh" 
> Cc: Leif Lindholm 
> Cc: Ard Biesheuvel 
> 
> --
> v2:
> - Move IsACmd as a local static variable in function
> - Fix some coding standard issue with spacing
> ---
>  EmbeddedPkg/Drivers/DwEmmcDxe/DwEmmcDxe.c | 20 
>  1 file changed, 20 insertions(+)
> 
> diff --git a/EmbeddedPkg/Drivers/DwEmmcDxe/DwEmmcDxe.c 
> b/EmbeddedPkg/Drivers/DwEmmcDxe/DwEmmcDxe.c
> index 68c523a99f..420487757d 100644
> --- a/EmbeddedPkg/Drivers/DwEmmcDxe/DwEmmcDxe.c
> +++ b/EmbeddedPkg/Drivers/DwEmmcDxe/DwEmmcDxe.c
> @@ -307,6 +307,7 @@ DwEmmcSendCommand (
>  {
>UINT32   Cmd = 0;
>EFI_STATUS   Status = EFI_SUCCESS;
> +  STATIC BOOLEAN IsACmd = FALSE;
>  
>switch (MMC_GET_INDX(MmcCmd)) {
>case MMC_INDX(0):
> @@ -323,6 +324,15 @@ DwEmmcSendCommand (
>  Cmd = BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC |
> BIT_CMD_SEND_INIT;
>  break;
> +  case MMC_INDX (6):
> +if(IsACmd) {
> +  Cmd = BIT_CMD_RESPONSE_EXPECT;
> +}
> +else {

I remarked last time that the else should be on the same line as }.

> +  Cmd = BIT_CMD_RESPONSE_EXPECT | BIT_CMD_DATA_EXPECTED |
> +BIT_CMD_READ;
> +}
> +break;
>case MMC_INDX(7):
>  if (Argument)
>  Cmd = BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC;
> @@ -367,12 +377,22 @@ DwEmmcSendCommand (
>  Cmd = BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC |
> BIT_CMD_DATA_EXPECTED;
>  break;
> +  case MMC_INDX (51):
> +Cmd = BIT_CMD_RESPONSE_EXPECT | BIT_CMD_DATA_EXPECTED |
> +   BIT_CMD_READ | BIT_CMD_WAIT_PRVDATA_COMPLETE;
> +break;
>default:
>  Cmd = BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC;
>  break;
>}
>  
>Cmd |= MMC_GET_INDX(MmcCmd) | BIT_CMD_USE_HOLD_REG | BIT_CMD_START;
> +
> +  if(MMC_INDX (55) == MMC_GET_INDX (MmcCmd))

Space after if.

> +IsACmd = TRUE;
> +  else
> +IsACmd = FALSE;

Even though some code in this file takes liberties with the use of {
and }, please add them for both if and else.

/
Leif

> +
>if (IsPendingReadCommand (Cmd) || IsPendingWriteCommand (Cmd)) {
>  mDwEmmcCommand = Cmd;
>  mDwEmmcArgument = Argument;
> -- 
> 2.19.0
> 

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#41533): https://edk2.groups.io/g/devel/message/41533
Mute This Topic: https://groups.io/mt/31807960/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-