Pushed via:
PR - https://github.com/tianocore/edk2/pull/3748
Commit - 
https://github.com/tianocore/edk2/commit/5890a18409a0e67a491c600b930e6c904ad3b3fd

Best Regards,
Hao Wu

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu, Hao
> A
> Sent: Thursday, December 8, 2022 11:14 AM
> To: Chevron Li <chevron...@bayhubtech.com>; devel@edk2.groups.io
> Cc: Ni, Ray <ray...@intel.com>; Wang, Jian J <jian.j.w...@intel.com>; Gao,
> Liming <gaolim...@byosoft.com.cn>; shirley....@bayhubtech.com;
> shaper....@bayhubtech.com; xiaoguang...@bayhubtech.com
> Subject: Re: [edk2-devel] [edk2-platform][PATCH V3 1/1] MdeModulePkg:
> SdMmcPciHcDxe: Fix issue that SD1.0 cards can't be recognized
> 
> Reviewed-by: Hao A Wu <hao.a...@intel.com>
> Will wait a couple of days before merging to see if comments from other
> reviewers.
> 
> Best Regards,
> Hao Wu
> 
> > -----Original Message-----
> > From: Chevron Li <chevron...@bayhubtech.com>
> > Sent: Wednesday, December 7, 2022 7:09 PM
> > To: devel@edk2.groups.io
> > Cc: Wu, Hao A <hao.a...@intel.com>; Ni, Ray <ray...@intel.com>; Wang,
> > Jian J <jian.j.w...@intel.com>; Gao, Liming <gaolim...@byosoft.com.cn>;
> > shirley....@bayhubtech.com; shaper....@bayhubtech.com;
> > xiaoguang...@bayhubtech.com; Chevron Li (WH)
> > <chevron...@bayhubtech.com>
> > Subject: [edk2-platform][PATCH V3 1/1] MdeModulePkg: SdMmcPciHcDxe:
> > Fix issue that SD1.0 cards can't be recognized
> >
> > From: "Chevron Li (WH)" <chevron...@bayhubtech.com>
> >
> > SD1.0 cards don't support CMD8 and CMD6
> > CMD8 result can be used to distinguish the card is SD1.0 or not.
> > CMD8 result can be used to decide following CMD6 is sent or skip.
> >
> > Cc: Hao A Wu <hao.a...@intel.com>
> > Cc: Ray Ni <ray...@intel.com>
> > Cc: Jian J Wang <jian.j.w...@intel.com>
> > Cc: Liming Gao <gaolim...@byosoft.com.cn>
> > Signed-off-by: Chevron Li <chevron...@bayhubtech.com>
> > ---
> > Changes in V2:
> > 1.Update description comment for input parameter 'SdVersion1'.
> > 2.Add variables initialize operation to avoid unexpected value.
> > 3.Use TRUE replace with 1 to assign value for BOOLEAN variable.
> >
> > Changes in V3:
> > 1.Update code format for CL test fail.
> > 2.Fix memory out of bounds when initialize SwitchResp.
> > ---
> >  MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c | 34
> +++++++++++++--
> > ----
> >  1 file changed, 24 insertions(+), 10 deletions(-)
> >
> > diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c
> > b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c
> > index f5a3607e47..8bf452e9d0 100644
> > --- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c
> > +++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c
> > @@ -1074,6 +1074,7 @@ SdGetTargetBusMode (
> >    @param[in] Slot           The slot number of the SD card to send the
> > command to.
> >
> >    @param[in] Rca            The relative device address to be assigned.
> >
> >    @param[in] S18A           The boolean to show if it's a UHS-I SD card.
> >
> > +  @param[in] SdVersion1     The boolean to show if it's a Version 1 SD 
> > card.
> >
> >
> >
> >    @retval EFI_SUCCESS       The operation is done correctly.
> >
> >    @retval Others            The operation fails.
> >
> > @@ -1085,7 +1086,8 @@ SdCardSetBusMode (
> >    IN EFI_SD_MMC_PASS_THRU_PROTOCOL  *PassThru,
> >
> >    IN UINT8                          Slot,
> >
> >    IN UINT16                         Rca,
> >
> > -  IN BOOLEAN                        S18A
> >
> > +  IN BOOLEAN                        S18A,
> >
> > +  IN BOOLEAN                        SdVersion1
> >
> >    )
> >
> >  {
> >
> >    EFI_STATUS              Status;
> >
> > @@ -1095,6 +1097,8 @@ SdCardSetBusMode (
> >    SD_MMC_HC_PRIVATE_DATA  *Private;
> >
> >    SD_MMC_BUS_SETTINGS     BusMode;
> >
> >
> >
> > +  ZeroMem (SwitchResp, 64 * sizeof (UINT8));
> >
> > +
> >
> >    Private = SD_MMC_HC_PRIVATE_FROM_THIS (PassThru);
> >
> >
> >
> >    Capability = &Private->Capability[Slot];
> >
> > @@ -1117,10 +1121,13 @@ SdCardSetBusMode (
> >
> >
> >    //
> >
> >    // Get the supported bus speed from SWITCH cmd return data group #1.
> >
> > +  // SdVersion1 don't support the SWITCH cmd
> >
> >    //
> >
> > -  Status = SdCardSwitch (PassThru, Slot, 0xFF, 0xF, SdDriverStrengthIgnore,
> > 0xF, FALSE, SwitchResp);
> >
> > -  if (EFI_ERROR (Status)) {
> >
> > -    return Status;
> >
> > +  if (!SdVersion1) {
> >
> > +    Status = SdCardSwitch (PassThru, Slot, 0xFF, 0xF,
> SdDriverStrengthIgnore,
> > 0xF, FALSE, SwitchResp);
> >
> > +    if (EFI_ERROR (Status)) {
> >
> > +      return Status;
> >
> > +    }
> >
> >    }
> >
> >
> >
> >    SdGetTargetBusMode (Private, Slot, SwitchResp, S18A, &BusMode);
> >
> > @@ -1141,9 +1148,14 @@ SdCardSetBusMode (
> >      }
> >
> >    }
> >
> >
> >
> > -  Status = SdCardSwitch (PassThru, Slot, BusMode.BusTiming, 0xF,
> > BusMode.DriverStrength.Sd, 0xF, TRUE, SwitchResp);
> >
> > -  if (EFI_ERROR (Status)) {
> >
> > -    return Status;
> >
> > +  //
> >
> > +  // SdVersion1 don't support the SWITCH cmd
> >
> > +  //
> >
> > +  if (!SdVersion1) {
> >
> > +    Status = SdCardSwitch (PassThru, Slot, BusMode.BusTiming, 0xF,
> > BusMode.DriverStrength.Sd, 0xF, TRUE, SwitchResp);
> >
> > +    if (EFI_ERROR (Status)) {
> >
> > +      return Status;
> >
> > +    }
> >
> >    }
> >
> >
> >
> >    Status = SdMmcSetDriverStrength (Private->PciIo, Slot,
> > BusMode.DriverStrength.Sd);
> >
> > @@ -1214,8 +1226,10 @@ SdCardIdentification (
> >    UINT8                          HostCtrl2;
> >
> >    UINTN                          Retry;
> >
> >    BOOLEAN                        ForceVoltage33;
> >
> > +  BOOLEAN                        SdVersion1;
> >
> >
> >
> >    ForceVoltage33 = FALSE;
> >
> > +  SdVersion1     = FALSE;
> >
> >
> >
> >    PciIo    = Private->PciIo;
> >
> >    PassThru = &Private->PassThru;
> >
> > @@ -1231,12 +1245,12 @@ Voltage33Retry:
> >    }
> >
> >
> >
> >    //
> >
> > -  // 2. Send Cmd8 to the device
> >
> > +  // 2. Send Cmd8 to the device, the command will fail for SdVersion1
> >
> >    //
> >
> >    Status = SdCardVoltageCheck (PassThru, Slot, 0x1, 0xFF);
> >
> >    if (EFI_ERROR (Status)) {
> >
> > +    SdVersion1 = TRUE;
> >
> >      DEBUG ((DEBUG_INFO, "SdCardIdentification: Executing Cmd8 fails
> > with %r\n", Status));
> >
> > -    return Status;
> >
> >    }
> >
> >
> >
> >    //
> >
> > @@ -1426,7 +1440,7 @@ Voltage33Retry:
> >    DEBUG ((DEBUG_INFO, "SdCardIdentification: Found a SD device at slot
> > [%d]\n", Slot));
> >
> >    Private->Slot[Slot].CardType = SdCardType;
> >
> >
> >
> > -  Status = SdCardSetBusMode (PciIo, PassThru, Slot, Rca, ((Ocr & BIT24) !=
> > 0));
> >
> > +  Status = SdCardSetBusMode (PciIo, PassThru, Slot, Rca, ((Ocr & BIT24) !=
> 0),
> > SdVersion1);
> >
> >
> >
> >    return Status;
> >
> >
> >
> >
> > base-commit: 7bee2498910a9034faaf90802c49188afb7582dc
> > --
> > 2.18.0.windows.1
> 
> 
> 
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#97237): https://edk2.groups.io/g/devel/message/97237
Mute This Topic: https://groups.io/mt/95519549/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to